From 37143db0b9fe85ec2b8070a5afbe2ddc3553a806 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Wed, 1 Apr 2026 14:36:14 -0500 Subject: [PATCH 01/18] subiendo cambios --- .gitignore | 2 + challenge-1/.prettierrc | 4 + challenge-1/README.md | 61 + .../apps/api/src/app.controller.spec.ts | 22 + challenge-1/apps/api/src/app.controller.ts | 36 + challenge-1/apps/api/src/app.module.ts | 11 + challenge-1/apps/api/src/app.service.ts | 64 + challenge-1/apps/api/src/main.ts | 10 + challenge-1/apps/api/test/app.e2e-spec.ts | 29 + challenge-1/apps/api/test/jest-e2e.json | 9 + challenge-1/apps/api/tsconfig.app.json | 9 + .../src/consumers.controller.spec.ts | 22 + .../consumers/src/consumers.controller.ts | 12 + .../apps/consumers/src/consumers.module.ts | 35 + .../apps/consumers/src/consumers.service.ts | 8 + .../apps/consumers/src/fraud.consumer.ts | 84 + .../apps/consumers/src/ledger.consumer.ts | 74 + challenge-1/apps/consumers/src/main.ts | 24 + .../src/processed-events.repository.ts | 23 + .../apps/consumers/src/saga.consumer.ts | 49 + .../apps/consumers/test/app.e2e-spec.ts | 24 + challenge-1/apps/consumers/test/jest-e2e.json | 9 + challenge-1/apps/consumers/tsconfig.app.json | 9 + challenge-1/apps/relay/src/main.ts | 9 + .../apps/relay/src/relay.controller.spec.ts | 22 + .../apps/relay/src/relay.controller.ts | 12 + challenge-1/apps/relay/src/relay.module.ts | 27 + challenge-1/apps/relay/src/relay.service.ts | 62 + challenge-1/apps/relay/test/app.e2e-spec.ts | 24 + challenge-1/apps/relay/test/jest-e2e.json | 9 + challenge-1/apps/relay/tsconfig.app.json | 9 + challenge-1/dist/apps/consumers/main.js | 824 ++ .../apps/consumers/tsconfig.app.tsbuildinfo | 1 + challenge-1/docker-compose.yml | 53 + challenge-1/eslint.config.mjs | 35 + .../libs/shared/src/database.module.ts | 23 + .../libs/shared/src/dto/create-payment.dto.ts | 15 + .../src/entities/outbox-event.entity.ts | 39 + .../shared/src/entities/payment.entity.ts | 35 + .../src/entities/processed-event.entity.ts | 13 + challenge-1/libs/shared/src/index.ts | 7 + challenge-1/libs/shared/src/shared.module.ts | 8 + .../libs/shared/src/shared.service.spec.ts | 18 + challenge-1/libs/shared/src/shared.service.ts | 4 + challenge-1/libs/shared/tsconfig.lib.json | 9 + challenge-1/nest-cli.json | 50 + challenge-1/package-lock.json | 10644 ++++++++++++++++ challenge-1/package.json | 89 + challenge-1/tsconfig.build.json | 4 + challenge-1/tsconfig.json | 33 + 50 files changed, 12708 insertions(+) create mode 100644 .gitignore create mode 100644 challenge-1/.prettierrc create mode 100644 challenge-1/README.md create mode 100644 challenge-1/apps/api/src/app.controller.spec.ts create mode 100644 challenge-1/apps/api/src/app.controller.ts create mode 100644 challenge-1/apps/api/src/app.module.ts create mode 100644 challenge-1/apps/api/src/app.service.ts create mode 100644 challenge-1/apps/api/src/main.ts create mode 100644 challenge-1/apps/api/test/app.e2e-spec.ts create mode 100644 challenge-1/apps/api/test/jest-e2e.json create mode 100644 challenge-1/apps/api/tsconfig.app.json create mode 100644 challenge-1/apps/consumers/src/consumers.controller.spec.ts create mode 100644 challenge-1/apps/consumers/src/consumers.controller.ts create mode 100644 challenge-1/apps/consumers/src/consumers.module.ts create mode 100644 challenge-1/apps/consumers/src/consumers.service.ts create mode 100644 challenge-1/apps/consumers/src/fraud.consumer.ts create mode 100644 challenge-1/apps/consumers/src/ledger.consumer.ts create mode 100644 challenge-1/apps/consumers/src/main.ts create mode 100644 challenge-1/apps/consumers/src/processed-events.repository.ts create mode 100644 challenge-1/apps/consumers/src/saga.consumer.ts create mode 100644 challenge-1/apps/consumers/test/app.e2e-spec.ts create mode 100644 challenge-1/apps/consumers/test/jest-e2e.json create mode 100644 challenge-1/apps/consumers/tsconfig.app.json create mode 100644 challenge-1/apps/relay/src/main.ts create mode 100644 challenge-1/apps/relay/src/relay.controller.spec.ts create mode 100644 challenge-1/apps/relay/src/relay.controller.ts create mode 100644 challenge-1/apps/relay/src/relay.module.ts create mode 100644 challenge-1/apps/relay/src/relay.service.ts create mode 100644 challenge-1/apps/relay/test/app.e2e-spec.ts create mode 100644 challenge-1/apps/relay/test/jest-e2e.json create mode 100644 challenge-1/apps/relay/tsconfig.app.json create mode 100644 challenge-1/dist/apps/consumers/main.js create mode 100644 challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo create mode 100644 challenge-1/docker-compose.yml create mode 100644 challenge-1/eslint.config.mjs create mode 100644 challenge-1/libs/shared/src/database.module.ts create mode 100644 challenge-1/libs/shared/src/dto/create-payment.dto.ts create mode 100644 challenge-1/libs/shared/src/entities/outbox-event.entity.ts create mode 100644 challenge-1/libs/shared/src/entities/payment.entity.ts create mode 100644 challenge-1/libs/shared/src/entities/processed-event.entity.ts create mode 100644 challenge-1/libs/shared/src/index.ts create mode 100644 challenge-1/libs/shared/src/shared.module.ts create mode 100644 challenge-1/libs/shared/src/shared.service.spec.ts create mode 100644 challenge-1/libs/shared/src/shared.service.ts create mode 100644 challenge-1/libs/shared/tsconfig.lib.json create mode 100644 challenge-1/nest-cli.json create mode 100644 challenge-1/package-lock.json create mode 100644 challenge-1/package.json create mode 100644 challenge-1/tsconfig.build.json create mode 100644 challenge-1/tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..61158282 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.agents +challenge-1/node_modules \ No newline at end of file diff --git a/challenge-1/.prettierrc b/challenge-1/.prettierrc new file mode 100644 index 00000000..a20502b7 --- /dev/null +++ b/challenge-1/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/challenge-1/README.md b/challenge-1/README.md new file mode 100644 index 00000000..b32f0acf --- /dev/null +++ b/challenge-1/README.md @@ -0,0 +1,61 @@ +# Challenge 1 — Payment Settlement Pipeline + +## Arquitectura + +La solución implementa un **Payment Settlement Pipeline** basado en arquitectura guiada por eventos (EDA) utilizando NestJS, Kafka y PostgreSQL. + +La arquitectura resuelve específicamente el requerimiento crítico de no emitir mensajes al broker (Kafka) dentro de transacciones de base de datos distribuidas. La solución adopta el **Transactional Outbox Pattern**: + +1. **`apps/api` (Payment API)**: Se ejecuta la creación del pago y la escritura en la tabla de Outbox de eventos (`outbox_events`). Ambos registros se guardan utilizando la misma estructura de transacción a nivel de Base de datos (vía `QueryRunner`), otorgando garantías de integridad relacional ACID. El broker Kafka **no** interviene en esta ejecución. +2. **`apps/relay` (Outbox Relay Process)**: Un proceso (Worker) asíncrono configurado con `@Cron` escanea la tabla `outbox_events` cada X segundos capturando los eventos marcados como `PENDING`. Estos son publicados en Kafka (`payment.created.v1`) y el registro cambia a estado `SENT`. +3. **`apps/consumers` (Consumers & Saga)**: + - Escuchan los eventos en Kafka. + - Se aseguran de aplicar el patrón **Idempotent Consumer**, basándose en una clave compuesta `eventId` y `consumerType` dentro de una tabla compartida en Base de datos (`processed_events`). Esto otorga manejo de reintentos e idempotencia (*at-least-once guarantee*). + - Un coordinador local (*Saga Consumer*) escucha eventos intermedios (ej. `payment.fraud.approved.v1` y `payment.ledger.written.v1`) para alterar de forma asíncrona la consistencia final (*eventual consistency*) del pago a `SETTLED`. + +## Tech Stack +- **Framework:** NestJS +- **Microservicios/Messaging:** Nativos NestJS Microservices, Kafka +- **Base de Datos:** PostgreSQL +- **ORM:** TypeORM + +--- + +## Cómo compilar y ejecutar + +1. **Levantar Infraestructura Base** (Kafka, Zookeeper, PostgreSQL) +```bash +docker-compose up -d +``` + +2. **Instalar dependencias** +Asegúrate de tener Node.js instalado (v18+) y ubicado en la carpeta del challenge. +```bash +npm install +``` + +3. **Ejecutar módulos por separado (en diferentes terminales preferentemente)** +- API y Creación Outbox: `npm run start api` +- Relay (Cron publicador a Kafka): `npm run start relay` +- Consumidores Kafka: `npm run start consumers` + +--- + +## Arquitecturas y Decisiones (ADR) + +### ADR 1: The Transactional Outbox vs Two-Phase Commit +- **Decisión:** Implementar Transactional Outbox pattern. +- **Razón:** El uso de 2PC o llamar a `kafkaClient.emit` dentro de una transacción genera pérdida de datos cuando el bloque local es exitoso pero el mensaje al Broker fracasa. Guardar una copia serializada del payload como `OutboxEvent` en PostgreSQL nos permite delegar a un *Poller Relay* la publicación, desacoplándonos de la disponibilidad instantánea de Kafka. + +### ADR 2: Monorepo NestJS vs Repositorios Múltiples +- **Decisión:** NestJS Standard Monorepo (`apps/api`, `apps/relay`, `apps/consumers`). +- **Razón:** Al tratarse de un challenge conceptual, y con la estricta idea de no acoplar los consumer / relay en procesos `setInterval()` internos de la API, el monorepo nos brinda separación de subprocesos y puertos, además de permitir exportar las entidades Base de datos (`Payment`, `OutboxEvent`) y los DTOs en una única librería `libs/shared` consolidada, sin duplicidad de esfuerzo. + +### ADR 3: Coreografía del Estado Final (Eventual Consistency) +- **Decisión:** Coreografiar el estado de los pagos desde un tercer oyente `SagaConsumer`. +- **Razón:** En lugar de hacer que Fraud o Ledger modifiquen el `PaymentTable` diréctamente (creando cuellos de acceso a tabla central), enviamos una repuesta Kafka `payment.fraud.approved` que un saga local evalúa. Esto documenta con claridad la garantía *eventual* donde la API devuelve el Payload intacto con semántica PENDING hasta la convergencia final. + +### Requerimientos / Limitaciones Conocidas / Qué Incluir con más tiempo +- Por motivos prácticos, todo el Monorepo asume una conexión genérica a la BD. En producción, el Relay y los Consumers utilizarían credenciales restrictivas. +- Para Namespace País (opcional check): No se implementó un enrutamiento en sub-Kafka. De implementarlo, sería mediante `topic: pe.payments.payment...` inyectando dependencias configurables bajo módulo por entorno. +- Dead Letter Queue (`DLT`) y Retry Policies: El relay reintenta sin fin. Si los consumidores fallan (Simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al subtopic `.dlt`, a su vez enviando `payment.failed.v1` donde la Saga finalmente declara status `FAILED` en la tabla para reflejarse vía API `GET /payments/:id`. diff --git a/challenge-1/apps/api/src/app.controller.spec.ts b/challenge-1/apps/api/src/app.controller.spec.ts new file mode 100644 index 00000000..d22f3890 --- /dev/null +++ b/challenge-1/apps/api/src/app.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +describe('AppController', () => { + let appController: AppController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + + appController = app.get(AppController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(appController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/challenge-1/apps/api/src/app.controller.ts b/challenge-1/apps/api/src/app.controller.ts new file mode 100644 index 00000000..1628deb2 --- /dev/null +++ b/challenge-1/apps/api/src/app.controller.ts @@ -0,0 +1,36 @@ +import { Controller, Get, Post, Body, Param } from '@nestjs/common'; +import { AppService } from './app.service'; +import { CreatePaymentDto } from '@app/shared'; + +@Controller('payments') +export class AppController { + constructor(private readonly appService: AppService) {} + + @Post() + async createPayment(@Body() createPaymentDto: CreatePaymentDto) { + const payment = await this.appService.createPayment(createPaymentDto); + return payment; + } + + // GET /payments/:id + // CONSISTENCY GUARANTEE: This endpoint reflects eventual consistency. + // A payment may return `pending` after creation. + // It transitions to `settled` only after BOTH FraudConsumer AND LedgerConsumer + // have acknowledged the event. There is no SLA on this window. + @Get(':id') + async getPayment(@Param('id') id: string) { + const payment = await this.appService.getPayment(id); + return { + data: { + paymentId: payment.id, + status: payment.status, // 'pending' | 'settled' | 'failed' + amount: payment.amount, + currency: payment.currency, + }, + meta: { + consistencyModel: 'eventual', + note: 'Status may be pending while downstream consumers are processing.', + }, + }; + } +} diff --git a/challenge-1/apps/api/src/app.module.ts b/challenge-1/apps/api/src/app.module.ts new file mode 100644 index 00000000..00d3638c --- /dev/null +++ b/challenge-1/apps/api/src/app.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; +import { DatabaseModule } from '@app/shared'; + +@Module({ + imports: [DatabaseModule], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/challenge-1/apps/api/src/app.service.ts b/challenge-1/apps/api/src/app.service.ts new file mode 100644 index 00000000..b61f0c9f --- /dev/null +++ b/challenge-1/apps/api/src/app.service.ts @@ -0,0 +1,64 @@ +import { Injectable, NotFoundException } from '@nestjs/common'; +import { DataSource } from 'typeorm'; +import { Payment, PaymentStatus, OutboxEvent, OutboxStatus, CreatePaymentDto } from '@app/shared'; +import { v4 as uuidv4 } from 'uuid'; + +@Injectable() +export class AppService { + constructor(private dataSource: DataSource) {} + + async createPayment(dto: CreatePaymentDto) { + const paymentId = uuidv4(); + const eventId = uuidv4(); + + // Outbox Pattern via explicit QueryRunner to handle transaction safely + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + + let payment: Payment; + + try { + payment = queryRunner.manager.create(Payment, { + id: paymentId, + amount: dto.amount, + currency: dto.currency, + country: dto.country, + status: PaymentStatus.PENDING, + }); + + await queryRunner.manager.save(payment); + + const outboxEvent = queryRunner.manager.create(OutboxEvent, { + eventId, + aggregateId: paymentId, + eventType: 'payment.created.v1', + payload: { + id: paymentId, + amount: dto.amount, + currency: dto.currency, + country: dto.country, + }, + status: OutboxStatus.PENDING, + }); + + await queryRunner.manager.save(outboxEvent); + + // NO Kafka emission here + await queryRunner.commitTransaction(); + } catch (err) { + await queryRunner.rollbackTransaction(); + throw err; + } finally { + await queryRunner.release(); + } + + return payment; + } + + async getPayment(id: string) { + const payment = await this.dataSource.manager.findOne(Payment, { where: { id } }); + if (!payment) throw new NotFoundException('Payment not found'); + return payment; + } +} diff --git a/challenge-1/apps/api/src/main.ts b/challenge-1/apps/api/src/main.ts new file mode 100644 index 00000000..a33c344e --- /dev/null +++ b/challenge-1/apps/api/src/main.ts @@ -0,0 +1,10 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './app.module'; +import { ValidationPipe } from '@nestjs/common'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })); + await app.listen(process.env.PORT ?? 3000); +} +bootstrap(); diff --git a/challenge-1/apps/api/test/app.e2e-spec.ts b/challenge-1/apps/api/test/app.e2e-spec.ts new file mode 100644 index 00000000..a767839c --- /dev/null +++ b/challenge-1/apps/api/test/app.e2e-spec.ts @@ -0,0 +1,29 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import request from 'supertest'; +import { App } from 'supertest/types'; +import { AppModule } from './../src/app.module'; + +describe('AppController (e2e)', () => { + let app: INestApplication; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); + + afterEach(async () => { + await app.close(); + }); +}); diff --git a/challenge-1/apps/api/test/jest-e2e.json b/challenge-1/apps/api/test/jest-e2e.json new file mode 100644 index 00000000..e9d912f3 --- /dev/null +++ b/challenge-1/apps/api/test/jest-e2e.json @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff --git a/challenge-1/apps/api/tsconfig.app.json b/challenge-1/apps/api/tsconfig.app.json new file mode 100644 index 00000000..4cb2ffe0 --- /dev/null +++ b/challenge-1/apps/api/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": false, + "outDir": "../../dist/apps/challenge-1" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/challenge-1/apps/consumers/src/consumers.controller.spec.ts b/challenge-1/apps/consumers/src/consumers.controller.spec.ts new file mode 100644 index 00000000..1ccff23a --- /dev/null +++ b/challenge-1/apps/consumers/src/consumers.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { ConsumersController } from './consumers.controller'; +import { ConsumersService } from './consumers.service'; + +describe('ConsumersController', () => { + let consumersController: ConsumersController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [ConsumersController], + providers: [ConsumersService], + }).compile(); + + consumersController = app.get(ConsumersController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(consumersController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/challenge-1/apps/consumers/src/consumers.controller.ts b/challenge-1/apps/consumers/src/consumers.controller.ts new file mode 100644 index 00000000..dfa9a210 --- /dev/null +++ b/challenge-1/apps/consumers/src/consumers.controller.ts @@ -0,0 +1,12 @@ +import { Controller, Get } from '@nestjs/common'; +import { ConsumersService } from './consumers.service'; + +@Controller() +export class ConsumersController { + constructor(private readonly consumersService: ConsumersService) {} + + @Get() + getHello(): string { + return this.consumersService.getHello(); + } +} diff --git a/challenge-1/apps/consumers/src/consumers.module.ts b/challenge-1/apps/consumers/src/consumers.module.ts new file mode 100644 index 00000000..67e55baf --- /dev/null +++ b/challenge-1/apps/consumers/src/consumers.module.ts @@ -0,0 +1,35 @@ +import { Module } from '@nestjs/common'; +import { ClientsModule, Transport } from '@nestjs/microservices'; +import { DatabaseModule } from '@app/shared'; +import { FraudConsumer } from './fraud.consumer'; +import { LedgerConsumer } from './ledger.consumer'; +import { SagaConsumer } from './saga.consumer'; +import { ProcessedEventsRepository } from './processed-events.repository'; + +@Module({ + imports: [ + DatabaseModule, + ClientsModule.register([ + { + name: 'KAFKA_CLIENT', + transport: Transport.KAFKA, + options: { + client: { + clientId: 'payment-consumers', + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + consumer: { + groupId: 'consumers-group', + }, + }, + }, + ]), + ], + providers: [ + FraudConsumer, + LedgerConsumer, + SagaConsumer, + ProcessedEventsRepository + ], +}) +export class ConsumersModule {} diff --git a/challenge-1/apps/consumers/src/consumers.service.ts b/challenge-1/apps/consumers/src/consumers.service.ts new file mode 100644 index 00000000..39671539 --- /dev/null +++ b/challenge-1/apps/consumers/src/consumers.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class ConsumersService { + getHello(): string { + return 'Hello World!'; + } +} diff --git a/challenge-1/apps/consumers/src/fraud.consumer.ts b/challenge-1/apps/consumers/src/fraud.consumer.ts new file mode 100644 index 00000000..ff4dc894 --- /dev/null +++ b/challenge-1/apps/consumers/src/fraud.consumer.ts @@ -0,0 +1,84 @@ +import { Controller, Logger, Inject } from '@nestjs/common'; +import { EventPattern, Payload, ClientKafka, KafkaContext, Ctx } from '@nestjs/microservices'; +import { ProcessedEventsRepository } from './processed-events.repository'; + +@Controller() +export class FraudConsumer { + private readonly logger = new Logger(FraudConsumer.name); + private readonly consumerName = 'FraudConsumer'; + private readonly maxRetries = 3; + + constructor( + private readonly processedRepo: ProcessedEventsRepository, + @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, + ) {} + + @EventPattern('payment.created.v1') + async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext): Promise { + const value = message; // Depending on NestJS config, it might automatically parse the value + const eventId = value.eventId || context.getMessage().key?.toString(); + const aggregateId = value.aggregateId || value.id; + + if (!eventId) { + this.logger.warn('Received message without eventId, skipping'); + return; + } + + try { + const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); + if (alreadyProcessed) { + this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); + return; + } + + this.logger.log(`Processing fraud scoring for payment ${aggregateId}`); + // Simulate Fraud check logic... Wait a bit. + + // Simulating external logic and possibility of failure + if (value.amount > 1000000) { + throw new Error('Fraud check failed: amount too high.'); + } + + // Mark processed + await this.processedRepo.markProcessed(eventId, this.consumerName); + + this.logger.log(`Fraud scoring passed for payment ${aggregateId}`); + + // Emit success for this stage + this.kafkaClient.emit('payment.fraud.approved.v1', { + key: aggregateId, + value: { aggregateId, eventId, status: 'APPROVED' }, + }); + + } catch (error) { + this.logger.error(`Error processing ${eventId} in Fraud: ${error.message}`); + + // Note: Native Kafka retries might handle retries, but for DLT pattern we manage it: + // For a strict retry budget we could read headers or a local table. + // Simplification: assume it failed permanently after standard catches, send to DLT. + + await this.sendToDlt('payment.created.v1', value, error); + } + } + + private async sendToDlt(originalTopic: string, message: any, error: Error) { + const dltTopic = `${originalTopic}.dlt`; + const aggregateId = message.aggregateId || message.id; + + this.logger.warn(`Sending to DLT -> ${dltTopic}`); + this.kafkaClient.emit(dltTopic, { + key: aggregateId, + value: { + originalTopic, + originalMessage: message, + error: error.message, + failedAt: new Date().toISOString(), + }, + }); + + this.kafkaClient.emit('payment.failed.v1', { + key: aggregateId, + value: { aggregateId, reason: error.message }, + }); + } +} diff --git a/challenge-1/apps/consumers/src/ledger.consumer.ts b/challenge-1/apps/consumers/src/ledger.consumer.ts new file mode 100644 index 00000000..c481ed5f --- /dev/null +++ b/challenge-1/apps/consumers/src/ledger.consumer.ts @@ -0,0 +1,74 @@ +import { Controller, Logger, Inject } from '@nestjs/common'; +import { EventPattern, Payload, ClientKafka, KafkaContext, Ctx } from '@nestjs/microservices'; +import { ProcessedEventsRepository } from './processed-events.repository'; + +@Controller() +export class LedgerConsumer { + private readonly logger = new Logger(LedgerConsumer.name); + private readonly consumerName = 'LedgerConsumer'; + + constructor( + private readonly processedRepo: ProcessedEventsRepository, + @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, + ) {} + + @EventPattern('payment.created.v1') + async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext): Promise { + const value = message; + const eventId = value.eventId || context.getMessage().key?.toString(); + const aggregateId = value.aggregateId || value.id; + + if (!eventId) { + this.logger.warn('Received message without eventId, skipping'); + return; + } + + try { + const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); + if (alreadyProcessed) { + this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); + return; + } + + this.logger.log(`Processing ledger entry (double-entry write) for payment ${aggregateId}`); + // Simulate double-entry write logic + // e.g., debit sender, credit receiver + + // Mark processed + await this.processedRepo.markProcessed(eventId, this.consumerName); + + this.logger.log(`Ledger entry written for payment ${aggregateId}`); + + // Emit success for this stage + this.kafkaClient.emit('payment.ledger.written.v1', { + key: aggregateId, + value: { aggregateId, eventId, status: 'WRITTEN' }, + }); + + } catch (error) { + this.logger.error(`Error processing ${eventId} in Ledger: ${error.message}`); + await this.sendToDlt('payment.created.v1', value, error); + } + } + + private async sendToDlt(originalTopic: string, message: any, error: Error) { + const dltTopic = `${originalTopic}.dlt`; + const aggregateId = message.aggregateId || message.id; + + this.logger.warn(`Sending to DLT -> ${dltTopic}`); + this.kafkaClient.emit(dltTopic, { + key: aggregateId, + value: { + originalTopic, + originalMessage: message, + error: error.message, + failedAt: new Date().toISOString(), + }, + }); + + this.kafkaClient.emit('payment.failed.v1', { + key: aggregateId, + value: { aggregateId, reason: error.message }, + }); + } +} diff --git a/challenge-1/apps/consumers/src/main.ts b/challenge-1/apps/consumers/src/main.ts new file mode 100644 index 00000000..fd73cc7d --- /dev/null +++ b/challenge-1/apps/consumers/src/main.ts @@ -0,0 +1,24 @@ +import { NestFactory } from '@nestjs/core'; +import { ConsumersModule } from './consumers.module'; +import { MicroserviceOptions, Transport } from '@nestjs/microservices'; + +async function bootstrap() { + const app = await NestFactory.createMicroservice(ConsumersModule, { + transport: Transport.KAFKA, + options: { + client: { + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + consumer: { + groupId: 'consumers-main-group', + }, + subscribe: { + fromBeginning: true, + } + }, + }); + + await app.listen(); + console.log('Payment Consumers microservice is listening for Kafka events.'); +} +bootstrap(); diff --git a/challenge-1/apps/consumers/src/processed-events.repository.ts b/challenge-1/apps/consumers/src/processed-events.repository.ts new file mode 100644 index 00000000..c4a88af6 --- /dev/null +++ b/challenge-1/apps/consumers/src/processed-events.repository.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@nestjs/common'; +import { DataSource } from 'typeorm'; +import { ProcessedEvent } from '@app/shared'; + +@Injectable() +export class ProcessedEventsRepository { + constructor(private readonly dataSource: DataSource) {} + + async exists(eventId: string, consumer: string): Promise { + const record = await this.dataSource.manager.findOne(ProcessedEvent, { + where: { eventId, consumer }, + }); + return !!record; + } + + async markProcessed(eventId: string, consumer: string): Promise { + const record = this.dataSource.manager.create(ProcessedEvent, { + eventId, + consumer, + }); + await this.dataSource.manager.save(record); + } +} diff --git a/challenge-1/apps/consumers/src/saga.consumer.ts b/challenge-1/apps/consumers/src/saga.consumer.ts new file mode 100644 index 00000000..a23786de --- /dev/null +++ b/challenge-1/apps/consumers/src/saga.consumer.ts @@ -0,0 +1,49 @@ +import { Controller, Logger } from '@nestjs/common'; +import { EventPattern, Payload } from '@nestjs/microservices'; +import { DataSource } from 'typeorm'; +import { ProcessedEventsRepository } from './processed-events.repository'; +import { Payment, PaymentStatus } from '@app/shared'; + +@Controller() +export class SagaConsumer { + private readonly logger = new Logger(SagaConsumer.name); + + constructor( + private readonly dataSource: DataSource, + private readonly processedRepo: ProcessedEventsRepository, + ) {} + + @EventPattern('payment.fraud.approved.v1') + async handleFraudApproved(@Payload() message: any): Promise { + await this.trySettlePayment(message.eventId, message.aggregateId); + } + + @EventPattern('payment.ledger.written.v1') + async handleLedgerWritten(@Payload() message: any): Promise { + await this.trySettlePayment(message.eventId, message.aggregateId); + } + + @EventPattern('payment.failed.v1') + async handlePaymentFailed(@Payload() message: any): Promise { + const aggregateId = message.aggregateId || message.id; + this.logger.warn(`Saga reacting to failure for payment ${aggregateId}`); + await this.dataSource.manager.update(Payment, { id: aggregateId }, { status: PaymentStatus.FAILED }); + } + + private async trySettlePayment(eventId: string, aggregateId: string): Promise { + if (!eventId || !aggregateId) return; + + // Check if both Fraud and Ledger processed + const fraudProcessed = await this.processedRepo.exists(eventId, 'FraudConsumer'); + const ledgerProcessed = await this.processedRepo.exists(eventId, 'LedgerConsumer'); + + if (fraudProcessed && ledgerProcessed) { + this.logger.log(`Both consumers processed for ${aggregateId}. Settling payment.`); + + // Update Payment status to SETTLED + await this.dataSource.manager.update(Payment, { id: aggregateId }, { status: PaymentStatus.SETTLED }); + + // Optionally emit payment.settled.v1 here + } + } +} diff --git a/challenge-1/apps/consumers/test/app.e2e-spec.ts b/challenge-1/apps/consumers/test/app.e2e-spec.ts new file mode 100644 index 00000000..485e6f1c --- /dev/null +++ b/challenge-1/apps/consumers/test/app.e2e-spec.ts @@ -0,0 +1,24 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import * as request from 'supertest'; +import { ConsumersModule } from './../src/consumers.module'; + +describe('ConsumersController (e2e)', () => { + let app: INestApplication; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [ConsumersModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); +}); diff --git a/challenge-1/apps/consumers/test/jest-e2e.json b/challenge-1/apps/consumers/test/jest-e2e.json new file mode 100644 index 00000000..e9d912f3 --- /dev/null +++ b/challenge-1/apps/consumers/test/jest-e2e.json @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff --git a/challenge-1/apps/consumers/tsconfig.app.json b/challenge-1/apps/consumers/tsconfig.app.json new file mode 100644 index 00000000..5b34d8e2 --- /dev/null +++ b/challenge-1/apps/consumers/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": false, + "outDir": "../../dist/apps/consumers" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/challenge-1/apps/relay/src/main.ts b/challenge-1/apps/relay/src/main.ts new file mode 100644 index 00000000..dd191e8a --- /dev/null +++ b/challenge-1/apps/relay/src/main.ts @@ -0,0 +1,9 @@ +import { NestFactory } from '@nestjs/core'; +import { RelayModule } from './relay.module'; + +async function bootstrap() { + const app = await NestFactory.createApplicationContext(RelayModule); + // It's a worker, so no HTTP server listening + console.log('Outbox Relay Worker started'); +} +bootstrap(); diff --git a/challenge-1/apps/relay/src/relay.controller.spec.ts b/challenge-1/apps/relay/src/relay.controller.spec.ts new file mode 100644 index 00000000..dc192272 --- /dev/null +++ b/challenge-1/apps/relay/src/relay.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { RelayController } from './relay.controller'; +import { RelayService } from './relay.service'; + +describe('RelayController', () => { + let relayController: RelayController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [RelayController], + providers: [RelayService], + }).compile(); + + relayController = app.get(RelayController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(relayController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/challenge-1/apps/relay/src/relay.controller.ts b/challenge-1/apps/relay/src/relay.controller.ts new file mode 100644 index 00000000..3566cc36 --- /dev/null +++ b/challenge-1/apps/relay/src/relay.controller.ts @@ -0,0 +1,12 @@ +import { Controller, Get } from '@nestjs/common'; +import { RelayService } from './relay.service'; + +@Controller() +export class RelayController { + constructor(private readonly relayService: RelayService) {} + + @Get() + getHello(): string { + return this.relayService.getHello(); + } +} diff --git a/challenge-1/apps/relay/src/relay.module.ts b/challenge-1/apps/relay/src/relay.module.ts new file mode 100644 index 00000000..a244ea61 --- /dev/null +++ b/challenge-1/apps/relay/src/relay.module.ts @@ -0,0 +1,27 @@ +import { Module } from '@nestjs/common'; +import { ScheduleModule } from '@nestjs/schedule'; +import { RelayService } from './relay.service'; +import { DatabaseModule } from '@app/shared'; +import { ClientsModule, Transport } from '@nestjs/microservices'; + +@Module({ + imports: [ + DatabaseModule, + ScheduleModule.forRoot(), + ClientsModule.register([ + { + name: 'KAFKA_CLIENT', + transport: Transport.KAFKA, + options: { + client: { + clientId: 'outbox-relay', + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + producerOnlyMode: true, + }, + }, + ]), + ], + providers: [RelayService], +}) +export class RelayModule {} diff --git a/challenge-1/apps/relay/src/relay.service.ts b/challenge-1/apps/relay/src/relay.service.ts new file mode 100644 index 00000000..0fec6568 --- /dev/null +++ b/challenge-1/apps/relay/src/relay.service.ts @@ -0,0 +1,62 @@ +import { Injectable, Inject, Logger, OnApplicationBootstrap } from '@nestjs/common'; +import { ClientKafka } from '@nestjs/microservices'; +import { Cron, CronExpression } from '@nestjs/schedule'; +import { DataSource } from 'typeorm'; +import { OutboxEvent, OutboxStatus } from '@app/shared'; + +@Injectable() +export class RelayService implements OnApplicationBootstrap { + private readonly logger = new Logger(RelayService.name); + + constructor( + @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, + private readonly dataSource: DataSource, + ) {} + + async onApplicationBootstrap() { + await this.kafkaClient.connect(); + } + + @Cron(CronExpression.EVERY_5_SECONDS) + async relayOutboxEvents() { + this.logger.debug('Running Outbox Relay...'); + + // In a real distributed env, we might want to use SELECT ... FOR UPDATE SKIP LOCKED + // Here we use queryRunner to do standard transactions if needed, + // or just fetch locally to keep it simple as we only have 1 relay process. + + const events = await this.dataSource.manager.find(OutboxEvent, { + where: { status: OutboxStatus.PENDING }, + take: 100, + order: { createdAt: 'ASC' }, + }); + + if (events.length === 0) return; + + this.logger.log(`Found ${events.length} pending events to relay`); + + for (const event of events) { + try { + await new Promise((resolve, reject) => { + this.kafkaClient.emit(event.eventType, { + key: event.aggregateId, + value: event.payload + }).subscribe({ + next: (val) => resolve(val), + error: (err) => reject(err), + }); + }); + + event.status = OutboxStatus.SENT; + event.sentAt = new Date(); + await this.dataSource.manager.save(event); + + this.logger.log(`Relayed event ${event.eventId} successfully`); + } catch (error) { + this.logger.error(`Failed to relay event ${event.eventId}`, error.stack); + event.retryCount += 1; + await this.dataSource.manager.save(event); + } + } + } +} diff --git a/challenge-1/apps/relay/test/app.e2e-spec.ts b/challenge-1/apps/relay/test/app.e2e-spec.ts new file mode 100644 index 00000000..0dcd0ccd --- /dev/null +++ b/challenge-1/apps/relay/test/app.e2e-spec.ts @@ -0,0 +1,24 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import * as request from 'supertest'; +import { RelayModule } from './../src/relay.module'; + +describe('RelayController (e2e)', () => { + let app: INestApplication; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [RelayModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); +}); diff --git a/challenge-1/apps/relay/test/jest-e2e.json b/challenge-1/apps/relay/test/jest-e2e.json new file mode 100644 index 00000000..e9d912f3 --- /dev/null +++ b/challenge-1/apps/relay/test/jest-e2e.json @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff --git a/challenge-1/apps/relay/tsconfig.app.json b/challenge-1/apps/relay/tsconfig.app.json new file mode 100644 index 00000000..41a979f7 --- /dev/null +++ b/challenge-1/apps/relay/tsconfig.app.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": false, + "outDir": "../../dist/apps/relay" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/challenge-1/dist/apps/consumers/main.js b/challenge-1/dist/apps/consumers/main.js new file mode 100644 index 00000000..1aac4b22 --- /dev/null +++ b/challenge-1/dist/apps/consumers/main.js @@ -0,0 +1,824 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((module) => { + +module.exports = require("@nestjs/core"); + +/***/ }), +/* 2 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ConsumersModule = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(4); +const shared_1 = __webpack_require__(5); +const fraud_consumer_1 = __webpack_require__(16); +const ledger_consumer_1 = __webpack_require__(18); +const saga_consumer_1 = __webpack_require__(19); +const processed_events_repository_1 = __webpack_require__(17); +let ConsumersModule = class ConsumersModule { +}; +exports.ConsumersModule = ConsumersModule; +exports.ConsumersModule = ConsumersModule = __decorate([ + (0, common_1.Module)({ + imports: [ + shared_1.DatabaseModule, + microservices_1.ClientsModule.register([ + { + name: 'KAFKA_CLIENT', + transport: microservices_1.Transport.KAFKA, + options: { + client: { + clientId: 'payment-consumers', + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + consumer: { + groupId: 'consumers-group', + }, + }, + }, + ]), + ], + providers: [ + fraud_consumer_1.FraudConsumer, + ledger_consumer_1.LedgerConsumer, + saga_consumer_1.SagaConsumer, + processed_events_repository_1.ProcessedEventsRepository + ], + }) +], ConsumersModule); + + +/***/ }), +/* 3 */ +/***/ ((module) => { + +module.exports = require("@nestjs/common"); + +/***/ }), +/* 4 */ +/***/ ((module) => { + +module.exports = require("@nestjs/microservices"); + +/***/ }), +/* 5 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__webpack_require__(6), exports); +__exportStar(__webpack_require__(7), exports); +__exportStar(__webpack_require__(8), exports); +__exportStar(__webpack_require__(10), exports); +__exportStar(__webpack_require__(11), exports); +__exportStar(__webpack_require__(12), exports); +__exportStar(__webpack_require__(14), exports); + + +/***/ }), +/* 6 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedModule = void 0; +const common_1 = __webpack_require__(3); +const shared_service_1 = __webpack_require__(7); +let SharedModule = class SharedModule { +}; +exports.SharedModule = SharedModule; +exports.SharedModule = SharedModule = __decorate([ + (0, common_1.Module)({ + providers: [shared_service_1.SharedService], + exports: [shared_service_1.SharedService], + }) +], SharedModule); + + +/***/ }), +/* 7 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedService = void 0; +const common_1 = __webpack_require__(3); +let SharedService = class SharedService { +}; +exports.SharedService = SharedService; +exports.SharedService = SharedService = __decorate([ + (0, common_1.Injectable)() +], SharedService); + + +/***/ }), +/* 8 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Payment = exports.PaymentStatus = void 0; +const typeorm_1 = __webpack_require__(9); +var PaymentStatus; +(function (PaymentStatus) { + PaymentStatus["PENDING"] = "PENDING"; + PaymentStatus["SETTLED"] = "SETTLED"; + PaymentStatus["FAILED"] = "FAILED"; +})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); +let Payment = class Payment { + id; + amount; + currency; + country; + status; + createdAt; + updatedAt; +}; +exports.Payment = Payment; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], Payment.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), + __metadata("design:type", Number) +], Payment.prototype, "amount", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "currency", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "country", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: PaymentStatus, + default: PaymentStatus.PENDING, + }), + __metadata("design:type", String) +], Payment.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Payment.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.UpdateDateColumn)(), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], Payment.prototype, "updatedAt", void 0); +exports.Payment = Payment = __decorate([ + (0, typeorm_1.Entity)('payments') +], Payment); + + +/***/ }), +/* 9 */ +/***/ ((module) => { + +module.exports = require("typeorm"); + +/***/ }), +/* 10 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OutboxEvent = exports.OutboxStatus = void 0; +const typeorm_1 = __webpack_require__(9); +var OutboxStatus; +(function (OutboxStatus) { + OutboxStatus["PENDING"] = "PENDING"; + OutboxStatus["SENT"] = "SENT"; + OutboxStatus["FAILED"] = "FAILED"; +})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); +let OutboxEvent = class OutboxEvent { + eventId; + aggregateId; + eventType; + payload; + status; + retryCount; + createdAt; + sentAt; +}; +exports.OutboxEvent = OutboxEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.Column)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "aggregateId", void 0); +__decorate([ + (0, typeorm_1.Column)({ length: 100 }), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventType", void 0); +__decorate([ + (0, typeorm_1.Column)('jsonb'), + __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) +], OutboxEvent.prototype, "payload", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: OutboxStatus, + default: OutboxStatus.PENDING, + }), + __metadata("design:type", String) +], OutboxEvent.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 0 }), + __metadata("design:type", Number) +], OutboxEvent.prototype, "retryCount", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], OutboxEvent.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), + __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) +], OutboxEvent.prototype, "sentAt", void 0); +exports.OutboxEvent = OutboxEvent = __decorate([ + (0, typeorm_1.Entity)('outbox_events'), + (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) +], OutboxEvent); + + +/***/ }), +/* 11 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ProcessedEvent = void 0; +const typeorm_1 = __webpack_require__(9); +let ProcessedEvent = class ProcessedEvent { + eventId; + consumer; + processedAt; +}; +exports.ProcessedEvent = ProcessedEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], ProcessedEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.PrimaryColumn)({ length: 50 }), + __metadata("design:type", String) +], ProcessedEvent.prototype, "consumer", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], ProcessedEvent.prototype, "processedAt", void 0); +exports.ProcessedEvent = ProcessedEvent = __decorate([ + (0, typeorm_1.Entity)('processed_events') +], ProcessedEvent); + + +/***/ }), +/* 12 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DatabaseModule = void 0; +const common_1 = __webpack_require__(3); +const typeorm_1 = __webpack_require__(13); +const payment_entity_1 = __webpack_require__(8); +const outbox_event_entity_1 = __webpack_require__(10); +const processed_event_entity_1 = __webpack_require__(11); +let DatabaseModule = class DatabaseModule { +}; +exports.DatabaseModule = DatabaseModule; +exports.DatabaseModule = DatabaseModule = __decorate([ + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT || '5432', 10), + username: process.env.DB_USER || 'user', + password: process.env.DB_PASSWORD || 'password', + database: process.env.DB_NAME || 'payments_db', + entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], + synchronize: true, + }), + typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), + ], + exports: [typeorm_1.TypeOrmModule], + }) +], DatabaseModule); + + +/***/ }), +/* 13 */ +/***/ ((module) => { + +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 14 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CreatePaymentDto = void 0; +const class_validator_1 = __webpack_require__(15); +class CreatePaymentDto { + amount; + currency; + country; +} +exports.CreatePaymentDto = CreatePaymentDto; +__decorate([ + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata("design:type", Number) +], CreatePaymentDto.prototype, "amount", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "currency", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "country", void 0); + + +/***/ }), +/* 15 */ +/***/ ((module) => { + +module.exports = require("class-validator"); + +/***/ }), +/* 16 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var FraudConsumer_1; +var _a, _b, _c, _d; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.FraudConsumer = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(4); +const processed_events_repository_1 = __webpack_require__(17); +let FraudConsumer = FraudConsumer_1 = class FraudConsumer { + processedRepo; + kafkaClient; + logger = new common_1.Logger(FraudConsumer_1.name); + consumerName = 'FraudConsumer'; + maxRetries = 3; + constructor(processedRepo, kafkaClient) { + this.processedRepo = processedRepo; + this.kafkaClient = kafkaClient; + } + async handlePaymentCreated(message, context) { + const value = message; + const eventId = value.eventId || context.getMessage().key?.toString(); + const aggregateId = value.aggregateId || value.id; + if (!eventId) { + this.logger.warn('Received message without eventId, skipping'); + return; + } + try { + const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); + if (alreadyProcessed) { + this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); + return; + } + this.logger.log(`Processing fraud scoring for payment ${aggregateId}`); + if (value.amount > 1000000) { + throw new Error('Fraud check failed: amount too high.'); + } + await this.processedRepo.markProcessed(eventId, this.consumerName); + this.logger.log(`Fraud scoring passed for payment ${aggregateId}`); + this.kafkaClient.emit('payment.fraud.approved.v1', { + key: aggregateId, + value: { aggregateId, eventId, status: 'APPROVED' }, + }); + } + catch (error) { + this.logger.error(`Error processing ${eventId} in Fraud: ${error.message}`); + await this.sendToDlt('payment.created.v1', value, error); + } + } + async sendToDlt(originalTopic, message, error) { + const dltTopic = `${originalTopic}.dlt`; + const aggregateId = message.aggregateId || message.id; + this.logger.warn(`Sending to DLT -> ${dltTopic}`); + this.kafkaClient.emit(dltTopic, { + key: aggregateId, + value: { + originalTopic, + originalMessage: message, + error: error.message, + failedAt: new Date().toISOString(), + }, + }); + this.kafkaClient.emit('payment.failed.v1', { + key: aggregateId, + value: { aggregateId, reason: error.message }, + }); + } +}; +exports.FraudConsumer = FraudConsumer; +__decorate([ + (0, microservices_1.EventPattern)('payment.created.v1'), + __param(0, (0, microservices_1.Payload)()), + __param(1, (0, microservices_1.Ctx)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), + __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) +], FraudConsumer.prototype, "handlePaymentCreated", null); +exports.FraudConsumer = FraudConsumer = FraudConsumer_1 = __decorate([ + (0, common_1.Controller)(), + __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), + __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) +], FraudConsumer); + + +/***/ }), +/* 17 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ProcessedEventsRepository = void 0; +const common_1 = __webpack_require__(3); +const typeorm_1 = __webpack_require__(9); +const shared_1 = __webpack_require__(5); +let ProcessedEventsRepository = class ProcessedEventsRepository { + dataSource; + constructor(dataSource) { + this.dataSource = dataSource; + } + async exists(eventId, consumer) { + const record = await this.dataSource.manager.findOne(shared_1.ProcessedEvent, { + where: { eventId, consumer }, + }); + return !!record; + } + async markProcessed(eventId, consumer) { + const record = this.dataSource.manager.create(shared_1.ProcessedEvent, { + eventId, + consumer, + }); + await this.dataSource.manager.save(record); + } +}; +exports.ProcessedEventsRepository = ProcessedEventsRepository; +exports.ProcessedEventsRepository = ProcessedEventsRepository = __decorate([ + (0, common_1.Injectable)(), + __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object]) +], ProcessedEventsRepository); + + +/***/ }), +/* 18 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var LedgerConsumer_1; +var _a, _b, _c, _d; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.LedgerConsumer = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(4); +const processed_events_repository_1 = __webpack_require__(17); +let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { + processedRepo; + kafkaClient; + logger = new common_1.Logger(LedgerConsumer_1.name); + consumerName = 'LedgerConsumer'; + constructor(processedRepo, kafkaClient) { + this.processedRepo = processedRepo; + this.kafkaClient = kafkaClient; + } + async handlePaymentCreated(message, context) { + const value = message; + const eventId = value.eventId || context.getMessage().key?.toString(); + const aggregateId = value.aggregateId || value.id; + if (!eventId) { + this.logger.warn('Received message without eventId, skipping'); + return; + } + try { + const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); + if (alreadyProcessed) { + this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); + return; + } + this.logger.log(`Processing ledger entry (double-entry write) for payment ${aggregateId}`); + await this.processedRepo.markProcessed(eventId, this.consumerName); + this.logger.log(`Ledger entry written for payment ${aggregateId}`); + this.kafkaClient.emit('payment.ledger.written.v1', { + key: aggregateId, + value: { aggregateId, eventId, status: 'WRITTEN' }, + }); + } + catch (error) { + this.logger.error(`Error processing ${eventId} in Ledger: ${error.message}`); + await this.sendToDlt('payment.created.v1', value, error); + } + } + async sendToDlt(originalTopic, message, error) { + const dltTopic = `${originalTopic}.dlt`; + const aggregateId = message.aggregateId || message.id; + this.logger.warn(`Sending to DLT -> ${dltTopic}`); + this.kafkaClient.emit(dltTopic, { + key: aggregateId, + value: { + originalTopic, + originalMessage: message, + error: error.message, + failedAt: new Date().toISOString(), + }, + }); + this.kafkaClient.emit('payment.failed.v1', { + key: aggregateId, + value: { aggregateId, reason: error.message }, + }); + } +}; +exports.LedgerConsumer = LedgerConsumer; +__decorate([ + (0, microservices_1.EventPattern)('payment.created.v1'), + __param(0, (0, microservices_1.Payload)()), + __param(1, (0, microservices_1.Ctx)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), + __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) +], LedgerConsumer.prototype, "handlePaymentCreated", null); +exports.LedgerConsumer = LedgerConsumer = LedgerConsumer_1 = __decorate([ + (0, common_1.Controller)(), + __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), + __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) +], LedgerConsumer); + + +/***/ }), +/* 19 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var SagaConsumer_1; +var _a, _b, _c, _d, _e; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SagaConsumer = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(4); +const typeorm_1 = __webpack_require__(9); +const processed_events_repository_1 = __webpack_require__(17); +const shared_1 = __webpack_require__(5); +let SagaConsumer = SagaConsumer_1 = class SagaConsumer { + dataSource; + processedRepo; + logger = new common_1.Logger(SagaConsumer_1.name); + constructor(dataSource, processedRepo) { + this.dataSource = dataSource; + this.processedRepo = processedRepo; + } + async handleFraudApproved(message) { + await this.trySettlePayment(message.eventId, message.aggregateId); + } + async handleLedgerWritten(message) { + await this.trySettlePayment(message.eventId, message.aggregateId); + } + async handlePaymentFailed(message) { + const aggregateId = message.aggregateId || message.id; + this.logger.warn(`Saga reacting to failure for payment ${aggregateId}`); + await this.dataSource.manager.update(shared_1.Payment, { id: aggregateId }, { status: shared_1.PaymentStatus.FAILED }); + } + async trySettlePayment(eventId, aggregateId) { + if (!eventId || !aggregateId) + return; + const fraudProcessed = await this.processedRepo.exists(eventId, 'FraudConsumer'); + const ledgerProcessed = await this.processedRepo.exists(eventId, 'LedgerConsumer'); + if (fraudProcessed && ledgerProcessed) { + this.logger.log(`Both consumers processed for ${aggregateId}. Settling payment.`); + await this.dataSource.manager.update(shared_1.Payment, { id: aggregateId }, { status: shared_1.PaymentStatus.SETTLED }); + } + } +}; +exports.SagaConsumer = SagaConsumer; +__decorate([ + (0, microservices_1.EventPattern)('payment.fraud.approved.v1'), + __param(0, (0, microservices_1.Payload)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) +], SagaConsumer.prototype, "handleFraudApproved", null); +__decorate([ + (0, microservices_1.EventPattern)('payment.ledger.written.v1'), + __param(0, (0, microservices_1.Payload)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) +], SagaConsumer.prototype, "handleLedgerWritten", null); +__decorate([ + (0, microservices_1.EventPattern)('payment.failed.v1'), + __param(0, (0, microservices_1.Payload)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", typeof (_e = typeof Promise !== "undefined" && Promise) === "function" ? _e : Object) +], SagaConsumer.prototype, "handlePaymentFailed", null); +exports.SagaConsumer = SagaConsumer = SagaConsumer_1 = __decorate([ + (0, common_1.Controller)(), + __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object, typeof (_b = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _b : Object]) +], SagaConsumer); + + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const core_1 = __webpack_require__(1); +const consumers_module_1 = __webpack_require__(2); +const microservices_1 = __webpack_require__(4); +async function bootstrap() { + const app = await core_1.NestFactory.createMicroservice(consumers_module_1.ConsumersModule, { + transport: microservices_1.Transport.KAFKA, + options: { + client: { + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + consumer: { + groupId: 'consumers-main-group', + }, + subscribe: { + fromBeginning: true, + } + }, + }); + await app.listen(); + console.log('Payment Consumers microservice is listening for Kafka events.'); +} +bootstrap(); + +})(); + +/******/ })() +; \ No newline at end of file diff --git a/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo b/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo new file mode 100644 index 00000000..9a63f4ea --- /dev/null +++ b/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2023.full.d.ts","../../../node_modules/reflect-metadata/index.d.ts","../../../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../../../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../../../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../../../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../../../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../../../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../../../node_modules/@nestjs/common/enums/index.d.ts","../../../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../../../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../../../node_modules/@nestjs/common/services/logger.service.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/index.d.ts","../../../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../../../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/index.d.ts","../../../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../../../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/index.d.ts","../../../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/modules/index.d.ts","../../../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../../../node_modules/@nestjs/common/constants.d.ts","../../../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/index.d.ts","../../../node_modules/@nestjs/common/decorators/index.d.ts","../../../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/index.d.ts","../../../node_modules/@nestjs/common/services/console-logger.service.d.ts","../../../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../../../node_modules/@nestjs/common/services/index.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../../../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../../../node_modules/@nestjs/common/file-stream/index.d.ts","../../../node_modules/@nestjs/common/module-utils/constants.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../../../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../../../node_modules/@nestjs/common/module-utils/index.d.ts","../../../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../../../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../../../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../../../node_modules/@nestjs/common/pipes/file/index.d.ts","../../../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../../../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/index.d.ts","../../../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../../../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../../../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../../../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../../../node_modules/@nestjs/common/serializer/index.d.ts","../../../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../../../node_modules/@nestjs/common/utils/index.d.ts","../../../node_modules/@nestjs/common/index.d.ts","../../../apps/consumers/src/consumers.service.ts","../../../apps/consumers/src/consumers.controller.ts","../../../node_modules/@nestjs/microservices/interfaces/client-grpc.interface.d.ts","../../../node_modules/@nestjs/microservices/events/kafka.events.d.ts","../../../node_modules/@nestjs/microservices/events/mqtt.events.d.ts","../../../node_modules/@nestjs/microservices/events/nats.events.d.ts","../../../node_modules/@nestjs/microservices/events/redis.events.d.ts","../../../node_modules/@nestjs/microservices/events/rmq.events.d.ts","../../../node_modules/@nestjs/microservices/events/tcp.events.d.ts","../../../node_modules/@nestjs/microservices/events/index.d.ts","../../../node_modules/@nestjs/microservices/external/kafka.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/client-kafka-proxy.interface.d.ts","../../../node_modules/@nestjs/microservices/enums/transport.enum.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@nestjs/microservices/helpers/tcp-socket.d.ts","../../../node_modules/@nestjs/microservices/helpers/json-socket.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-logger.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-parser.d.ts","../../../node_modules/@nestjs/microservices/interfaces/packet.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/deserializer.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/serializer.interface.d.ts","../../../node_modules/@nestjs/microservices/client/client-proxy.d.ts","../../../node_modules/@nestjs/microservices/client/client-kafka.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-reply-partition-assigner.d.ts","../../../node_modules/@nestjs/microservices/helpers/grpc-helpers.d.ts","../../../node_modules/@nestjs/microservices/helpers/index.d.ts","../../../node_modules/@nestjs/microservices/external/grpc-options.interface.d.ts","../../../node_modules/@nestjs/microservices/external/mqtt-options.interface.d.ts","../../../node_modules/@nestjs/microservices/external/redis.interface.d.ts","../../../node_modules/@nestjs/microservices/external/rmq-url.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/custom-transport-strategy.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/microservice-configuration.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/client-metadata.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/message-handler.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/pattern-metadata.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/pattern.interface.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/base-rpc.context.d.ts","../../../node_modules/@nestjs/microservices/interfaces/request-context.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/index.d.ts","../../../node_modules/@nestjs/microservices/client/client-grpc.d.ts","../../../node_modules/@nestjs/microservices/record-builders/mqtt.record-builder.d.ts","../../../node_modules/@nestjs/microservices/client/client-mqtt.d.ts","../../../node_modules/@nestjs/microservices/client/client-nats.d.ts","../../../node_modules/@nestjs/microservices/client/client-proxy-factory.d.ts","../../../node_modules/@nestjs/microservices/client/client-redis.d.ts","../../../node_modules/@nestjs/microservices/client/client-rmq.d.ts","../../../node_modules/@nestjs/microservices/client/client-tcp.d.ts","../../../node_modules/@nestjs/microservices/client/index.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/kafka.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/mqtt.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/nats.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/redis.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/rmq.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/tcp.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/index.d.ts","../../../node_modules/@nestjs/microservices/decorators/client.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/ctx.decorator.d.ts","../../../node_modules/@nestjs/microservices/enums/kafka-headers.enum.d.ts","../../../node_modules/@nestjs/microservices/enums/index.d.ts","../../../node_modules/@nestjs/microservices/decorators/event-pattern.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/grpc-service.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/message-pattern.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/payload.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/index.d.ts","../../../node_modules/@nestjs/microservices/exceptions/base-rpc-exception-filter.d.ts","../../../node_modules/@nestjs/microservices/exceptions/rpc-exception.d.ts","../../../node_modules/@nestjs/microservices/exceptions/kafka-retriable-exception.d.ts","../../../node_modules/@nestjs/microservices/exceptions/index.d.ts","../../../node_modules/@nestjs/microservices/module/interfaces/clients-module.interface.d.ts","../../../node_modules/@nestjs/microservices/module/interfaces/index.d.ts","../../../node_modules/@nestjs/microservices/module/clients.module.d.ts","../../../node_modules/@nestjs/microservices/module/index.d.ts","../../../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../../../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../../../node_modules/@nestjs/core/injector/injector.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../../../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../../../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../../../node_modules/@nestjs/core/injector/compiler.d.ts","../../../node_modules/@nestjs/core/injector/modules-container.d.ts","../../../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../../../node_modules/@nestjs/core/adapters/index.d.ts","../../../node_modules/@nestjs/core/constants.d.ts","../../../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../../../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../../../node_modules/@nestjs/core/discovery/index.d.ts","../../../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../../../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../../../node_modules/@nestjs/core/exceptions/index.d.ts","../../../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../../../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../../../node_modules/@nestjs/core/router/router-proxy.d.ts","../../../node_modules/@nestjs/core/helpers/context-creator.d.ts","../../../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../../../node_modules/@nestjs/core/guards/constants.d.ts","../../../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../../../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../../../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../../../node_modules/@nestjs/core/guards/index.d.ts","../../../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../../../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../../../node_modules/@nestjs/core/interceptors/index.d.ts","../../../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../../../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../../../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../../../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../../../node_modules/@nestjs/core/pipes/index.d.ts","../../../node_modules/@nestjs/core/helpers/context-utils.d.ts","../../../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../../../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../../../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../../../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../../../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../../../node_modules/@nestjs/core/metadata-scanner.d.ts","../../../node_modules/@nestjs/core/scanner.d.ts","../../../node_modules/@nestjs/core/injector/instance-loader.d.ts","../../../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../../../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../../../node_modules/@nestjs/core/injector/module-ref.d.ts","../../../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../../../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../../../node_modules/@nestjs/core/injector/index.d.ts","../../../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../../../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../../../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../../../node_modules/@nestjs/core/helpers/index.d.ts","../../../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../../../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../../../node_modules/@nestjs/core/inspector/index.d.ts","../../../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../../../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../../../node_modules/@nestjs/core/middleware/builder.d.ts","../../../node_modules/@nestjs/core/middleware/index.d.ts","../../../node_modules/@nestjs/core/nest-application-context.d.ts","../../../node_modules/@nestjs/core/nest-application.d.ts","../../../node_modules/@nestjs/core/nest-factory.d.ts","../../../node_modules/@nestjs/core/repl/repl.d.ts","../../../node_modules/@nestjs/core/repl/index.d.ts","../../../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../../../node_modules/@nestjs/core/router/interfaces/index.d.ts","../../../node_modules/@nestjs/core/router/request/request-constants.d.ts","../../../node_modules/@nestjs/core/router/request/index.d.ts","../../../node_modules/@nestjs/core/router/router-module.d.ts","../../../node_modules/@nestjs/core/router/index.d.ts","../../../node_modules/@nestjs/core/services/reflector.service.d.ts","../../../node_modules/@nestjs/core/services/index.d.ts","../../../node_modules/@nestjs/core/index.d.ts","../../../node_modules/@nestjs/core/injector/container.d.ts","../../../node_modules/@nestjs/core/injector/module.d.ts","../../../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../../../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../../../node_modules/@nestjs/core/application-config.d.ts","../../../node_modules/@nestjs/microservices/nest-microservice.d.ts","../../../node_modules/@nestjs/microservices/record-builders/nats.record-builder.d.ts","../../../node_modules/@nestjs/microservices/record-builders/rmq.record-builder.d.ts","../../../node_modules/@nestjs/microservices/record-builders/index.d.ts","../../../node_modules/@nestjs/microservices/server/server.d.ts","../../../node_modules/@nestjs/microservices/server/server-grpc.d.ts","../../../node_modules/@nestjs/microservices/server/server-kafka.d.ts","../../../node_modules/@nestjs/microservices/server/server-mqtt.d.ts","../../../node_modules/@nestjs/microservices/server/server-nats.d.ts","../../../node_modules/@nestjs/microservices/server/server-redis.d.ts","../../../node_modules/@nestjs/microservices/server/server-rmq.d.ts","../../../node_modules/@nestjs/microservices/server/server-tcp.d.ts","../../../node_modules/@nestjs/microservices/server/index.d.ts","../../../node_modules/@nestjs/microservices/tokens.d.ts","../../../node_modules/@nestjs/microservices/index.d.ts","../../../libs/shared/src/shared.service.ts","../../../libs/shared/src/shared.module.ts","../../../node_modules/typeorm/metadata/types/relationtypes.d.ts","../../../node_modules/typeorm/metadata/types/deferrabletype.d.ts","../../../node_modules/typeorm/metadata/types/ondeletetype.d.ts","../../../node_modules/typeorm/metadata/types/onupdatetype.d.ts","../../../node_modules/typeorm/decorator/options/relationoptions.d.ts","../../../node_modules/typeorm/metadata/types/propertytypeinfunction.d.ts","../../../node_modules/typeorm/common/objecttype.d.ts","../../../node_modules/typeorm/common/entitytarget.d.ts","../../../node_modules/typeorm/metadata/types/relationtypeinfunction.d.ts","../../../node_modules/typeorm/metadata-args/relationmetadataargs.d.ts","../../../node_modules/typeorm/driver/types/columntypes.d.ts","../../../node_modules/typeorm/decorator/options/valuetransformer.d.ts","../../../node_modules/typeorm/decorator/options/columncommonoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnoptions.d.ts","../../../node_modules/typeorm/metadata-args/types/columnmode.d.ts","../../../node_modules/typeorm/metadata-args/columnmetadataargs.d.ts","../../../node_modules/typeorm/common/objectliteral.d.ts","../../../node_modules/typeorm/schema-builder/options/tablecolumnoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tablecolumn.d.ts","../../../node_modules/typeorm/schema-builder/options/viewoptions.d.ts","../../../node_modules/typeorm/schema-builder/view/view.d.ts","../../../node_modules/typeorm/naming-strategy/namingstrategyinterface.d.ts","../../../node_modules/typeorm/metadata/foreignkeymetadata.d.ts","../../../node_modules/typeorm/metadata/relationmetadata.d.ts","../../../node_modules/typeorm/metadata-args/embeddedmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/relationidmetadataargs.d.ts","../../../node_modules/typeorm/metadata/relationidmetadata.d.ts","../../../node_modules/typeorm/metadata/relationcountmetadata.d.ts","../../../node_modules/typeorm/metadata/types/eventlistenertypes.d.ts","../../../node_modules/typeorm/metadata-args/entitylistenermetadataargs.d.ts","../../../node_modules/typeorm/metadata/entitylistenermetadata.d.ts","../../../node_modules/typeorm/metadata-args/uniquemetadataargs.d.ts","../../../node_modules/typeorm/metadata/uniquemetadata.d.ts","../../../node_modules/typeorm/metadata/embeddedmetadata.d.ts","../../../node_modules/typeorm/metadata/columnmetadata.d.ts","../../../node_modules/typeorm/driver/types/ctecapabilities.d.ts","../../../node_modules/typeorm/driver/types/mappedcolumntypes.d.ts","../../../node_modules/typeorm/driver/query.d.ts","../../../node_modules/typeorm/driver/sqlinmemory.d.ts","../../../node_modules/typeorm/schema-builder/schemabuilder.d.ts","../../../node_modules/typeorm/driver/types/datatypedefaults.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaindexoptions.d.ts","../../../node_modules/typeorm/driver/types/geojsontypes.d.ts","../../../node_modules/typeorm/decorator/options/spatialcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/foreignkeyoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacolumnforeignkeyoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/joincolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/jointablemultiplecolumnsoptions.d.ts","../../../node_modules/typeorm/decorator/options/jointableoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemarelationoptions.d.ts","../../../node_modules/typeorm/find-options/orderbycondition.d.ts","../../../node_modules/typeorm/metadata/types/tabletypes.d.ts","../../../node_modules/typeorm/entity-schema/entityschemauniqueoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacheckoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaexclusionoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemainheritanceoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemarelationidoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaforeignkeyoptions.d.ts","../../../node_modules/typeorm/metadata/types/treetypes.d.ts","../../../node_modules/typeorm/metadata/types/closuretreeoptions.d.ts","../../../node_modules/typeorm/metadata-args/treemetadataargs.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschema.d.ts","../../../node_modules/typeorm/logger/logger.d.ts","../../../node_modules/typeorm/logger/loggeroptions.d.ts","../../../node_modules/typeorm/driver/types/databasetype.d.ts","../../../node_modules/typeorm/cache/queryresultcacheoptions.d.ts","../../../node_modules/typeorm/cache/queryresultcache.d.ts","../../../node_modules/typeorm/common/mixedlist.d.ts","../../../node_modules/typeorm/data-source/basedatasourceoptions.d.ts","../../../node_modules/typeorm/driver/types/replicationmode.d.ts","../../../node_modules/typeorm/schema-builder/options/tableforeignkeyoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableforeignkey.d.ts","../../../node_modules/typeorm/driver/types/upserttype.d.ts","../../../node_modules/typeorm/driver/driver.d.ts","../../../node_modules/typeorm/find-options/joinoptions.d.ts","../../../node_modules/typeorm/find-options/findoperatortype.d.ts","../../../node_modules/typeorm/find-options/findoperator.d.ts","../../../node_modules/typeorm/platform/platformtools.d.ts","../../../node_modules/typeorm/driver/mongodb/bson.typings.d.ts","../../../node_modules/typeorm/driver/mongodb/typings.d.ts","../../../node_modules/typeorm/find-options/equaloperator.d.ts","../../../node_modules/typeorm/find-options/findoptionswhere.d.ts","../../../node_modules/typeorm/find-options/findoptionsselect.d.ts","../../../node_modules/typeorm/find-options/findoptionsrelations.d.ts","../../../node_modules/typeorm/find-options/findoptionsorder.d.ts","../../../node_modules/typeorm/find-options/findoneoptions.d.ts","../../../node_modules/typeorm/find-options/findmanyoptions.d.ts","../../../node_modules/typeorm/common/deeppartial.d.ts","../../../node_modules/typeorm/repository/saveoptions.d.ts","../../../node_modules/typeorm/repository/removeoptions.d.ts","../../../node_modules/typeorm/find-options/mongodb/mongofindoneoptions.d.ts","../../../node_modules/typeorm/find-options/mongodb/mongofindmanyoptions.d.ts","../../../node_modules/typeorm/schema-builder/options/tableuniqueoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableunique.d.ts","../../../node_modules/typeorm/subscriber/broadcasterresult.d.ts","../../../node_modules/typeorm/subscriber/event/transactioncommitevent.d.ts","../../../node_modules/typeorm/subscriber/event/transactionrollbackevent.d.ts","../../../node_modules/typeorm/subscriber/event/transactionstartevent.d.ts","../../../node_modules/typeorm/subscriber/event/updateevent.d.ts","../../../node_modules/typeorm/subscriber/event/removeevent.d.ts","../../../node_modules/typeorm/subscriber/event/insertevent.d.ts","../../../node_modules/typeorm/subscriber/event/loadevent.d.ts","../../../node_modules/typeorm/subscriber/event/softremoveevent.d.ts","../../../node_modules/typeorm/subscriber/event/recoverevent.d.ts","../../../node_modules/typeorm/subscriber/event/queryevent.d.ts","../../../node_modules/typeorm/subscriber/entitysubscriberinterface.d.ts","../../../node_modules/typeorm/subscriber/broadcaster.d.ts","../../../node_modules/typeorm/schema-builder/options/tablecheckoptions.d.ts","../../../node_modules/typeorm/metadata-args/checkmetadataargs.d.ts","../../../node_modules/typeorm/metadata/checkmetadata.d.ts","../../../node_modules/typeorm/schema-builder/table/tablecheck.d.ts","../../../node_modules/typeorm/schema-builder/options/tableexclusionoptions.d.ts","../../../node_modules/typeorm/metadata-args/exclusionmetadataargs.d.ts","../../../node_modules/typeorm/metadata/exclusionmetadata.d.ts","../../../node_modules/typeorm/schema-builder/table/tableexclusion.d.ts","../../../node_modules/typeorm/driver/mongodb/mongoqueryrunner.d.ts","../../../node_modules/typeorm/query-builder/querypartialentity.d.ts","../../../node_modules/typeorm/query-runner/queryresult.d.ts","../../../node_modules/typeorm/query-builder/result/insertresult.d.ts","../../../node_modules/typeorm/query-builder/result/updateresult.d.ts","../../../node_modules/typeorm/query-builder/result/deleteresult.d.ts","../../../node_modules/typeorm/entity-manager/mongoentitymanager.d.ts","../../../node_modules/typeorm/repository/mongorepository.d.ts","../../../node_modules/typeorm/find-options/findtreeoptions.d.ts","../../../node_modules/typeorm/repository/treerepository.d.ts","../../../node_modules/typeorm/query-builder/transformer/plainobjecttonewentitytransformer.d.ts","../../../node_modules/typeorm/driver/types/isolationlevel.d.ts","../../../node_modules/typeorm/query-builder/whereexpressionbuilder.d.ts","../../../node_modules/typeorm/query-builder/brackets.d.ts","../../../node_modules/typeorm/query-builder/insertorupdateoptions.d.ts","../../../node_modules/typeorm/repository/upsertoptions.d.ts","../../../node_modules/typeorm/common/pickkeysbytype.d.ts","../../../node_modules/typeorm/entity-manager/entitymanager.d.ts","../../../node_modules/typeorm/repository/repository.d.ts","../../../node_modules/typeorm/migration/migrationinterface.d.ts","../../../node_modules/typeorm/migration/migration.d.ts","../../../node_modules/typeorm/driver/cockroachdb/cockroachconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/cockroachdb/cockroachconnectionoptions.d.ts","../../../node_modules/typeorm/driver/mysql/mysqlconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/mysql/mysqlconnectionoptions.d.ts","../../../node_modules/typeorm/driver/postgres/postgresconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/postgres/postgresconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqlite/sqliteconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/defaultauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryaccesstokenauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorydefaultauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsiappserviceauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsivmauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorypasswordauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryserviceprincipalsecret.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/ntlmauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/sqlserverconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/sqlserver/sqlserverconnectionoptions.d.ts","../../../node_modules/typeorm/driver/oracle/oracleconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/oracle/oracleconnectionoptions.d.ts","../../../node_modules/typeorm/driver/mongodb/mongoconnectionoptions.d.ts","../../../node_modules/typeorm/driver/cordova/cordovaconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqljs/sqljsconnectionoptions.d.ts","../../../node_modules/typeorm/driver/react-native/reactnativeconnectionoptions.d.ts","../../../node_modules/typeorm/driver/nativescript/nativescriptconnectionoptions.d.ts","../../../node_modules/typeorm/driver/expo/expoconnectionoptions.d.ts","../../../node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sap/sapconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/sap/sapconnectionoptions.d.ts","../../../node_modules/typeorm/driver/aurora-postgres/aurorapostgresconnectionoptions.d.ts","../../../node_modules/typeorm/driver/better-sqlite3/bettersqlite3connectionoptions.d.ts","../../../node_modules/typeorm/driver/capacitor/capacitorconnectionoptions.d.ts","../../../node_modules/typeorm/connection/baseconnectionoptions.d.ts","../../../node_modules/typeorm/driver/spanner/spannerconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/spanner/spannerconnectionoptions.d.ts","../../../node_modules/typeorm/data-source/datasourceoptions.d.ts","../../../node_modules/typeorm/entity-manager/sqljsentitymanager.d.ts","../../../node_modules/typeorm/query-builder/relationloader.d.ts","../../../node_modules/typeorm/query-builder/relationidloader.d.ts","../../../node_modules/typeorm/data-source/datasource.d.ts","../../../node_modules/typeorm/metadata-args/tablemetadataargs.d.ts","../../../node_modules/typeorm/metadata/entitymetadata.d.ts","../../../node_modules/typeorm/metadata-args/indexmetadataargs.d.ts","../../../node_modules/typeorm/metadata/indexmetadata.d.ts","../../../node_modules/typeorm/schema-builder/options/tableindexoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableindex.d.ts","../../../node_modules/typeorm/schema-builder/options/tableoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/table.d.ts","../../../node_modules/typeorm/query-runner/queryrunner.d.ts","../../../node_modules/typeorm/query-builder/querybuildercte.d.ts","../../../node_modules/typeorm/query-builder/alias.d.ts","../../../node_modules/typeorm/query-builder/joinattribute.d.ts","../../../node_modules/typeorm/query-builder/relation-id/relationidattribute.d.ts","../../../node_modules/typeorm/query-builder/relation-count/relationcountattribute.d.ts","../../../node_modules/typeorm/query-builder/selectquery.d.ts","../../../node_modules/typeorm/query-builder/selectquerybuilderoption.d.ts","../../../node_modules/typeorm/query-builder/whereclause.d.ts","../../../node_modules/typeorm/query-builder/queryexpressionmap.d.ts","../../../node_modules/typeorm/query-builder/updatequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/deletequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/softdeletequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/insertquerybuilder.d.ts","../../../node_modules/typeorm/query-builder/relationquerybuilder.d.ts","../../../node_modules/typeorm/query-builder/notbrackets.d.ts","../../../node_modules/typeorm/query-builder/querybuilder.d.ts","../../../node_modules/typeorm/query-builder/selectquerybuilder.d.ts","../../../node_modules/typeorm/metadata-args/relationcountmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/namingstrategymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/joincolumnmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/jointablemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/entitysubscribermetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/inheritancemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/discriminatorvaluemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/entityrepositorymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/transactionentitymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/transactionrepositorymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/generatedmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/foreignkeymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/metadataargsstorage.d.ts","../../../node_modules/typeorm/connection/connectionmanager.d.ts","../../../node_modules/typeorm/globals.d.ts","../../../node_modules/typeorm/container.d.ts","../../../node_modules/typeorm/common/relationtype.d.ts","../../../node_modules/typeorm/error/typeormerror.d.ts","../../../node_modules/typeorm/error/cannotreflectmethodparametertypeerror.d.ts","../../../node_modules/typeorm/error/alreadyhasactiveconnectionerror.d.ts","../../../node_modules/typeorm/persistence/subjectchangemap.d.ts","../../../node_modules/typeorm/persistence/subject.d.ts","../../../node_modules/typeorm/error/subjectwithoutidentifiererror.d.ts","../../../node_modules/typeorm/error/cannotconnectalreadyconnectederror.d.ts","../../../node_modules/typeorm/error/locknotsupportedongivendrivererror.d.ts","../../../node_modules/typeorm/error/connectionisnotseterror.d.ts","../../../node_modules/typeorm/error/cannotcreateentityidmaperror.d.ts","../../../node_modules/typeorm/error/metadataalreadyexistserror.d.ts","../../../node_modules/typeorm/error/cannotdetermineentityerror.d.ts","../../../node_modules/typeorm/error/updatevaluesmissingerror.d.ts","../../../node_modules/typeorm/error/treerepositorynotsupportederror.d.ts","../../../node_modules/typeorm/error/customrepositorynotfounderror.d.ts","../../../node_modules/typeorm/error/transactionnotstartederror.d.ts","../../../node_modules/typeorm/error/transactionalreadystartederror.d.ts","../../../node_modules/typeorm/error/entitynotfounderror.d.ts","../../../node_modules/typeorm/error/entitymetadatanotfounderror.d.ts","../../../node_modules/typeorm/error/mustbeentityerror.d.ts","../../../node_modules/typeorm/error/optimisticlockversionmismatcherror.d.ts","../../../node_modules/typeorm/error/limitonupdatenotsupportederror.d.ts","../../../node_modules/typeorm/error/primarycolumncannotbenullableerror.d.ts","../../../node_modules/typeorm/error/customrepositorycannotinheritrepositoryerror.d.ts","../../../node_modules/typeorm/error/queryrunnerprovideralreadyreleasederror.d.ts","../../../node_modules/typeorm/error/cannotattachtreechildrenentityerror.d.ts","../../../node_modules/typeorm/error/customrepositorydoesnothaveentityerror.d.ts","../../../node_modules/typeorm/error/missingdeletedatecolumnerror.d.ts","../../../node_modules/typeorm/error/noconnectionforrepositoryerror.d.ts","../../../node_modules/typeorm/error/circularrelationserror.d.ts","../../../node_modules/typeorm/error/returningstatementnotsupportederror.d.ts","../../../node_modules/typeorm/error/usingjointableisnotallowederror.d.ts","../../../node_modules/typeorm/error/missingjoincolumnerror.d.ts","../../../node_modules/typeorm/error/missingprimarycolumnerror.d.ts","../../../node_modules/typeorm/error/entitypropertynotfounderror.d.ts","../../../node_modules/typeorm/error/missingdrivererror.d.ts","../../../node_modules/typeorm/error/driverpackagenotinstallederror.d.ts","../../../node_modules/typeorm/error/cannotgetentitymanagernotconnectederror.d.ts","../../../node_modules/typeorm/error/connectionnotfounderror.d.ts","../../../node_modules/typeorm/error/noversionorupdatedatecolumnerror.d.ts","../../../node_modules/typeorm/error/insertvaluesmissingerror.d.ts","../../../node_modules/typeorm/error/optimisticlockcannotbeusederror.d.ts","../../../node_modules/typeorm/error/metadatawithsuchnamealreadyexistserror.d.ts","../../../node_modules/typeorm/error/driveroptionnotseterror.d.ts","../../../node_modules/typeorm/error/findrelationsnotfounderror.d.ts","../../../node_modules/typeorm/error/pessimisticlocktransactionrequirederror.d.ts","../../../node_modules/typeorm/error/repositorynottreeerror.d.ts","../../../node_modules/typeorm/error/datatypenotsupportederror.d.ts","../../../node_modules/typeorm/error/initializedrelationerror.d.ts","../../../node_modules/typeorm/error/missingjointableerror.d.ts","../../../node_modules/typeorm/error/queryfailederror.d.ts","../../../node_modules/typeorm/error/noneedtoreleaseentitymanagererror.d.ts","../../../node_modules/typeorm/error/usingjoincolumnonlyononesideallowederror.d.ts","../../../node_modules/typeorm/error/usingjointableonlyononesideallowederror.d.ts","../../../node_modules/typeorm/error/subjectremovedandupdatederror.d.ts","../../../node_modules/typeorm/error/persistedentitynotfounderror.d.ts","../../../node_modules/typeorm/error/usingjoincolumnisnotallowederror.d.ts","../../../node_modules/typeorm/error/columntypeundefinederror.d.ts","../../../node_modules/typeorm/error/queryrunneralreadyreleasederror.d.ts","../../../node_modules/typeorm/error/offsetwithoutlimitnotsupportederror.d.ts","../../../node_modules/typeorm/error/cannotexecutenotconnectederror.d.ts","../../../node_modules/typeorm/error/noconnectionoptionerror.d.ts","../../../node_modules/typeorm/error/forbiddentransactionmodeoverrideerror.d.ts","../../../node_modules/typeorm/error/index.d.ts","../../../node_modules/typeorm/decorator/options/columnembeddedoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnenumoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnhstoreoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnnumericoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnunsignedoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnwithlengthoptions.d.ts","../../../node_modules/typeorm/decorator/columns/column.d.ts","../../../node_modules/typeorm/decorator/columns/createdatecolumn.d.ts","../../../node_modules/typeorm/decorator/columns/deletedatecolumn.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnnumericoptions.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnuuidoptions.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnidentityoptions.d.ts","../../../node_modules/typeorm/decorator/columns/primarygeneratedcolumn.d.ts","../../../node_modules/typeorm/decorator/columns/primarycolumn.d.ts","../../../node_modules/typeorm/decorator/columns/updatedatecolumn.d.ts","../../../node_modules/typeorm/decorator/columns/versioncolumn.d.ts","../../../node_modules/typeorm/decorator/options/virtualcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/columns/virtualcolumn.d.ts","../../../node_modules/typeorm/decorator/options/viewcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/columns/viewcolumn.d.ts","../../../node_modules/typeorm/decorator/columns/objectidcolumn.d.ts","../../../node_modules/typeorm/decorator/listeners/afterinsert.d.ts","../../../node_modules/typeorm/decorator/listeners/afterload.d.ts","../../../node_modules/typeorm/decorator/listeners/afterremove.d.ts","../../../node_modules/typeorm/decorator/listeners/aftersoftremove.d.ts","../../../node_modules/typeorm/decorator/listeners/afterrecover.d.ts","../../../node_modules/typeorm/decorator/listeners/afterupdate.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeinsert.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeremove.d.ts","../../../node_modules/typeorm/decorator/listeners/beforesoftremove.d.ts","../../../node_modules/typeorm/decorator/listeners/beforerecover.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeupdate.d.ts","../../../node_modules/typeorm/decorator/listeners/eventsubscriber.d.ts","../../../node_modules/typeorm/decorator/options/indexoptions.d.ts","../../../node_modules/typeorm/decorator/options/entityoptions.d.ts","../../../node_modules/typeorm/decorator/relations/joincolumn.d.ts","../../../node_modules/typeorm/decorator/relations/jointable.d.ts","../../../node_modules/typeorm/decorator/relations/manytomany.d.ts","../../../node_modules/typeorm/decorator/relations/manytoone.d.ts","../../../node_modules/typeorm/decorator/relations/onetomany.d.ts","../../../node_modules/typeorm/decorator/relations/onetoone.d.ts","../../../node_modules/typeorm/decorator/relations/relationcount.d.ts","../../../node_modules/typeorm/decorator/relations/relationid.d.ts","../../../node_modules/typeorm/decorator/entity/entity.d.ts","../../../node_modules/typeorm/decorator/entity/childentity.d.ts","../../../node_modules/typeorm/decorator/entity/tableinheritance.d.ts","../../../node_modules/typeorm/decorator/options/viewentityoptions.d.ts","../../../node_modules/typeorm/decorator/entity-view/viewentity.d.ts","../../../node_modules/typeorm/decorator/tree/treelevelcolumn.d.ts","../../../node_modules/typeorm/decorator/tree/treeparent.d.ts","../../../node_modules/typeorm/decorator/tree/treechildren.d.ts","../../../node_modules/typeorm/decorator/tree/tree.d.ts","../../../node_modules/typeorm/decorator/index.d.ts","../../../node_modules/typeorm/decorator/foreignkey.d.ts","../../../node_modules/typeorm/decorator/options/uniqueoptions.d.ts","../../../node_modules/typeorm/decorator/unique.d.ts","../../../node_modules/typeorm/decorator/check.d.ts","../../../node_modules/typeorm/decorator/exclusion.d.ts","../../../node_modules/typeorm/decorator/generated.d.ts","../../../node_modules/typeorm/decorator/entityrepository.d.ts","../../../node_modules/typeorm/find-options/operator/and.d.ts","../../../node_modules/typeorm/find-options/operator/or.d.ts","../../../node_modules/typeorm/find-options/operator/any.d.ts","../../../node_modules/typeorm/find-options/operator/arraycontainedby.d.ts","../../../node_modules/typeorm/find-options/operator/arraycontains.d.ts","../../../node_modules/typeorm/find-options/operator/arrayoverlap.d.ts","../../../node_modules/typeorm/find-options/operator/between.d.ts","../../../node_modules/typeorm/find-options/operator/equal.d.ts","../../../node_modules/typeorm/find-options/operator/in.d.ts","../../../node_modules/typeorm/find-options/operator/isnull.d.ts","../../../node_modules/typeorm/find-options/operator/lessthan.d.ts","../../../node_modules/typeorm/find-options/operator/lessthanorequal.d.ts","../../../node_modules/typeorm/find-options/operator/ilike.d.ts","../../../node_modules/typeorm/find-options/operator/like.d.ts","../../../node_modules/typeorm/find-options/operator/morethan.d.ts","../../../node_modules/typeorm/find-options/operator/morethanorequal.d.ts","../../../node_modules/typeorm/find-options/operator/not.d.ts","../../../node_modules/typeorm/find-options/operator/raw.d.ts","../../../node_modules/typeorm/find-options/operator/jsoncontains.d.ts","../../../node_modules/typeorm/find-options/findoptionsutils.d.ts","../../../node_modules/typeorm/logger/abstractlogger.d.ts","../../../node_modules/typeorm/logger/advancedconsolelogger.d.ts","../../../node_modules/typeorm/logger/formattedconsolelogger.d.ts","../../../node_modules/typeorm/logger/simpleconsolelogger.d.ts","../../../node_modules/typeorm/logger/filelogger.d.ts","../../../node_modules/typeorm/repository/abstractrepository.d.ts","../../../node_modules/typeorm/data-source/index.d.ts","../../../node_modules/typeorm/repository/baseentity.d.ts","../../../node_modules/typeorm/driver/sqlserver/mssqlparameter.d.ts","../../../node_modules/typeorm/connection/connectionoptionsreader.d.ts","../../../node_modules/typeorm/connection/connectionoptions.d.ts","../../../node_modules/typeorm/connection/connection.d.ts","../../../node_modules/typeorm/migration/migrationexecutor.d.ts","../../../node_modules/typeorm/naming-strategy/defaultnamingstrategy.d.ts","../../../node_modules/typeorm/naming-strategy/legacyoraclenamingstrategy.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaembeddedcolumnoptions.d.ts","../../../node_modules/typeorm/schema-builder/rdbmsschemabuilder.d.ts","../../../node_modules/typeorm/util/instancechecker.d.ts","../../../node_modules/typeorm/repository/findtreesoptions.d.ts","../../../node_modules/typeorm/util/treerepositoryutils.d.ts","../../../node_modules/typeorm/index.d.ts","../../../libs/shared/src/entities/payment.entity.ts","../../../libs/shared/src/entities/outbox-event.entity.ts","../../../libs/shared/src/entities/processed-event.entity.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/index.d.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","../../../node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","../../../node_modules/@nestjs/typeorm/dist/index.d.ts","../../../node_modules/@nestjs/typeorm/index.d.ts","../../../libs/shared/src/database.module.ts","../../../node_modules/class-validator/types/validation/validationerror.d.ts","../../../node_modules/class-validator/types/validation/validatoroptions.d.ts","../../../node_modules/class-validator/types/validation-schema/validationschema.d.ts","../../../node_modules/class-validator/types/container.d.ts","../../../node_modules/class-validator/types/validation/validationarguments.d.ts","../../../node_modules/class-validator/types/decorator/validationoptions.d.ts","../../../node_modules/class-validator/types/decorator/common/allow.d.ts","../../../node_modules/class-validator/types/decorator/common/isdefined.d.ts","../../../node_modules/class-validator/types/decorator/common/isoptional.d.ts","../../../node_modules/class-validator/types/decorator/common/validate.d.ts","../../../node_modules/class-validator/types/validation/validatorconstraintinterface.d.ts","../../../node_modules/class-validator/types/decorator/common/validateby.d.ts","../../../node_modules/class-validator/types/decorator/common/validateif.d.ts","../../../node_modules/class-validator/types/decorator/common/validatenested.d.ts","../../../node_modules/class-validator/types/decorator/common/validatepromise.d.ts","../../../node_modules/class-validator/types/decorator/common/islatlong.d.ts","../../../node_modules/class-validator/types/decorator/common/islatitude.d.ts","../../../node_modules/class-validator/types/decorator/common/islongitude.d.ts","../../../node_modules/class-validator/types/decorator/common/equals.d.ts","../../../node_modules/class-validator/types/decorator/common/notequals.d.ts","../../../node_modules/class-validator/types/decorator/common/isempty.d.ts","../../../node_modules/class-validator/types/decorator/common/isnotempty.d.ts","../../../node_modules/class-validator/types/decorator/common/isin.d.ts","../../../node_modules/class-validator/types/decorator/common/isnotin.d.ts","../../../node_modules/class-validator/types/decorator/number/isdivisibleby.d.ts","../../../node_modules/class-validator/types/decorator/number/ispositive.d.ts","../../../node_modules/class-validator/types/decorator/number/isnegative.d.ts","../../../node_modules/class-validator/types/decorator/number/max.d.ts","../../../node_modules/class-validator/types/decorator/number/min.d.ts","../../../node_modules/class-validator/types/decorator/date/mindate.d.ts","../../../node_modules/class-validator/types/decorator/date/maxdate.d.ts","../../../node_modules/class-validator/types/decorator/string/contains.d.ts","../../../node_modules/class-validator/types/decorator/string/notcontains.d.ts","../../../node_modules/@types/validator/lib/isboolean.d.ts","../../../node_modules/@types/validator/lib/isemail.d.ts","../../../node_modules/@types/validator/lib/isfqdn.d.ts","../../../node_modules/@types/validator/lib/isiban.d.ts","../../../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../../../node_modules/@types/validator/lib/isiso4217.d.ts","../../../node_modules/@types/validator/lib/isiso6391.d.ts","../../../node_modules/@types/validator/lib/istaxid.d.ts","../../../node_modules/@types/validator/lib/isurl.d.ts","../../../node_modules/@types/validator/index.d.ts","../../../node_modules/class-validator/types/decorator/string/isalpha.d.ts","../../../node_modules/class-validator/types/decorator/string/isalphanumeric.d.ts","../../../node_modules/class-validator/types/decorator/string/isdecimal.d.ts","../../../node_modules/class-validator/types/decorator/string/isascii.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase64.d.ts","../../../node_modules/class-validator/types/decorator/string/isbytelength.d.ts","../../../node_modules/class-validator/types/decorator/string/iscreditcard.d.ts","../../../node_modules/class-validator/types/decorator/string/iscurrency.d.ts","../../../node_modules/class-validator/types/decorator/string/isemail.d.ts","../../../node_modules/class-validator/types/decorator/string/isfqdn.d.ts","../../../node_modules/class-validator/types/decorator/string/isfullwidth.d.ts","../../../node_modules/class-validator/types/decorator/string/ishalfwidth.d.ts","../../../node_modules/class-validator/types/decorator/string/isvariablewidth.d.ts","../../../node_modules/class-validator/types/decorator/string/ishexcolor.d.ts","../../../node_modules/class-validator/types/decorator/string/ishexadecimal.d.ts","../../../node_modules/class-validator/types/decorator/string/ismacaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/isip.d.ts","../../../node_modules/class-validator/types/decorator/string/isport.d.ts","../../../node_modules/class-validator/types/decorator/string/isisbn.d.ts","../../../node_modules/class-validator/types/decorator/string/isisin.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso8601.d.ts","../../../node_modules/class-validator/types/decorator/string/isjson.d.ts","../../../node_modules/class-validator/types/decorator/string/isjwt.d.ts","../../../node_modules/class-validator/types/decorator/string/islowercase.d.ts","../../../node_modules/class-validator/types/decorator/string/ismobilephone.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661alpha2.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661alpha3.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661numeric.d.ts","../../../node_modules/class-validator/types/decorator/string/ismongoid.d.ts","../../../node_modules/class-validator/types/decorator/string/ismultibyte.d.ts","../../../node_modules/class-validator/types/decorator/string/issurrogatepair.d.ts","../../../node_modules/class-validator/types/decorator/string/isurl.d.ts","../../../node_modules/class-validator/types/decorator/string/isuuid.d.ts","../../../node_modules/class-validator/types/decorator/string/isfirebasepushid.d.ts","../../../node_modules/class-validator/types/decorator/string/isuppercase.d.ts","../../../node_modules/class-validator/types/decorator/string/length.d.ts","../../../node_modules/class-validator/types/decorator/string/maxlength.d.ts","../../../node_modules/class-validator/types/decorator/string/minlength.d.ts","../../../node_modules/class-validator/types/decorator/string/matches.d.ts","../../../node_modules/libphonenumber-js/types.d.cts","../../../node_modules/libphonenumber-js/max/index.d.cts","../../../node_modules/class-validator/types/decorator/string/isphonenumber.d.ts","../../../node_modules/class-validator/types/decorator/string/ismilitarytime.d.ts","../../../node_modules/class-validator/types/decorator/string/ishash.d.ts","../../../node_modules/class-validator/types/decorator/string/isissn.d.ts","../../../node_modules/class-validator/types/decorator/string/isdatestring.d.ts","../../../node_modules/class-validator/types/decorator/string/isbooleanstring.d.ts","../../../node_modules/class-validator/types/decorator/string/isnumberstring.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase32.d.ts","../../../node_modules/class-validator/types/decorator/string/isbic.d.ts","../../../node_modules/class-validator/types/decorator/string/isbtcaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/isdatauri.d.ts","../../../node_modules/class-validator/types/decorator/string/isean.d.ts","../../../node_modules/class-validator/types/decorator/string/isethereumaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/ishsl.d.ts","../../../node_modules/class-validator/types/decorator/string/isiban.d.ts","../../../node_modules/class-validator/types/decorator/string/isidentitycard.d.ts","../../../node_modules/class-validator/types/decorator/string/isisrc.d.ts","../../../node_modules/class-validator/types/decorator/string/islocale.d.ts","../../../node_modules/class-validator/types/decorator/string/ismagneturi.d.ts","../../../node_modules/class-validator/types/decorator/string/ismimetype.d.ts","../../../node_modules/class-validator/types/decorator/string/isoctal.d.ts","../../../node_modules/class-validator/types/decorator/string/ispassportnumber.d.ts","../../../node_modules/class-validator/types/decorator/string/ispostalcode.d.ts","../../../node_modules/class-validator/types/decorator/string/isrfc3339.d.ts","../../../node_modules/class-validator/types/decorator/string/isrgbcolor.d.ts","../../../node_modules/class-validator/types/decorator/string/issemver.d.ts","../../../node_modules/class-validator/types/decorator/string/isstrongpassword.d.ts","../../../node_modules/class-validator/types/decorator/string/istimezone.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase58.d.ts","../../../node_modules/class-validator/types/decorator/string/is-tax-id.d.ts","../../../node_modules/class-validator/types/decorator/string/is-iso4217-currency-code.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso6391.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isboolean.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isdate.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isnumber.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isenum.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isint.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isstring.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isarray.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isobject.d.ts","../../../node_modules/class-validator/types/decorator/array/arraycontains.d.ts","../../../node_modules/class-validator/types/decorator/array/arraynotcontains.d.ts","../../../node_modules/class-validator/types/decorator/array/arraynotempty.d.ts","../../../node_modules/class-validator/types/decorator/array/arrayminsize.d.ts","../../../node_modules/class-validator/types/decorator/array/arraymaxsize.d.ts","../../../node_modules/class-validator/types/decorator/array/arrayunique.d.ts","../../../node_modules/class-validator/types/decorator/object/isnotemptyobject.d.ts","../../../node_modules/class-validator/types/decorator/object/isinstance.d.ts","../../../node_modules/class-validator/types/decorator/decorators.d.ts","../../../node_modules/class-validator/types/validation/validationtypes.d.ts","../../../node_modules/class-validator/types/validation/validator.d.ts","../../../node_modules/class-validator/types/register-decorator.d.ts","../../../node_modules/class-validator/types/metadata/validationmetadataargs.d.ts","../../../node_modules/class-validator/types/metadata/validationmetadata.d.ts","../../../node_modules/class-validator/types/metadata/constraintmetadata.d.ts","../../../node_modules/class-validator/types/metadata/metadatastorage.d.ts","../../../node_modules/class-validator/types/index.d.ts","../../../libs/shared/src/dto/create-payment.dto.ts","../../../libs/shared/src/index.ts","../../../apps/consumers/src/processed-events.repository.ts","../../../apps/consumers/src/fraud.consumer.ts","../../../apps/consumers/src/ledger.consumer.ts","../../../apps/consumers/src/saga.consumer.ts","../../../apps/consumers/src/consumers.module.ts","../../../apps/consumers/src/main.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/cookiejar/index.d.ts","../../../node_modules/@types/luxon/src/zone.d.ts","../../../node_modules/@types/luxon/src/settings.d.ts","../../../node_modules/@types/luxon/src/_util.d.ts","../../../node_modules/@types/luxon/src/misc.d.ts","../../../node_modules/@types/luxon/src/duration.d.ts","../../../node_modules/@types/luxon/src/interval.d.ts","../../../node_modules/@types/luxon/src/datetime.d.ts","../../../node_modules/@types/luxon/src/info.d.ts","../../../node_modules/@types/luxon/src/luxon.d.ts","../../../node_modules/@types/luxon/index.d.ts","../../../node_modules/@types/cron/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../../../node_modules/eslint/lib/types/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/jest-mock/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/methods/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/superagent/lib/agent-base.d.ts","../../../node_modules/@types/superagent/lib/node/response.d.ts","../../../node_modules/@types/superagent/types.d.ts","../../../node_modules/@types/superagent/lib/node/agent.d.ts","../../../node_modules/@types/superagent/lib/request-base.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../../../node_modules/@types/superagent/lib/node/index.d.ts","../../../node_modules/@types/superagent/index.d.ts","../../../node_modules/@types/supertest/types.d.ts","../../../node_modules/@types/supertest/lib/agent.d.ts","../../../node_modules/@types/supertest/lib/test.d.ts","../../../node_modules/@types/supertest/lib/cookies.d.ts","../../../node_modules/@types/supertest/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[422,423,1160,1214,1231,1232],[422,601,1145,1146,1147,1148,1149,1160,1214,1231,1232],[422,1160,1214,1231,1232],[422,601,1146,1160,1214,1231,1232],[581,601,1150,1160,1214,1231,1232],[422,989,1145,1160,1214,1231,1232],[422,601,989,1145,1146,1160,1214,1231,1232],[422,990,991,992,1001,1160,1214,1231,1232],[1143,1160,1214,1231,1232],[989,1160,1214,1231,1232],[602,603,990,991,992,1002,1144,1160,1214,1231,1232],[422,602,1160,1214,1231,1232],[1152,1160,1214,1231,1232],[1160,1214,1231,1232],[1160,1214,1231,1232,1280],[1160,1214,1231,1232,1490],[322,1160,1214,1231,1232],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,1160,1214,1231,1232],[274,308,1160,1214,1231,1232],[281,1160,1214,1231,1232],[271,322,422,1160,1214,1231,1232],[340,341,342,343,344,345,346,348,1160,1214,1231,1232],[276,1160,1214,1231,1232],[322,422,1160,1214,1231,1232],[276,347,1160,1214,1231,1232],[336,339,349,1160,1214,1231,1232],[337,338,1160,1214,1231,1232],[312,1160,1214,1231,1232],[276,277,278,279,1160,1214,1231,1232],[352,1160,1214,1231,1232],[294,351,1160,1214,1231,1232],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,1160,1214,1231,1232],[381,1160,1214,1231,1232],[378,379,1160,1214,1231,1232],[377,380,1160,1214,1231,1232,1246],[70,280,322,350,374,377,382,389,414,419,421,1160,1214,1231,1232],[76,274,1160,1214,1231,1232],[75,1160,1214,1231,1232],[76,266,267,518,523,1160,1214,1231,1232],[266,274,1160,1214,1231,1232],[75,265,1160,1214,1231,1232],[274,402,1160,1214,1231,1232],[268,404,1160,1214,1231,1232],[265,269,1160,1214,1231,1232],[269,1160,1214,1231,1232],[75,322,1160,1214,1231,1232],[273,274,1160,1214,1231,1232],[286,1160,1214,1231,1232],[288,289,290,291,292,1160,1214,1231,1232],[280,1160,1214,1231,1232],[280,281,300,1160,1214,1231,1232],[294,295,301,302,303,1160,1214,1231,1232],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,1160,1214,1231,1232],[299,1160,1214,1231,1232],[282,283,284,285,1160,1214,1231,1232],[274,282,283,1160,1214,1231,1232],[274,280,281,1160,1214,1231,1232],[274,284,1160,1214,1231,1232],[274,312,1160,1214,1231,1232],[307,309,310,311,312,313,314,315,1160,1214,1231,1232],[72,274,1160,1214,1231,1232],[308,1160,1214,1231,1232],[72,274,307,311,313,1160,1214,1231,1232],[283,1160,1214,1231,1232],[309,1160,1214,1231,1232],[274,308,309,310,1160,1214,1231,1232],[298,1160,1214,1231,1232],[274,278,298,299,316,317,1160,1214,1231,1232],[296,297,299,1160,1214,1231,1232],[270,272,281,287,301,318,319,322,1160,1214,1231,1232],[76,265,270,272,275,318,319,1160,1214,1231,1232],[279,1160,1214,1231,1232],[265,1160,1214,1231,1232],[298,322,383,387,1160,1214,1231,1232],[387,388,1160,1214,1231,1232],[322,383,1160,1214,1231,1232],[322,383,384,1160,1214,1231,1232],[384,385,1160,1214,1231,1232],[384,385,386,1160,1214,1231,1232],[275,1160,1214,1231,1232],[392,393,394,1160,1214,1231,1232],[392,1160,1214,1231,1232],[394,395,396,398,399,400,1160,1214,1231,1232],[391,1160,1214,1231,1232],[394,397,1160,1214,1231,1232],[394,395,396,398,399,1160,1214,1231,1232],[275,392,394,398,1160,1214,1231,1232],[390,401,406,407,408,409,410,411,412,413,1160,1214,1231,1232],[275,322,406,1160,1214,1231,1232],[275,397,1160,1214,1231,1232],[275,397,422,1160,1214,1231,1232],[268,274,275,397,402,403,404,405,1160,1214,1231,1232],[265,322,402,403,415,1160,1214,1231,1232],[322,402,1160,1214,1231,1232],[417,1160,1214,1231,1232],[350,415,1160,1214,1231,1232],[415,416,418,1160,1214,1231,1232],[298,1160,1214,1231,1232,1258],[298,375,376,1160,1214,1231,1232],[307,1160,1214,1231,1232],[280,322,1160,1214,1231,1232],[420,1160,1214,1231,1232],[300,322,422,1160,1214,1231,1232],[508,1160,1214,1231,1232],[322,422,584,585,1160,1214,1231,1232],[347,1160,1214,1231,1232],[422,507,583,584,1160,1214,1231,1232],[511,512,1160,1214,1231,1232],[76,322,521,582,584,1160,1214,1231,1232],[422,509,514,1160,1214,1231,1232],[75,422,515,518,1160,1214,1231,1232],[322,520,522,526,582,584,586,1160,1214,1231,1232],[75,524,525,1160,1214,1231,1232],[515,1160,1214,1231,1232],[265,322,422,529,1160,1214,1231,1232],[322,422,521,582,584,586,1160,1214,1231,1232],[528,530,531,1160,1214,1231,1232],[322,584,1160,1214,1231,1232],[584,1160,1214,1231,1232],[322,422,529,1160,1214,1231,1232],[75,322,422,1160,1214,1231,1232],[322,422,507,527,529,532,535,540,541,557,558,582,584,1160,1214,1231,1232],[265,508,1160,1214,1231,1232],[514,517,559,1160,1214,1231,1232],[541,556,1160,1214,1231,1232],[70,509,510,513,516,548,556,560,563,567,568,569,570,572,578,580,586,1160,1214,1231,1232],[322,422,501,551,583,584,1160,1214,1231,1232],[322,505,1160,1214,1231,1232],[299,322,347,422,504,505,506,507,581,583,584,586,1160,1214,1231,1232],[507,543,553,555,582,584,1160,1214,1231,1232],[322,422,500,583,584,1160,1214,1231,1232],[542,1160,1214,1231,1232],[422,582,584,1160,1214,1231,1232],[422,501,547,582,583,1160,1214,1231,1232],[322,347,422,500,583,1160,1214,1231,1232],[422,506,507,545,549,550,553,554,1160,1214,1231,1232],[422,501,551,552,582,583,584,1160,1214,1231,1232],[322,347,553,582,584,1160,1214,1231,1232],[265,583,1160,1214,1231,1232],[274,307,313,1160,1214,1231,1232],[497,498,499,546,582,583,584,1160,1214,1231,1232],[504,547,561,562,1160,1214,1231,1232],[347,422,584,1160,1214,1231,1232],[347,422,1160,1214,1231,1232],[496,497,498,499,502,504,1160,1214,1231,1232],[501,1160,1214,1231,1232],[503,504,1160,1214,1231,1232],[422,496,497,498,499,502,503,1160,1214,1231,1232],[533,534,1160,1214,1231,1232],[322,521,582,584,586,1160,1214,1231,1232],[544,1160,1214,1231,1232],[305,1160,1214,1231,1232],[286,322,564,565,1160,1214,1231,1232],[566,1160,1214,1231,1232],[322,586,1160,1214,1231,1232],[322,582,586,1160,1214,1231,1232],[299,322,422,501,551,552,582,583,584,1160,1214,1231,1232],[298,322,422,509,547,568,582,586,1160,1214,1231,1232],[299,300,422,495,508,1160,1214,1231,1232],[537,538,539,1160,1214,1231,1232],[422,536,1160,1214,1231,1232],[571,1160,1214,1231,1232],[422,1160,1214,1231,1232,1243],[574,576,577,1160,1214,1231,1232],[573,1160,1214,1231,1232],[575,1160,1214,1231,1232],[422,507,574,583,1160,1214,1231,1232],[519,1160,1214,1231,1232],[322,347,422,544,545,547,548,582,583,584,586,1160,1214,1231,1232],[579,1160,1214,1231,1232],[265,298,444,461,1160,1214,1231,1232],[265,298,432,433,444,448,461,1160,1214,1231,1232],[265,298,427,444,461,463,1160,1214,1231,1232],[298,428,444,461,1160,1214,1231,1232,1246],[435,444,455,461,462,1160,1214,1231,1232],[265,442,443,461,1160,1214,1231,1232],[298,429,444,461,1160,1214,1231,1232],[265,298,430,444,461,1160,1214,1225,1231,1232],[422,431,444,448,455,461,1160,1214,1231,1232,1254],[444,445,462,464,465,466,467,468,469,1160,1214,1231,1232],[459,471,472,473,474,475,476,1160,1214,1231,1232],[433,459,1160,1214,1231,1232],[459,1160,1214,1231,1232],[448,459,1160,1214,1231,1232],[455,1160,1214,1231,1232],[481,1160,1214,1231,1232],[478,479,482,483,484,485,1160,1214,1231,1232],[457,481,1160,1214,1231,1232],[435,480,1160,1214,1231,1232],[426,427,428,429,430,431,1160,1214,1231,1232],[265,422,1160,1214,1231,1232],[487,488,489,1160,1214,1231,1232],[488,1160,1214,1231,1232],[1160,1214,1231,1232,1234,1254],[1160,1214,1231,1232,1254],[461,1160,1214,1231,1232],[437,438,439,440,446,447,1160,1214,1231,1232],[437,1160,1214,1231,1232],[433,445,1160,1214,1231,1232],[1160,1214,1231,1232,1234],[70,432,448,461,470,477,481,486,490,494,587,590,599,600,1160,1214,1231,1232],[432,433,470,1160,1214,1231,1232],[422,435,442,443,448,454,470,1160,1214,1231,1232,1254],[454,1160,1214,1231,1232],[441,1160,1214,1231,1232],[425,434,441,442,443,453,454,455,456,457,458,460,1160,1214,1231,1232],[422,433,435,442,443,448,449,450,451,452,453,1160,1214,1231,1232,1254],[422,492,1160,1214,1231,1232],[492,493,1160,1214,1231,1232],[322,461,1160,1214,1231,1232],[491,1160,1214,1231,1232],[265,298,422,454,495,547,568,582,586,1160,1214,1231,1232],[463,588,589,1160,1214,1231,1232],[591,592,593,594,595,596,597,598,1160,1214,1231,1232],[454,461,486,591,1160,1214,1231,1232],[298,432,433,448,461,477,591,1160,1214,1231,1232],[427,454,461,472,591,1160,1214,1231,1232],[428,454,473,591,1160,1214,1225,1231,1232],[429,461,477,591,1160,1214,1231,1232],[430,441,452,461,477,591,1160,1214,1231,1232],[422,431,448,454,591,1160,1214,1231,1232,1234,1254],[265,298,442,443,459,461,481,1160,1214,1231,1232],[994,995,1160,1214,1231,1232],[422,989,993,1160,1214,1231,1232],[265,422,989,993,1160,1214,1231,1232],[996,998,999,1160,1214,1231,1232],[997,1160,1214,1231,1232],[422,989,1160,1214,1231,1232],[422,989,993,997,1160,1214,1231,1232],[1000,1160,1214,1231,1232],[1160,1214,1231,1232,1300,1302,1306,1309,1311,1313,1315,1317,1319,1323,1327,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1359,1364,1366,1368,1370,1372,1375,1377,1382,1386,1390,1392,1394,1396,1399,1401,1403,1406,1408,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1433,1436,1438,1440,1444,1446,1449,1451,1453,1455,1459,1465,1469,1471,1473,1480,1482,1484,1486,1489],[1160,1214,1231,1232,1300,1433],[1160,1214,1231,1232,1301],[1160,1214,1231,1232,1439],[1160,1214,1231,1232,1300,1416,1420,1433],[1160,1214,1231,1232,1421],[1160,1214,1231,1232,1300,1416,1433],[1160,1214,1231,1232,1305],[1160,1214,1231,1232,1321,1327,1331,1337,1368,1420,1433],[1160,1214,1231,1232,1376],[1160,1214,1231,1232,1350],[1160,1214,1231,1232,1344],[1160,1214,1231,1232,1434,1435],[1160,1214,1231,1232,1433],[1160,1214,1231,1232,1323,1327,1364,1370,1382,1418,1420,1433],[1160,1214,1231,1232,1450],[1160,1214,1231,1232,1299,1433],[1160,1214,1231,1232,1320],[1160,1214,1231,1232,1302,1309,1315,1319,1323,1339,1351,1392,1394,1396,1418,1420,1424,1426,1428,1433],[1160,1214,1231,1232,1452],[1160,1214,1231,1232,1313,1323,1339,1433],[1160,1214,1231,1232,1454],[1160,1214,1231,1232,1300,1309,1311,1375,1416,1420,1433],[1160,1214,1231,1232,1312],[1160,1214,1231,1232,1437],[1160,1214,1231,1232,1431],[1160,1214,1231,1232,1423],[1160,1214,1231,1232,1300,1315,1433],[1160,1214,1231,1232,1316],[1160,1214,1231,1232,1340],[1160,1214,1231,1232,1372,1418,1433,1457],[1160,1214,1231,1232,1359,1433,1457],[1160,1214,1231,1232,1323,1331,1359,1372,1416,1420,1433,1456,1458],[1160,1214,1231,1232,1456,1457,1458],[1160,1214,1231,1232,1341,1433],[1160,1214,1231,1232,1315,1372,1418,1420,1433,1462],[1160,1214,1231,1232,1372,1418,1433,1462],[1160,1214,1231,1232,1331,1372,1416,1420,1433,1461,1463],[1160,1214,1231,1232,1460,1461,1462,1463,1464],[1160,1214,1231,1232,1372,1418,1433,1467],[1160,1214,1231,1232,1359,1433,1467],[1160,1214,1231,1232,1323,1331,1359,1372,1416,1420,1433,1466,1468],[1160,1214,1231,1232,1466,1467,1468],[1160,1214,1231,1232,1318],[1160,1214,1231,1232,1441,1442,1443],[1160,1214,1231,1232,1300,1302,1306,1309,1313,1315,1319,1321,1323,1327,1331,1333,1335,1337,1339,1343,1345,1347,1349,1351,1359,1366,1368,1372,1375,1392,1394,1396,1401,1403,1408,1412,1414,1418,1422,1424,1426,1428,1430,1433,1440],[1160,1214,1231,1232,1300,1302,1306,1309,1313,1315,1319,1321,1323,1327,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1359,1366,1368,1372,1375,1392,1394,1396,1401,1403,1408,1412,1414,1418,1422,1424,1426,1428,1430,1433,1440],[1160,1214,1231,1232,1323,1418,1433],[1160,1214,1231,1232,1419],[1160,1214,1231,1232,1360,1361,1362,1363],[1160,1214,1231,1232,1362,1372,1418,1420,1433],[1160,1214,1231,1232,1360,1364,1372,1418,1433],[1160,1214,1231,1232,1315,1331,1347,1349,1359,1433],[1160,1214,1231,1232,1321,1323,1327,1331,1333,1337,1339,1360,1361,1363,1372,1418,1420,1422,1433],[1160,1214,1231,1232,1470],[1160,1214,1231,1232,1313,1323,1433],[1160,1214,1231,1232,1472],[1160,1214,1231,1232,1306,1309,1311,1313,1319,1327,1331,1339,1366,1368,1375,1403,1418,1422,1428,1433,1440],[1160,1214,1231,1232,1348],[1160,1214,1231,1232,1324,1325,1326],[1160,1214,1231,1232,1309,1323,1324,1375,1433],[1160,1214,1231,1232,1323,1324,1433],[1160,1214,1231,1232,1433,1475],[1160,1214,1231,1232,1474,1475,1476,1477,1478,1479],[1160,1214,1231,1232,1315,1372,1418,1420,1433,1475],[1160,1214,1231,1232,1315,1331,1359,1372,1433,1474],[1160,1214,1231,1232,1365],[1160,1214,1231,1232,1378,1379,1380,1381],[1160,1214,1231,1232,1372,1379,1418,1420,1433],[1160,1214,1231,1232,1327,1331,1333,1339,1370,1418,1420,1422,1433],[1160,1214,1231,1232,1315,1321,1331,1337,1347,1372,1378,1380,1420,1433],[1160,1214,1231,1232,1314],[1160,1214,1231,1232,1303,1304,1371],[1160,1214,1231,1232,1300,1418,1433],[1160,1214,1231,1232,1303,1304,1306,1309,1313,1315,1317,1319,1327,1331,1339,1364,1366,1368,1370,1375,1418,1420,1422,1433],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1321,1323,1327,1331,1337,1339,1364,1366,1375,1377,1382,1386,1390,1399,1403,1406,1408,1418,1420,1422,1433],[1160,1214,1231,1232,1411],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1327,1331,1333,1337,1339,1366,1375,1403,1416,1418,1420,1422,1433],[1160,1214,1231,1232,1300,1409,1410,1416,1418,1433],[1160,1214,1231,1232,1322],[1160,1214,1231,1232,1413],[1160,1214,1231,1232,1391],[1160,1214,1231,1232,1346],[1160,1214,1231,1232,1417],[1160,1214,1231,1232,1300,1309,1375,1416,1420,1433],[1160,1214,1231,1232,1383,1384,1385],[1160,1214,1231,1232,1372,1384,1418,1433],[1160,1214,1231,1232,1372,1384,1418,1420,1433],[1160,1214,1231,1232,1315,1321,1327,1331,1333,1337,1364,1372,1383,1385,1418,1420,1433],[1160,1214,1231,1232,1373,1374],[1160,1214,1231,1232,1372,1373,1418],[1160,1214,1231,1232,1300,1372,1374,1420,1433],[1160,1214,1231,1232,1481],[1160,1214,1231,1232,1319,1323,1339,1433],[1160,1214,1231,1232,1397,1398],[1160,1214,1231,1232,1372,1397,1418,1420,1433],[1160,1214,1231,1232,1309,1311,1315,1321,1327,1331,1333,1337,1343,1345,1347,1349,1351,1372,1375,1392,1394,1396,1398,1418,1420,1433],[1160,1214,1231,1232,1445],[1160,1214,1231,1232,1387,1388,1389],[1160,1214,1231,1232,1372,1388,1418,1433],[1160,1214,1231,1232,1372,1388,1418,1420,1433],[1160,1214,1231,1232,1315,1321,1327,1331,1333,1337,1364,1372,1387,1389,1418,1420,1433],[1160,1214,1231,1232,1367],[1160,1214,1231,1232,1310],[1160,1214,1231,1232,1309,1375,1433],[1160,1214,1231,1232,1307,1308],[1160,1214,1231,1232,1307,1372,1418],[1160,1214,1231,1232,1300,1308,1372,1420,1433],[1160,1214,1231,1232,1402],[1160,1214,1231,1232,1300,1302,1315,1317,1323,1331,1343,1345,1347,1349,1359,1401,1416,1418,1420,1433],[1160,1214,1231,1232,1332],[1160,1214,1231,1232,1336],[1160,1214,1231,1232,1300,1335,1416,1433],[1160,1214,1231,1232,1400],[1160,1214,1231,1232,1447,1448],[1160,1214,1231,1232,1404,1405],[1160,1214,1231,1232,1372,1404,1418,1420,1433],[1160,1214,1231,1232,1309,1311,1315,1321,1327,1331,1333,1337,1343,1345,1347,1349,1351,1372,1375,1392,1394,1396,1405,1418,1420,1433],[1160,1214,1231,1232,1483],[1160,1214,1231,1232,1327,1331,1339,1433],[1160,1214,1231,1232,1485],[1160,1214,1231,1232,1319,1323,1433],[1160,1214,1231,1232,1302,1306,1313,1315,1317,1319,1327,1331,1333,1337,1339,1343,1345,1347,1349,1351,1359,1366,1368,1392,1394,1396,1401,1403,1414,1418,1422,1424,1426,1428,1430,1431],[1160,1214,1231,1232,1431,1432],[1160,1214,1231,1232,1300],[1160,1214,1231,1232,1369],[1160,1214,1231,1232,1415],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1323,1327,1331,1333,1335,1337,1339,1366,1368,1375,1403,1408,1412,1414,1418,1420,1422,1433],[1160,1214,1231,1232,1342],[1160,1214,1231,1232,1393],[1160,1214,1231,1232,1299],[1160,1214,1231,1232,1315,1331,1341,1343,1345,1347,1349,1351,1352,1359],[1160,1214,1231,1232,1315,1331,1341,1345,1352,1353,1359,1420],[1160,1214,1231,1232,1352,1353,1354,1355,1356,1357,1358],[1160,1214,1231,1232,1341],[1160,1214,1231,1232,1341,1359],[1160,1214,1231,1232,1315,1331,1343,1345,1347,1351,1359,1420],[1160,1214,1231,1232,1300,1315,1323,1331,1343,1345,1347,1349,1351,1355,1416,1420,1433],[1160,1214,1231,1232,1315,1331,1357,1416,1420],[1160,1214,1231,1232,1407],[1160,1214,1231,1232,1338],[1160,1214,1231,1232,1487,1488],[1160,1214,1231,1232,1306,1313,1319,1351,1366,1368,1377,1394,1396,1401,1424,1426,1430,1433,1440,1455,1471,1473,1482,1486,1487],[1160,1214,1231,1232,1302,1309,1311,1315,1317,1323,1327,1331,1333,1335,1337,1339,1343,1345,1347,1349,1359,1364,1372,1375,1382,1386,1390,1392,1399,1403,1406,1408,1412,1414,1418,1422,1428,1433,1451,1453,1459,1465,1469,1480,1484],[1160,1214,1231,1232,1425],[1160,1214,1231,1232,1395],[1160,1214,1231,1232,1328,1329,1330],[1160,1214,1231,1232,1309,1323,1328,1375,1433],[1160,1214,1231,1232,1323,1328,1433],[1160,1214,1231,1232,1427],[1160,1214,1231,1232,1334],[1160,1214,1231,1232,1429],[1152,1153,1154,1155,1156,1160,1214,1231,1232],[1152,1154,1160,1214,1231,1232],[1160,1214,1228,1231,1232,1264,1265],[1160,1214,1228,1231,1232,1264],[1160,1214,1215,1231,1232,1264,1277],[1160,1214,1231,1232,1279,1285],[1160,1214,1231,1232,1279,1280,1281],[1160,1214,1231,1232,1282],[1160,1214,1225,1228,1231,1232,1264,1287,1288,1289],[1160,1214,1231,1232,1266,1290,1292],[1160,1214,1231,1232,1294],[1160,1214,1231,1232,1295],[1160,1214,1231,1232,1492,1496],[1160,1214,1231,1232,1276],[1160,1214,1231,1232,1269],[1160,1214,1231,1232,1268,1270,1272,1273,1277],[1160,1214,1231,1232,1270,1271,1274],[1160,1214,1231,1232,1268,1271,1274],[1160,1214,1231,1232,1270,1272,1274],[1160,1214,1231,1232,1268,1269,1271,1272,1273,1274,1275],[1160,1214,1231,1232,1268,1274],[1160,1214,1231,1232,1270],[1160,1211,1212,1214,1231,1232],[1160,1213,1214,1231,1232],[1214,1231,1232],[1160,1214,1219,1231,1232,1249],[1160,1214,1215,1220,1225,1231,1232,1234,1246,1257],[1160,1214,1215,1216,1225,1231,1232,1234],[1160,1214,1217,1231,1232,1258],[1160,1214,1218,1219,1226,1231,1232,1235],[1160,1214,1219,1231,1232,1246,1254],[1160,1214,1220,1222,1225,1231,1232,1234],[1160,1213,1214,1221,1231,1232],[1160,1214,1222,1223,1231,1232],[1160,1214,1224,1225,1231,1232],[1160,1213,1214,1225,1231,1232],[1160,1214,1225,1226,1227,1231,1232,1246,1257],[1160,1214,1225,1226,1227,1231,1232,1241,1246,1249],[1160,1206,1214,1222,1225,1228,1231,1232,1234,1246,1257],[1160,1214,1225,1226,1228,1229,1231,1232,1234,1246,1254,1257],[1160,1214,1228,1230,1231,1232,1246,1254,1257],[1158,1159,1160,1161,1162,1163,1164,1165,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263],[1160,1214,1225,1231,1232],[1160,1214,1231,1232,1233,1257],[1160,1214,1222,1225,1231,1232,1234,1246],[1160,1214,1231,1232,1235],[1160,1214,1231,1232,1236],[1160,1213,1214,1231,1232,1237],[1160,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263],[1160,1214,1231,1232,1239],[1160,1214,1231,1232,1240],[1160,1214,1225,1231,1232,1241,1242],[1160,1214,1231,1232,1241,1243,1258,1260],[1160,1214,1226,1231,1232],[1160,1214,1225,1231,1232,1246,1247,1249],[1160,1214,1231,1232,1248,1249],[1160,1214,1231,1232,1246,1247],[1160,1214,1231,1232,1249],[1160,1214,1231,1232,1250],[1160,1211,1214,1231,1232,1246,1251,1257],[1160,1214,1225,1231,1232,1252,1253],[1160,1214,1231,1232,1252,1253],[1160,1214,1219,1231,1232,1234,1246,1254],[1160,1214,1231,1232,1255],[1160,1214,1231,1232,1234,1256],[1160,1214,1228,1231,1232,1240,1257],[1160,1214,1219,1231,1232,1258],[1160,1214,1231,1232,1246,1259],[1160,1214,1231,1232,1233,1260],[1160,1214,1231,1232,1261],[1160,1214,1219,1231,1232],[1160,1206,1214,1231,1232],[1160,1214,1231,1232,1262],[1160,1206,1214,1225,1227,1231,1232,1237,1246,1249,1257,1259,1260,1262],[1160,1214,1231,1232,1246,1263],[1160,1214,1226,1231,1232,1246,1264],[1160,1214,1228,1231,1232,1264,1291],[1160,1214,1231,1232,1507],[1160,1214,1231,1232,1267,1498,1500,1502,1508],[1160,1214,1229,1231,1232,1234,1246,1254,1264],[1160,1214,1226,1228,1229,1230,1231,1232,1234,1246,1498,1501,1502,1503,1504,1505,1506],[1160,1214,1228,1231,1232,1246,1507],[1160,1214,1226,1231,1232,1501,1502],[1160,1214,1231,1232,1257,1501],[1160,1214,1231,1232,1508,1509,1510,1511,1512],[1160,1214,1231,1232,1508,1509,1513],[1160,1214,1231,1232,1508,1509],[1160,1214,1228,1229,1231,1232,1234,1498,1508],[1036,1037,1038,1039,1040,1041,1042,1043,1044,1160,1214,1231,1232],[1160,1214,1231,1232,1515],[1008,1160,1214,1231,1232],[1007,1008,1013,1160,1214,1231,1232],[1009,1010,1011,1012,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1160,1214,1231,1232],[1008,1045,1160,1214,1231,1232],[1008,1039,1160,1214,1231,1232],[1008,1086,1160,1214,1231,1232],[1007,1160,1214,1231,1232],[1003,1004,1005,1006,1007,1008,1013,1135,1136,1137,1138,1142,1160,1214,1231,1232],[1013,1160,1214,1231,1232],[1005,1140,1141,1160,1214,1231,1232],[1007,1139,1160,1214,1231,1232],[1008,1013,1160,1214,1231,1232],[1003,1004,1160,1214,1231,1232],[1160,1214,1231,1232,1279,1283,1284],[1160,1214,1231,1232,1285],[1160,1214,1231,1232,1297,1494,1495],[1160,1214,1228,1231,1232,1246,1264],[1160,1214,1231,1232,1492],[1160,1214,1231,1232,1298,1493],[1085,1160,1214,1231,1232],[1160,1214,1231,1232,1491],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,1160,1214,1231,1232],[122,1160,1214,1231,1232],[78,81,1160,1214,1231,1232],[80,1160,1214,1231,1232],[80,81,1160,1214,1231,1232],[77,78,79,81,1160,1214,1231,1232],[78,80,81,238,1160,1214,1231,1232],[81,1160,1214,1231,1232],[77,80,122,1160,1214,1231,1232],[80,81,238,1160,1214,1231,1232],[80,246,1160,1214,1231,1232],[78,80,81,1160,1214,1231,1232],[90,1160,1214,1231,1232],[113,1160,1214,1231,1232],[134,1160,1214,1231,1232],[80,81,122,1160,1214,1231,1232],[81,129,1160,1214,1231,1232],[80,81,122,140,1160,1214,1231,1232],[80,81,140,1160,1214,1231,1232],[81,181,1160,1214,1231,1232],[81,122,1160,1214,1231,1232],[77,81,199,1160,1214,1231,1232],[77,81,200,1160,1214,1231,1232],[222,1160,1214,1231,1232],[206,208,1160,1214,1231,1232],[217,1160,1214,1231,1232],[206,1160,1214,1231,1232],[77,81,199,206,207,1160,1214,1231,1232],[199,200,208,1160,1214,1231,1232],[220,1160,1214,1231,1232],[77,81,206,207,208,1160,1214,1231,1232],[79,80,81,1160,1214,1231,1232],[77,81,1160,1214,1231,1232],[78,80,200,201,202,203,1160,1214,1231,1232],[122,200,201,202,203,1160,1214,1231,1232],[200,202,1160,1214,1231,1232],[80,201,202,204,205,209,1160,1214,1231,1232],[77,80,1160,1214,1231,1232],[81,224,1160,1214,1231,1232],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,1160,1214,1231,1232],[210,1160,1214,1231,1232],[671,790,1160,1214,1231,1232],[610,989,1160,1214,1231,1232],[674,1160,1214,1231,1232],[781,1160,1214,1231,1232],[777,781,1160,1214,1231,1232],[777,1160,1214,1231,1232],[625,667,668,669,670,672,673,781,1160,1214,1231,1232],[610,611,620,625,668,672,675,679,711,727,728,730,732,738,739,740,741,777,778,779,780,783,790,807,1160,1214,1231,1232],[743,745,747,748,758,760,761,762,763,764,765,766,768,770,771,772,773,776,1160,1214,1231,1232],[614,616,617,647,889,890,891,892,893,894,1160,1214,1231,1232],[617,1160,1214,1231,1232],[614,617,1160,1214,1231,1232],[898,899,900,1160,1214,1231,1232],[907,1160,1214,1231,1232],[614,905,1160,1214,1231,1232],[935,1160,1214,1231,1232],[923,1160,1214,1231,1232],[667,1160,1214,1231,1232],[610,648,1160,1214,1231,1232],[922,1160,1214,1231,1232],[615,1160,1214,1231,1232],[614,615,616,1160,1214,1231,1232],[655,1160,1214,1231,1232],[605,606,607,1160,1214,1231,1232],[651,1160,1214,1231,1232],[614,1160,1214,1231,1232],[646,1160,1214,1231,1232],[605,1160,1214,1231,1232],[614,615,1160,1214,1231,1232],[652,653,1160,1214,1231,1232],[608,610,1160,1214,1231,1232],[807,1160,1214,1231,1232],[663,664,1160,1214,1231,1232],[606,1160,1214,1231,1232],[943,1160,1214,1231,1232],[674,767,1160,1214,1231,1232],[674,675,742,1160,1214,1231,1232],[606,607,614,620,622,624,638,639,640,643,644,674,675,677,678,783,789,790,1160,1214,1231,1232],[674,685,1160,1214,1231,1232],[622,624,642,675,677,683,685,699,712,716,720,727,781,787,789,790,1160,1214,1231,1232],[683,684,1160,1214,1222,1231,1232,1234,1254],[674,675,744,1160,1214,1231,1232],[674,759,1160,1214,1231,1232],[674,675,746,1160,1214,1231,1232],[674,769,1160,1214,1231,1232],[675,774,775,1160,1214,1231,1232],[641,1160,1214,1231,1232],[749,750,751,752,753,754,755,756,1160,1214,1231,1232],[674,675,757,1160,1214,1231,1232],[610,611,620,685,687,691,692,693,694,695,722,724,725,726,728,730,731,732,736,737,739,781,790,807,1160,1214,1231,1232],[611,620,638,685,688,692,696,697,721,722,724,725,726,738,781,783,1160,1214,1231,1232],[738,781,790,1160,1214,1231,1232],[666,1160,1214,1231,1232],[611,648,1160,1214,1231,1232],[614,615,647,649,1160,1214,1231,1232],[645,650,654,655,656,657,658,659,660,661,662,665,989,1160,1214,1231,1232],[604,605,606,607,611,651,652,653,1160,1214,1231,1232],[825,1160,1214,1231,1232],[783,825,1160,1214,1231,1232],[614,638,670,825,1160,1214,1231,1232],[611,825,1160,1214,1231,1232],[741,825,1160,1214,1231,1232],[825,826,827,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,1160,1214,1231,1232],[627,825,1160,1214,1231,1232],[627,783,825,1160,1214,1231,1232],[825,829,1160,1214,1231,1232],[679,825,1160,1214,1231,1232],[682,1160,1214,1231,1232],[691,1160,1214,1231,1232],[680,687,688,689,690,1160,1214,1231,1232],[615,620,681,1160,1214,1231,1232],[685,1160,1214,1231,1232],[620,691,692,729,783,807,1160,1214,1231,1232],[682,685,686,1160,1214,1231,1232],[696,1160,1214,1231,1232],[620,691,1160,1214,1231,1232],[682,686,1160,1214,1231,1232],[620,682,1160,1214,1231,1232],[610,611,620,727,728,730,738,739,777,778,781,807,820,821,1160,1214,1231,1232],[70,608,610,611,614,615,617,620,621,622,623,624,625,645,646,650,651,653,654,655,666,667,668,669,670,673,675,676,677,679,680,681,682,685,686,687,688,689,690,691,692,693,694,695,698,699,701,702,703,704,705,706,707,708,709,710,711,713,716,717,720,722,723,724,725,726,727,728,729,730,733,734,738,739,740,741,777,781,783,786,787,788,789,790,800,801,803,804,805,806,807,821,822,823,824,888,895,896,897,901,902,903,904,906,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,936,937,938,939,940,941,942,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,976,977,978,979,980,981,982,983,984,986,988,1160,1214,1231,1232],[668,669,790,1160,1214,1231,1232],[668,790,969,1160,1214,1231,1232],[668,669,790,969,1160,1214,1231,1232],[790,1160,1214,1231,1232],[668,1160,1214,1231,1232],[617,618,1160,1214,1231,1232],[632,1160,1214,1231,1232],[611,1160,1214,1231,1232],[605,606,607,609,612,1160,1214,1231,1232],[810,1160,1214,1231,1232],[613,619,628,629,633,635,665,714,718,782,784,808,809,810,811,812,813,814,815,816,817,818,819,1160,1214,1231,1232],[604,608,609,612,1160,1214,1231,1232],[655,656,989,1160,1214,1231,1232],[625,714,783,1160,1214,1231,1232],[614,615,619,620,627,637,781,783,1160,1214,1231,1232],[627,628,630,631,634,636,638,781,783,785,1160,1214,1231,1232],[620,632,633,637,783,1160,1214,1231,1232],[620,626,627,630,631,634,636,637,638,655,656,663,664,665,715,719,781,782,785,989,1160,1214,1231,1232],[625,718,783,1160,1214,1231,1232],[605,606,607,625,638,783,1160,1214,1231,1232],[625,637,638,783,784,1160,1214,1231,1232],[627,783,807,808,1160,1214,1231,1232],[620,627,629,783,807,1160,1214,1231,1232],[604,605,606,607,609,613,620,626,637,638,783,1160,1214,1231,1232],[638,1160,1214,1231,1232],[605,625,635,637,638,783,1160,1214,1231,1232],[740,1160,1214,1231,1232],[741,781,790,1160,1214,1231,1232],[625,789,1160,1214,1231,1232],[625,982,1160,1214,1231,1232],[624,789,1160,1214,1231,1232],[620,627,638,783,828,1160,1214,1231,1232],[627,638,829,1160,1214,1231,1232],[670,1160,1214,1225,1226,1231,1232,1246],[783,1160,1214,1231,1232],[733,1160,1214,1231,1232],[611,620,726,733,734,781,790,806,1160,1214,1231,1232],[620,678,734,1160,1214,1231,1232],[611,620,638,722,724,735,806,1160,1214,1231,1232],[627,781,783,792,799,1160,1214,1231,1232],[734,1160,1214,1231,1232],[611,620,638,679,722,734,781,783,790,791,792,798,799,800,801,802,803,804,805,807,1160,1214,1231,1232],[620,627,638,655,678,781,783,791,792,793,794,795,796,797,798,806,1160,1214,1231,1232],[620,1160,1214,1231,1232],[627,783,799,807,1160,1214,1231,1232],[620,627,781,790,807,1160,1214,1231,1232],[620,806,1160,1214,1231,1232],[723,1160,1214,1231,1232],[620,723,1160,1214,1231,1232],[611,620,627,655,683,687,688,689,690,692,733,734,783,790,796,797,799,806,1160,1214,1231,1232],[611,620,655,725,733,734,781,790,806,1160,1214,1231,1232],[620,783,1160,1214,1231,1232],[620,655,722,725,733,734,781,790,806,1160,1214,1231,1232],[620,734,1160,1214,1231,1232],[620,622,624,642,675,677,683,699,712,716,720,723,732,738,781,787,789,1160,1214,1231,1232],[610,620,730,738,739,807,1160,1214,1231,1232],[611,685,687,691,692,693,694,695,722,724,725,726,736,737,739,807,975,1160,1214,1231,1232],[620,685,691,692,696,697,727,739,790,807,1160,1214,1231,1232],[611,620,685,687,691,692,693,694,695,722,724,725,726,736,737,738,790,807,989,1160,1214,1231,1232],[620,729,739,807,1160,1214,1231,1232],[678,735,1160,1214,1231,1232],[621,676,698,713,717,786,1160,1214,1231,1232],[621,638,642,643,781,783,790,1160,1214,1231,1232],[642,1160,1214,1231,1232],[622,677,679,699,716,720,783,787,788,1160,1214,1231,1232],[713,715,1160,1214,1231,1232],[621,1160,1214,1231,1232],[717,719,1160,1214,1231,1232],[626,676,679,1160,1214,1231,1232],[785,786,1160,1214,1231,1232],[636,698,1160,1214,1231,1232],[623,989,1160,1214,1231,1232],[620,627,638,700,711,783,790,1160,1214,1231,1232],[701,702,703,704,705,706,707,708,709,710,1160,1214,1231,1232],[620,738,781,783,790,1160,1214,1231,1232],[738,781,783,790,1160,1214,1231,1232],[705,1160,1214,1231,1232],[620,627,638,738,781,783,790,1160,1214,1231,1232],[622,624,638,641,667,677,682,686,699,716,720,727,734,778,783,787,789,800,801,802,803,804,805,807,829,975,976,977,985,1160,1214,1231,1232],[738,783,987,1160,1214,1231,1232],[1160,1172,1175,1178,1179,1214,1231,1232,1257],[1160,1175,1214,1231,1232,1246,1257],[1160,1175,1179,1214,1231,1232,1257],[1160,1214,1231,1232,1246],[1160,1169,1214,1231,1232],[1160,1173,1214,1231,1232],[1160,1171,1172,1175,1214,1231,1232,1257],[1160,1214,1231,1232,1264],[1160,1169,1214,1231,1232,1264],[1160,1171,1175,1214,1231,1232,1234,1257],[1160,1166,1167,1168,1170,1174,1214,1225,1231,1232,1246,1257],[1160,1175,1183,1191,1214,1231,1232],[1160,1167,1173,1214,1231,1232],[1160,1175,1200,1201,1214,1231,1232],[1160,1167,1170,1175,1214,1231,1232,1249,1257,1264],[1160,1175,1214,1231,1232],[1160,1171,1175,1214,1231,1232,1257],[1160,1166,1214,1231,1232],[1160,1169,1170,1171,1173,1174,1175,1176,1177,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1201,1202,1203,1204,1205,1214,1231,1232],[1160,1175,1193,1196,1214,1222,1231,1232],[1160,1175,1183,1184,1185,1214,1231,1232],[1160,1173,1175,1184,1186,1214,1231,1232],[1160,1174,1214,1231,1232],[1160,1167,1169,1175,1214,1231,1232],[1160,1175,1179,1184,1186,1214,1231,1232],[1160,1179,1214,1231,1232],[1160,1173,1175,1178,1214,1231,1232,1257],[1160,1167,1171,1175,1183,1214,1231,1232],[1160,1175,1193,1214,1231,1232],[1160,1186,1214,1231,1232],[1160,1169,1175,1200,1214,1231,1232,1249,1262,1264]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"65c02b7f1cee6bdf10f3783c1a84456419557cb3e7ad71ac7d585aeee85d06c6","impliedFormat":1},{"version":"f77ae0e0c2486a9a1921b576186aab318d531790ba4afe51a1d1938bea0d0e46","impliedFormat":1},{"version":"97ea7c24274d59c6bd2afe5a9d3b1cd46b31148a33c088dcb85a466b7fb20efb","impliedFormat":1},{"version":"56fa8e4c913b87dce07bba3b1944c899203f2d73d8f24f84763a38ea761dab28","impliedFormat":1},{"version":"0c2883220e91f4f12e8b69ae4e94341d9421fa18fddec364b429598275fe7ecf","impliedFormat":1},{"version":"0e51e71f57a7f310b473cf605abd1c90b27edc5529d918a0a94ffd5adeeb4f99","impliedFormat":1},{"version":"8dd42fb90ace88d6e9362f55a82124b15c526cd0651b7e3335670d5ece08f945","impliedFormat":1},{"version":"baa62a3bdb377243f104bdafc67c6a1e3edd1dd509e6b81557d5313e6e3496f1","impliedFormat":1},{"version":"ea8d3a80f3e11b24014ff7593766be2563c8ccae4e025be9c2a379ef2b0225fa","impliedFormat":1},{"version":"c7df113891b650a97ae373406c50ea1c57437390f90e8647f8596384e2960a5b","impliedFormat":1},{"version":"c3aebc16c93fb1dfec163196503811d2545c73c6e68f9f896bde4d7734951c23","impliedFormat":1},{"version":"baa7f1bba68a6333fef836dc2a3623e18f1217894779492e75b200adbe4a972f","impliedFormat":1},{"version":"adc6974bb6588dfecba07e0384031c4b6569871db22597e3bd2e2caf8c0501db","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"f8fe31cc440a09d01bf7132e73d0e2f7cfba47ca73a9f781ba4b886e63aea1b1","impliedFormat":1},{"version":"9e93930b7ce225c5b85044742a68cac09fbcd283214bb9080e9d9c462cb58445","impliedFormat":1},{"version":"b420a50534e8769f04610534ddfbc5f71cec931f9c00ce6415db7d5a71517baa","impliedFormat":1},{"version":"b24bfbbf779e291257508c70875481181974c62c89814c7650063e881fa7c22e","impliedFormat":1},{"version":"2ee3ce165361ebb9223ac786585fec66c88812bd06e169477c6b720e0f5f59d6","impliedFormat":1},{"version":"240a7a364e8c97a56890cc9c062c21ad36be2c9e65ed43b4d93b9a09241e3a33","impliedFormat":1},{"version":"cecf0cfaa838d1f12ab65cd5c3c426b95bb13b88b4a9cbc2d4c42d6d975f894a","impliedFormat":1},{"version":"ea9fe951093a8ab15233d845aae4f93bc367e518baac34b297dd65e8608ab586","impliedFormat":1},{"version":"021cef4d09b60f8ec97375d7e6bc62291e0076e22aca63852dcadc4f6673ef67","impliedFormat":1},{"version":"83d612cff0b6f50adb30dcfe51fcace0af0db23720d83185ac2be36890b4e985","impliedFormat":1},{"version":"f756f3d6620edc34930b3b6d40c4c9c4b169ec2b04d244cfecdbc6c5b1dba8c7","impliedFormat":1},{"version":"86c68f74bc6b5c958923aaa57ebc2e0ef5605775866cc6a2bfdbecbf486e064a","impliedFormat":1},{"version":"f2bc549817ffbf49512f8c53b452104c2a44c062d41c755d40d1b52e8b883c68","impliedFormat":1},{"version":"24d16fab32c0f222f05292523b4e35d35ff91c24868da14ef35db915c4e540d4","impliedFormat":1},{"version":"59d390c69e5af05d3236dbab4ca1ff0c2b7b6e442bd60b15b7375a6b0e4659c1","impliedFormat":1},{"version":"cbe11f94b09ea1cd9e63f6788b76387fafa4ecfe88336a898a375f0407e4bc8b","impliedFormat":1},{"version":"2a242037a6c14b33ffb46ed3f2e290a4fde41718ef4abb13ceb9a75e7d0b3edf","impliedFormat":1},{"version":"775201eb23a9107b0eaa804fd99158faa1f03f9c315c0c41976f1b34a25b6848","impliedFormat":1},{"version":"9b20980bd1c6f5f9d4f11f4dd199b69c1b191753f1b074d1f200ef611da30c52","impliedFormat":1},{"version":"2d4ae2d55c3d16d2816e05d7a6426bfacc676fdb2dd548d51084cfa6379ca9c5","impliedFormat":1},{"version":"d319ef69302c708260a63f058f5dedf939b962644ea1cb82d4f24b4049925981","impliedFormat":1},{"version":"107278717e50dba422492278c86869043296559da6b2a73b5ed93b539933463c","impliedFormat":1},{"version":"95f774bba309c6e6fec38521ce3d1ebfcf45dc7261a9a814709495cc21e4fb7b","impliedFormat":1},{"version":"877fb70d6d0d1482a15ce5f9daf6bf8751c6cb27719674f25ab8e5f383806531","impliedFormat":1},{"version":"20bd88d48060076163f9575c8bbd7ef53e2cf7996c4bac3b149fbb30e7d82dc3","impliedFormat":1},{"version":"0bc8f2a952631d9cbb93b9c49285bc206691ddea06978275f3fd15c55c99ab53","impliedFormat":1},{"version":"ee9c6c2adb003d015686fba2b2d17601f6dacbd0e7690fdf30d5d5e16a0f47c2","impliedFormat":1},{"version":"f376b22ffd21433936a94cb4ff6122ab9f839901e5305bab4a3896b7583dd447","impliedFormat":1},{"version":"a40484872a5250ced1c91a0f07053e2028c6df9ffa4a2fb8c967e51d39e7fc73","impliedFormat":1},{"version":"e31e9f2216b16a2b8abce4277b543e5f637cd7f75ea006e64246c0e56fe5cc2f","impliedFormat":1},{"version":"bfa6297d90fc18a550adcc6404ca5429ca0834293adf8f3b52172c8f9259eb7b","impliedFormat":1},{"version":"c509fae865aa1b7d6130dfa384137cac6ae9340ca608e5353811c3d23c21d374","impliedFormat":1},{"version":"4aa6fab6e6e7079e8ee4db7ed4262e555e5bdc87e397b1ece85599ec3064f112","impliedFormat":1},{"version":"6ac5233c95cb514dd7bf4797260e1f221ed0ddfe4153f9b0267cc28d9af7d9b2","impliedFormat":1},{"version":"2a0610dbfda2c08616a7ada3968bbb1127a3b51528e2867ea08619033a0bd1a1","impliedFormat":1},{"version":"af3af8b4d6b75a75f16da562a5feb6dee4b71681bae698a362bd489f35ec01f0","impliedFormat":1},{"version":"f09a312da9e5bbcf6c4df67d18496b59065b48a8b0e3331b3a4ad0e2a7dd2412","impliedFormat":1},{"version":"69cf8c8ec67fed0b9e1d5aac6765f16d00bdc55340d42895ba9d60e97d3dc903","impliedFormat":1},{"version":"87f1dad8e25e29473f10281df9dcb28148ccaa11ef0c901daa9ceff07406f94d","impliedFormat":1},{"version":"7d6b83038eada85501eced905ca9a42e39001d8affd7f1b8aec7bd367eefa08f","impliedFormat":1},{"version":"905b0cea2b94535bd0a95ff9892e589bc07217cb00126be9bc937448e68490b7","impliedFormat":1},{"version":"bb362768aef0a1eacc2ec15be24555b8f4d201c6a415d8ee5efe4c5f3ca5952f","impliedFormat":1},{"version":"8c47c4dc236954c94f90c021e692f943e923e286043d1f1d0103943bac422f50","impliedFormat":1},{"version":"a2384708f89e165eb50ec60c4f2ae2b34f6741396847af1ea7030efde5ec7504","impliedFormat":1},{"version":"fd68ec89794433cb0171e5c6474654dc291789a3e3257c78bedd4e5836f59278","impliedFormat":1},{"version":"cc174e03736ad98cae4c795da28ba18194a8ed7e44eb72480acb8362b75eb96b","impliedFormat":1},{"version":"e0b2609c423883d2eccb3ee87034755351f20b3d1a1dc51f117cbeff4d3c0cc2","impliedFormat":1},{"version":"28d597f27780e0acede85d1e57a4974b192c88e176c70e11f6f32866601fc0da","impliedFormat":1},{"version":"16d6ebeae3b39565f5546efb7bf1c5dccc9c5f275baab445d979956fb1199d39","impliedFormat":1},{"version":"f23a3f3cd403758f611beb621b2560d1a3472725038473a820010487e5c23c02","impliedFormat":1},{"version":"7ce30c87b77917ba91db70476677b6fd3ed16b9ee5b7e5498b59d4d76f63efca","impliedFormat":1},{"version":"0fd31364612236bcab4deb1390440574608fb6da8946cae07acf8322bf3dd3e8","impliedFormat":1},{"version":"72e488dd47430be1907dc7e94845888505062c6a43bb7ad88446c056366e6cab","impliedFormat":1},{"version":"31481f5b6f5db0cbd7a58357acc76bbdb901d1fe4dc14960455c1e8ce8786ab8","impliedFormat":1},{"version":"2b3fdd1a1dca7c6d26a89c08c89948d30a7f34bf5af19b32364974a20137c323","impliedFormat":1},{"version":"0232ccf6acd7eedd387374b78026cf210c2fc8f84ba859d88abb7cfe99e4d6ba","impliedFormat":1},{"version":"d0d2cfabc04d096c0dd9e5f7514f9add50765c09ee14875565f275f9e2227434","impliedFormat":1},{"version":"dc58cf370cd637b7bfa342c946a40e3c461bba12093c5019fec7a79ee2c41caa","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"0e7e3fb90bc861cf8b519c79b7f8d502beef2207ff64502c9482f8457ab776bc","impliedFormat":1},{"version":"da47578e54017580d53eb150c8f6942ecf73ab44d03761fb4964cafe2f3637b3","impliedFormat":1},{"version":"4d46cbe3923f5b1eca2aeec855c84630e8c1f6a1215c02e76c69aea7f8d84565","impliedFormat":1},{"version":"f25658f5ef0dda34117d429357d954b3d64707b9476a2c5a4c995c247c8daac7","impliedFormat":1},{"version":"6d95e22c640c0df39aa6f0b995e1ab1b719f2197163245349a03cca8a16ea7ee","impliedFormat":1},{"version":"aac3f9c74191d0b40322fa5ffb64a7d16af2b82fd5c88405c8b864864c716715","impliedFormat":1},{"version":"47e80eb2d1171817e7da08682cdac09a690567b0ade757ea8a0dbbef4cd7ea48","impliedFormat":1},{"version":"c910cc9b9289bda821a270deb5a093b9c8520a0aeb32bd8b491a4d5bd8358b12","impliedFormat":1},{"version":"bd40c05c772c0312a51dfb9997c8ed83fea311fa4530d2f9883490bb8c1a40af","impliedFormat":1},{"version":"9d06e4a9ffbfb4a93a19ac1234db4beb97e94de08f8cb226b1af01d5ddde0718","impliedFormat":1},{"version":"09c6b1cd6813c0240f65db52fd46f598d7e529c37aa2985ca91504bcf4f1c7b0","impliedFormat":1},{"version":"c49e398ad1afba60487548dfa82d492f2dbd460842e195e7daf917666b2dd56f","impliedFormat":1},{"version":"233f8ec3666bd34686634570c86df0fe6128dd2ec8f682e0f46bddc982cdfd57","impliedFormat":1},{"version":"67ae5eaf9ef6ed32a30aced05943e9f83df215d62f80076f7cce3a55d08c8722","impliedFormat":1},{"version":"37b644d53b0a0712b1d122111e0efae8f1ba5b19ff151e049abaebdb3ceca636","impliedFormat":1},{"version":"0774385cc4251fb3e3c24cdee4587e5b8c85ef8f3446bdb4fe3ea3f70933f484","impliedFormat":1},{"version":"844bcb485d7c01e429f61f88f98f8ebe6cb31a8b2d25de3bc7a651ba7e7635c1","impliedFormat":1},{"version":"2e2bc02af7b535d267be8cecbc5831466dd71c5af294401821791b26cb363c47","impliedFormat":1},{"version":"986affe0f60331f20df7d708ee097056b0973d85422ec2ce754af19c1fa4e4b1","impliedFormat":1},{"version":"8f06c2807459f1958b297f4ad09c6612d7dbd7997c9ccfc6ea384f7538e0cea8","impliedFormat":1},{"version":"a7de30cd043d7299bfe9daaca3732b086e734341587c3e923b01f3fd74d31126","impliedFormat":1},{"version":"78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","impliedFormat":1},{"version":"3bf58923a1d27819745bdad52bca1bdced9fef12cc0c7f8a3fd5f4e0206b684a","impliedFormat":1},{"version":"8fc11f102df58f03d36fcbf0da3efa37c177f5f18f534c76179ceef0c3a672cd","impliedFormat":1},{"version":"e6935ab0f64a886e778c12a54ed6e9075ce7e7f44723ff0d52020a654b025a09","impliedFormat":1},{"version":"9829af7653a29f1b85d3dd688a6c6256087c0b737b85d84b630e7f93fd420faf","impliedFormat":1},{"version":"3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","impliedFormat":1},{"version":"03b419ce598d77fe4d1705c8281a797a908f57ce24a15d6174d7e7276d355a65","impliedFormat":1},{"version":"b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","impliedFormat":1},{"version":"18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","impliedFormat":1},{"version":"9c15e2b87cd3d8b18881bcc7d72b2d1dc6d5fe078b674ae12c12c19ec09a6a1a","impliedFormat":1},{"version":"0de68916e23c1e3df800f9f61cdd7c506ceb0656fcbc245ee9974aad26786781","impliedFormat":1},{"version":"80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","impliedFormat":1},{"version":"ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","impliedFormat":1},{"version":"46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","impliedFormat":1},{"version":"f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","impliedFormat":1},{"version":"dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","impliedFormat":1},{"version":"ca476924dfa6120b807a14e0a8aea7b061b8bdaa7eecdb303d7957c769102e96","impliedFormat":1},{"version":"848fe622fac070f8af9255e5d63fe829e3da079cae30be48fb6deb5dbf2c27c6","impliedFormat":1},{"version":"f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","impliedFormat":1},{"version":"03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","impliedFormat":1},{"version":"3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","impliedFormat":1},{"version":"a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","impliedFormat":1},{"version":"6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","impliedFormat":1},{"version":"4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","impliedFormat":1},{"version":"80fc027e10234b809a9a40086114a8154657dcb8478d58c85ef850592d352870","impliedFormat":1},{"version":"27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","impliedFormat":1},{"version":"12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","impliedFormat":1},{"version":"1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","impliedFormat":1},{"version":"fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","impliedFormat":1},{"version":"93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","impliedFormat":1},{"version":"94be5c5f8cf26bbf53554cba4b112e30134349b14f3c0fd0ede3b51ec25a7174","impliedFormat":1},{"version":"c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","impliedFormat":1},{"version":"ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","impliedFormat":1},{"version":"fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","impliedFormat":1},{"version":"04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","impliedFormat":1},{"version":"d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","impliedFormat":1},{"version":"de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","impliedFormat":1},{"version":"9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","impliedFormat":1},{"version":"7bd94408358caf1794ad24546ca0aa56f9be6be2d3245d0972fcb924b84a81fd","impliedFormat":1},{"version":"0e7c3660d1df392b6f6ae7fa697f0629ae4404e5b7bac05dd81136247aff32d5","impliedFormat":1},{"version":"b0b3636502dc0c50295f67747968f202f7b775eac5016329606d1bc2888d5dd9","impliedFormat":1},{"version":"f9ede7ea553dc197fd5d2604f62cda1be1aea50024ed73237d9e3144f0c93608","impliedFormat":1},{"version":"b1005ae67226fd9b7b65333d9a351917f517d421a0c63b7cde59bec3b8e3562f","impliedFormat":1},{"version":"c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","impliedFormat":1},{"version":"20efc25890a0b2f09e4d224afaaf84917baa77b1aee60d9dfd11ff8078d73f93","impliedFormat":1},{"version":"d00b48096854d711cee688e7ff1ca796c1bf0d27ca509633c2a98b85cc23d47d","impliedFormat":1},{"version":"30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","impliedFormat":1},{"version":"8be98ffc3c54fb40b220796b796388f8ade50c8ba813a811bffccf98006566d5","impliedFormat":1},{"version":"4e82eed3c1b5084132708ce030f8ec90b69e4b7bb844dcaacd808045ae24c0e2","impliedFormat":1},{"version":"eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","impliedFormat":1},{"version":"b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","impliedFormat":1},{"version":"4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","impliedFormat":1},{"version":"6da51da9b74383988b89e17298ceca510357f63830f78b40f72afe4d5a9cee3e","impliedFormat":1},{"version":"512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","impliedFormat":1},{"version":"f281f20b801830f2f94b2bc0b18aba01d4fb50c2f4a847ffcadff39de31c8b80","impliedFormat":1},{"version":"738ddac5ab5b61d70d3466f3906d6b3c83c8786e922c6e726a6597296181ae87","impliedFormat":1},{"version":"90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","impliedFormat":1},{"version":"b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","impliedFormat":1},{"version":"dd3f42651cfa863ded8fa0b0608fb892b826e254a0a6cbc447388cb5e11bffd5","impliedFormat":1},{"version":"8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","impliedFormat":1},{"version":"e7b9673dcd3d1825dbd70ad1d1f848d68189afc302ecdafc6eb30cbe7bd420b5","impliedFormat":1},{"version":"15911b87a2ad4b65b30c445802d55fa6186c66068603113042e8c3dfa4a35e2a","impliedFormat":1},{"version":"a9dc7b8d06b1f69d219f61fa3f7ac621e6e3a8d5a430e800cd7d1a755cc058c3","impliedFormat":1},{"version":"f8c496656cb5fd737931b4d6c60bd72a97c48f37c07dcb74a593dd24ac3f684a","impliedFormat":1},{"version":"f2cf1d33c458ac091983e5dac1613f264d48a69b281e43c5b055321320082358","impliedFormat":1},{"version":"0fa43815d4b05eafe97c056dae73c313f23a9f00b559f1e942d042c7a04db93c","impliedFormat":1},{"version":"e769097e5ea39d2ed548eeb9c093e90f26dde167f95eb80fbdd4efb041778387","impliedFormat":1},{"version":"a02db6aabaa291a85cf52b0c3f02a75301b80be856db63d44af4feea2179f37b","impliedFormat":1},{"version":"e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","impliedFormat":1},{"version":"557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","impliedFormat":1},{"version":"1f7eeb69504ad94d16f4731f707d2af879adc7487dc35b146e2d86825bb779b4","impliedFormat":1},{"version":"c1b5c480e4d38377c82f9f517c12014d3d4475c0e607c4845e0836e0e89bbf7d","impliedFormat":1},{"version":"1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","impliedFormat":1},{"version":"87fc4a324b9fa5c9b93a13b5ae1b55ea390929ec1b0450afebff9620921a9cc1","impliedFormat":1},{"version":"73c0b8df0e282e26a53820f53502847a043bd77a9cda78782207d5349842fba2","impliedFormat":1},{"version":"5c7391307b9a7c540d678f015d687c277269aa9171f441467e20bab15694db40","impliedFormat":1},{"version":"082aa8710bbf3d16b877e798341c69599fdd487b4dc34d374ab3e3ec6d46f690","impliedFormat":1},{"version":"acb9367f45f12526ea808d6da48ab77eee1ceb2b6fe47ab02bbcc7cce4c972b0","impliedFormat":1},{"version":"d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","impliedFormat":1},{"version":"79f4812dffe8f933c12c341d68eee731cb6dd7f2a4bb20097c411560c97a6263","impliedFormat":1},{"version":"c446e8f3bd5b16e121252e05ba7696524ca95ec3f819c12fb8c37e7836744769","impliedFormat":1},{"version":"23386bb0bcb20fcb367149f22f5c6468b53f1987e86fd25de875ffb769e4d241","impliedFormat":1},{"version":"3913806467307a4bd874b105ac3e79ac261ab986fbdce7f0feea26cbcee95765","impliedFormat":1},{"version":"a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","impliedFormat":1},{"version":"b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","impliedFormat":1},{"version":"ef8ff23609cec5eb95e2beb98132ad90c0c5075415b50228b12f89ffaf981a4a","impliedFormat":1},{"version":"80bbc9365ca8398c69eae77cdf7284d07192a17dacf1904095ab4c89f4520a5d","impliedFormat":1},{"version":"174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","impliedFormat":1},{"version":"2c0de27d99a9331cfac8bc5c6bbd174e0593628bf3df268faa6c4188962a9549","impliedFormat":1},{"version":"1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","impliedFormat":1},{"version":"0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","impliedFormat":1},{"version":"f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","impliedFormat":1},{"version":"d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","impliedFormat":1},{"version":"1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","impliedFormat":1},{"version":"d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","impliedFormat":1},{"version":"8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","impliedFormat":1},{"version":"2660eb7dba5976c2dcbea02ec146b1f27109e7bee323392db584f8c78a6477dd","impliedFormat":1},{"version":"54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","impliedFormat":1},{"version":"10837df0382365c2544fb75cb9a8f6e481e68c64915362941b4ea4468fd0ef61","impliedFormat":1},{"version":"cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","impliedFormat":1},{"version":"faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","impliedFormat":1},{"version":"b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","impliedFormat":1},{"version":"9c3e59360437a3e2a22f7f1032559a4c24aba697365b62fb4816b7c8c66035b8","impliedFormat":1},{"version":"393446ab3f0dd3449ad6fd4c8abd0c82b711c514b9e8dfbf75222bbc48eb0cb6","impliedFormat":1},{"version":"ea02a962453ec628e886a6c5d0fc03bf4da9dfa38e1f8d42e65e07b2651edd85","impliedFormat":1},{"version":"5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","impliedFormat":1},{"version":"5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","impliedFormat":1},{"version":"e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","impliedFormat":1},{"version":"c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","impliedFormat":1},{"version":"2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","impliedFormat":1},{"version":"c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","impliedFormat":1},{"version":"0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","impliedFormat":1},{"version":"cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","impliedFormat":1},{"version":"baa9fbd480342a1d5e3e11ba3629f2826d18d4a765f1f9693ab87bfb3ce54adb","impliedFormat":1},{"version":"cb2fea712720bb7951d7e5d63db8670bf4a400d3e0fb197bceb6ef44efe36ec3","impliedFormat":1},{"version":"1b4fcfc691980d63a730d47d5309d9f85cdddc18a4c83f6e3af20936d103e3ff","impliedFormat":1},{"version":"ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","impliedFormat":1},{"version":"84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","impliedFormat":1},{"version":"04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","impliedFormat":1},{"version":"637c0d7d8cedbc64a3c228c3fa6bef884746f7a16a631e7532f9828c9ac06b8a","impliedFormat":1},{"version":"9e665aea79b702fd612ffb7ac741e4160d35d8d696a789129ebcbaea003beb3d","impliedFormat":1},{"version":"c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","impliedFormat":1},{"version":"caf3f141f93cbf527ad18ecce326311d70342fe1e16ce93e5ce8d6bcdf02bd48","impliedFormat":1},{"version":"4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","impliedFormat":1},{"version":"51e3b73dea24e2a9638345fb7a2a7ef5d3aa2e7a285ad6bd446b45fab826def1","impliedFormat":1},{"version":"77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","impliedFormat":1},{"version":"7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","impliedFormat":1},{"version":"624f5dbfd76f2d77f20ace318e8cb918608a296106e55587fb443ef3030c595d","impliedFormat":1},{"version":"c78bb1275f640e4902ad5c3383ab4f54f73322a59c95924ab671125ba9546294","impliedFormat":1},{"version":"1cb0838371e8213ce116a1497bb86bcf01a11a755b77587980ee7cfb2d625ece","impliedFormat":1},{"version":"f5d29fd7099274774c203d94d8c0238770ab411b922b978be15a2c3ec8ab845c","impliedFormat":1},{"version":"6d99b5b226a65890ce27796e086d58c6351f601757c1e9f217a69e944d05e7e6","impliedFormat":1},{"version":"10b322f5bc001bec9bf08513c978c120adb0abe3c82793b11bdaf75873426c05","impliedFormat":1},{"version":"51b4efdc8dc92bc6ae2c44d4edad265decad70e8577d5653fc7f85200cbf6c6e","impliedFormat":1},{"version":"c3fa40ac56aa2598d9133c90b115eeb39bbad56c6dfca350dc8435b8b107fe26","impliedFormat":1},{"version":"cc542183b68b048a8cf64eb6231b3d0852f7f4d0191d4637c9d1d4c3f44b83b5","impliedFormat":1},{"version":"4b954a3d432dca82c787c06d2f1cca0fe673a4b440c5e0195429bd1fe43b324a","impliedFormat":1},{"version":"c6fd975d319a70d6ba90bf38c34ac8efebe531214038fe561a27f89f2203f78e","impliedFormat":1},{"version":"a818204639081cf07d80885b88aff5120e5a4135211162f5e08cfc00ef3bf5b6","impliedFormat":1},{"version":"c194ca06da86829b836bb188dffc05543bbea3cbda797667c7a7cade2f907646","impliedFormat":1},{"version":"6df6afb0424a7c7581ee98a9333d30e893b943d0a4709b88f18c252ddc3101b4","impliedFormat":1},{"version":"59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","impliedFormat":1},{"version":"1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","impliedFormat":1},{"version":"0b60cfcd94fa9bd9fa58176650c7e4c72f99b9d30a50d0b55aa08b510276af96","impliedFormat":1},{"version":"ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","impliedFormat":1},{"version":"2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","impliedFormat":1},{"version":"175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","impliedFormat":1},{"version":"69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","impliedFormat":1},{"version":"06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","impliedFormat":1},{"version":"6c6dcb49af3d72d823334f74a554b2f9917e3a59b3219934b7ae9e6b03a3e8b4","impliedFormat":1},{"version":"9628be9799a060a3f7fe2e1f08fab2b21cdd7e97a2bbc3ef2f0029be46e0d7da","impliedFormat":1},{"version":"3d24aec533fe2f035b0675ba1c0e55e8680a714fff2a517e0fb388279476701c","impliedFormat":1},{"version":"224e2edff4c1e67d9c5179aa70e31d0dc7dd4ea5a9e80ffde121df9e5254eef2","impliedFormat":1},{"version":"e324c3b2058f9525cf5c11915284f9dfdf7550c98f103429b271fe723c4f8e14","impliedFormat":1},{"version":"70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","impliedFormat":1},{"version":"d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","impliedFormat":1},{"version":"3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","impliedFormat":1},{"version":"d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","impliedFormat":1},{"version":"eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","impliedFormat":1},{"version":"643efb9d7747ee1dd50ff5bd4b7a87351157e55988c7d2f90ffbdf124f063931","impliedFormat":1},{"version":"788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","impliedFormat":1},{"version":"d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","impliedFormat":1},{"version":"b694593470a9bf370987e5b0757d5a9a88a46a703c9cf7921969f3379ce16148","impliedFormat":1},{"version":"6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","impliedFormat":1},{"version":"6bd6933efe9d6263d9f1a534a28a8f88b1e4c331b95d85d39350cf02eca8dce0","impliedFormat":1},{"version":"658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","impliedFormat":1},{"version":"6bf893d1b824bde22ee5880c0c760c1dd0a5163c38d22311441a3341b6965d2d","impliedFormat":1},{"version":"579d9d3c25058b854a6f7cc6368a473efcaa0740f45db13cb508761d35fc0156","impliedFormat":1},{"version":"68705604f0666ba3862670153eb4f965c3079415e7ab30a35b3126e36277dc9e","impliedFormat":1},{"version":"28b415e70f9da0346545b7d2bcf361844a8e5778bd6b45bc1a2859f99700ff5b","impliedFormat":1},{"version":"a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","impliedFormat":1},{"version":"e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","impliedFormat":1},{"version":"aec91730b9f4d83758b4a45596317d34d6ecdbe9330a44629f53af47641b96ee","impliedFormat":1},{"version":"2321197343254570a8d4c868572059bfdfb683cf9d4099b6d4694250dac69471","impliedFormat":1},{"version":"18a3be03c31356b60ea1090bcc905d99e4983ca911cc70b34ad0b9b4d4e050c3","impliedFormat":1},{"version":"9833a67663f960dc2d1908a19365ddde55c0651235596ac60d7078a9be6f6e56","impliedFormat":1},{"version":"2bcb8920601b80911430979b6db4a58a7908a31334e74e4e22b75c65edce3587","impliedFormat":1},{"version":"c3186dc74d62d0fb6fba29841ccbf995614992526c37fac5c082d0f28b351e54","impliedFormat":1},{"version":"2306daed18f7f59542a99857a678ef818058eefa30c2a556af123a1cf53889cd","impliedFormat":1},{"version":"b41ed9285a09710807ce2c423e038dfe538e46e9183c0c05aadc27bfb9ae256a","impliedFormat":1},{"version":"56b9f9de03f28eb5922750a213d3f47b21a4f00a48c7c9b89bf1733623873d3a","impliedFormat":1},{"version":"2bdd736078e445858cb1d9df809ff3a2f00445d78664dd70b6794fb2156bdd53","impliedFormat":1},{"version":"2653fb2893a65c610ec17d0e454e2b16726f16118425f0bc8a38c801943ef7f5","impliedFormat":1},{"version":"74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","impliedFormat":1},{"version":"cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","impliedFormat":1},{"version":"73e8b003f39c7ce46d2811749dab1dd1b309235fd5c277bd672c30a98b5cf90f","impliedFormat":1},{"version":"4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","impliedFormat":1},{"version":"d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","impliedFormat":1},{"version":"3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","impliedFormat":1},{"version":"8329556a2e85e3c3ff3dff43141790ff624b0f5138cedec5bb793164cf8b088f","impliedFormat":1},{"version":"4c889ce7e61ca7f3b7733e0d2be80b3af373e080c922e04639aa25f22963ae63","impliedFormat":1},{"version":"2239a8cd90c48e0b5c075e51099e7e3b4fc3d4741e4d9cc4410d2544d4216946","impliedFormat":1},{"version":"f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","impliedFormat":1},{"version":"774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","impliedFormat":1},{"version":"bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","impliedFormat":1},{"version":"0c792fe4e5f383b4f085a0033553fb84ed9322b7923fd59d4575aa43135e050d","impliedFormat":1},{"version":"228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","impliedFormat":1},{"version":"08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","impliedFormat":1},{"version":"22bdefb6b2107006ab203073218566443a52ab65eb5e4e8e86c3d38efe776588","impliedFormat":1},{"version":"0f01b48cee64391fabef3f344e6e86197dc921f0f88a6d45d133ac58283d9690","impliedFormat":1},{"version":"c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","impliedFormat":1},{"version":"05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","impliedFormat":1},{"version":"6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","impliedFormat":1},{"version":"9d3bd4ee558de42e9d8434f7293b404c4b7a09b344e77c36bbe959696328d594","impliedFormat":1},{"version":"f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","impliedFormat":1},{"version":"dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","impliedFormat":1},{"version":"b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","impliedFormat":1},{"version":"5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","impliedFormat":1},{"version":"9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","impliedFormat":1},{"version":"c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","impliedFormat":1},{"version":"f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","impliedFormat":1},{"version":"1ff7a67731e575e9f31837883ddfc6bfcef4a09630267e433bc5aea65ad2ced4","impliedFormat":1},{"version":"0c4f6b6eb73b0fa4d27ce6eef6c2f1e7bd93d953b941e486b55d5d4b22883350","impliedFormat":1},{"version":"af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","impliedFormat":1},{"version":"782f2628a998fd03f4ccbe9884da532b8c9be645077556e235149ca9e6bd8c7d","impliedFormat":1},{"version":"269b7db8b769d5677f8d5d219e74ea2390b72ea2c65676b307e172e8f605a74a","impliedFormat":1},{"version":"ae731d469fae328ba73d6928e4466b72e3966f92f14cd1a711f9a489c6f93839","impliedFormat":1},{"version":"90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","impliedFormat":1},{"version":"d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","impliedFormat":1},{"version":"e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","impliedFormat":1},{"version":"868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","impliedFormat":1},{"version":"7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","impliedFormat":1},{"version":"275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","impliedFormat":1},{"version":"c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","impliedFormat":1},{"version":"81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","impliedFormat":1},{"version":"5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","impliedFormat":1},{"version":"a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","impliedFormat":1},{"version":"864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","impliedFormat":1},{"version":"c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","impliedFormat":1},{"version":"3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","impliedFormat":1},{"version":"48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","impliedFormat":1},{"version":"7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","impliedFormat":1},{"version":"3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","impliedFormat":1},{"version":"051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","impliedFormat":1},{"version":"3e8240b75f97eb4495679f6031fb02ad889a43017cae4b17d572324513559372","impliedFormat":1},{"version":"d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","impliedFormat":1},{"version":"b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","impliedFormat":1},{"version":"eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","impliedFormat":1},{"version":"b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","impliedFormat":1},{"version":"b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","impliedFormat":1},{"version":"6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","impliedFormat":1},{"version":"43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","impliedFormat":1},{"version":"e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","impliedFormat":1},{"version":"6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","impliedFormat":1},{"version":"f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","impliedFormat":1},{"version":"a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","impliedFormat":1},{"version":"a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","impliedFormat":1},{"version":"7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","impliedFormat":1},{"version":"f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","impliedFormat":1},{"version":"ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","impliedFormat":1},{"version":"a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","impliedFormat":1},{"version":"5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","impliedFormat":1},{"version":"4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","impliedFormat":1},{"version":"8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","impliedFormat":1},{"version":"2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","impliedFormat":1},{"version":"3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","impliedFormat":1},{"version":"d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","impliedFormat":1},{"version":"0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","impliedFormat":1},{"version":"47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","impliedFormat":1},{"version":"d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","impliedFormat":1},{"version":"92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","impliedFormat":1},{"version":"805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","impliedFormat":1},{"version":"a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","impliedFormat":1},{"version":"98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","impliedFormat":1},{"version":"c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","impliedFormat":1},{"version":"088592cf2e218b99b02a5029ed8d1a763a3856cd25e012cfbb536b7494f08971","impliedFormat":1},{"version":"5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","impliedFormat":1},{"version":"52252b11bcbfaeb4c04dc9ec92ea3f1481684eee62c0c913e8ff1421dc0807e5","impliedFormat":1},{"version":"731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","impliedFormat":1},{"version":"b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","impliedFormat":1},{"version":"032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","impliedFormat":1},{"version":"c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","impliedFormat":1},{"version":"033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","impliedFormat":1},{"version":"bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","impliedFormat":1},{"version":"a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","impliedFormat":1},{"version":"1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","impliedFormat":1},{"version":"09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","impliedFormat":1},{"version":"b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","impliedFormat":1},{"version":"dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","impliedFormat":1},{"version":"115d092e2748990ff0f67f376f47e9a45a2f21f7c7784102419c14b32c4362d1","impliedFormat":1},{"version":"4ba068163c800094cd81b237f86f22c3a33c23cf2a70b9252aca373cfdf59677","impliedFormat":1},{"version":"53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","impliedFormat":1},{"version":"e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","impliedFormat":1},{"version":"6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","impliedFormat":1},{"version":"fca410876e0302680190982f2fc5102d896e65e4f4f20547a185b60364838910","impliedFormat":1},{"version":"601bc70ff67ae9855fc65bad9bb2d135f72147cf22e2490f58ea0d209d95f2ee","impliedFormat":1},{"version":"5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","impliedFormat":1},{"version":"de8a12540370f9f18b160a07ed57917d69fe24525d360531d42d4b1b5d0d9f0f","impliedFormat":1},{"version":"4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","impliedFormat":1},{"version":"34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","impliedFormat":1},{"version":"5c744f3cc0a266dd95b5769a70ddc85c8b6019adbb0954d4de61f89182202ce3","impliedFormat":1},{"version":"b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","impliedFormat":1},{"version":"c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","impliedFormat":1},{"version":"d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","impliedFormat":1},{"version":"997f6604cd3d35281083706aa2862e8181ed1929a6cbb004c087557d6c7f23c4","impliedFormat":1},{"version":"9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","impliedFormat":1},{"version":"41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","impliedFormat":1},{"version":"d84761f8a994b5444529c7c294b194de6fd5350ccda974929ea7e8b3893b753a","impliedFormat":1},{"version":"652e51858bafd77e1abcc4d4e9d5e48cc4426c3dd2910021abd8cc664961e135","impliedFormat":1},{"version":"8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","impliedFormat":1},{"version":"6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","impliedFormat":1},{"version":"b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","impliedFormat":1},{"version":"93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","impliedFormat":1},{"version":"b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","impliedFormat":1},{"version":"ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","impliedFormat":1},{"version":"217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","impliedFormat":1},{"version":"7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","impliedFormat":1},{"version":"e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","impliedFormat":1},{"version":"d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","impliedFormat":1},{"version":"0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","impliedFormat":1},{"version":"fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","impliedFormat":1},{"version":"03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","impliedFormat":1},{"version":"5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","impliedFormat":1},{"version":"42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","impliedFormat":1},{"version":"e578a36b3683d233e045a85c9adb0f10e83d2b48f777b9c05fbc363ccc6bdd34","impliedFormat":1},{"version":"0235d0ba0c7b64244d4703b7d6cabd88ba809abeb01da0c13e9ed111bf5e7059","impliedFormat":1},{"version":"9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","impliedFormat":1},{"version":"d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","impliedFormat":1},{"version":"e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","impliedFormat":1},{"version":"ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","impliedFormat":1},{"version":"4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","impliedFormat":1},{"version":"3238d2eee64423c8d41972c88673b0327d8b40174a78ea346bcd10954a8f3373","impliedFormat":1},{"version":"8f773ddff9070d725dd23f5cf6c8e62bd86984a57b5d5e3fc7583010b48cd8ac","impliedFormat":1},{"version":"5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","impliedFormat":1},{"version":"19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","impliedFormat":1},{"version":"c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","impliedFormat":1},{"version":"68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","impliedFormat":1},{"version":"7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","impliedFormat":1},{"version":"561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","impliedFormat":1},{"version":"438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","impliedFormat":1},{"version":"0c293195f800014f1fa3ffacf979002c8c1886ab71750432813fb590738eeef5","impliedFormat":1},{"version":"7673348e0cc2f4e33d1db02ecda02f39e66e56ab2cc3c5602246e5532f2715ab","impliedFormat":1},{"version":"83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","impliedFormat":1},{"version":"869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","impliedFormat":1},{"version":"bfa105c32ed586b227188f7b568776d03202dc7aa4c3af2746579450c7d5e7f2","impliedFormat":1},{"version":"756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","impliedFormat":1},{"version":"59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","impliedFormat":1},{"version":"85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","impliedFormat":1},{"version":"f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","impliedFormat":1},{"version":"eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","impliedFormat":1},{"version":"7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","impliedFormat":1},{"version":"14176cfdbc3d1d633ad9b5daf044ab4c7d0d73be61ca2f14388800e21f0989cd","impliedFormat":1},{"version":"a24f510afe4d938d625a4b5a5374ac0478e56305e8743dd7d37d86d709754286","impliedFormat":1},{"version":"648acdbcbcd01b1a91e8b0ad390ed59fada685977f44b90e148b65bd8159dfe8","impliedFormat":1},{"version":"8309898ba0ac6f2856a94a11723d499091253a6d5df34ddebc6149d43480bfd2","impliedFormat":1},{"version":"a317ae0eb092da3fd799d1717a2da319a74abebe85e2914cb259222969f95705","impliedFormat":1},{"version":"36d76e2dbd5f5243bd566b018c589e2ba707e34b24ec7d285feb11ba6bf23fbe","impliedFormat":1},{"version":"f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","impliedFormat":1},{"version":"335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","impliedFormat":1},{"version":"8b7a519edbd0b7654491300d8e3cbd2cb3ef921003569ca39ebd33e77479bb99","impliedFormat":1},{"version":"c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","impliedFormat":1},{"version":"ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","impliedFormat":1},{"version":"3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","impliedFormat":1},{"version":"67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","impliedFormat":1},{"version":"63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","impliedFormat":1},{"version":"9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","impliedFormat":1},{"version":"a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","impliedFormat":1},{"version":"40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","impliedFormat":1},{"version":"703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","impliedFormat":1},{"version":"e09c56f8c446225e061b53cb2f95fcbbc8555483ab29165f6b0f39bc82c8d773","impliedFormat":1},{"version":"a571973bc2e34c898c3202452f957e6757f0c08cb66d50d6785f4a9042d74bad","impliedFormat":1},{"version":"a6a059446e66fbf5072eccce94eb5587cef2f99aa04d4bbd4ebe63d0a6592a4f","impliedFormat":1},{"version":"6e2533e27eba5ff02d6eed37e0a7eb69ae7982e0f72fd8f74c90ab201f061867","impliedFormat":1},{"version":"9c10dd3d85b7620ed3105b3f018125d0bb54198bf5847e39622afb22c651a1ad","impliedFormat":1},{"version":"58c62e415bf74b1423bf443587e33d7951a8bf19d7b03073f26e86d9b43ba9ea","impliedFormat":1},{"version":"dd6ec67ad168e92b8bf79ba975c6e0be8c60e403ba704d1c1b31a6059c12f967","impliedFormat":1},{"version":"bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","impliedFormat":1},{"version":"92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","impliedFormat":1},{"version":"7610ecdae59cea1a8db7580941ebc24d522d8ac1751ce718a6af22d41e1a1279","impliedFormat":1},{"version":"3e55a65822875e85f96e444b79787f619b9473e36c143dedc6d5441a2544b8ab","impliedFormat":1},{"version":"d49275f9098a8e7a5df7c55321b0242cef0bfdde51018b7b2709c4dc74917822","impliedFormat":1},{"version":"b25556c4111afad4cb174aa4674db2e5b23a6b191dc6a3e42c7c3417ea446a68","impliedFormat":1},{"version":"f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","impliedFormat":1},{"version":"bd3910ccd4fcd05ebd83fbfeb62f5a82a6674c85c6c0e4755c16298df7abe4d7","impliedFormat":1},{"version":"7c0541d0addc3007e5f5776023d5e6e44f96eae0684cdabe59ef04f2a294b116","impliedFormat":1},{"version":"70137204b720e4dd1b81260a70578f0f4f417c53837f8a13859b2f58e20d7150","impliedFormat":1},{"version":"b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","impliedFormat":1},{"version":"56d092bd6225f6e67d9acab3fd65ce0a4edb36cadba2f0370e67322e2f6f1bc8","impliedFormat":1},{"version":"a4709d5d466ad8dcf4ddccb905ad95348131df1616f964185be9739f96526bde","impliedFormat":1},{"version":"73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","impliedFormat":1},{"version":"4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","impliedFormat":1},{"version":"ee428614fde0db27939b30094352fc85b58d1bdba6d63be6d8b2aec5929fd9a2","impliedFormat":1},{"version":"3d3cc34e24f6ad17c729d9ed471318073179112a2ecf095f150aeb529d0925b7","impliedFormat":1},{"version":"4d6140fdc42067e7ea4e66a5c96b54c9efd0f9cf7ca9ddd62d7596feadb3da67","impliedFormat":1},{"version":"ff66b304369f2b43bc803e7d723c587e18c2156294b15a9711f91f37fc9e461b","impliedFormat":1},{"version":"bc0b17d3fd0e34083fbc886367ed53563b569d1d05214f60b21117e2dbfb7fdd","impliedFormat":1},{"version":"c1cc2a1ac9ae043fd05e07193d408c0f0bf4628e54c19871621ce1049d4c200e","impliedFormat":1},{"version":"d005c21b9c42bd1ccde99f183dc2d3c992be407aa63c4ba3371e4f81cf36b2aa","impliedFormat":1},{"version":"9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","impliedFormat":1},{"version":"e608cfd08fb30d374ba4b822fb2329a850d515bee8599117c9f53e925f7a548c","impliedFormat":1},{"version":"c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","impliedFormat":1},{"version":"4f64016165565f743356812e33ac22f5ef91891738927e413121f502b186210c","impliedFormat":1},{"version":"b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"dd80bc112babae1ca13b3dc38ffe56031f269c7db617ddd335687614accaca08","impliedFormat":1},{"version":"cb5eaaa2a079305b1c5344af739b29c479746f7a7aefffc7175d23d8b7c8dbb0","impliedFormat":1},{"version":"bd324dccada40f2c94aaa1ebc82b11ce3927b7a2fe74a5ab92b431d495a86e6f","impliedFormat":1},{"version":"56749bf8b557c4c76181b2fd87e41bde2b67843303ae2eabb299623897d704d6","impliedFormat":1},{"version":"5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","impliedFormat":1},{"version":"e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","impliedFormat":1},{"version":"51a674644ed5a181ec1497c1b4aa6f8cfcbe3af5481bdb641c1b5a498bcb6f3c","impliedFormat":1},{"version":"33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","impliedFormat":1},{"version":"176d6f604b228f727afb8e96fd6ff78c7ca38102e07acfb86a0034d8f8a2064a","impliedFormat":1},{"version":"1b1a02c54361b8c222392054648a2137fc5983ad5680134a653b1d9f655fe43d","impliedFormat":1},{"version":"8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","impliedFormat":1},{"version":"e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","impliedFormat":1},{"version":"a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","impliedFormat":1},{"version":"6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","impliedFormat":1},{"version":"7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","impliedFormat":1},{"version":"7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","impliedFormat":1},{"version":"46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","impliedFormat":1},{"version":"8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","impliedFormat":1},{"version":"ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","impliedFormat":1},{"version":"45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","impliedFormat":1},{"version":"9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","impliedFormat":1},{"version":"b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","impliedFormat":1},{"version":"bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","impliedFormat":1},{"version":"7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","impliedFormat":1},{"version":"3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","impliedFormat":1},{"version":"1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","impliedFormat":1},{"version":"600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","impliedFormat":1},{"version":"32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","impliedFormat":1},{"version":"2426ed0e9982c3d734a6896b697adf5ae93d634b73eb15b48da8106634f6d911","impliedFormat":1},{"version":"057431f69d565fb44c246f9f64eac09cf309a9af7afb97e588ebef19cc33c779","impliedFormat":1},{"version":"960d026ca8bf27a8f7a3920ee50438b50ec913d635aa92542ca07558f9c59eca","impliedFormat":1},{"version":"71f5d895cc1a8a935c40c070d3d0fade53ae7e303fd76f443b8b541dee19a90c","impliedFormat":1},{"version":"252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","impliedFormat":1},{"version":"e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"2d2ec3235e01474f45a68f28cf826c2f5228b79f7d474d12ca3604cdcfdac80c","impliedFormat":1},{"version":"6dd249868034c0434e170ba6e0451d67a0c98e5a74fd57a7999174ee22a0fa7b","impliedFormat":1},{"version":"9716553c72caf4ff992be810e650707924ec6962f6812bd3fbdb9ac3544fd38f","impliedFormat":1},{"version":"506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","impliedFormat":1},{"version":"053c51bbc32db54be396654ab5ecd03a66118d64102ac9e22e950059bc862a5e","impliedFormat":1},{"version":"1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","impliedFormat":1},{"version":"627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","impliedFormat":1},{"version":"0f6e0b1a1deb1ab297103955c8cd3797d18f0f7f7d30048ae73ba7c9fb5a1d89","impliedFormat":1},{"version":"0a051f254f9a16cdde942571baab358018386830fed9bdfff42478e38ba641ce","impliedFormat":1},{"version":"17269f8dfc30c4846ab7d8b5d3c97ac76f50f33de96f996b9bf974d817ed025b","impliedFormat":1},{"version":"9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","impliedFormat":1},{"version":"083d6f3547ccbf25dfa37b950c50bee6691ed5c42107f038cc324dbca1e173ae","impliedFormat":1},{"version":"952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","impliedFormat":1},{"version":"8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","impliedFormat":1},{"version":"e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","impliedFormat":1},{"version":"893e5cfbae9ed690b75b8b2118b140665e08d182ed8531e1363ec050905e6cb2","impliedFormat":1},{"version":"6ae7c7ada66314a0c3acfbf6f6edf379a12106d8d6a1a15bd35bd803908f2c31","impliedFormat":1},{"version":"e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","impliedFormat":1},{"version":"97146bbe9e6b1aab070510a45976faaf37724c747a42d08563aeae7ba0334b4f","impliedFormat":1},{"version":"c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","impliedFormat":1},{"version":"09e64dea2925f3a0ef972d7c11e7fa75fec4c0824e9383db23eacf17b368532f","impliedFormat":1},{"version":"424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","impliedFormat":1},{"version":"a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","impliedFormat":1},{"version":"3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","impliedFormat":1},{"version":"ced02e78a2e10f89f4d70440d0a8de952a5946623519c54747bc84214d644bac","impliedFormat":1},{"version":"efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","impliedFormat":1},{"version":"29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","impliedFormat":1},{"version":"c87c29ad2df837f7bc528688d96793758e0c4b1965f5ca520a8c287999565f66","impliedFormat":1},{"version":"e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","impliedFormat":1},{"version":"582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","impliedFormat":1},{"version":"185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","impliedFormat":1},{"version":"0c0a02625cf59a0c7be595ccc270904042bea523518299b754c705f76d2a6919","impliedFormat":1},{"version":"f2c999522aa544d93920205e05e11a5d43332f95ec35bd8a17025a823035bc56","impliedFormat":1},{"version":"cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","impliedFormat":1},{"version":"3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","impliedFormat":1},{"version":"c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","impliedFormat":1},{"version":"2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","impliedFormat":1},{"version":"516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","impliedFormat":1},{"version":"07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","impliedFormat":1},{"version":"fa40d705f9813843d47f19321591499f14d1a18fa5e8ca9beaee5aac633c3d0d","impliedFormat":1},{"version":"a7a6330fb015f72d821e23004e63a3827e0c632b614ef3a310b3c81b66de61fd","impliedFormat":1},{"version":"89968316b7069339433bd42d53fe56df98b6990783dfe00c9513fb4bd01c2a1c","impliedFormat":1},{"version":"a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","impliedFormat":1},{"version":"62e62a477c56cda719013606616dd856cfdc37c60448d0feb53654860d3113bb","impliedFormat":1},{"version":"207c107dd2bd23fa9febac2fe05c7c72cdac02c3f57003ab2e1c6794a6db0c05","impliedFormat":1},{"version":"55133e906c4ddabecdfcbc6a2efd4536a3ac47a8fa0a3fe6d0b918cac882e0d4","impliedFormat":1},{"version":"2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","impliedFormat":1},{"version":"2eb4012a758b9a7ba9121951d7c4b9f103fe2fc626f13bec3e29037bb9420dc6","impliedFormat":1},{"version":"fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","impliedFormat":1},{"version":"cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","impliedFormat":1},{"version":"34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","impliedFormat":1},{"version":"6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","impliedFormat":1},{"version":"4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","impliedFormat":1},{"version":"07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","impliedFormat":1},{"version":"cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","impliedFormat":1},{"version":"c873a6d6019f0b93889e54bf3dfb133120d5adba79c0a31d2400d1b5d0f2a2a2","impliedFormat":1},{"version":"471386a0a7e4eb88c260bdde4c627e634a772bf22f830c4ec1dad823154fd6f5","impliedFormat":1},{"version":"108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","impliedFormat":1},{"version":"d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","impliedFormat":1},{"version":"d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","impliedFormat":1},{"version":"19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","impliedFormat":1},{"version":"c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","impliedFormat":1},{"version":"1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","impliedFormat":1},{"version":"079d3f1ddcaf6c0ff28cfc7851b0ce79fcd694b3590afa6b8efa6d1656216924","impliedFormat":1},{"version":"2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","impliedFormat":1},{"version":"682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","impliedFormat":1},{"version":"7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","impliedFormat":1},{"version":"7e9c4e62351e3af1e5e49e88ebb1384467c9cd7a03c132a3b96842ccdc8045c4","impliedFormat":1},{"version":"ea1f9c60a912065c08e0876bd9500e8fa194738855effb4c7962f1bfb9b1da86","impliedFormat":1},{"version":"903f34c920e699dacbc483780b45d1f1edcb1ebf4b585a999ece78e403bb2db3","impliedFormat":1},{"version":"100ebfd0470433805c43be5ae377b7a15f56b5d7181c314c21789c4fe9789595","impliedFormat":1},{"version":"12533f60d36d03d3cf48d91dc0b1d585f530e4c9818a4d695f672f2901a74a86","impliedFormat":1},{"version":"57b555a83466fb289968a1713f965f1a2bb3a91cc34d1fa21af8ebdef7fc872a","impliedFormat":1},{"version":"21d9968dad7a7f021080167d874b718197a60535418e240389d0b651dd8110e7","impliedFormat":1},{"version":"2ef7349b243bce723d67901991d5ad0dfc534da994af61c7c172a99ff599e135","impliedFormat":1},{"version":"fa103f65225a4b42576ae02d17604b02330aea35b8aaf889a8423d38c18fa253","impliedFormat":1},{"version":"1b9173f64a1eaee88fa0c66ab4af8474e3c9741e0b0bd1d83bfca6f0574b6025","impliedFormat":1},{"version":"1b212f0159d984162b3e567678e377f522d7bee4d02ada1cc770549c51087170","impliedFormat":1},{"version":"46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","impliedFormat":1},{"version":"86cb49eb242fe19c5572f58624354ffb8743ff0f4522428ebcabc9d54a837c73","impliedFormat":1},{"version":"fc2fb9f11e930479d03430ee5b6588c3788695372b0ab42599f3ec7e78c0f6d5","impliedFormat":1},{"version":"bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","impliedFormat":1},{"version":"817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","impliedFormat":1},{"version":"a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","impliedFormat":1},{"version":"9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","impliedFormat":1},{"version":"66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","impliedFormat":1},{"version":"293ca178fd6c23ed33050052c6544c9d630f9d3b11d42c36aa86218472129243","impliedFormat":1},{"version":"90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","impliedFormat":1},{"version":"fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","impliedFormat":1},{"version":"adb906b7794a71185220332532dcbdd09527e0dd3ce9f0b9be0a88c56bbb7e9e","impliedFormat":1},{"version":"b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","impliedFormat":1},{"version":"41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","impliedFormat":1},{"version":"c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","impliedFormat":1},{"version":"a88ddea30fae38aa071a43b43205312dc5ff86f9e21d85ba26b14690dc19d95e","impliedFormat":1},{"version":"34fc71db924616ba097a0cb6cddc2ece273a27673dd3b206abf3f3b5d63bcace","impliedFormat":1},{"version":"5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","impliedFormat":1},{"version":"4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","impliedFormat":1},{"version":"441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa","impliedFormat":1},{"version":"810c226565b65b1c690ba8acfe597dc37aea99d527be3b51e116b70cd22ca3b1","impliedFormat":1},{"version":"dc085a9d13b6c09dd3254c3b18bbe8c504477be9308ad7f46d01ea01e81812e4","impliedFormat":1},{"version":"74c50592ee97353f54bcfce5123a0666a7d3242d34eb5454992a08c46e05430d","impliedFormat":1},{"version":"cc5a052d548ce1831d26b14cea13f185e27ce32a0545b496dfe1e97a66c82cfb","impliedFormat":1},{"version":"f805572e17e62644773466785cc88578a0af15442d3cfbdf0a1acc49eda0574f","impliedFormat":1},{"version":"81833e7f63c1ebc413dc5ff8ddcec4c1fb1f40e0a014f4175022b95f0aa25fcb","impliedFormat":1},{"version":"d3882a364f93f529267f08e313cf95a9f59269f4d89cdf87c17f7ef1453ae6b2","impliedFormat":1},{"version":"f6c06c23c82358dad9739e9d58b57e7db8368e7cae95dd52657c1385b211b0d9","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","impliedFormat":1},{"version":"fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","impliedFormat":1},{"version":"24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","impliedFormat":1},{"version":"aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","impliedFormat":1},{"version":"1f2bddea07543ccda708134cca0600b4d9ac9bd774ec1ede0a69935b04df1496","impliedFormat":1},{"version":"6e8997d08f6798d0a9416df24312cafd084e6184a205d9283eba95ef56f8ef8b","impliedFormat":1},{"version":"ac6968717607889d24d6e407effb48dd5af82005925b4725b1d9eb52a8a047e2","impliedFormat":1},{"version":"26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","impliedFormat":1},{"version":"46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","impliedFormat":1},{"version":"84d02daa32c7a8bff4946bbc7d878ffb7114c19879f7bfceeeb39bef48e93c42","impliedFormat":1},{"version":"0fbbc989ca5a9cb73731434e80741eef2695cf35fb53d384808a0ab2d6732fcc","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,424,[1146,1151]],"options":{"allowSyntheticDefaultImports":true,"declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[424,1],[1150,2],[423,3],[1147,4],[1148,4],[1151,5],[1146,6],[1149,7],[1002,8],[1144,9],[991,10],[990,10],[992,10],[1145,11],[603,12],[602,3],[1154,13],[1152,14],[1283,15],[1297,14],[1491,16],[347,14],[334,14],[71,14],[323,17],[324,17],[325,14],[326,3],[336,18],[327,17],[328,19],[329,14],[330,14],[331,17],[332,17],[333,17],[335,20],[343,21],[345,14],[342,14],[349,22],[346,14],[344,14],[340,23],[341,24],[348,25],[350,26],[337,14],[339,27],[338,28],[277,14],[280,29],[276,14],[536,14],[278,14],[279,14],[353,30],[354,30],[355,30],[356,30],[357,30],[358,30],[359,30],[352,31],[360,30],[374,32],[361,30],[351,14],[362,30],[363,30],[364,30],[365,30],[366,30],[367,30],[368,30],[369,30],[370,30],[371,30],[372,30],[373,30],[382,33],[380,34],[379,14],[378,14],[381,35],[422,36],[72,14],[73,14],[74,14],[518,37],[76,38],[524,39],[523,40],[266,41],[267,38],[402,14],[296,14],[297,14],[403,42],[268,14],[404,14],[405,43],[75,14],[270,44],[271,45],[269,46],[272,44],[273,14],[275,47],[287,48],[288,14],[293,49],[289,14],[290,14],[291,14],[292,14],[294,14],[295,50],[301,51],[304,52],[302,14],[303,14],[322,53],[305,14],[306,14],[495,54],[286,55],[284,56],[282,57],[283,58],[285,14],[313,59],[307,14],[316,60],[309,61],[314,62],[312,63],[315,64],[310,65],[311,66],[299,67],[318,68],[300,69],[320,70],[321,71],[308,14],[317,14],[274,14],[281,72],[319,73],[388,74],[383,14],[389,75],[384,76],[385,77],[386,78],[387,79],[390,80],[395,81],[393,82],[394,82],[401,83],[391,14],[392,84],[396,81],[398,85],[400,86],[399,87],[414,88],[407,89],[408,90],[409,90],[410,91],[411,91],[412,90],[413,90],[406,92],[416,93],[415,94],[418,95],[417,96],[419,97],[375,98],[377,99],[298,14],[376,67],[420,100],[397,101],[421,102],[508,103],[509,104],[586,105],[510,106],[511,14],[512,107],[513,108],[522,109],[515,110],[519,111],[527,112],[525,3],[526,113],[516,114],[528,14],[530,115],[531,116],[532,117],[521,118],[517,119],[541,120],[529,121],[559,122],[514,123],[560,124],[557,125],[558,3],[581,126],[552,127],[506,128],[582,129],[556,130],[501,131],[543,132],[542,14],[551,133],[550,134],[584,135],[554,14],[555,136],[553,137],[583,138],[507,139],[505,140],[500,14],[547,141],[563,142],[561,3],[496,3],[546,143],[497,24],[498,106],[499,144],[503,145],[502,146],[562,147],[504,148],[535,149],[533,115],[534,150],[544,24],[545,151],[548,152],[566,153],[567,154],[564,155],[565,156],[568,157],[569,158],[570,159],[540,160],[537,161],[538,17],[539,150],[572,162],[571,163],[578,164],[585,3],[574,165],[573,3],[576,166],[575,14],[577,167],[520,168],[549,169],[580,170],[579,3],[462,171],[445,172],[464,173],[465,174],[466,175],[444,176],[467,177],[468,178],[469,179],[470,180],[459,14],[477,181],[471,182],[472,183],[473,183],[474,183],[475,183],[476,184],[478,185],[479,14],[482,186],[483,3],[486,187],[484,188],[485,3],[481,189],[480,14],[435,14],[432,190],[426,14],[427,14],[428,14],[429,14],[430,14],[431,14],[487,191],[490,192],[489,193],[488,14],[449,14],[433,194],[450,14],[451,195],[452,194],[447,196],[448,197],[438,198],[439,14],[440,196],[446,199],[437,200],[601,201],[425,14],[434,202],[455,203],[453,204],[442,205],[461,206],[456,73],[454,207],[441,14],[457,14],[458,14],[460,183],[443,205],[493,208],[494,209],[491,210],[492,211],[587,212],[590,213],[463,14],[588,14],[589,14],[599,214],[592,215],[593,216],[594,217],[595,218],[596,219],[597,220],[598,221],[591,222],[600,14],[996,223],[994,224],[995,225],[1000,226],[993,10],[998,227],[997,228],[999,229],[1001,230],[1490,231],[1301,232],[1302,233],[1439,232],[1440,234],[1421,235],[1422,236],[1305,237],[1306,238],[1376,239],[1377,240],[1350,232],[1351,241],[1344,232],[1345,242],[1436,243],[1434,244],[1435,14],[1450,245],[1451,246],[1320,247],[1321,248],[1452,249],[1453,250],[1454,251],[1455,252],[1312,253],[1313,254],[1438,255],[1437,256],[1423,232],[1424,257],[1316,258],[1317,259],[1340,14],[1341,260],[1458,261],[1456,262],[1457,263],[1459,264],[1460,265],[1463,266],[1461,267],[1464,244],[1462,268],[1465,269],[1468,270],[1466,271],[1467,272],[1469,273],[1318,253],[1319,274],[1444,275],[1441,276],[1442,277],[1443,14],[1419,278],[1420,279],[1364,280],[1363,281],[1361,282],[1360,283],[1362,284],[1471,285],[1470,286],[1473,287],[1472,288],[1349,289],[1348,232],[1327,290],[1325,291],[1324,237],[1326,292],[1476,293],[1480,294],[1474,295],[1475,296],[1477,293],[1478,293],[1479,293],[1366,297],[1365,237],[1382,298],[1380,299],[1381,244],[1378,300],[1379,301],[1315,302],[1314,232],[1372,303],[1303,232],[1304,304],[1371,305],[1409,306],[1412,307],[1410,308],[1411,309],[1323,310],[1322,232],[1414,311],[1413,237],[1392,312],[1391,232],[1347,313],[1346,232],[1418,314],[1417,315],[1386,316],[1385,317],[1383,318],[1384,319],[1375,320],[1374,321],[1373,322],[1482,323],[1481,324],[1399,325],[1398,326],[1397,327],[1446,328],[1445,14],[1390,329],[1389,330],[1387,331],[1388,332],[1368,333],[1367,237],[1311,334],[1310,335],[1309,336],[1308,337],[1307,338],[1403,339],[1402,340],[1333,341],[1332,237],[1337,342],[1336,343],[1401,344],[1400,232],[1447,14],[1449,345],[1448,14],[1406,346],[1405,347],[1404,348],[1484,349],[1483,350],[1486,351],[1485,352],[1432,353],[1433,354],[1431,355],[1370,356],[1369,14],[1416,357],[1415,358],[1343,359],[1342,232],[1394,360],[1393,232],[1300,361],[1299,14],[1353,362],[1354,363],[1359,364],[1352,365],[1356,366],[1355,367],[1357,368],[1358,369],[1408,370],[1407,237],[1339,371],[1338,237],[1489,372],[1488,373],[1487,374],[1426,375],[1425,232],[1396,376],[1395,232],[1331,377],[1329,378],[1328,237],[1330,379],[1428,380],[1427,232],[1335,381],[1334,232],[1430,382],[1429,232],[1157,383],[1153,13],[1155,384],[1156,13],[1266,385],[1265,386],[1267,14],[1278,387],[1286,388],[1282,389],[1281,390],[1279,14],[1290,391],[1293,392],[1291,14],[1294,14],[1295,393],[1296,394],[1497,395],[1280,14],[1277,396],[1270,397],[1274,398],[1272,399],[1275,400],[1273,401],[1276,402],[1271,14],[1269,403],[1268,404],[1498,14],[1211,405],[1212,405],[1213,406],[1160,407],[1214,408],[1215,409],[1216,410],[1158,14],[1217,411],[1218,412],[1219,413],[1220,414],[1221,415],[1222,416],[1223,416],[1224,417],[1225,418],[1226,419],[1227,420],[1161,14],[1159,14],[1228,421],[1229,422],[1230,423],[1264,424],[1231,425],[1232,14],[1233,426],[1234,427],[1235,428],[1236,429],[1237,430],[1238,431],[1239,432],[1240,433],[1241,434],[1242,434],[1243,435],[1244,14],[1245,436],[1246,437],[1248,438],[1247,439],[1249,440],[1250,441],[1251,442],[1252,443],[1253,444],[1254,445],[1255,446],[1256,447],[1257,448],[1258,449],[1259,450],[1260,451],[1261,452],[1162,14],[1163,453],[1164,14],[1165,14],[1207,454],[1208,455],[1209,14],[1210,440],[1262,456],[1263,457],[1288,14],[1289,14],[1287,458],[1292,459],[1499,14],[1508,460],[1500,14],[1503,461],[1506,462],[1507,463],[1501,464],[1504,465],[1502,466],[1513,467],[1510,468],[1512,14],[1511,469],[1509,470],[1514,14],[1045,471],[1036,14],[1037,14],[1038,14],[1039,14],[1040,14],[1041,14],[1042,14],[1043,14],[1044,14],[1515,14],[1516,472],[436,14],[1298,14],[1006,14],[1127,473],[1131,473],[1130,473],[1128,473],[1129,473],[1132,473],[1009,473],[1021,473],[1010,473],[1023,473],[1025,473],[1019,473],[1018,473],[1020,473],[1024,473],[1026,473],[1011,473],[1022,473],[1012,473],[1014,474],[1015,473],[1016,473],[1017,473],[1033,473],[1032,473],[1135,475],[1027,473],[1029,473],[1028,473],[1030,473],[1031,473],[1134,473],[1133,473],[1034,473],[1117,473],[1116,473],[1046,476],[1047,476],[1049,473],[1094,473],[1115,473],[1050,476],[1095,473],[1092,473],[1096,473],[1051,473],[1052,473],[1053,476],[1097,473],[1091,476],[1048,476],[1098,473],[1054,476],[1099,473],[1079,473],[1055,476],[1056,473],[1057,473],[1089,476],[1060,473],[1059,473],[1100,473],[1101,477],[1102,476],[1062,473],[1064,473],[1065,473],[1071,473],[1072,473],[1073,473],[1118,473],[1066,476],[1103,473],[1090,476],[1067,473],[1068,473],[1104,473],[1069,473],[1061,476],[1105,473],[1088,473],[1106,473],[1070,476],[1074,473],[1075,473],[1093,476],[1107,473],[1108,473],[1087,478],[1063,473],[1109,476],[1110,473],[1111,473],[1112,473],[1113,476],[1076,473],[1114,473],[1080,473],[1077,476],[1078,476],[1058,473],[1081,473],[1084,473],[1082,473],[1083,473],[1035,473],[1125,473],[1119,473],[1120,473],[1122,473],[1123,473],[1121,473],[1126,473],[1124,473],[1008,479],[1143,480],[1141,481],[1142,482],[1140,483],[1139,473],[1138,484],[1005,14],[1007,14],[1003,14],[1136,14],[1137,485],[1013,479],[1004,14],[1285,486],[1284,487],[1496,488],[1505,489],[1493,490],[1494,491],[1495,14],[1086,492],[1085,14],[1492,493],[70,14],[265,494],[238,14],[216,495],[214,495],[264,496],[229,497],[228,497],[129,498],[80,499],[236,498],[237,498],[239,500],[240,498],[241,501],[140,502],[242,498],[213,498],[243,498],[244,503],[245,498],[246,497],[247,504],[248,498],[249,498],[250,498],[251,498],[252,497],[253,498],[254,498],[255,498],[256,498],[257,505],[258,498],[259,498],[260,498],[261,498],[262,498],[79,496],[82,501],[83,501],[84,501],[85,501],[86,501],[87,501],[88,501],[89,498],[91,506],[92,501],[90,501],[93,501],[94,501],[95,501],[96,501],[97,501],[98,501],[99,498],[100,501],[101,501],[102,501],[103,501],[104,501],[105,498],[106,501],[107,501],[108,501],[109,501],[110,501],[111,501],[112,498],[114,507],[113,501],[115,501],[116,501],[117,501],[118,501],[119,505],[120,498],[121,498],[135,508],[123,509],[124,501],[125,501],[126,498],[127,501],[128,501],[130,510],[131,501],[132,501],[133,501],[134,501],[136,501],[137,501],[138,501],[139,501],[141,511],[142,501],[143,501],[144,501],[145,498],[146,501],[147,512],[148,512],[149,512],[150,498],[151,501],[152,501],[153,501],[158,501],[154,501],[155,498],[156,501],[157,498],[159,501],[160,501],[161,501],[162,501],[163,501],[164,501],[165,498],[166,501],[167,501],[168,501],[169,501],[170,501],[171,501],[172,501],[173,501],[174,501],[175,501],[176,501],[177,501],[178,501],[179,501],[180,501],[181,501],[182,513],[183,501],[184,501],[185,501],[186,501],[187,501],[188,501],[189,498],[190,498],[191,498],[192,498],[193,498],[194,501],[195,501],[196,501],[197,501],[215,514],[263,498],[200,515],[199,516],[223,517],[222,518],[218,519],[217,518],[219,520],[208,521],[206,522],[221,523],[220,520],[207,14],[209,524],[122,525],[78,526],[77,501],[212,14],[204,527],[205,528],[202,14],[203,529],[201,501],[210,530],[81,531],[230,14],[231,14],[224,14],[227,497],[226,14],[232,14],[233,14],[225,532],[234,14],[235,14],[198,533],[211,534],[672,535],[671,14],[693,14],[611,536],[673,14],[620,14],[610,14],[737,14],[824,14],[774,537],[980,538],[821,539],[979,540],[978,540],[823,14],[674,541],[781,542],[777,543],[975,539],[945,14],[895,544],[896,545],[897,545],[909,545],[902,546],[901,547],[903,545],[904,545],[908,548],[906,549],[936,550],[933,14],[932,551],[934,545],[948,552],[946,14],[942,553],[947,14],[941,554],[910,14],[911,14],[914,14],[912,14],[913,14],[915,14],[916,14],[919,14],[917,14],[918,14],[920,14],[921,14],[616,555],[889,14],[890,14],[891,14],[892,14],[617,556],[893,14],[894,14],[923,557],[648,558],[922,14],[651,14],[652,559],[653,559],[900,560],[898,560],[899,14],[608,558],[647,561],[943,562],[615,14],[907,555],[935,10],[905,563],[924,559],[925,564],[926,565],[927,565],[928,565],[929,565],[930,566],[931,566],[940,567],[939,14],[937,14],[938,568],[944,569],[767,14],[768,570],[771,537],[772,537],[773,537],[742,195],[743,571],[762,537],[679,572],[766,537],[684,14],[761,573],[721,574],[685,575],[744,14],[745,576],[765,537],[759,14],[760,577],[746,195],[747,578],[641,14],[764,537],[769,14],[770,579],[775,14],[776,580],[642,581],[748,537],[763,537],[750,14],[751,14],[752,14],[753,14],[754,14],[755,14],[749,14],[756,14],[977,14],[757,582],[758,583],[614,14],[639,14],[670,14],[644,14],[646,14],[732,14],[640,560],[675,14],[678,14],[738,584],[727,585],[778,586],[667,587],[658,14],[649,588],[650,589],[984,552],[659,14],[662,588],[645,14],[660,545],[666,590],[661,566],[654,591],[657,562],[827,592],[850,592],[831,592],[834,593],[836,592],[885,592],[862,592],[826,592],[854,592],[882,592],[833,592],[863,592],[848,592],[851,592],[839,592],[872,594],[868,592],[861,592],[843,595],[842,595],[859,593],[869,592],[887,596],[888,597],[873,598],[865,592],[846,592],[832,592],[835,592],[867,592],[852,593],[860,592],[857,599],[874,599],[858,593],[844,592],[853,592],[886,592],[876,592],[864,592],[884,592],[866,592],[845,592],[880,592],[870,592],[847,592],[875,592],[883,592],[849,592],[871,595],[855,592],[879,600],[830,600],[841,592],[840,592],[838,601],[825,14],[837,592],[881,599],[877,599],[856,599],[878,599],[686,602],[692,603],[691,604],[682,605],[681,14],[690,606],[689,606],[688,606],[968,607],[687,608],[729,14],[680,14],[697,609],[696,610],[949,602],[951,602],[952,602],[953,602],[954,602],[955,602],[956,611],[961,602],[957,602],[958,602],[967,602],[959,602],[960,602],[962,602],[963,602],[964,602],[965,602],[950,602],[966,612],[655,14],[822,613],[989,614],[969,615],[970,616],[973,617],[971,616],[668,618],[669,619],[972,616],[714,14],[619,620],[814,14],[628,14],[633,621],[815,622],[812,14],[718,14],[819,623],[818,14],[784,14],[813,545],[810,14],[811,624],[820,625],[809,14],[808,566],[629,566],[613,626],[782,627],[816,14],[817,14],[665,567],[618,14],[635,562],[715,628],[638,629],[637,630],[634,631],[783,632],[719,633],[626,634],[785,635],[631,636],[630,637],[627,638],[664,639],[605,14],[632,14],[606,14],[607,14],[609,14],[612,622],[604,14],[656,14],[663,14],[636,640],[741,641],[981,642],[740,618],[982,643],[983,644],[625,645],[829,646],[828,647],[683,648],[792,649],[734,650],[801,651],[735,652],[803,653],[793,654],[805,655],[806,656],[791,14],[799,657],[722,658],[795,659],[794,659],[780,660],[779,660],[804,661],[726,662],[724,663],[725,663],[796,14],[807,664],[797,14],[802,665],[731,666],[800,667],[798,14],[733,668],[723,14],[790,669],[974,670],[976,671],[987,14],[728,672],[695,14],[739,673],[694,14],[730,674],[736,675],[713,14],[621,14],[717,14],[676,14],[786,14],[788,676],[698,14],[623,10],[985,677],[643,678],[789,679],[716,680],[622,681],[720,682],[677,683],[787,684],[699,685],[624,686],[712,687],[700,14],[711,688],[706,689],[707,690],[710,586],[709,691],[705,690],[708,691],[701,586],[702,586],[703,586],[704,692],[986,693],[988,694],[67,14],[68,14],[13,14],[11,14],[12,14],[17,14],[16,14],[2,14],[18,14],[19,14],[20,14],[21,14],[22,14],[23,14],[24,14],[25,14],[3,14],[26,14],[27,14],[4,14],[28,14],[32,14],[29,14],[30,14],[31,14],[33,14],[34,14],[35,14],[5,14],[36,14],[37,14],[38,14],[39,14],[6,14],[43,14],[40,14],[41,14],[42,14],[44,14],[7,14],[45,14],[50,14],[51,14],[46,14],[47,14],[48,14],[49,14],[8,14],[55,14],[52,14],[53,14],[54,14],[56,14],[9,14],[57,14],[58,14],[59,14],[61,14],[60,14],[62,14],[63,14],[10,14],[69,14],[64,14],[1,14],[65,14],[66,14],[15,14],[14,14],[1183,695],[1195,696],[1181,697],[1196,698],[1205,699],[1172,700],[1173,701],[1171,194],[1204,702],[1199,703],[1203,704],[1175,705],[1192,706],[1174,707],[1202,708],[1169,709],[1170,703],[1176,710],[1177,14],[1182,711],[1180,710],[1167,712],[1206,713],[1197,714],[1186,715],[1185,710],[1187,716],[1190,717],[1184,718],[1188,719],[1200,702],[1178,720],[1179,721],[1191,722],[1168,698],[1194,723],[1193,710],[1189,724],[1198,14],[1166,14],[1201,725]],"affectedFilesPendingEmit":[424,1150,423,1147,1148,1151,1146,1149,1002,1144,991,990,992,1145,603,602],"version":"5.9.3"} \ No newline at end of file diff --git a/challenge-1/docker-compose.yml b/challenge-1/docker-compose.yml new file mode 100644 index 00000000..8fa9d2ab --- /dev/null +++ b/challenge-1/docker-compose.yml @@ -0,0 +1,53 @@ +version: '3.8' + +services: + db: + image: postgres:15-alpine + container_name: challenge_db + environment: + POSTGRES_USER: user + POSTGRES_PASSWORD: password + POSTGRES_DB: payments_db + ports: + - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U user -d payments_db"] + interval: 5s + timeout: 5s + retries: 5 + networks: + - payment-network + + zookeeper: + image: confluentinc/cp-zookeeper:7.5.0 + container_name: zookeeper + environment: + ZOOKEEPER_CLIENT_PORT: 2181 + ZOOKEEPER_TICK_TIME: 2000 + networks: + - payment-network + + kafka: + image: confluentinc/cp-kafka:7.5.0 + container_name: kafka + depends_on: + - zookeeper + ports: + - "9092:9092" + - "29092:29092" + environment: + KAFKA_BROKER_ID: 1 + KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092 + KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://localhost:9092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT + KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + networks: + - payment-network + +networks: + payment-network: + driver: bridge diff --git a/challenge-1/eslint.config.mjs b/challenge-1/eslint.config.mjs new file mode 100644 index 00000000..4e9f8271 --- /dev/null +++ b/challenge-1/eslint.config.mjs @@ -0,0 +1,35 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + "prettier/prettier": ["error", { endOfLine: "auto" }], + }, + }, +); diff --git a/challenge-1/libs/shared/src/database.module.ts b/challenge-1/libs/shared/src/database.module.ts new file mode 100644 index 00000000..498563bd --- /dev/null +++ b/challenge-1/libs/shared/src/database.module.ts @@ -0,0 +1,23 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Payment } from './entities/payment.entity'; +import { OutboxEvent } from './entities/outbox-event.entity'; +import { ProcessedEvent } from './entities/processed-event.entity'; + +@Module({ + imports: [ + TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT || '5432', 10), + username: process.env.DB_USER || 'user', + password: process.env.DB_PASSWORD || 'password', + database: process.env.DB_NAME || 'payments_db', + entities: [Payment, OutboxEvent, ProcessedEvent], + synchronize: true, // Auto-create tables for the challenge (Not for production) + }), + TypeOrmModule.forFeature([Payment, OutboxEvent, ProcessedEvent]), + ], + exports: [TypeOrmModule], +}) +export class DatabaseModule {} diff --git a/challenge-1/libs/shared/src/dto/create-payment.dto.ts b/challenge-1/libs/shared/src/dto/create-payment.dto.ts new file mode 100644 index 00000000..40d5fd37 --- /dev/null +++ b/challenge-1/libs/shared/src/dto/create-payment.dto.ts @@ -0,0 +1,15 @@ +import { IsNumber, IsString, IsNotEmpty, IsPositive } from 'class-validator'; + +export class CreatePaymentDto { + @IsNumber() + @IsPositive() + amount: number; + + @IsString() + @IsNotEmpty() + currency: string; + + @IsString() + @IsNotEmpty() + country: string; +} diff --git a/challenge-1/libs/shared/src/entities/outbox-event.entity.ts b/challenge-1/libs/shared/src/entities/outbox-event.entity.ts new file mode 100644 index 00000000..a31df00e --- /dev/null +++ b/challenge-1/libs/shared/src/entities/outbox-event.entity.ts @@ -0,0 +1,39 @@ +import { Entity, Column, PrimaryColumn, CreateDateColumn, Index } from 'typeorm'; + +export enum OutboxStatus { + PENDING = 'PENDING', + SENT = 'SENT', + FAILED = 'FAILED', +} + +@Entity('outbox_events') +@Index('idx_outbox_status', ['status', 'createdAt']) +export class OutboxEvent { + @PrimaryColumn('uuid') + eventId: string; + + @Column('uuid') + aggregateId: string; + + @Column({ length: 100 }) + eventType: string; + + @Column('jsonb') + payload: Record; + + @Column({ + type: 'enum', + enum: OutboxStatus, + default: OutboxStatus.PENDING, + }) + status: OutboxStatus; + + @Column({ default: 0 }) + retryCount: number; + + @CreateDateColumn({ type: 'timestamptz' }) + createdAt: Date; + + @Column({ type: 'timestamptz', nullable: true }) + sentAt: Date; +} diff --git a/challenge-1/libs/shared/src/entities/payment.entity.ts b/challenge-1/libs/shared/src/entities/payment.entity.ts new file mode 100644 index 00000000..216d9c58 --- /dev/null +++ b/challenge-1/libs/shared/src/entities/payment.entity.ts @@ -0,0 +1,35 @@ +import { Entity, Column, PrimaryColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm'; + +export enum PaymentStatus { + PENDING = 'PENDING', + SETTLED = 'SETTLED', + FAILED = 'FAILED', +} + +@Entity('payments') +export class Payment { + @PrimaryColumn('uuid') + id: string; + + @Column('decimal', { precision: 10, scale: 2 }) + amount: number; + + @Column() + currency: string; + + @Column() + country: string; + + @Column({ + type: 'enum', + enum: PaymentStatus, + default: PaymentStatus.PENDING, + }) + status: PaymentStatus; + + @CreateDateColumn() + createdAt: Date; + + @UpdateDateColumn() + updatedAt: Date; +} diff --git a/challenge-1/libs/shared/src/entities/processed-event.entity.ts b/challenge-1/libs/shared/src/entities/processed-event.entity.ts new file mode 100644 index 00000000..c6999ca2 --- /dev/null +++ b/challenge-1/libs/shared/src/entities/processed-event.entity.ts @@ -0,0 +1,13 @@ +import { Entity, PrimaryColumn, CreateDateColumn } from 'typeorm'; + +@Entity('processed_events') +export class ProcessedEvent { + @PrimaryColumn('uuid') + eventId: string; + + @PrimaryColumn({ length: 50 }) + consumer: string; + + @CreateDateColumn({ type: 'timestamptz' }) + processedAt: Date; +} diff --git a/challenge-1/libs/shared/src/index.ts b/challenge-1/libs/shared/src/index.ts new file mode 100644 index 00000000..bdca192c --- /dev/null +++ b/challenge-1/libs/shared/src/index.ts @@ -0,0 +1,7 @@ +export * from './shared.module'; +export * from './shared.service'; +export * from './entities/payment.entity'; +export * from './entities/outbox-event.entity'; +export * from './entities/processed-event.entity'; +export * from './database.module'; +export * from './dto/create-payment.dto'; diff --git a/challenge-1/libs/shared/src/shared.module.ts b/challenge-1/libs/shared/src/shared.module.ts new file mode 100644 index 00000000..6d94c6d0 --- /dev/null +++ b/challenge-1/libs/shared/src/shared.module.ts @@ -0,0 +1,8 @@ +import { Module } from '@nestjs/common'; +import { SharedService } from './shared.service'; + +@Module({ + providers: [SharedService], + exports: [SharedService], +}) +export class SharedModule {} diff --git a/challenge-1/libs/shared/src/shared.service.spec.ts b/challenge-1/libs/shared/src/shared.service.spec.ts new file mode 100644 index 00000000..204dcb9e --- /dev/null +++ b/challenge-1/libs/shared/src/shared.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { SharedService } from './shared.service'; + +describe('SharedService', () => { + let service: SharedService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [SharedService], + }).compile(); + + service = module.get(SharedService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/challenge-1/libs/shared/src/shared.service.ts b/challenge-1/libs/shared/src/shared.service.ts new file mode 100644 index 00000000..71277b84 --- /dev/null +++ b/challenge-1/libs/shared/src/shared.service.ts @@ -0,0 +1,4 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class SharedService {} diff --git a/challenge-1/libs/shared/tsconfig.lib.json b/challenge-1/libs/shared/tsconfig.lib.json new file mode 100644 index 00000000..06a72cef --- /dev/null +++ b/challenge-1/libs/shared/tsconfig.lib.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "../../dist/libs/shared" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] +} diff --git a/challenge-1/nest-cli.json b/challenge-1/nest-cli.json new file mode 100644 index 00000000..502d7794 --- /dev/null +++ b/challenge-1/nest-cli.json @@ -0,0 +1,50 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "apps/api/src", + "compilerOptions": { + "deleteOutDir": true, + "webpack": true, + "tsConfigPath": "apps/api/tsconfig.app.json" + }, + "monorepo": true, + "root": "apps/api", + "projects": { + "api": { + "type": "application", + "root": "apps/api", + "entryFile": "main", + "sourceRoot": "apps/api/src", + "compilerOptions": { + "tsConfigPath": "apps/api/tsconfig.app.json" + } + }, + "consumers": { + "type": "application", + "root": "apps/consumers", + "entryFile": "main", + "sourceRoot": "apps/consumers/src", + "compilerOptions": { + "tsConfigPath": "apps/consumers/tsconfig.app.json" + } + }, + "relay": { + "type": "application", + "root": "apps/relay", + "entryFile": "main", + "sourceRoot": "apps/relay/src", + "compilerOptions": { + "tsConfigPath": "apps/relay/tsconfig.app.json" + } + }, + "shared": { + "type": "library", + "root": "libs/shared", + "entryFile": "index", + "sourceRoot": "libs/shared/src", + "compilerOptions": { + "tsConfigPath": "libs/shared/tsconfig.lib.json" + } + } + } +} \ No newline at end of file diff --git a/challenge-1/package-lock.json b/challenge-1/package-lock.json new file mode 100644 index 00000000..15a9b889 --- /dev/null +++ b/challenge-1/package-lock.json @@ -0,0 +1,10644 @@ +{ + "name": "challenge-1", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "challenge-1", + "version": "0.0.1", + "license": "UNLICENSED", + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/microservices": "^11.1.17", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/schedule": "^6.1.1", + "@nestjs/typeorm": "^11.0.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.15.1", + "kafkajs": "^2.2.4", + "pg": "^8.20.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.28", + "uuid": "^13.0.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/cron": "^2.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "@types/uuid": "^10.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", + "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular-devkit/core/node_modules/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, + "license": "MIT" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", + "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", + "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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==", + "license": "ISC", + "dependencies": { + "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": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "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==", + "license": "MIT", + "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, + "license": "ISC", + "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/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", + "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.3.0", + "jest-config": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-resolve-dependencies": "30.3.0", + "jest-runner": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "jest-watcher": "30.3.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.17", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", + "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@angular-devkit/schematics-cli": "19.2.22", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "13.0.6", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.9.3", + "webpack": "5.105.4", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", + "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", + "license": "MIT", + "dependencies": { + "file-type": "21.3.2", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", + "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/microservices": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.17.tgz", + "integrity": "sha512-rubBPEEXS9PwA3LwdNN/ytjEUmON+d8+4fbiUCIFGW8i+rR/g36vrpwuvoAzcGpxlu45/TpZPfHTb0nJciG9Yw==", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@grpc/grpc-js": "*", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "amqp-connection-manager": "*", + "amqplib": "*", + "cache-manager": "*", + "ioredis": "*", + "kafkajs": "*", + "mqtt": "*", + "nats": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@grpc/grpc-js": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + }, + "amqp-connection-manager": { + "optional": true + }, + "amqplib": { + "optional": true + }, + "cache-manager": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "kafkajs": { + "optional": true + }, + "mqtt": { + "optional": true + }, + "nats": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", + "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", + "license": "MIT", + "dependencies": { + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.1.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nestjs/schedule": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.1.tgz", + "integrity": "sha512-kQl1RRgi02GJ0uaUGCrXHCcwISsCsJDciCKe38ykJZgnAeeoeVWs8luWtBo4AqAAXm4nS5K8RlV0smHUJ4+2FA==", + "license": "MIT", + "dependencies": { + "cron": "4.4.0" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", + "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "@angular-devkit/schematics": "19.2.23", + "comment-json": "4.6.2", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", + "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.4", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", + "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/schematics/node_modules/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, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", + "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nestjs/typeorm": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", + "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.2.1.tgz", + "integrity": "sha512-QdfpQFIwYrTK8lFsII4bJ1AO1ZLbw7B+oxfP+/qSsiTrVerFp7aY2O+d2GNGrTxP58ezEbjbf7mTTLMsd7M7XQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", + "license": "MIT" + }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cron": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/cron/-/cron-2.0.1.tgz", + "integrity": "sha512-WHa/1rtNtD2Q/H0+YTTZoty+/5rcE66iAFX2IY+JuUoOACsevYyFkSYu/2vdw+G5LrmO7Lxowrqm0av4k3qWNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/luxon": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/luxon": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", + "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", + "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/validator": { + "version": "13.15.10", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", + "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@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, + "license": "BSD-3-Clause" + }, + "node_modules/@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, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "devOptional": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/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, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", + "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", + "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/class-transformer": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", + "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", + "license": "MIT" + }, + "node_modules/class-validator": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.15.1.tgz", + "integrity": "sha512-LqoS80HBBSCVhz/3KloUly0ovokxpdOLR++Al3J3+dHXWt9sTKlKd4eYtoxhxyUjoe5+UcIM+5k9MIxyBWnRTw==", + "license": "MIT", + "dependencies": { + "@types/validator": "^13.15.3", + "libphonenumber-js": "^1.11.1", + "validator": "^13.15.22" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", + "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cron": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cron/-/cron-4.4.0.tgz", + "integrity": "sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==", + "license": "MIT", + "dependencies": { + "@types/luxon": "~3.7.0", + "luxon": "~3.7.0" + }, + "engines": { + "node": ">=18.x" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/intcreator" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.330", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", + "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/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, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "21.3.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", + "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/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, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "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, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", + "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/types": "30.3.0", + "import-local": "^3.2.0", + "jest-cli": "30.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", + "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.3.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", + "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", + "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/libphonenumber-js": { + "version": "1.12.41", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.41.tgz", + "integrity": "sha512-lsmMmGXBxXIK/VMLEj0kL6MtUs1kBGj1nTCzi6zgQoG1DEwqwt2DQyHxcLykceIxAnfE3hya7NuIh6PpC6S3fA==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/multer/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pg": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/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, + "license": "ISC" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "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, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sql-highlight": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/superagent": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", + "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.5", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.14.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supertest": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", + "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-signature": "^1.2.2", + "methods": "^1.1.2", + "superagent": "^10.3.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-jest": { + "version": "29.4.9", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", + "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.4", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <7" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typeorm": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", + "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "license": "MIT", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^4.2.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.19", + "debug": "^4.4.3", + "dedent": "^1.7.0", + "dotenv": "^16.6.1", + "glob": "^10.5.0", + "reflect-metadata": "^0.2.2", + "sha.js": "^2.4.12", + "sql-highlight": "^6.1.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", + "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validator": { + "version": "13.15.26", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", + "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT" + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/challenge-1/package.json b/challenge-1/package.json new file mode 100644 index 00000000..9343fb93 --- /dev/null +++ b/challenge-1/package.json @@ -0,0 +1,89 @@ +{ + "name": "challenge-1", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "build": "nest build", + "format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/apps/challenge-1/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./apps/challenge-1/test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/microservices": "^11.1.17", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/schedule": "^6.1.1", + "@nestjs/typeorm": "^11.0.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.15.1", + "kafkajs": "^2.2.4", + "pg": "^8.20.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.28", + "uuid": "^13.0.0" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/cron": "^2.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "@types/uuid": "^10.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": ".", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "./coverage", + "testEnvironment": "node", + "roots": [ + "/apps/", + "/libs/" + ], + "moduleNameMapper": { + "^@app/shared(|/.*)$": "/libs/shared/src/$1" + } + } +} diff --git a/challenge-1/tsconfig.build.json b/challenge-1/tsconfig.build.json new file mode 100644 index 00000000..64f86c6b --- /dev/null +++ b/challenge-1/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] +} diff --git a/challenge-1/tsconfig.json b/challenge-1/tsconfig.json new file mode 100644 index 00000000..556eb2e9 --- /dev/null +++ b/challenge-1/tsconfig.json @@ -0,0 +1,33 @@ +{ + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", + "resolvePackageJsonExports": true, + "esModuleInterop": true, + "isolatedModules": true, + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2023", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "noFallthroughCasesInSwitch": true, + "paths": { + "@app/shared": [ + "libs/shared/src" + ], + "@app/shared/*": [ + "libs/shared/src/*" + ] + } + } +} \ No newline at end of file From 50f560b0990c71200b1e58ba383c6e1b5f8594b4 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Wed, 1 Apr 2026 16:35:17 -0500 Subject: [PATCH 02/18] subiendo cambios a challenge 3 --- .gitignore | 3 +- challenge-1/README.md | 95 + .../apps/consumers/src/consumers.module.ts | 6 +- .../consumers/src/dispatcher.controller.ts | 26 + .../apps/consumers/src/fraud.consumer.ts | 9 +- .../apps/consumers/src/ledger.consumer.ts | 9 +- challenge-1/dist/apps/api/main.js | 612 + challenge-1/dist/apps/consumers/main.js | 108 +- .../apps/consumers/tsconfig.app.tsbuildinfo | 1 - challenge-1/dist/apps/relay/main.js | 568 + challenge-3/.prettierrc | 4 + challenge-3/README.md | 84 + challenge-3/adr/001-kafka-module-dynamic.md | 32 + challenge-3/dist/app.controller.d.ts | 22 + challenge-3/dist/app.controller.js | 82 + challenge-3/dist/app.controller.js.map | 1 + challenge-3/dist/app.module.d.ts | 2 + challenge-3/dist/app.module.js | 29 + challenge-3/dist/app.module.js.map | 1 + challenge-3/dist/app.service.d.ts | 3 + challenge-3/dist/app.service.js | 20 + challenge-3/dist/app.service.js.map | 1 + .../decorators/kafka-event.decorator.d.ts | 2 + .../dist/decorators/kafka-event.decorator.js | 12 + .../decorators/kafka-event.decorator.js.map | 1 + challenge-3/dist/index.d.ts | 4 + challenge-3/dist/index.js | 21 + challenge-3/dist/index.js.map | 1 + challenge-3/dist/kafka-consumer.explorer.d.ts | 18 + challenge-3/dist/kafka-consumer.explorer.js | 121 + .../dist/kafka-consumer.explorer.js.map | 1 + challenge-3/dist/kafka-dlt.handler.d.ts | 10 + challenge-3/dist/kafka-dlt.handler.js | 57 + challenge-3/dist/kafka-dlt.handler.js.map | 1 + challenge-3/dist/kafka-typed-producer.d.ts | 10 + challenge-3/dist/kafka-typed-producer.js | 48 + challenge-3/dist/kafka-typed-producer.js.map | 1 + challenge-3/dist/kafka.module.d.ts | 9 + challenge-3/dist/kafka.module.js | 53 + challenge-3/dist/kafka.module.js.map | 1 + challenge-3/dist/main.d.ts | 1 + challenge-3/dist/main.js | 10 + challenge-3/dist/main.js.map | 1 + challenge-3/dist/tsconfig.build.tsbuildinfo | 1 + .../dist/types/event-contract.type.d.ts | 11 + challenge-3/dist/types/event-contract.type.js | 3 + .../dist/types/event-contract.type.js.map | 1 + challenge-3/eslint.config.mjs | 35 + challenge-3/nest-cli.json | 8 + challenge-3/package-lock.json | 9946 +++++++++++++++++ challenge-3/package.json | 73 + challenge-3/src/app.controller.spec.ts | 22 + challenge-3/src/app.controller.ts | 63 + challenge-3/src/app.module.ts | 16 + challenge-3/src/app.service.ts | 8 + .../src/decorators/kafka-event.decorator.ts | 12 + challenge-3/src/index.ts | 4 + challenge-3/src/kafka-consumer.explorer.ts | 113 + challenge-3/src/kafka-dlt.handler.ts | 44 + challenge-3/src/kafka-typed-producer.ts | 37 + challenge-3/src/kafka.module.ts | 49 + challenge-3/src/main.ts | 8 + challenge-3/src/types/event-contract.type.ts | 13 + challenge-3/test/app.e2e-spec.ts | 29 + challenge-3/test/jest-e2e.json | 9 + challenge-3/tsconfig.build.json | 4 + challenge-3/tsconfig.json | 25 + 67 files changed, 12591 insertions(+), 44 deletions(-) create mode 100644 challenge-1/apps/consumers/src/dispatcher.controller.ts create mode 100644 challenge-1/dist/apps/api/main.js delete mode 100644 challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo create mode 100644 challenge-1/dist/apps/relay/main.js create mode 100644 challenge-3/.prettierrc create mode 100644 challenge-3/README.md create mode 100644 challenge-3/adr/001-kafka-module-dynamic.md create mode 100644 challenge-3/dist/app.controller.d.ts create mode 100644 challenge-3/dist/app.controller.js create mode 100644 challenge-3/dist/app.controller.js.map create mode 100644 challenge-3/dist/app.module.d.ts create mode 100644 challenge-3/dist/app.module.js create mode 100644 challenge-3/dist/app.module.js.map create mode 100644 challenge-3/dist/app.service.d.ts create mode 100644 challenge-3/dist/app.service.js create mode 100644 challenge-3/dist/app.service.js.map create mode 100644 challenge-3/dist/decorators/kafka-event.decorator.d.ts create mode 100644 challenge-3/dist/decorators/kafka-event.decorator.js create mode 100644 challenge-3/dist/decorators/kafka-event.decorator.js.map create mode 100644 challenge-3/dist/index.d.ts create mode 100644 challenge-3/dist/index.js create mode 100644 challenge-3/dist/index.js.map create mode 100644 challenge-3/dist/kafka-consumer.explorer.d.ts create mode 100644 challenge-3/dist/kafka-consumer.explorer.js create mode 100644 challenge-3/dist/kafka-consumer.explorer.js.map create mode 100644 challenge-3/dist/kafka-dlt.handler.d.ts create mode 100644 challenge-3/dist/kafka-dlt.handler.js create mode 100644 challenge-3/dist/kafka-dlt.handler.js.map create mode 100644 challenge-3/dist/kafka-typed-producer.d.ts create mode 100644 challenge-3/dist/kafka-typed-producer.js create mode 100644 challenge-3/dist/kafka-typed-producer.js.map create mode 100644 challenge-3/dist/kafka.module.d.ts create mode 100644 challenge-3/dist/kafka.module.js create mode 100644 challenge-3/dist/kafka.module.js.map create mode 100644 challenge-3/dist/main.d.ts create mode 100644 challenge-3/dist/main.js create mode 100644 challenge-3/dist/main.js.map create mode 100644 challenge-3/dist/tsconfig.build.tsbuildinfo create mode 100644 challenge-3/dist/types/event-contract.type.d.ts create mode 100644 challenge-3/dist/types/event-contract.type.js create mode 100644 challenge-3/dist/types/event-contract.type.js.map create mode 100644 challenge-3/eslint.config.mjs create mode 100644 challenge-3/nest-cli.json create mode 100644 challenge-3/package-lock.json create mode 100644 challenge-3/package.json create mode 100644 challenge-3/src/app.controller.spec.ts create mode 100644 challenge-3/src/app.controller.ts create mode 100644 challenge-3/src/app.module.ts create mode 100644 challenge-3/src/app.service.ts create mode 100644 challenge-3/src/decorators/kafka-event.decorator.ts create mode 100644 challenge-3/src/index.ts create mode 100644 challenge-3/src/kafka-consumer.explorer.ts create mode 100644 challenge-3/src/kafka-dlt.handler.ts create mode 100644 challenge-3/src/kafka-typed-producer.ts create mode 100644 challenge-3/src/kafka.module.ts create mode 100644 challenge-3/src/main.ts create mode 100644 challenge-3/src/types/event-contract.type.ts create mode 100644 challenge-3/test/app.e2e-spec.ts create mode 100644 challenge-3/test/jest-e2e.json create mode 100644 challenge-3/tsconfig.build.json create mode 100644 challenge-3/tsconfig.json diff --git a/.gitignore b/.gitignore index 61158282..8af8f5c3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .agents -challenge-1/node_modules \ No newline at end of file +challenge-1/node_modules +challenge-3/node_modules \ No newline at end of file diff --git a/challenge-1/README.md b/challenge-1/README.md index b32f0acf..edab43af 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -59,3 +59,98 @@ npm install - Por motivos prácticos, todo el Monorepo asume una conexión genérica a la BD. En producción, el Relay y los Consumers utilizarían credenciales restrictivas. - Para Namespace País (opcional check): No se implementó un enrutamiento en sub-Kafka. De implementarlo, sería mediante `topic: pe.payments.payment...` inyectando dependencias configurables bajo módulo por entorno. - Dead Letter Queue (`DLT`) y Retry Policies: El relay reintenta sin fin. Si los consumidores fallan (Simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al subtopic `.dlt`, a su vez enviando `payment.failed.v1` donde la Saga finalmente declara status `FAILED` en la tabla para reflejarse vía API `GET /payments/:id`. + +--- + +## Cómo probar y validar cada escenario paso a paso + +### 1. Crear un Pago (Trigger del Pipeline) +Una vez que hayas levantado los 3 microservicios (`api`, `relay`, `consumers`), interactúa con el API REST para iniciar el flujo. Reemplaza este comando en una terminal: +```bash +curl -X POST http://localhost:3000/payments -H "Content-Type: application/json" -d "{\"amount\": 1500, \"currency\": \"USD\", \"country\": \"PE\"}" +``` +**Resultado esperado:** +```json +{ + "id": "651ba78b-cee5-4f2a-91dd-6d4db19a7848", + "amount": 1500, + "currency": "USD", + "country": "PE", + "status": "PENDING", + "createdAt": "2026-04-01T20:41:24.450Z", + "updatedAt": "2026-04-01T20:41:24.450Z" +} +``` +Esto creará el registro con estado `PENDING` e insertará en la tabla transaccional `outbox_events`. Copia el **ID** de respuesta para los siguientes pasos. + +### 2. Verificar el proceso Relay -> Kafka -> Consumers +Observa los logs en la terminal de cada microservicio: +1. **Relay (`npm run start relay`)**: Mostrará `[RelayService] Relayed event successfully` al extraer de base de datos y publicar a Kafka. +2. **Consumers (`npm run start consumers`)**: El `DispatcherController` atrape el mensaje y coordina a los evaluadores: +**Resultado esperado (Terminal Consumers):** +```text +[DispatcherController] Payment created event received by Dispatcher +[FraudConsumer] Processing fraud scoring for payment 651ba78b... +[LedgerConsumer] Processing ledger entry for payment 651ba78b... +[FraudConsumer] Fraud scoring passed for payment 651ba78b... +[LedgerConsumer] Ledger entry written for payment 651ba78b... +[SagaConsumer] Both consumers processed for 651ba78b... Settling payment. +``` + +### 3. GET Endpoint (Validación de API Consistencia Eventual) +Verifica que el estado convergente pasó de `PENDING` a `SETTLED` haciendo fetch del endpoint con tu ID: +```bash +curl -X GET http://localhost:3000/payments/{TU-PAYMENT-ID} +``` +**Resultado esperado:** +```json +{ + "data": { + "paymentId": "651ba78b-cee5-4f2a-91dd-6d4db19a7848", + "status": "SETTLED", + "amount": "1500.00", + "currency": "USD" + }, + "meta": { + "consistencyModel": "eventual", + "note": "Status may be pending while downstream consumers are processing." + } +} +``` + +### 4. Direct Database Validation (Verificación Integridad) +Puedes verificar directamente en tu GUI de BD si los *Idempotent Consumers* garantizaron la transacción "Exactly-once" a nivel conceptual: +```sql +SELECT * FROM payment; +``` +**Resultado esperado:** Tu pago deberá tener status `SETTLED`. + +```sql +SELECT * FROM processed_events WHERE "aggregateId" = '{TU-PAYMENT-ID}'; +``` +**Resultado esperado:** Deberás tener 2 filas registradas (una para `FraudConsumer` y otra para `LedgerConsumer`), indicando que sus operaciones fueron exitosas y previene duplicidad de procesamiento en reintentos. + +### 5. Escenario Negativo / Fallido +Para probar la rama condicional de la DLT (Dead Letter Queue), envía un pago declarando un *Amount inmenso* (regla de oro del código base para gatillar fraude intencional): +```bash +curl -X POST http://localhost:3000/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" +``` +**Resultado esperado (Logs):** +En consola el consumer fallará y observarás `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt`. + +Si procedes a pedir el estatus del pago vía HTTP o SQL: +```bash +curl -X GET http://localhost:3000/payments/{RIESGO-PAYMENT-ID} +``` +**Resultado esperado:** +```json +{ + "data": { + "paymentId": "772aa89c-a1b2-4c3d-...", + "status": "FAILED", + "amount": "1500000.00", + "currency": "USD" + }, + ... +} +``` diff --git a/challenge-1/apps/consumers/src/consumers.module.ts b/challenge-1/apps/consumers/src/consumers.module.ts index 67e55baf..29a06568 100644 --- a/challenge-1/apps/consumers/src/consumers.module.ts +++ b/challenge-1/apps/consumers/src/consumers.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; import { ClientsModule, Transport } from '@nestjs/microservices'; import { DatabaseModule } from '@app/shared'; +import { DispatcherController } from './dispatcher.controller'; import { FraudConsumer } from './fraud.consumer'; import { LedgerConsumer } from './ledger.consumer'; import { SagaConsumer } from './saga.consumer'; @@ -25,10 +26,13 @@ import { ProcessedEventsRepository } from './processed-events.repository'; }, ]), ], + controllers: [ + DispatcherController, + SagaConsumer, + ], providers: [ FraudConsumer, LedgerConsumer, - SagaConsumer, ProcessedEventsRepository ], }) diff --git a/challenge-1/apps/consumers/src/dispatcher.controller.ts b/challenge-1/apps/consumers/src/dispatcher.controller.ts new file mode 100644 index 00000000..dada4f13 --- /dev/null +++ b/challenge-1/apps/consumers/src/dispatcher.controller.ts @@ -0,0 +1,26 @@ +import { Controller, Logger } from '@nestjs/common'; +import { EventPattern, Payload, Ctx, KafkaContext } from '@nestjs/microservices'; +import { FraudConsumer } from './fraud.consumer'; +import { LedgerConsumer } from './ledger.consumer'; + +@Controller() +export class DispatcherController { + private readonly logger = new Logger(DispatcherController.name); + + constructor( + private readonly fraud: FraudConsumer, + private readonly ledger: LedgerConsumer, + ) {} + + @EventPattern('payment.created.v1') + async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext) { + this.logger.log('Payment created event received by Dispatcher'); + // Run both checks concurrently + Promise.allSettled([ + this.fraud.handlePaymentCreated(message, context), + this.ledger.handlePaymentCreated(message, context), + ]).then(() => { + this.logger.log('Fraud and Ledger evaluations initiated'); + }); + } +} diff --git a/challenge-1/apps/consumers/src/fraud.consumer.ts b/challenge-1/apps/consumers/src/fraud.consumer.ts index ff4dc894..e0d9d4b4 100644 --- a/challenge-1/apps/consumers/src/fraud.consumer.ts +++ b/challenge-1/apps/consumers/src/fraud.consumer.ts @@ -1,8 +1,8 @@ -import { Controller, Logger, Inject } from '@nestjs/common'; -import { EventPattern, Payload, ClientKafka, KafkaContext, Ctx } from '@nestjs/microservices'; +import { Injectable, Logger, Inject } from '@nestjs/common'; +import { ClientKafka, KafkaContext } from '@nestjs/microservices'; import { ProcessedEventsRepository } from './processed-events.repository'; -@Controller() +@Injectable() export class FraudConsumer { private readonly logger = new Logger(FraudConsumer.name); private readonly consumerName = 'FraudConsumer'; @@ -13,8 +13,7 @@ export class FraudConsumer { @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, ) {} - @EventPattern('payment.created.v1') - async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext): Promise { + async handlePaymentCreated(message: any, context: KafkaContext): Promise { const value = message; // Depending on NestJS config, it might automatically parse the value const eventId = value.eventId || context.getMessage().key?.toString(); const aggregateId = value.aggregateId || value.id; diff --git a/challenge-1/apps/consumers/src/ledger.consumer.ts b/challenge-1/apps/consumers/src/ledger.consumer.ts index c481ed5f..d7dee581 100644 --- a/challenge-1/apps/consumers/src/ledger.consumer.ts +++ b/challenge-1/apps/consumers/src/ledger.consumer.ts @@ -1,8 +1,8 @@ -import { Controller, Logger, Inject } from '@nestjs/common'; -import { EventPattern, Payload, ClientKafka, KafkaContext, Ctx } from '@nestjs/microservices'; +import { Injectable, Logger, Inject } from '@nestjs/common'; +import { ClientKafka, KafkaContext } from '@nestjs/microservices'; import { ProcessedEventsRepository } from './processed-events.repository'; -@Controller() +@Injectable() export class LedgerConsumer { private readonly logger = new Logger(LedgerConsumer.name); private readonly consumerName = 'LedgerConsumer'; @@ -12,8 +12,7 @@ export class LedgerConsumer { @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, ) {} - @EventPattern('payment.created.v1') - async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext): Promise { + async handlePaymentCreated(message: any, context: KafkaContext): Promise { const value = message; const eventId = value.eventId || context.getMessage().key?.toString(); const aggregateId = value.aggregateId || value.id; diff --git a/challenge-1/dist/apps/api/main.js b/challenge-1/dist/apps/api/main.js new file mode 100644 index 00000000..da24d037 --- /dev/null +++ b/challenge-1/dist/apps/api/main.js @@ -0,0 +1,612 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((module) => { + +module.exports = require("@nestjs/core"); + +/***/ }), +/* 2 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppModule = void 0; +const common_1 = __webpack_require__(3); +const app_controller_1 = __webpack_require__(4); +const app_service_1 = __webpack_require__(5); +const shared_1 = __webpack_require__(7); +let AppModule = class AppModule { +}; +exports.AppModule = AppModule; +exports.AppModule = AppModule = __decorate([ + (0, common_1.Module)({ + imports: [shared_1.DatabaseModule], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); + + +/***/ }), +/* 3 */ +/***/ ((module) => { + +module.exports = require("@nestjs/common"); + +/***/ }), +/* 4 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppController = void 0; +const common_1 = __webpack_require__(3); +const app_service_1 = __webpack_require__(5); +const shared_1 = __webpack_require__(7); +let AppController = class AppController { + appService; + constructor(appService) { + this.appService = appService; + } + async createPayment(createPaymentDto) { + const payment = await this.appService.createPayment(createPaymentDto); + return payment; + } + async getPayment(id) { + const payment = await this.appService.getPayment(id); + return { + data: { + paymentId: payment.id, + status: payment.status, + amount: payment.amount, + currency: payment.currency, + }, + meta: { + consistencyModel: 'eventual', + note: 'Status may be pending while downstream consumers are processing.', + }, + }; + } +}; +exports.AppController = AppController; +__decorate([ + (0, common_1.Post)(), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [typeof (_b = typeof shared_1.CreatePaymentDto !== "undefined" && shared_1.CreatePaymentDto) === "function" ? _b : Object]), + __metadata("design:returntype", Promise) +], AppController.prototype, "createPayment", null); +__decorate([ + (0, common_1.Get)(':id'), + __param(0, (0, common_1.Param)('id')), + __metadata("design:type", Function), + __metadata("design:paramtypes", [String]), + __metadata("design:returntype", Promise) +], AppController.prototype, "getPayment", null); +exports.AppController = AppController = __decorate([ + (0, common_1.Controller)('payments'), + __metadata("design:paramtypes", [typeof (_a = typeof app_service_1.AppService !== "undefined" && app_service_1.AppService) === "function" ? _a : Object]) +], AppController); + + +/***/ }), +/* 5 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.AppService = void 0; +const common_1 = __webpack_require__(3); +const typeorm_1 = __webpack_require__(6); +const shared_1 = __webpack_require__(7); +const uuid_1 = __webpack_require__(17); +let AppService = class AppService { + dataSource; + constructor(dataSource) { + this.dataSource = dataSource; + } + async createPayment(dto) { + const paymentId = (0, uuid_1.v4)(); + const eventId = (0, uuid_1.v4)(); + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + let payment; + try { + payment = queryRunner.manager.create(shared_1.Payment, { + id: paymentId, + amount: dto.amount, + currency: dto.currency, + country: dto.country, + status: shared_1.PaymentStatus.PENDING, + }); + await queryRunner.manager.save(payment); + const outboxEvent = queryRunner.manager.create(shared_1.OutboxEvent, { + eventId, + aggregateId: paymentId, + eventType: 'payment.created.v1', + payload: { + id: paymentId, + amount: dto.amount, + currency: dto.currency, + country: dto.country, + }, + status: shared_1.OutboxStatus.PENDING, + }); + await queryRunner.manager.save(outboxEvent); + await queryRunner.commitTransaction(); + } + catch (err) { + await queryRunner.rollbackTransaction(); + throw err; + } + finally { + await queryRunner.release(); + } + return payment; + } + async getPayment(id) { + const payment = await this.dataSource.manager.findOne(shared_1.Payment, { where: { id } }); + if (!payment) + throw new common_1.NotFoundException('Payment not found'); + return payment; + } +}; +exports.AppService = AppService; +exports.AppService = AppService = __decorate([ + (0, common_1.Injectable)(), + __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object]) +], AppService); + + +/***/ }), +/* 6 */ +/***/ ((module) => { + +module.exports = require("typeorm"); + +/***/ }), +/* 7 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__webpack_require__(8), exports); +__exportStar(__webpack_require__(9), exports); +__exportStar(__webpack_require__(10), exports); +__exportStar(__webpack_require__(11), exports); +__exportStar(__webpack_require__(12), exports); +__exportStar(__webpack_require__(13), exports); +__exportStar(__webpack_require__(15), exports); + + +/***/ }), +/* 8 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedModule = void 0; +const common_1 = __webpack_require__(3); +const shared_service_1 = __webpack_require__(9); +let SharedModule = class SharedModule { +}; +exports.SharedModule = SharedModule; +exports.SharedModule = SharedModule = __decorate([ + (0, common_1.Module)({ + providers: [shared_service_1.SharedService], + exports: [shared_service_1.SharedService], + }) +], SharedModule); + + +/***/ }), +/* 9 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedService = void 0; +const common_1 = __webpack_require__(3); +let SharedService = class SharedService { +}; +exports.SharedService = SharedService; +exports.SharedService = SharedService = __decorate([ + (0, common_1.Injectable)() +], SharedService); + + +/***/ }), +/* 10 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Payment = exports.PaymentStatus = void 0; +const typeorm_1 = __webpack_require__(6); +var PaymentStatus; +(function (PaymentStatus) { + PaymentStatus["PENDING"] = "PENDING"; + PaymentStatus["SETTLED"] = "SETTLED"; + PaymentStatus["FAILED"] = "FAILED"; +})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); +let Payment = class Payment { + id; + amount; + currency; + country; + status; + createdAt; + updatedAt; +}; +exports.Payment = Payment; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], Payment.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), + __metadata("design:type", Number) +], Payment.prototype, "amount", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "currency", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "country", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: PaymentStatus, + default: PaymentStatus.PENDING, + }), + __metadata("design:type", String) +], Payment.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Payment.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.UpdateDateColumn)(), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], Payment.prototype, "updatedAt", void 0); +exports.Payment = Payment = __decorate([ + (0, typeorm_1.Entity)('payments') +], Payment); + + +/***/ }), +/* 11 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OutboxEvent = exports.OutboxStatus = void 0; +const typeorm_1 = __webpack_require__(6); +var OutboxStatus; +(function (OutboxStatus) { + OutboxStatus["PENDING"] = "PENDING"; + OutboxStatus["SENT"] = "SENT"; + OutboxStatus["FAILED"] = "FAILED"; +})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); +let OutboxEvent = class OutboxEvent { + eventId; + aggregateId; + eventType; + payload; + status; + retryCount; + createdAt; + sentAt; +}; +exports.OutboxEvent = OutboxEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.Column)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "aggregateId", void 0); +__decorate([ + (0, typeorm_1.Column)({ length: 100 }), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventType", void 0); +__decorate([ + (0, typeorm_1.Column)('jsonb'), + __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) +], OutboxEvent.prototype, "payload", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: OutboxStatus, + default: OutboxStatus.PENDING, + }), + __metadata("design:type", String) +], OutboxEvent.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 0 }), + __metadata("design:type", Number) +], OutboxEvent.prototype, "retryCount", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], OutboxEvent.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), + __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) +], OutboxEvent.prototype, "sentAt", void 0); +exports.OutboxEvent = OutboxEvent = __decorate([ + (0, typeorm_1.Entity)('outbox_events'), + (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) +], OutboxEvent); + + +/***/ }), +/* 12 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ProcessedEvent = void 0; +const typeorm_1 = __webpack_require__(6); +let ProcessedEvent = class ProcessedEvent { + eventId; + consumer; + processedAt; +}; +exports.ProcessedEvent = ProcessedEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], ProcessedEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.PrimaryColumn)({ length: 50 }), + __metadata("design:type", String) +], ProcessedEvent.prototype, "consumer", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], ProcessedEvent.prototype, "processedAt", void 0); +exports.ProcessedEvent = ProcessedEvent = __decorate([ + (0, typeorm_1.Entity)('processed_events') +], ProcessedEvent); + + +/***/ }), +/* 13 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DatabaseModule = void 0; +const common_1 = __webpack_require__(3); +const typeorm_1 = __webpack_require__(14); +const payment_entity_1 = __webpack_require__(10); +const outbox_event_entity_1 = __webpack_require__(11); +const processed_event_entity_1 = __webpack_require__(12); +let DatabaseModule = class DatabaseModule { +}; +exports.DatabaseModule = DatabaseModule; +exports.DatabaseModule = DatabaseModule = __decorate([ + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT || '5432', 10), + username: process.env.DB_USER || 'user', + password: process.env.DB_PASSWORD || 'password', + database: process.env.DB_NAME || 'payments_db', + entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], + synchronize: true, + }), + typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), + ], + exports: [typeorm_1.TypeOrmModule], + }) +], DatabaseModule); + + +/***/ }), +/* 14 */ +/***/ ((module) => { + +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 15 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CreatePaymentDto = void 0; +const class_validator_1 = __webpack_require__(16); +class CreatePaymentDto { + amount; + currency; + country; +} +exports.CreatePaymentDto = CreatePaymentDto; +__decorate([ + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata("design:type", Number) +], CreatePaymentDto.prototype, "amount", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "currency", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "country", void 0); + + +/***/ }), +/* 16 */ +/***/ ((module) => { + +module.exports = require("class-validator"); + +/***/ }), +/* 17 */ +/***/ ((module) => { + +module.exports = require("uuid"); + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const core_1 = __webpack_require__(1); +const app_module_1 = __webpack_require__(2); +const common_1 = __webpack_require__(3); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + app.useGlobalPipes(new common_1.ValidationPipe({ whitelist: true, transform: true })); + await app.listen(process.env.PORT ?? 3000); +} +bootstrap(); + +})(); + +/******/ })() +; \ No newline at end of file diff --git a/challenge-1/dist/apps/consumers/main.js b/challenge-1/dist/apps/consumers/main.js index 1aac4b22..3b6cfe0a 100644 --- a/challenge-1/dist/apps/consumers/main.js +++ b/challenge-1/dist/apps/consumers/main.js @@ -23,10 +23,11 @@ exports.ConsumersModule = void 0; const common_1 = __webpack_require__(3); const microservices_1 = __webpack_require__(4); const shared_1 = __webpack_require__(5); -const fraud_consumer_1 = __webpack_require__(16); -const ledger_consumer_1 = __webpack_require__(18); -const saga_consumer_1 = __webpack_require__(19); -const processed_events_repository_1 = __webpack_require__(17); +const dispatcher_controller_1 = __webpack_require__(16); +const fraud_consumer_1 = __webpack_require__(17); +const ledger_consumer_1 = __webpack_require__(19); +const saga_consumer_1 = __webpack_require__(20); +const processed_events_repository_1 = __webpack_require__(18); let ConsumersModule = class ConsumersModule { }; exports.ConsumersModule = ConsumersModule; @@ -50,10 +51,13 @@ exports.ConsumersModule = ConsumersModule = __decorate([ }, ]), ], + controllers: [ + dispatcher_controller_1.DispatcherController, + saga_consumer_1.SagaConsumer, + ], providers: [ fraud_consumer_1.FraudConsumer, ledger_consumer_1.LedgerConsumer, - saga_consumer_1.SagaConsumer, processed_events_repository_1.ProcessedEventsRepository ], }) @@ -442,6 +446,64 @@ module.exports = require("class-validator"); /***/ (function(__unused_webpack_module, exports, __webpack_require__) { +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var DispatcherController_1; +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DispatcherController = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(4); +const fraud_consumer_1 = __webpack_require__(17); +const ledger_consumer_1 = __webpack_require__(19); +let DispatcherController = DispatcherController_1 = class DispatcherController { + fraud; + ledger; + logger = new common_1.Logger(DispatcherController_1.name); + constructor(fraud, ledger) { + this.fraud = fraud; + this.ledger = ledger; + } + async handlePaymentCreated(message, context) { + this.logger.log('Payment created event received by Dispatcher'); + Promise.allSettled([ + this.fraud.handlePaymentCreated(message, context), + this.ledger.handlePaymentCreated(message, context), + ]).then(() => { + this.logger.log('Fraud and Ledger evaluations initiated'); + }); + } +}; +exports.DispatcherController = DispatcherController; +__decorate([ + (0, microservices_1.EventPattern)('payment.created.v1'), + __param(0, (0, microservices_1.Payload)()), + __param(1, (0, microservices_1.Ctx)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), + __metadata("design:returntype", Promise) +], DispatcherController.prototype, "handlePaymentCreated", null); +exports.DispatcherController = DispatcherController = DispatcherController_1 = __decorate([ + (0, common_1.Controller)(), + __metadata("design:paramtypes", [typeof (_a = typeof fraud_consumer_1.FraudConsumer !== "undefined" && fraud_consumer_1.FraudConsumer) === "function" ? _a : Object, typeof (_b = typeof ledger_consumer_1.LedgerConsumer !== "undefined" && ledger_consumer_1.LedgerConsumer) === "function" ? _b : Object]) +], DispatcherController); + + +/***/ }), +/* 17 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); @@ -455,12 +517,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var FraudConsumer_1; -var _a, _b, _c, _d; +var _a, _b; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.FraudConsumer = void 0; const common_1 = __webpack_require__(3); const microservices_1 = __webpack_require__(4); -const processed_events_repository_1 = __webpack_require__(17); +const processed_events_repository_1 = __webpack_require__(18); let FraudConsumer = FraudConsumer_1 = class FraudConsumer { processedRepo; kafkaClient; @@ -521,23 +583,15 @@ let FraudConsumer = FraudConsumer_1 = class FraudConsumer { } }; exports.FraudConsumer = FraudConsumer; -__decorate([ - (0, microservices_1.EventPattern)('payment.created.v1'), - __param(0, (0, microservices_1.Payload)()), - __param(1, (0, microservices_1.Ctx)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), - __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) -], FraudConsumer.prototype, "handlePaymentCreated", null); exports.FraudConsumer = FraudConsumer = FraudConsumer_1 = __decorate([ - (0, common_1.Controller)(), + (0, common_1.Injectable)(), __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) ], FraudConsumer); /***/ }), -/* 17 */ +/* 18 */ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { @@ -583,7 +637,7 @@ exports.ProcessedEventsRepository = ProcessedEventsRepository = __decorate([ /***/ }), -/* 18 */ +/* 19 */ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { @@ -600,12 +654,12 @@ var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var LedgerConsumer_1; -var _a, _b, _c, _d; +var _a, _b; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LedgerConsumer = void 0; const common_1 = __webpack_require__(3); const microservices_1 = __webpack_require__(4); -const processed_events_repository_1 = __webpack_require__(17); +const processed_events_repository_1 = __webpack_require__(18); let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { processedRepo; kafkaClient; @@ -662,23 +716,15 @@ let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { } }; exports.LedgerConsumer = LedgerConsumer; -__decorate([ - (0, microservices_1.EventPattern)('payment.created.v1'), - __param(0, (0, microservices_1.Payload)()), - __param(1, (0, microservices_1.Ctx)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), - __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) -], LedgerConsumer.prototype, "handlePaymentCreated", null); exports.LedgerConsumer = LedgerConsumer = LedgerConsumer_1 = __decorate([ - (0, common_1.Controller)(), + (0, common_1.Injectable)(), __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) ], LedgerConsumer); /***/ }), -/* 19 */ +/* 20 */ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { @@ -701,7 +747,7 @@ exports.SagaConsumer = void 0; const common_1 = __webpack_require__(3); const microservices_1 = __webpack_require__(4); const typeorm_1 = __webpack_require__(9); -const processed_events_repository_1 = __webpack_require__(17); +const processed_events_repository_1 = __webpack_require__(18); const shared_1 = __webpack_require__(5); let SagaConsumer = SagaConsumer_1 = class SagaConsumer { dataSource; diff --git a/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo b/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo deleted file mode 100644 index 9a63f4ea..00000000 --- a/challenge-1/dist/apps/consumers/tsconfig.app.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2023.full.d.ts","../../../node_modules/reflect-metadata/index.d.ts","../../../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../../../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../../../node_modules/rxjs/dist/types/internal/subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/operator.d.ts","../../../node_modules/rxjs/dist/types/internal/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../../../node_modules/rxjs/dist/types/internal/notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../../../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../../../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../../../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../../../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../../../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../../../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../../../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../../../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../../../node_modules/@nestjs/common/enums/index.d.ts","../../../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../../../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../../../node_modules/@nestjs/common/services/logger.service.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/http/index.d.ts","../../../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../../../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/index.d.ts","../../../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../../../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/core/index.d.ts","../../../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/modules/index.d.ts","../../../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../../../node_modules/@nestjs/common/constants.d.ts","../../../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../../../node_modules/@nestjs/common/decorators/http/index.d.ts","../../../node_modules/@nestjs/common/decorators/index.d.ts","../../../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../../../node_modules/@nestjs/common/exceptions/index.d.ts","../../../node_modules/@nestjs/common/services/console-logger.service.d.ts","../../../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../../../node_modules/@nestjs/common/services/index.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../../../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../../../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../../../node_modules/@nestjs/common/file-stream/index.d.ts","../../../node_modules/@nestjs/common/module-utils/constants.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../../../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../../../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../../../node_modules/@nestjs/common/module-utils/index.d.ts","../../../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../../../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../../../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../../../node_modules/@nestjs/common/pipes/file/index.d.ts","../../../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../../../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../../../node_modules/@nestjs/common/pipes/index.d.ts","../../../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../../../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../../../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../../../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../../../node_modules/@nestjs/common/serializer/index.d.ts","../../../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../../../node_modules/@nestjs/common/utils/index.d.ts","../../../node_modules/@nestjs/common/index.d.ts","../../../apps/consumers/src/consumers.service.ts","../../../apps/consumers/src/consumers.controller.ts","../../../node_modules/@nestjs/microservices/interfaces/client-grpc.interface.d.ts","../../../node_modules/@nestjs/microservices/events/kafka.events.d.ts","../../../node_modules/@nestjs/microservices/events/mqtt.events.d.ts","../../../node_modules/@nestjs/microservices/events/nats.events.d.ts","../../../node_modules/@nestjs/microservices/events/redis.events.d.ts","../../../node_modules/@nestjs/microservices/events/rmq.events.d.ts","../../../node_modules/@nestjs/microservices/events/tcp.events.d.ts","../../../node_modules/@nestjs/microservices/events/index.d.ts","../../../node_modules/@nestjs/microservices/external/kafka.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/client-kafka-proxy.interface.d.ts","../../../node_modules/@nestjs/microservices/enums/transport.enum.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/@nestjs/microservices/helpers/tcp-socket.d.ts","../../../node_modules/@nestjs/microservices/helpers/json-socket.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-logger.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-parser.d.ts","../../../node_modules/@nestjs/microservices/interfaces/packet.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/deserializer.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/serializer.interface.d.ts","../../../node_modules/@nestjs/microservices/client/client-proxy.d.ts","../../../node_modules/@nestjs/microservices/client/client-kafka.d.ts","../../../node_modules/@nestjs/microservices/helpers/kafka-reply-partition-assigner.d.ts","../../../node_modules/@nestjs/microservices/helpers/grpc-helpers.d.ts","../../../node_modules/@nestjs/microservices/helpers/index.d.ts","../../../node_modules/@nestjs/microservices/external/grpc-options.interface.d.ts","../../../node_modules/@nestjs/microservices/external/mqtt-options.interface.d.ts","../../../node_modules/@nestjs/microservices/external/redis.interface.d.ts","../../../node_modules/@nestjs/microservices/external/rmq-url.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/custom-transport-strategy.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/microservice-configuration.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/client-metadata.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/message-handler.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/pattern-metadata.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/pattern.interface.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/base-rpc.context.d.ts","../../../node_modules/@nestjs/microservices/interfaces/request-context.interface.d.ts","../../../node_modules/@nestjs/microservices/interfaces/index.d.ts","../../../node_modules/@nestjs/microservices/client/client-grpc.d.ts","../../../node_modules/@nestjs/microservices/record-builders/mqtt.record-builder.d.ts","../../../node_modules/@nestjs/microservices/client/client-mqtt.d.ts","../../../node_modules/@nestjs/microservices/client/client-nats.d.ts","../../../node_modules/@nestjs/microservices/client/client-proxy-factory.d.ts","../../../node_modules/@nestjs/microservices/client/client-redis.d.ts","../../../node_modules/@nestjs/microservices/client/client-rmq.d.ts","../../../node_modules/@nestjs/microservices/client/client-tcp.d.ts","../../../node_modules/@nestjs/microservices/client/index.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/kafka.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/mqtt.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/nats.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/redis.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/rmq.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/tcp.context.d.ts","../../../node_modules/@nestjs/microservices/ctx-host/index.d.ts","../../../node_modules/@nestjs/microservices/decorators/client.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/ctx.decorator.d.ts","../../../node_modules/@nestjs/microservices/enums/kafka-headers.enum.d.ts","../../../node_modules/@nestjs/microservices/enums/index.d.ts","../../../node_modules/@nestjs/microservices/decorators/event-pattern.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/grpc-service.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/message-pattern.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/payload.decorator.d.ts","../../../node_modules/@nestjs/microservices/decorators/index.d.ts","../../../node_modules/@nestjs/microservices/exceptions/base-rpc-exception-filter.d.ts","../../../node_modules/@nestjs/microservices/exceptions/rpc-exception.d.ts","../../../node_modules/@nestjs/microservices/exceptions/kafka-retriable-exception.d.ts","../../../node_modules/@nestjs/microservices/exceptions/index.d.ts","../../../node_modules/@nestjs/microservices/module/interfaces/clients-module.interface.d.ts","../../../node_modules/@nestjs/microservices/module/interfaces/index.d.ts","../../../node_modules/@nestjs/microservices/module/clients.module.d.ts","../../../node_modules/@nestjs/microservices/module/index.d.ts","../../../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../../../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../../../node_modules/@nestjs/core/injector/injector.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../../../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../../../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../../../node_modules/@nestjs/core/injector/compiler.d.ts","../../../node_modules/@nestjs/core/injector/modules-container.d.ts","../../../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../../../node_modules/@nestjs/core/adapters/index.d.ts","../../../node_modules/@nestjs/core/constants.d.ts","../../../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../../../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../../../node_modules/@nestjs/core/discovery/index.d.ts","../../../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../../../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../../../node_modules/@nestjs/core/exceptions/index.d.ts","../../../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../../../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../../../node_modules/@nestjs/core/router/router-proxy.d.ts","../../../node_modules/@nestjs/core/helpers/context-creator.d.ts","../../../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../../../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../../../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../../../node_modules/@nestjs/core/guards/constants.d.ts","../../../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../../../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../../../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../../../node_modules/@nestjs/core/guards/index.d.ts","../../../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../../../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../../../node_modules/@nestjs/core/interceptors/index.d.ts","../../../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../../../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../../../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../../../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../../../node_modules/@nestjs/core/pipes/index.d.ts","../../../node_modules/@nestjs/core/helpers/context-utils.d.ts","../../../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../../../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../../../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../../../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../../../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../../../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../../../node_modules/@nestjs/core/metadata-scanner.d.ts","../../../node_modules/@nestjs/core/scanner.d.ts","../../../node_modules/@nestjs/core/injector/instance-loader.d.ts","../../../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../../../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../../../node_modules/@nestjs/core/injector/module-ref.d.ts","../../../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../../../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../../../node_modules/@nestjs/core/injector/index.d.ts","../../../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../../../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../../../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../../../node_modules/@nestjs/core/helpers/index.d.ts","../../../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../../../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../../../node_modules/@nestjs/core/inspector/index.d.ts","../../../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../../../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../../../node_modules/@nestjs/core/middleware/builder.d.ts","../../../node_modules/@nestjs/core/middleware/index.d.ts","../../../node_modules/@nestjs/core/nest-application-context.d.ts","../../../node_modules/@nestjs/core/nest-application.d.ts","../../../node_modules/@nestjs/core/nest-factory.d.ts","../../../node_modules/@nestjs/core/repl/repl.d.ts","../../../node_modules/@nestjs/core/repl/index.d.ts","../../../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../../../node_modules/@nestjs/core/router/interfaces/index.d.ts","../../../node_modules/@nestjs/core/router/request/request-constants.d.ts","../../../node_modules/@nestjs/core/router/request/index.d.ts","../../../node_modules/@nestjs/core/router/router-module.d.ts","../../../node_modules/@nestjs/core/router/index.d.ts","../../../node_modules/@nestjs/core/services/reflector.service.d.ts","../../../node_modules/@nestjs/core/services/index.d.ts","../../../node_modules/@nestjs/core/index.d.ts","../../../node_modules/@nestjs/core/injector/container.d.ts","../../../node_modules/@nestjs/core/injector/module.d.ts","../../../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../../../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../../../node_modules/@nestjs/core/application-config.d.ts","../../../node_modules/@nestjs/microservices/nest-microservice.d.ts","../../../node_modules/@nestjs/microservices/record-builders/nats.record-builder.d.ts","../../../node_modules/@nestjs/microservices/record-builders/rmq.record-builder.d.ts","../../../node_modules/@nestjs/microservices/record-builders/index.d.ts","../../../node_modules/@nestjs/microservices/server/server.d.ts","../../../node_modules/@nestjs/microservices/server/server-grpc.d.ts","../../../node_modules/@nestjs/microservices/server/server-kafka.d.ts","../../../node_modules/@nestjs/microservices/server/server-mqtt.d.ts","../../../node_modules/@nestjs/microservices/server/server-nats.d.ts","../../../node_modules/@nestjs/microservices/server/server-redis.d.ts","../../../node_modules/@nestjs/microservices/server/server-rmq.d.ts","../../../node_modules/@nestjs/microservices/server/server-tcp.d.ts","../../../node_modules/@nestjs/microservices/server/index.d.ts","../../../node_modules/@nestjs/microservices/tokens.d.ts","../../../node_modules/@nestjs/microservices/index.d.ts","../../../libs/shared/src/shared.service.ts","../../../libs/shared/src/shared.module.ts","../../../node_modules/typeorm/metadata/types/relationtypes.d.ts","../../../node_modules/typeorm/metadata/types/deferrabletype.d.ts","../../../node_modules/typeorm/metadata/types/ondeletetype.d.ts","../../../node_modules/typeorm/metadata/types/onupdatetype.d.ts","../../../node_modules/typeorm/decorator/options/relationoptions.d.ts","../../../node_modules/typeorm/metadata/types/propertytypeinfunction.d.ts","../../../node_modules/typeorm/common/objecttype.d.ts","../../../node_modules/typeorm/common/entitytarget.d.ts","../../../node_modules/typeorm/metadata/types/relationtypeinfunction.d.ts","../../../node_modules/typeorm/metadata-args/relationmetadataargs.d.ts","../../../node_modules/typeorm/driver/types/columntypes.d.ts","../../../node_modules/typeorm/decorator/options/valuetransformer.d.ts","../../../node_modules/typeorm/decorator/options/columncommonoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnoptions.d.ts","../../../node_modules/typeorm/metadata-args/types/columnmode.d.ts","../../../node_modules/typeorm/metadata-args/columnmetadataargs.d.ts","../../../node_modules/typeorm/common/objectliteral.d.ts","../../../node_modules/typeorm/schema-builder/options/tablecolumnoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tablecolumn.d.ts","../../../node_modules/typeorm/schema-builder/options/viewoptions.d.ts","../../../node_modules/typeorm/schema-builder/view/view.d.ts","../../../node_modules/typeorm/naming-strategy/namingstrategyinterface.d.ts","../../../node_modules/typeorm/metadata/foreignkeymetadata.d.ts","../../../node_modules/typeorm/metadata/relationmetadata.d.ts","../../../node_modules/typeorm/metadata-args/embeddedmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/relationidmetadataargs.d.ts","../../../node_modules/typeorm/metadata/relationidmetadata.d.ts","../../../node_modules/typeorm/metadata/relationcountmetadata.d.ts","../../../node_modules/typeorm/metadata/types/eventlistenertypes.d.ts","../../../node_modules/typeorm/metadata-args/entitylistenermetadataargs.d.ts","../../../node_modules/typeorm/metadata/entitylistenermetadata.d.ts","../../../node_modules/typeorm/metadata-args/uniquemetadataargs.d.ts","../../../node_modules/typeorm/metadata/uniquemetadata.d.ts","../../../node_modules/typeorm/metadata/embeddedmetadata.d.ts","../../../node_modules/typeorm/metadata/columnmetadata.d.ts","../../../node_modules/typeorm/driver/types/ctecapabilities.d.ts","../../../node_modules/typeorm/driver/types/mappedcolumntypes.d.ts","../../../node_modules/typeorm/driver/query.d.ts","../../../node_modules/typeorm/driver/sqlinmemory.d.ts","../../../node_modules/typeorm/schema-builder/schemabuilder.d.ts","../../../node_modules/typeorm/driver/types/datatypedefaults.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaindexoptions.d.ts","../../../node_modules/typeorm/driver/types/geojsontypes.d.ts","../../../node_modules/typeorm/decorator/options/spatialcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/foreignkeyoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacolumnforeignkeyoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/joincolumnoptions.d.ts","../../../node_modules/typeorm/decorator/options/jointablemultiplecolumnsoptions.d.ts","../../../node_modules/typeorm/decorator/options/jointableoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemarelationoptions.d.ts","../../../node_modules/typeorm/find-options/orderbycondition.d.ts","../../../node_modules/typeorm/metadata/types/tabletypes.d.ts","../../../node_modules/typeorm/entity-schema/entityschemauniqueoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemacheckoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaexclusionoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemainheritanceoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemarelationidoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaforeignkeyoptions.d.ts","../../../node_modules/typeorm/metadata/types/treetypes.d.ts","../../../node_modules/typeorm/metadata/types/closuretreeoptions.d.ts","../../../node_modules/typeorm/metadata-args/treemetadataargs.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaoptions.d.ts","../../../node_modules/typeorm/entity-schema/entityschema.d.ts","../../../node_modules/typeorm/logger/logger.d.ts","../../../node_modules/typeorm/logger/loggeroptions.d.ts","../../../node_modules/typeorm/driver/types/databasetype.d.ts","../../../node_modules/typeorm/cache/queryresultcacheoptions.d.ts","../../../node_modules/typeorm/cache/queryresultcache.d.ts","../../../node_modules/typeorm/common/mixedlist.d.ts","../../../node_modules/typeorm/data-source/basedatasourceoptions.d.ts","../../../node_modules/typeorm/driver/types/replicationmode.d.ts","../../../node_modules/typeorm/schema-builder/options/tableforeignkeyoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableforeignkey.d.ts","../../../node_modules/typeorm/driver/types/upserttype.d.ts","../../../node_modules/typeorm/driver/driver.d.ts","../../../node_modules/typeorm/find-options/joinoptions.d.ts","../../../node_modules/typeorm/find-options/findoperatortype.d.ts","../../../node_modules/typeorm/find-options/findoperator.d.ts","../../../node_modules/typeorm/platform/platformtools.d.ts","../../../node_modules/typeorm/driver/mongodb/bson.typings.d.ts","../../../node_modules/typeorm/driver/mongodb/typings.d.ts","../../../node_modules/typeorm/find-options/equaloperator.d.ts","../../../node_modules/typeorm/find-options/findoptionswhere.d.ts","../../../node_modules/typeorm/find-options/findoptionsselect.d.ts","../../../node_modules/typeorm/find-options/findoptionsrelations.d.ts","../../../node_modules/typeorm/find-options/findoptionsorder.d.ts","../../../node_modules/typeorm/find-options/findoneoptions.d.ts","../../../node_modules/typeorm/find-options/findmanyoptions.d.ts","../../../node_modules/typeorm/common/deeppartial.d.ts","../../../node_modules/typeorm/repository/saveoptions.d.ts","../../../node_modules/typeorm/repository/removeoptions.d.ts","../../../node_modules/typeorm/find-options/mongodb/mongofindoneoptions.d.ts","../../../node_modules/typeorm/find-options/mongodb/mongofindmanyoptions.d.ts","../../../node_modules/typeorm/schema-builder/options/tableuniqueoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableunique.d.ts","../../../node_modules/typeorm/subscriber/broadcasterresult.d.ts","../../../node_modules/typeorm/subscriber/event/transactioncommitevent.d.ts","../../../node_modules/typeorm/subscriber/event/transactionrollbackevent.d.ts","../../../node_modules/typeorm/subscriber/event/transactionstartevent.d.ts","../../../node_modules/typeorm/subscriber/event/updateevent.d.ts","../../../node_modules/typeorm/subscriber/event/removeevent.d.ts","../../../node_modules/typeorm/subscriber/event/insertevent.d.ts","../../../node_modules/typeorm/subscriber/event/loadevent.d.ts","../../../node_modules/typeorm/subscriber/event/softremoveevent.d.ts","../../../node_modules/typeorm/subscriber/event/recoverevent.d.ts","../../../node_modules/typeorm/subscriber/event/queryevent.d.ts","../../../node_modules/typeorm/subscriber/entitysubscriberinterface.d.ts","../../../node_modules/typeorm/subscriber/broadcaster.d.ts","../../../node_modules/typeorm/schema-builder/options/tablecheckoptions.d.ts","../../../node_modules/typeorm/metadata-args/checkmetadataargs.d.ts","../../../node_modules/typeorm/metadata/checkmetadata.d.ts","../../../node_modules/typeorm/schema-builder/table/tablecheck.d.ts","../../../node_modules/typeorm/schema-builder/options/tableexclusionoptions.d.ts","../../../node_modules/typeorm/metadata-args/exclusionmetadataargs.d.ts","../../../node_modules/typeorm/metadata/exclusionmetadata.d.ts","../../../node_modules/typeorm/schema-builder/table/tableexclusion.d.ts","../../../node_modules/typeorm/driver/mongodb/mongoqueryrunner.d.ts","../../../node_modules/typeorm/query-builder/querypartialentity.d.ts","../../../node_modules/typeorm/query-runner/queryresult.d.ts","../../../node_modules/typeorm/query-builder/result/insertresult.d.ts","../../../node_modules/typeorm/query-builder/result/updateresult.d.ts","../../../node_modules/typeorm/query-builder/result/deleteresult.d.ts","../../../node_modules/typeorm/entity-manager/mongoentitymanager.d.ts","../../../node_modules/typeorm/repository/mongorepository.d.ts","../../../node_modules/typeorm/find-options/findtreeoptions.d.ts","../../../node_modules/typeorm/repository/treerepository.d.ts","../../../node_modules/typeorm/query-builder/transformer/plainobjecttonewentitytransformer.d.ts","../../../node_modules/typeorm/driver/types/isolationlevel.d.ts","../../../node_modules/typeorm/query-builder/whereexpressionbuilder.d.ts","../../../node_modules/typeorm/query-builder/brackets.d.ts","../../../node_modules/typeorm/query-builder/insertorupdateoptions.d.ts","../../../node_modules/typeorm/repository/upsertoptions.d.ts","../../../node_modules/typeorm/common/pickkeysbytype.d.ts","../../../node_modules/typeorm/entity-manager/entitymanager.d.ts","../../../node_modules/typeorm/repository/repository.d.ts","../../../node_modules/typeorm/migration/migrationinterface.d.ts","../../../node_modules/typeorm/migration/migration.d.ts","../../../node_modules/typeorm/driver/cockroachdb/cockroachconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/cockroachdb/cockroachconnectionoptions.d.ts","../../../node_modules/typeorm/driver/mysql/mysqlconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/mysql/mysqlconnectionoptions.d.ts","../../../node_modules/typeorm/driver/postgres/postgresconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/postgres/postgresconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqlite/sqliteconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/defaultauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryaccesstokenauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorydefaultauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsiappserviceauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorymsivmauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectorypasswordauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/azureactivedirectoryserviceprincipalsecret.d.ts","../../../node_modules/typeorm/driver/sqlserver/authentication/ntlmauthentication.d.ts","../../../node_modules/typeorm/driver/sqlserver/sqlserverconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/sqlserver/sqlserverconnectionoptions.d.ts","../../../node_modules/typeorm/driver/oracle/oracleconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/oracle/oracleconnectionoptions.d.ts","../../../node_modules/typeorm/driver/mongodb/mongoconnectionoptions.d.ts","../../../node_modules/typeorm/driver/cordova/cordovaconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sqljs/sqljsconnectionoptions.d.ts","../../../node_modules/typeorm/driver/react-native/reactnativeconnectionoptions.d.ts","../../../node_modules/typeorm/driver/nativescript/nativescriptconnectionoptions.d.ts","../../../node_modules/typeorm/driver/expo/expoconnectionoptions.d.ts","../../../node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/aurora-mysql/auroramysqlconnectionoptions.d.ts","../../../node_modules/typeorm/driver/sap/sapconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/sap/sapconnectionoptions.d.ts","../../../node_modules/typeorm/driver/aurora-postgres/aurorapostgresconnectionoptions.d.ts","../../../node_modules/typeorm/driver/better-sqlite3/bettersqlite3connectionoptions.d.ts","../../../node_modules/typeorm/driver/capacitor/capacitorconnectionoptions.d.ts","../../../node_modules/typeorm/connection/baseconnectionoptions.d.ts","../../../node_modules/typeorm/driver/spanner/spannerconnectioncredentialsoptions.d.ts","../../../node_modules/typeorm/driver/spanner/spannerconnectionoptions.d.ts","../../../node_modules/typeorm/data-source/datasourceoptions.d.ts","../../../node_modules/typeorm/entity-manager/sqljsentitymanager.d.ts","../../../node_modules/typeorm/query-builder/relationloader.d.ts","../../../node_modules/typeorm/query-builder/relationidloader.d.ts","../../../node_modules/typeorm/data-source/datasource.d.ts","../../../node_modules/typeorm/metadata-args/tablemetadataargs.d.ts","../../../node_modules/typeorm/metadata/entitymetadata.d.ts","../../../node_modules/typeorm/metadata-args/indexmetadataargs.d.ts","../../../node_modules/typeorm/metadata/indexmetadata.d.ts","../../../node_modules/typeorm/schema-builder/options/tableindexoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/tableindex.d.ts","../../../node_modules/typeorm/schema-builder/options/tableoptions.d.ts","../../../node_modules/typeorm/schema-builder/table/table.d.ts","../../../node_modules/typeorm/query-runner/queryrunner.d.ts","../../../node_modules/typeorm/query-builder/querybuildercte.d.ts","../../../node_modules/typeorm/query-builder/alias.d.ts","../../../node_modules/typeorm/query-builder/joinattribute.d.ts","../../../node_modules/typeorm/query-builder/relation-id/relationidattribute.d.ts","../../../node_modules/typeorm/query-builder/relation-count/relationcountattribute.d.ts","../../../node_modules/typeorm/query-builder/selectquery.d.ts","../../../node_modules/typeorm/query-builder/selectquerybuilderoption.d.ts","../../../node_modules/typeorm/query-builder/whereclause.d.ts","../../../node_modules/typeorm/query-builder/queryexpressionmap.d.ts","../../../node_modules/typeorm/query-builder/updatequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/deletequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/softdeletequerybuilder.d.ts","../../../node_modules/typeorm/query-builder/insertquerybuilder.d.ts","../../../node_modules/typeorm/query-builder/relationquerybuilder.d.ts","../../../node_modules/typeorm/query-builder/notbrackets.d.ts","../../../node_modules/typeorm/query-builder/querybuilder.d.ts","../../../node_modules/typeorm/query-builder/selectquerybuilder.d.ts","../../../node_modules/typeorm/metadata-args/relationcountmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/namingstrategymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/joincolumnmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/jointablemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/entitysubscribermetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/inheritancemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/discriminatorvaluemetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/entityrepositorymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/transactionentitymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/transactionrepositorymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/generatedmetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/foreignkeymetadataargs.d.ts","../../../node_modules/typeorm/metadata-args/metadataargsstorage.d.ts","../../../node_modules/typeorm/connection/connectionmanager.d.ts","../../../node_modules/typeorm/globals.d.ts","../../../node_modules/typeorm/container.d.ts","../../../node_modules/typeorm/common/relationtype.d.ts","../../../node_modules/typeorm/error/typeormerror.d.ts","../../../node_modules/typeorm/error/cannotreflectmethodparametertypeerror.d.ts","../../../node_modules/typeorm/error/alreadyhasactiveconnectionerror.d.ts","../../../node_modules/typeorm/persistence/subjectchangemap.d.ts","../../../node_modules/typeorm/persistence/subject.d.ts","../../../node_modules/typeorm/error/subjectwithoutidentifiererror.d.ts","../../../node_modules/typeorm/error/cannotconnectalreadyconnectederror.d.ts","../../../node_modules/typeorm/error/locknotsupportedongivendrivererror.d.ts","../../../node_modules/typeorm/error/connectionisnotseterror.d.ts","../../../node_modules/typeorm/error/cannotcreateentityidmaperror.d.ts","../../../node_modules/typeorm/error/metadataalreadyexistserror.d.ts","../../../node_modules/typeorm/error/cannotdetermineentityerror.d.ts","../../../node_modules/typeorm/error/updatevaluesmissingerror.d.ts","../../../node_modules/typeorm/error/treerepositorynotsupportederror.d.ts","../../../node_modules/typeorm/error/customrepositorynotfounderror.d.ts","../../../node_modules/typeorm/error/transactionnotstartederror.d.ts","../../../node_modules/typeorm/error/transactionalreadystartederror.d.ts","../../../node_modules/typeorm/error/entitynotfounderror.d.ts","../../../node_modules/typeorm/error/entitymetadatanotfounderror.d.ts","../../../node_modules/typeorm/error/mustbeentityerror.d.ts","../../../node_modules/typeorm/error/optimisticlockversionmismatcherror.d.ts","../../../node_modules/typeorm/error/limitonupdatenotsupportederror.d.ts","../../../node_modules/typeorm/error/primarycolumncannotbenullableerror.d.ts","../../../node_modules/typeorm/error/customrepositorycannotinheritrepositoryerror.d.ts","../../../node_modules/typeorm/error/queryrunnerprovideralreadyreleasederror.d.ts","../../../node_modules/typeorm/error/cannotattachtreechildrenentityerror.d.ts","../../../node_modules/typeorm/error/customrepositorydoesnothaveentityerror.d.ts","../../../node_modules/typeorm/error/missingdeletedatecolumnerror.d.ts","../../../node_modules/typeorm/error/noconnectionforrepositoryerror.d.ts","../../../node_modules/typeorm/error/circularrelationserror.d.ts","../../../node_modules/typeorm/error/returningstatementnotsupportederror.d.ts","../../../node_modules/typeorm/error/usingjointableisnotallowederror.d.ts","../../../node_modules/typeorm/error/missingjoincolumnerror.d.ts","../../../node_modules/typeorm/error/missingprimarycolumnerror.d.ts","../../../node_modules/typeorm/error/entitypropertynotfounderror.d.ts","../../../node_modules/typeorm/error/missingdrivererror.d.ts","../../../node_modules/typeorm/error/driverpackagenotinstallederror.d.ts","../../../node_modules/typeorm/error/cannotgetentitymanagernotconnectederror.d.ts","../../../node_modules/typeorm/error/connectionnotfounderror.d.ts","../../../node_modules/typeorm/error/noversionorupdatedatecolumnerror.d.ts","../../../node_modules/typeorm/error/insertvaluesmissingerror.d.ts","../../../node_modules/typeorm/error/optimisticlockcannotbeusederror.d.ts","../../../node_modules/typeorm/error/metadatawithsuchnamealreadyexistserror.d.ts","../../../node_modules/typeorm/error/driveroptionnotseterror.d.ts","../../../node_modules/typeorm/error/findrelationsnotfounderror.d.ts","../../../node_modules/typeorm/error/pessimisticlocktransactionrequirederror.d.ts","../../../node_modules/typeorm/error/repositorynottreeerror.d.ts","../../../node_modules/typeorm/error/datatypenotsupportederror.d.ts","../../../node_modules/typeorm/error/initializedrelationerror.d.ts","../../../node_modules/typeorm/error/missingjointableerror.d.ts","../../../node_modules/typeorm/error/queryfailederror.d.ts","../../../node_modules/typeorm/error/noneedtoreleaseentitymanagererror.d.ts","../../../node_modules/typeorm/error/usingjoincolumnonlyononesideallowederror.d.ts","../../../node_modules/typeorm/error/usingjointableonlyononesideallowederror.d.ts","../../../node_modules/typeorm/error/subjectremovedandupdatederror.d.ts","../../../node_modules/typeorm/error/persistedentitynotfounderror.d.ts","../../../node_modules/typeorm/error/usingjoincolumnisnotallowederror.d.ts","../../../node_modules/typeorm/error/columntypeundefinederror.d.ts","../../../node_modules/typeorm/error/queryrunneralreadyreleasederror.d.ts","../../../node_modules/typeorm/error/offsetwithoutlimitnotsupportederror.d.ts","../../../node_modules/typeorm/error/cannotexecutenotconnectederror.d.ts","../../../node_modules/typeorm/error/noconnectionoptionerror.d.ts","../../../node_modules/typeorm/error/forbiddentransactionmodeoverrideerror.d.ts","../../../node_modules/typeorm/error/index.d.ts","../../../node_modules/typeorm/decorator/options/columnembeddedoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnenumoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnhstoreoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnnumericoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnunsignedoptions.d.ts","../../../node_modules/typeorm/decorator/options/columnwithlengthoptions.d.ts","../../../node_modules/typeorm/decorator/columns/column.d.ts","../../../node_modules/typeorm/decorator/columns/createdatecolumn.d.ts","../../../node_modules/typeorm/decorator/columns/deletedatecolumn.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnnumericoptions.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnuuidoptions.d.ts","../../../node_modules/typeorm/decorator/options/primarygeneratedcolumnidentityoptions.d.ts","../../../node_modules/typeorm/decorator/columns/primarygeneratedcolumn.d.ts","../../../node_modules/typeorm/decorator/columns/primarycolumn.d.ts","../../../node_modules/typeorm/decorator/columns/updatedatecolumn.d.ts","../../../node_modules/typeorm/decorator/columns/versioncolumn.d.ts","../../../node_modules/typeorm/decorator/options/virtualcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/columns/virtualcolumn.d.ts","../../../node_modules/typeorm/decorator/options/viewcolumnoptions.d.ts","../../../node_modules/typeorm/decorator/columns/viewcolumn.d.ts","../../../node_modules/typeorm/decorator/columns/objectidcolumn.d.ts","../../../node_modules/typeorm/decorator/listeners/afterinsert.d.ts","../../../node_modules/typeorm/decorator/listeners/afterload.d.ts","../../../node_modules/typeorm/decorator/listeners/afterremove.d.ts","../../../node_modules/typeorm/decorator/listeners/aftersoftremove.d.ts","../../../node_modules/typeorm/decorator/listeners/afterrecover.d.ts","../../../node_modules/typeorm/decorator/listeners/afterupdate.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeinsert.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeremove.d.ts","../../../node_modules/typeorm/decorator/listeners/beforesoftremove.d.ts","../../../node_modules/typeorm/decorator/listeners/beforerecover.d.ts","../../../node_modules/typeorm/decorator/listeners/beforeupdate.d.ts","../../../node_modules/typeorm/decorator/listeners/eventsubscriber.d.ts","../../../node_modules/typeorm/decorator/options/indexoptions.d.ts","../../../node_modules/typeorm/decorator/options/entityoptions.d.ts","../../../node_modules/typeorm/decorator/relations/joincolumn.d.ts","../../../node_modules/typeorm/decorator/relations/jointable.d.ts","../../../node_modules/typeorm/decorator/relations/manytomany.d.ts","../../../node_modules/typeorm/decorator/relations/manytoone.d.ts","../../../node_modules/typeorm/decorator/relations/onetomany.d.ts","../../../node_modules/typeorm/decorator/relations/onetoone.d.ts","../../../node_modules/typeorm/decorator/relations/relationcount.d.ts","../../../node_modules/typeorm/decorator/relations/relationid.d.ts","../../../node_modules/typeorm/decorator/entity/entity.d.ts","../../../node_modules/typeorm/decorator/entity/childentity.d.ts","../../../node_modules/typeorm/decorator/entity/tableinheritance.d.ts","../../../node_modules/typeorm/decorator/options/viewentityoptions.d.ts","../../../node_modules/typeorm/decorator/entity-view/viewentity.d.ts","../../../node_modules/typeorm/decorator/tree/treelevelcolumn.d.ts","../../../node_modules/typeorm/decorator/tree/treeparent.d.ts","../../../node_modules/typeorm/decorator/tree/treechildren.d.ts","../../../node_modules/typeorm/decorator/tree/tree.d.ts","../../../node_modules/typeorm/decorator/index.d.ts","../../../node_modules/typeorm/decorator/foreignkey.d.ts","../../../node_modules/typeorm/decorator/options/uniqueoptions.d.ts","../../../node_modules/typeorm/decorator/unique.d.ts","../../../node_modules/typeorm/decorator/check.d.ts","../../../node_modules/typeorm/decorator/exclusion.d.ts","../../../node_modules/typeorm/decorator/generated.d.ts","../../../node_modules/typeorm/decorator/entityrepository.d.ts","../../../node_modules/typeorm/find-options/operator/and.d.ts","../../../node_modules/typeorm/find-options/operator/or.d.ts","../../../node_modules/typeorm/find-options/operator/any.d.ts","../../../node_modules/typeorm/find-options/operator/arraycontainedby.d.ts","../../../node_modules/typeorm/find-options/operator/arraycontains.d.ts","../../../node_modules/typeorm/find-options/operator/arrayoverlap.d.ts","../../../node_modules/typeorm/find-options/operator/between.d.ts","../../../node_modules/typeorm/find-options/operator/equal.d.ts","../../../node_modules/typeorm/find-options/operator/in.d.ts","../../../node_modules/typeorm/find-options/operator/isnull.d.ts","../../../node_modules/typeorm/find-options/operator/lessthan.d.ts","../../../node_modules/typeorm/find-options/operator/lessthanorequal.d.ts","../../../node_modules/typeorm/find-options/operator/ilike.d.ts","../../../node_modules/typeorm/find-options/operator/like.d.ts","../../../node_modules/typeorm/find-options/operator/morethan.d.ts","../../../node_modules/typeorm/find-options/operator/morethanorequal.d.ts","../../../node_modules/typeorm/find-options/operator/not.d.ts","../../../node_modules/typeorm/find-options/operator/raw.d.ts","../../../node_modules/typeorm/find-options/operator/jsoncontains.d.ts","../../../node_modules/typeorm/find-options/findoptionsutils.d.ts","../../../node_modules/typeorm/logger/abstractlogger.d.ts","../../../node_modules/typeorm/logger/advancedconsolelogger.d.ts","../../../node_modules/typeorm/logger/formattedconsolelogger.d.ts","../../../node_modules/typeorm/logger/simpleconsolelogger.d.ts","../../../node_modules/typeorm/logger/filelogger.d.ts","../../../node_modules/typeorm/repository/abstractrepository.d.ts","../../../node_modules/typeorm/data-source/index.d.ts","../../../node_modules/typeorm/repository/baseentity.d.ts","../../../node_modules/typeorm/driver/sqlserver/mssqlparameter.d.ts","../../../node_modules/typeorm/connection/connectionoptionsreader.d.ts","../../../node_modules/typeorm/connection/connectionoptions.d.ts","../../../node_modules/typeorm/connection/connection.d.ts","../../../node_modules/typeorm/migration/migrationexecutor.d.ts","../../../node_modules/typeorm/naming-strategy/defaultnamingstrategy.d.ts","../../../node_modules/typeorm/naming-strategy/legacyoraclenamingstrategy.d.ts","../../../node_modules/typeorm/entity-schema/entityschemaembeddedcolumnoptions.d.ts","../../../node_modules/typeorm/schema-builder/rdbmsschemabuilder.d.ts","../../../node_modules/typeorm/util/instancechecker.d.ts","../../../node_modules/typeorm/repository/findtreesoptions.d.ts","../../../node_modules/typeorm/util/treerepositoryutils.d.ts","../../../node_modules/typeorm/index.d.ts","../../../libs/shared/src/entities/payment.entity.ts","../../../libs/shared/src/entities/outbox-event.entity.ts","../../../libs/shared/src/entities/processed-event.entity.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/entity-class-or-schema.type.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/typeorm.decorators.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/typeorm.utils.d.ts","../../../node_modules/@nestjs/typeorm/dist/common/index.d.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/typeorm-options.interface.d.ts","../../../node_modules/@nestjs/typeorm/dist/interfaces/index.d.ts","../../../node_modules/@nestjs/typeorm/dist/typeorm.module.d.ts","../../../node_modules/@nestjs/typeorm/dist/index.d.ts","../../../node_modules/@nestjs/typeorm/index.d.ts","../../../libs/shared/src/database.module.ts","../../../node_modules/class-validator/types/validation/validationerror.d.ts","../../../node_modules/class-validator/types/validation/validatoroptions.d.ts","../../../node_modules/class-validator/types/validation-schema/validationschema.d.ts","../../../node_modules/class-validator/types/container.d.ts","../../../node_modules/class-validator/types/validation/validationarguments.d.ts","../../../node_modules/class-validator/types/decorator/validationoptions.d.ts","../../../node_modules/class-validator/types/decorator/common/allow.d.ts","../../../node_modules/class-validator/types/decorator/common/isdefined.d.ts","../../../node_modules/class-validator/types/decorator/common/isoptional.d.ts","../../../node_modules/class-validator/types/decorator/common/validate.d.ts","../../../node_modules/class-validator/types/validation/validatorconstraintinterface.d.ts","../../../node_modules/class-validator/types/decorator/common/validateby.d.ts","../../../node_modules/class-validator/types/decorator/common/validateif.d.ts","../../../node_modules/class-validator/types/decorator/common/validatenested.d.ts","../../../node_modules/class-validator/types/decorator/common/validatepromise.d.ts","../../../node_modules/class-validator/types/decorator/common/islatlong.d.ts","../../../node_modules/class-validator/types/decorator/common/islatitude.d.ts","../../../node_modules/class-validator/types/decorator/common/islongitude.d.ts","../../../node_modules/class-validator/types/decorator/common/equals.d.ts","../../../node_modules/class-validator/types/decorator/common/notequals.d.ts","../../../node_modules/class-validator/types/decorator/common/isempty.d.ts","../../../node_modules/class-validator/types/decorator/common/isnotempty.d.ts","../../../node_modules/class-validator/types/decorator/common/isin.d.ts","../../../node_modules/class-validator/types/decorator/common/isnotin.d.ts","../../../node_modules/class-validator/types/decorator/number/isdivisibleby.d.ts","../../../node_modules/class-validator/types/decorator/number/ispositive.d.ts","../../../node_modules/class-validator/types/decorator/number/isnegative.d.ts","../../../node_modules/class-validator/types/decorator/number/max.d.ts","../../../node_modules/class-validator/types/decorator/number/min.d.ts","../../../node_modules/class-validator/types/decorator/date/mindate.d.ts","../../../node_modules/class-validator/types/decorator/date/maxdate.d.ts","../../../node_modules/class-validator/types/decorator/string/contains.d.ts","../../../node_modules/class-validator/types/decorator/string/notcontains.d.ts","../../../node_modules/@types/validator/lib/isboolean.d.ts","../../../node_modules/@types/validator/lib/isemail.d.ts","../../../node_modules/@types/validator/lib/isfqdn.d.ts","../../../node_modules/@types/validator/lib/isiban.d.ts","../../../node_modules/@types/validator/lib/isiso31661alpha2.d.ts","../../../node_modules/@types/validator/lib/isiso4217.d.ts","../../../node_modules/@types/validator/lib/isiso6391.d.ts","../../../node_modules/@types/validator/lib/istaxid.d.ts","../../../node_modules/@types/validator/lib/isurl.d.ts","../../../node_modules/@types/validator/index.d.ts","../../../node_modules/class-validator/types/decorator/string/isalpha.d.ts","../../../node_modules/class-validator/types/decorator/string/isalphanumeric.d.ts","../../../node_modules/class-validator/types/decorator/string/isdecimal.d.ts","../../../node_modules/class-validator/types/decorator/string/isascii.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase64.d.ts","../../../node_modules/class-validator/types/decorator/string/isbytelength.d.ts","../../../node_modules/class-validator/types/decorator/string/iscreditcard.d.ts","../../../node_modules/class-validator/types/decorator/string/iscurrency.d.ts","../../../node_modules/class-validator/types/decorator/string/isemail.d.ts","../../../node_modules/class-validator/types/decorator/string/isfqdn.d.ts","../../../node_modules/class-validator/types/decorator/string/isfullwidth.d.ts","../../../node_modules/class-validator/types/decorator/string/ishalfwidth.d.ts","../../../node_modules/class-validator/types/decorator/string/isvariablewidth.d.ts","../../../node_modules/class-validator/types/decorator/string/ishexcolor.d.ts","../../../node_modules/class-validator/types/decorator/string/ishexadecimal.d.ts","../../../node_modules/class-validator/types/decorator/string/ismacaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/isip.d.ts","../../../node_modules/class-validator/types/decorator/string/isport.d.ts","../../../node_modules/class-validator/types/decorator/string/isisbn.d.ts","../../../node_modules/class-validator/types/decorator/string/isisin.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso8601.d.ts","../../../node_modules/class-validator/types/decorator/string/isjson.d.ts","../../../node_modules/class-validator/types/decorator/string/isjwt.d.ts","../../../node_modules/class-validator/types/decorator/string/islowercase.d.ts","../../../node_modules/class-validator/types/decorator/string/ismobilephone.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661alpha2.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661alpha3.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso31661numeric.d.ts","../../../node_modules/class-validator/types/decorator/string/ismongoid.d.ts","../../../node_modules/class-validator/types/decorator/string/ismultibyte.d.ts","../../../node_modules/class-validator/types/decorator/string/issurrogatepair.d.ts","../../../node_modules/class-validator/types/decorator/string/isurl.d.ts","../../../node_modules/class-validator/types/decorator/string/isuuid.d.ts","../../../node_modules/class-validator/types/decorator/string/isfirebasepushid.d.ts","../../../node_modules/class-validator/types/decorator/string/isuppercase.d.ts","../../../node_modules/class-validator/types/decorator/string/length.d.ts","../../../node_modules/class-validator/types/decorator/string/maxlength.d.ts","../../../node_modules/class-validator/types/decorator/string/minlength.d.ts","../../../node_modules/class-validator/types/decorator/string/matches.d.ts","../../../node_modules/libphonenumber-js/types.d.cts","../../../node_modules/libphonenumber-js/max/index.d.cts","../../../node_modules/class-validator/types/decorator/string/isphonenumber.d.ts","../../../node_modules/class-validator/types/decorator/string/ismilitarytime.d.ts","../../../node_modules/class-validator/types/decorator/string/ishash.d.ts","../../../node_modules/class-validator/types/decorator/string/isissn.d.ts","../../../node_modules/class-validator/types/decorator/string/isdatestring.d.ts","../../../node_modules/class-validator/types/decorator/string/isbooleanstring.d.ts","../../../node_modules/class-validator/types/decorator/string/isnumberstring.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase32.d.ts","../../../node_modules/class-validator/types/decorator/string/isbic.d.ts","../../../node_modules/class-validator/types/decorator/string/isbtcaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/isdatauri.d.ts","../../../node_modules/class-validator/types/decorator/string/isean.d.ts","../../../node_modules/class-validator/types/decorator/string/isethereumaddress.d.ts","../../../node_modules/class-validator/types/decorator/string/ishsl.d.ts","../../../node_modules/class-validator/types/decorator/string/isiban.d.ts","../../../node_modules/class-validator/types/decorator/string/isidentitycard.d.ts","../../../node_modules/class-validator/types/decorator/string/isisrc.d.ts","../../../node_modules/class-validator/types/decorator/string/islocale.d.ts","../../../node_modules/class-validator/types/decorator/string/ismagneturi.d.ts","../../../node_modules/class-validator/types/decorator/string/ismimetype.d.ts","../../../node_modules/class-validator/types/decorator/string/isoctal.d.ts","../../../node_modules/class-validator/types/decorator/string/ispassportnumber.d.ts","../../../node_modules/class-validator/types/decorator/string/ispostalcode.d.ts","../../../node_modules/class-validator/types/decorator/string/isrfc3339.d.ts","../../../node_modules/class-validator/types/decorator/string/isrgbcolor.d.ts","../../../node_modules/class-validator/types/decorator/string/issemver.d.ts","../../../node_modules/class-validator/types/decorator/string/isstrongpassword.d.ts","../../../node_modules/class-validator/types/decorator/string/istimezone.d.ts","../../../node_modules/class-validator/types/decorator/string/isbase58.d.ts","../../../node_modules/class-validator/types/decorator/string/is-tax-id.d.ts","../../../node_modules/class-validator/types/decorator/string/is-iso4217-currency-code.d.ts","../../../node_modules/class-validator/types/decorator/string/isiso6391.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isboolean.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isdate.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isnumber.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isenum.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isint.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isstring.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isarray.d.ts","../../../node_modules/class-validator/types/decorator/typechecker/isobject.d.ts","../../../node_modules/class-validator/types/decorator/array/arraycontains.d.ts","../../../node_modules/class-validator/types/decorator/array/arraynotcontains.d.ts","../../../node_modules/class-validator/types/decorator/array/arraynotempty.d.ts","../../../node_modules/class-validator/types/decorator/array/arrayminsize.d.ts","../../../node_modules/class-validator/types/decorator/array/arraymaxsize.d.ts","../../../node_modules/class-validator/types/decorator/array/arrayunique.d.ts","../../../node_modules/class-validator/types/decorator/object/isnotemptyobject.d.ts","../../../node_modules/class-validator/types/decorator/object/isinstance.d.ts","../../../node_modules/class-validator/types/decorator/decorators.d.ts","../../../node_modules/class-validator/types/validation/validationtypes.d.ts","../../../node_modules/class-validator/types/validation/validator.d.ts","../../../node_modules/class-validator/types/register-decorator.d.ts","../../../node_modules/class-validator/types/metadata/validationmetadataargs.d.ts","../../../node_modules/class-validator/types/metadata/validationmetadata.d.ts","../../../node_modules/class-validator/types/metadata/constraintmetadata.d.ts","../../../node_modules/class-validator/types/metadata/metadatastorage.d.ts","../../../node_modules/class-validator/types/index.d.ts","../../../libs/shared/src/dto/create-payment.dto.ts","../../../libs/shared/src/index.ts","../../../apps/consumers/src/processed-events.repository.ts","../../../apps/consumers/src/fraud.consumer.ts","../../../apps/consumers/src/ledger.consumer.ts","../../../apps/consumers/src/saga.consumer.ts","../../../apps/consumers/src/consumers.module.ts","../../../apps/consumers/src/main.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/cookiejar/index.d.ts","../../../node_modules/@types/luxon/src/zone.d.ts","../../../node_modules/@types/luxon/src/settings.d.ts","../../../node_modules/@types/luxon/src/_util.d.ts","../../../node_modules/@types/luxon/src/misc.d.ts","../../../node_modules/@types/luxon/src/duration.d.ts","../../../node_modules/@types/luxon/src/interval.d.ts","../../../node_modules/@types/luxon/src/datetime.d.ts","../../../node_modules/@types/luxon/src/info.d.ts","../../../node_modules/@types/luxon/src/luxon.d.ts","../../../node_modules/@types/luxon/index.d.ts","../../../node_modules/@types/cron/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../../../node_modules/@types/eslint/index.d.ts","../../../node_modules/@eslint/core/dist/cjs/types.d.cts","../../../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../../../node_modules/eslint/lib/types/index.d.ts","../../../node_modules/@types/eslint-scope/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../../../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/jest-mock/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/methods/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/superagent/lib/agent-base.d.ts","../../../node_modules/@types/superagent/lib/node/response.d.ts","../../../node_modules/@types/superagent/types.d.ts","../../../node_modules/@types/superagent/lib/node/agent.d.ts","../../../node_modules/@types/superagent/lib/request-base.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../../../node_modules/@types/superagent/lib/node/index.d.ts","../../../node_modules/@types/superagent/index.d.ts","../../../node_modules/@types/supertest/types.d.ts","../../../node_modules/@types/supertest/lib/agent.d.ts","../../../node_modules/@types/supertest/lib/test.d.ts","../../../node_modules/@types/supertest/lib/cookies.d.ts","../../../node_modules/@types/supertest/index.d.ts","../../../node_modules/@types/uuid/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[422,423,1160,1214,1231,1232],[422,601,1145,1146,1147,1148,1149,1160,1214,1231,1232],[422,1160,1214,1231,1232],[422,601,1146,1160,1214,1231,1232],[581,601,1150,1160,1214,1231,1232],[422,989,1145,1160,1214,1231,1232],[422,601,989,1145,1146,1160,1214,1231,1232],[422,990,991,992,1001,1160,1214,1231,1232],[1143,1160,1214,1231,1232],[989,1160,1214,1231,1232],[602,603,990,991,992,1002,1144,1160,1214,1231,1232],[422,602,1160,1214,1231,1232],[1152,1160,1214,1231,1232],[1160,1214,1231,1232],[1160,1214,1231,1232,1280],[1160,1214,1231,1232,1490],[322,1160,1214,1231,1232],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,1160,1214,1231,1232],[274,308,1160,1214,1231,1232],[281,1160,1214,1231,1232],[271,322,422,1160,1214,1231,1232],[340,341,342,343,344,345,346,348,1160,1214,1231,1232],[276,1160,1214,1231,1232],[322,422,1160,1214,1231,1232],[276,347,1160,1214,1231,1232],[336,339,349,1160,1214,1231,1232],[337,338,1160,1214,1231,1232],[312,1160,1214,1231,1232],[276,277,278,279,1160,1214,1231,1232],[352,1160,1214,1231,1232],[294,351,1160,1214,1231,1232],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,1160,1214,1231,1232],[381,1160,1214,1231,1232],[378,379,1160,1214,1231,1232],[377,380,1160,1214,1231,1232,1246],[70,280,322,350,374,377,382,389,414,419,421,1160,1214,1231,1232],[76,274,1160,1214,1231,1232],[75,1160,1214,1231,1232],[76,266,267,518,523,1160,1214,1231,1232],[266,274,1160,1214,1231,1232],[75,265,1160,1214,1231,1232],[274,402,1160,1214,1231,1232],[268,404,1160,1214,1231,1232],[265,269,1160,1214,1231,1232],[269,1160,1214,1231,1232],[75,322,1160,1214,1231,1232],[273,274,1160,1214,1231,1232],[286,1160,1214,1231,1232],[288,289,290,291,292,1160,1214,1231,1232],[280,1160,1214,1231,1232],[280,281,300,1160,1214,1231,1232],[294,295,301,302,303,1160,1214,1231,1232],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,1160,1214,1231,1232],[299,1160,1214,1231,1232],[282,283,284,285,1160,1214,1231,1232],[274,282,283,1160,1214,1231,1232],[274,280,281,1160,1214,1231,1232],[274,284,1160,1214,1231,1232],[274,312,1160,1214,1231,1232],[307,309,310,311,312,313,314,315,1160,1214,1231,1232],[72,274,1160,1214,1231,1232],[308,1160,1214,1231,1232],[72,274,307,311,313,1160,1214,1231,1232],[283,1160,1214,1231,1232],[309,1160,1214,1231,1232],[274,308,309,310,1160,1214,1231,1232],[298,1160,1214,1231,1232],[274,278,298,299,316,317,1160,1214,1231,1232],[296,297,299,1160,1214,1231,1232],[270,272,281,287,301,318,319,322,1160,1214,1231,1232],[76,265,270,272,275,318,319,1160,1214,1231,1232],[279,1160,1214,1231,1232],[265,1160,1214,1231,1232],[298,322,383,387,1160,1214,1231,1232],[387,388,1160,1214,1231,1232],[322,383,1160,1214,1231,1232],[322,383,384,1160,1214,1231,1232],[384,385,1160,1214,1231,1232],[384,385,386,1160,1214,1231,1232],[275,1160,1214,1231,1232],[392,393,394,1160,1214,1231,1232],[392,1160,1214,1231,1232],[394,395,396,398,399,400,1160,1214,1231,1232],[391,1160,1214,1231,1232],[394,397,1160,1214,1231,1232],[394,395,396,398,399,1160,1214,1231,1232],[275,392,394,398,1160,1214,1231,1232],[390,401,406,407,408,409,410,411,412,413,1160,1214,1231,1232],[275,322,406,1160,1214,1231,1232],[275,397,1160,1214,1231,1232],[275,397,422,1160,1214,1231,1232],[268,274,275,397,402,403,404,405,1160,1214,1231,1232],[265,322,402,403,415,1160,1214,1231,1232],[322,402,1160,1214,1231,1232],[417,1160,1214,1231,1232],[350,415,1160,1214,1231,1232],[415,416,418,1160,1214,1231,1232],[298,1160,1214,1231,1232,1258],[298,375,376,1160,1214,1231,1232],[307,1160,1214,1231,1232],[280,322,1160,1214,1231,1232],[420,1160,1214,1231,1232],[300,322,422,1160,1214,1231,1232],[508,1160,1214,1231,1232],[322,422,584,585,1160,1214,1231,1232],[347,1160,1214,1231,1232],[422,507,583,584,1160,1214,1231,1232],[511,512,1160,1214,1231,1232],[76,322,521,582,584,1160,1214,1231,1232],[422,509,514,1160,1214,1231,1232],[75,422,515,518,1160,1214,1231,1232],[322,520,522,526,582,584,586,1160,1214,1231,1232],[75,524,525,1160,1214,1231,1232],[515,1160,1214,1231,1232],[265,322,422,529,1160,1214,1231,1232],[322,422,521,582,584,586,1160,1214,1231,1232],[528,530,531,1160,1214,1231,1232],[322,584,1160,1214,1231,1232],[584,1160,1214,1231,1232],[322,422,529,1160,1214,1231,1232],[75,322,422,1160,1214,1231,1232],[322,422,507,527,529,532,535,540,541,557,558,582,584,1160,1214,1231,1232],[265,508,1160,1214,1231,1232],[514,517,559,1160,1214,1231,1232],[541,556,1160,1214,1231,1232],[70,509,510,513,516,548,556,560,563,567,568,569,570,572,578,580,586,1160,1214,1231,1232],[322,422,501,551,583,584,1160,1214,1231,1232],[322,505,1160,1214,1231,1232],[299,322,347,422,504,505,506,507,581,583,584,586,1160,1214,1231,1232],[507,543,553,555,582,584,1160,1214,1231,1232],[322,422,500,583,584,1160,1214,1231,1232],[542,1160,1214,1231,1232],[422,582,584,1160,1214,1231,1232],[422,501,547,582,583,1160,1214,1231,1232],[322,347,422,500,583,1160,1214,1231,1232],[422,506,507,545,549,550,553,554,1160,1214,1231,1232],[422,501,551,552,582,583,584,1160,1214,1231,1232],[322,347,553,582,584,1160,1214,1231,1232],[265,583,1160,1214,1231,1232],[274,307,313,1160,1214,1231,1232],[497,498,499,546,582,583,584,1160,1214,1231,1232],[504,547,561,562,1160,1214,1231,1232],[347,422,584,1160,1214,1231,1232],[347,422,1160,1214,1231,1232],[496,497,498,499,502,504,1160,1214,1231,1232],[501,1160,1214,1231,1232],[503,504,1160,1214,1231,1232],[422,496,497,498,499,502,503,1160,1214,1231,1232],[533,534,1160,1214,1231,1232],[322,521,582,584,586,1160,1214,1231,1232],[544,1160,1214,1231,1232],[305,1160,1214,1231,1232],[286,322,564,565,1160,1214,1231,1232],[566,1160,1214,1231,1232],[322,586,1160,1214,1231,1232],[322,582,586,1160,1214,1231,1232],[299,322,422,501,551,552,582,583,584,1160,1214,1231,1232],[298,322,422,509,547,568,582,586,1160,1214,1231,1232],[299,300,422,495,508,1160,1214,1231,1232],[537,538,539,1160,1214,1231,1232],[422,536,1160,1214,1231,1232],[571,1160,1214,1231,1232],[422,1160,1214,1231,1232,1243],[574,576,577,1160,1214,1231,1232],[573,1160,1214,1231,1232],[575,1160,1214,1231,1232],[422,507,574,583,1160,1214,1231,1232],[519,1160,1214,1231,1232],[322,347,422,544,545,547,548,582,583,584,586,1160,1214,1231,1232],[579,1160,1214,1231,1232],[265,298,444,461,1160,1214,1231,1232],[265,298,432,433,444,448,461,1160,1214,1231,1232],[265,298,427,444,461,463,1160,1214,1231,1232],[298,428,444,461,1160,1214,1231,1232,1246],[435,444,455,461,462,1160,1214,1231,1232],[265,442,443,461,1160,1214,1231,1232],[298,429,444,461,1160,1214,1231,1232],[265,298,430,444,461,1160,1214,1225,1231,1232],[422,431,444,448,455,461,1160,1214,1231,1232,1254],[444,445,462,464,465,466,467,468,469,1160,1214,1231,1232],[459,471,472,473,474,475,476,1160,1214,1231,1232],[433,459,1160,1214,1231,1232],[459,1160,1214,1231,1232],[448,459,1160,1214,1231,1232],[455,1160,1214,1231,1232],[481,1160,1214,1231,1232],[478,479,482,483,484,485,1160,1214,1231,1232],[457,481,1160,1214,1231,1232],[435,480,1160,1214,1231,1232],[426,427,428,429,430,431,1160,1214,1231,1232],[265,422,1160,1214,1231,1232],[487,488,489,1160,1214,1231,1232],[488,1160,1214,1231,1232],[1160,1214,1231,1232,1234,1254],[1160,1214,1231,1232,1254],[461,1160,1214,1231,1232],[437,438,439,440,446,447,1160,1214,1231,1232],[437,1160,1214,1231,1232],[433,445,1160,1214,1231,1232],[1160,1214,1231,1232,1234],[70,432,448,461,470,477,481,486,490,494,587,590,599,600,1160,1214,1231,1232],[432,433,470,1160,1214,1231,1232],[422,435,442,443,448,454,470,1160,1214,1231,1232,1254],[454,1160,1214,1231,1232],[441,1160,1214,1231,1232],[425,434,441,442,443,453,454,455,456,457,458,460,1160,1214,1231,1232],[422,433,435,442,443,448,449,450,451,452,453,1160,1214,1231,1232,1254],[422,492,1160,1214,1231,1232],[492,493,1160,1214,1231,1232],[322,461,1160,1214,1231,1232],[491,1160,1214,1231,1232],[265,298,422,454,495,547,568,582,586,1160,1214,1231,1232],[463,588,589,1160,1214,1231,1232],[591,592,593,594,595,596,597,598,1160,1214,1231,1232],[454,461,486,591,1160,1214,1231,1232],[298,432,433,448,461,477,591,1160,1214,1231,1232],[427,454,461,472,591,1160,1214,1231,1232],[428,454,473,591,1160,1214,1225,1231,1232],[429,461,477,591,1160,1214,1231,1232],[430,441,452,461,477,591,1160,1214,1231,1232],[422,431,448,454,591,1160,1214,1231,1232,1234,1254],[265,298,442,443,459,461,481,1160,1214,1231,1232],[994,995,1160,1214,1231,1232],[422,989,993,1160,1214,1231,1232],[265,422,989,993,1160,1214,1231,1232],[996,998,999,1160,1214,1231,1232],[997,1160,1214,1231,1232],[422,989,1160,1214,1231,1232],[422,989,993,997,1160,1214,1231,1232],[1000,1160,1214,1231,1232],[1160,1214,1231,1232,1300,1302,1306,1309,1311,1313,1315,1317,1319,1323,1327,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1359,1364,1366,1368,1370,1372,1375,1377,1382,1386,1390,1392,1394,1396,1399,1401,1403,1406,1408,1412,1414,1416,1418,1420,1422,1424,1426,1428,1430,1433,1436,1438,1440,1444,1446,1449,1451,1453,1455,1459,1465,1469,1471,1473,1480,1482,1484,1486,1489],[1160,1214,1231,1232,1300,1433],[1160,1214,1231,1232,1301],[1160,1214,1231,1232,1439],[1160,1214,1231,1232,1300,1416,1420,1433],[1160,1214,1231,1232,1421],[1160,1214,1231,1232,1300,1416,1433],[1160,1214,1231,1232,1305],[1160,1214,1231,1232,1321,1327,1331,1337,1368,1420,1433],[1160,1214,1231,1232,1376],[1160,1214,1231,1232,1350],[1160,1214,1231,1232,1344],[1160,1214,1231,1232,1434,1435],[1160,1214,1231,1232,1433],[1160,1214,1231,1232,1323,1327,1364,1370,1382,1418,1420,1433],[1160,1214,1231,1232,1450],[1160,1214,1231,1232,1299,1433],[1160,1214,1231,1232,1320],[1160,1214,1231,1232,1302,1309,1315,1319,1323,1339,1351,1392,1394,1396,1418,1420,1424,1426,1428,1433],[1160,1214,1231,1232,1452],[1160,1214,1231,1232,1313,1323,1339,1433],[1160,1214,1231,1232,1454],[1160,1214,1231,1232,1300,1309,1311,1375,1416,1420,1433],[1160,1214,1231,1232,1312],[1160,1214,1231,1232,1437],[1160,1214,1231,1232,1431],[1160,1214,1231,1232,1423],[1160,1214,1231,1232,1300,1315,1433],[1160,1214,1231,1232,1316],[1160,1214,1231,1232,1340],[1160,1214,1231,1232,1372,1418,1433,1457],[1160,1214,1231,1232,1359,1433,1457],[1160,1214,1231,1232,1323,1331,1359,1372,1416,1420,1433,1456,1458],[1160,1214,1231,1232,1456,1457,1458],[1160,1214,1231,1232,1341,1433],[1160,1214,1231,1232,1315,1372,1418,1420,1433,1462],[1160,1214,1231,1232,1372,1418,1433,1462],[1160,1214,1231,1232,1331,1372,1416,1420,1433,1461,1463],[1160,1214,1231,1232,1460,1461,1462,1463,1464],[1160,1214,1231,1232,1372,1418,1433,1467],[1160,1214,1231,1232,1359,1433,1467],[1160,1214,1231,1232,1323,1331,1359,1372,1416,1420,1433,1466,1468],[1160,1214,1231,1232,1466,1467,1468],[1160,1214,1231,1232,1318],[1160,1214,1231,1232,1441,1442,1443],[1160,1214,1231,1232,1300,1302,1306,1309,1313,1315,1319,1321,1323,1327,1331,1333,1335,1337,1339,1343,1345,1347,1349,1351,1359,1366,1368,1372,1375,1392,1394,1396,1401,1403,1408,1412,1414,1418,1422,1424,1426,1428,1430,1433,1440],[1160,1214,1231,1232,1300,1302,1306,1309,1313,1315,1319,1321,1323,1327,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1359,1366,1368,1372,1375,1392,1394,1396,1401,1403,1408,1412,1414,1418,1422,1424,1426,1428,1430,1433,1440],[1160,1214,1231,1232,1323,1418,1433],[1160,1214,1231,1232,1419],[1160,1214,1231,1232,1360,1361,1362,1363],[1160,1214,1231,1232,1362,1372,1418,1420,1433],[1160,1214,1231,1232,1360,1364,1372,1418,1433],[1160,1214,1231,1232,1315,1331,1347,1349,1359,1433],[1160,1214,1231,1232,1321,1323,1327,1331,1333,1337,1339,1360,1361,1363,1372,1418,1420,1422,1433],[1160,1214,1231,1232,1470],[1160,1214,1231,1232,1313,1323,1433],[1160,1214,1231,1232,1472],[1160,1214,1231,1232,1306,1309,1311,1313,1319,1327,1331,1339,1366,1368,1375,1403,1418,1422,1428,1433,1440],[1160,1214,1231,1232,1348],[1160,1214,1231,1232,1324,1325,1326],[1160,1214,1231,1232,1309,1323,1324,1375,1433],[1160,1214,1231,1232,1323,1324,1433],[1160,1214,1231,1232,1433,1475],[1160,1214,1231,1232,1474,1475,1476,1477,1478,1479],[1160,1214,1231,1232,1315,1372,1418,1420,1433,1475],[1160,1214,1231,1232,1315,1331,1359,1372,1433,1474],[1160,1214,1231,1232,1365],[1160,1214,1231,1232,1378,1379,1380,1381],[1160,1214,1231,1232,1372,1379,1418,1420,1433],[1160,1214,1231,1232,1327,1331,1333,1339,1370,1418,1420,1422,1433],[1160,1214,1231,1232,1315,1321,1331,1337,1347,1372,1378,1380,1420,1433],[1160,1214,1231,1232,1314],[1160,1214,1231,1232,1303,1304,1371],[1160,1214,1231,1232,1300,1418,1433],[1160,1214,1231,1232,1303,1304,1306,1309,1313,1315,1317,1319,1327,1331,1339,1364,1366,1368,1370,1375,1418,1420,1422,1433],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1321,1323,1327,1331,1337,1339,1364,1366,1375,1377,1382,1386,1390,1399,1403,1406,1408,1418,1420,1422,1433],[1160,1214,1231,1232,1411],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1327,1331,1333,1337,1339,1366,1375,1403,1416,1418,1420,1422,1433],[1160,1214,1231,1232,1300,1409,1410,1416,1418,1433],[1160,1214,1231,1232,1322],[1160,1214,1231,1232,1413],[1160,1214,1231,1232,1391],[1160,1214,1231,1232,1346],[1160,1214,1231,1232,1417],[1160,1214,1231,1232,1300,1309,1375,1416,1420,1433],[1160,1214,1231,1232,1383,1384,1385],[1160,1214,1231,1232,1372,1384,1418,1433],[1160,1214,1231,1232,1372,1384,1418,1420,1433],[1160,1214,1231,1232,1315,1321,1327,1331,1333,1337,1364,1372,1383,1385,1418,1420,1433],[1160,1214,1231,1232,1373,1374],[1160,1214,1231,1232,1372,1373,1418],[1160,1214,1231,1232,1300,1372,1374,1420,1433],[1160,1214,1231,1232,1481],[1160,1214,1231,1232,1319,1323,1339,1433],[1160,1214,1231,1232,1397,1398],[1160,1214,1231,1232,1372,1397,1418,1420,1433],[1160,1214,1231,1232,1309,1311,1315,1321,1327,1331,1333,1337,1343,1345,1347,1349,1351,1372,1375,1392,1394,1396,1398,1418,1420,1433],[1160,1214,1231,1232,1445],[1160,1214,1231,1232,1387,1388,1389],[1160,1214,1231,1232,1372,1388,1418,1433],[1160,1214,1231,1232,1372,1388,1418,1420,1433],[1160,1214,1231,1232,1315,1321,1327,1331,1333,1337,1364,1372,1387,1389,1418,1420,1433],[1160,1214,1231,1232,1367],[1160,1214,1231,1232,1310],[1160,1214,1231,1232,1309,1375,1433],[1160,1214,1231,1232,1307,1308],[1160,1214,1231,1232,1307,1372,1418],[1160,1214,1231,1232,1300,1308,1372,1420,1433],[1160,1214,1231,1232,1402],[1160,1214,1231,1232,1300,1302,1315,1317,1323,1331,1343,1345,1347,1349,1359,1401,1416,1418,1420,1433],[1160,1214,1231,1232,1332],[1160,1214,1231,1232,1336],[1160,1214,1231,1232,1300,1335,1416,1433],[1160,1214,1231,1232,1400],[1160,1214,1231,1232,1447,1448],[1160,1214,1231,1232,1404,1405],[1160,1214,1231,1232,1372,1404,1418,1420,1433],[1160,1214,1231,1232,1309,1311,1315,1321,1327,1331,1333,1337,1343,1345,1347,1349,1351,1372,1375,1392,1394,1396,1405,1418,1420,1433],[1160,1214,1231,1232,1483],[1160,1214,1231,1232,1327,1331,1339,1433],[1160,1214,1231,1232,1485],[1160,1214,1231,1232,1319,1323,1433],[1160,1214,1231,1232,1302,1306,1313,1315,1317,1319,1327,1331,1333,1337,1339,1343,1345,1347,1349,1351,1359,1366,1368,1392,1394,1396,1401,1403,1414,1418,1422,1424,1426,1428,1430,1431],[1160,1214,1231,1232,1431,1432],[1160,1214,1231,1232,1300],[1160,1214,1231,1232,1369],[1160,1214,1231,1232,1415],[1160,1214,1231,1232,1306,1309,1313,1317,1319,1323,1327,1331,1333,1335,1337,1339,1366,1368,1375,1403,1408,1412,1414,1418,1420,1422,1433],[1160,1214,1231,1232,1342],[1160,1214,1231,1232,1393],[1160,1214,1231,1232,1299],[1160,1214,1231,1232,1315,1331,1341,1343,1345,1347,1349,1351,1352,1359],[1160,1214,1231,1232,1315,1331,1341,1345,1352,1353,1359,1420],[1160,1214,1231,1232,1352,1353,1354,1355,1356,1357,1358],[1160,1214,1231,1232,1341],[1160,1214,1231,1232,1341,1359],[1160,1214,1231,1232,1315,1331,1343,1345,1347,1351,1359,1420],[1160,1214,1231,1232,1300,1315,1323,1331,1343,1345,1347,1349,1351,1355,1416,1420,1433],[1160,1214,1231,1232,1315,1331,1357,1416,1420],[1160,1214,1231,1232,1407],[1160,1214,1231,1232,1338],[1160,1214,1231,1232,1487,1488],[1160,1214,1231,1232,1306,1313,1319,1351,1366,1368,1377,1394,1396,1401,1424,1426,1430,1433,1440,1455,1471,1473,1482,1486,1487],[1160,1214,1231,1232,1302,1309,1311,1315,1317,1323,1327,1331,1333,1335,1337,1339,1343,1345,1347,1349,1359,1364,1372,1375,1382,1386,1390,1392,1399,1403,1406,1408,1412,1414,1418,1422,1428,1433,1451,1453,1459,1465,1469,1480,1484],[1160,1214,1231,1232,1425],[1160,1214,1231,1232,1395],[1160,1214,1231,1232,1328,1329,1330],[1160,1214,1231,1232,1309,1323,1328,1375,1433],[1160,1214,1231,1232,1323,1328,1433],[1160,1214,1231,1232,1427],[1160,1214,1231,1232,1334],[1160,1214,1231,1232,1429],[1152,1153,1154,1155,1156,1160,1214,1231,1232],[1152,1154,1160,1214,1231,1232],[1160,1214,1228,1231,1232,1264,1265],[1160,1214,1228,1231,1232,1264],[1160,1214,1215,1231,1232,1264,1277],[1160,1214,1231,1232,1279,1285],[1160,1214,1231,1232,1279,1280,1281],[1160,1214,1231,1232,1282],[1160,1214,1225,1228,1231,1232,1264,1287,1288,1289],[1160,1214,1231,1232,1266,1290,1292],[1160,1214,1231,1232,1294],[1160,1214,1231,1232,1295],[1160,1214,1231,1232,1492,1496],[1160,1214,1231,1232,1276],[1160,1214,1231,1232,1269],[1160,1214,1231,1232,1268,1270,1272,1273,1277],[1160,1214,1231,1232,1270,1271,1274],[1160,1214,1231,1232,1268,1271,1274],[1160,1214,1231,1232,1270,1272,1274],[1160,1214,1231,1232,1268,1269,1271,1272,1273,1274,1275],[1160,1214,1231,1232,1268,1274],[1160,1214,1231,1232,1270],[1160,1211,1212,1214,1231,1232],[1160,1213,1214,1231,1232],[1214,1231,1232],[1160,1214,1219,1231,1232,1249],[1160,1214,1215,1220,1225,1231,1232,1234,1246,1257],[1160,1214,1215,1216,1225,1231,1232,1234],[1160,1214,1217,1231,1232,1258],[1160,1214,1218,1219,1226,1231,1232,1235],[1160,1214,1219,1231,1232,1246,1254],[1160,1214,1220,1222,1225,1231,1232,1234],[1160,1213,1214,1221,1231,1232],[1160,1214,1222,1223,1231,1232],[1160,1214,1224,1225,1231,1232],[1160,1213,1214,1225,1231,1232],[1160,1214,1225,1226,1227,1231,1232,1246,1257],[1160,1214,1225,1226,1227,1231,1232,1241,1246,1249],[1160,1206,1214,1222,1225,1228,1231,1232,1234,1246,1257],[1160,1214,1225,1226,1228,1229,1231,1232,1234,1246,1254,1257],[1160,1214,1228,1230,1231,1232,1246,1254,1257],[1158,1159,1160,1161,1162,1163,1164,1165,1207,1208,1209,1210,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263],[1160,1214,1225,1231,1232],[1160,1214,1231,1232,1233,1257],[1160,1214,1222,1225,1231,1232,1234,1246],[1160,1214,1231,1232,1235],[1160,1214,1231,1232,1236],[1160,1213,1214,1231,1232,1237],[1160,1211,1212,1213,1214,1215,1216,1217,1218,1219,1220,1221,1222,1223,1224,1225,1226,1227,1228,1229,1230,1231,1232,1233,1234,1235,1236,1237,1238,1239,1240,1241,1242,1243,1244,1245,1246,1247,1248,1249,1250,1251,1252,1253,1254,1255,1256,1257,1258,1259,1260,1261,1262,1263],[1160,1214,1231,1232,1239],[1160,1214,1231,1232,1240],[1160,1214,1225,1231,1232,1241,1242],[1160,1214,1231,1232,1241,1243,1258,1260],[1160,1214,1226,1231,1232],[1160,1214,1225,1231,1232,1246,1247,1249],[1160,1214,1231,1232,1248,1249],[1160,1214,1231,1232,1246,1247],[1160,1214,1231,1232,1249],[1160,1214,1231,1232,1250],[1160,1211,1214,1231,1232,1246,1251,1257],[1160,1214,1225,1231,1232,1252,1253],[1160,1214,1231,1232,1252,1253],[1160,1214,1219,1231,1232,1234,1246,1254],[1160,1214,1231,1232,1255],[1160,1214,1231,1232,1234,1256],[1160,1214,1228,1231,1232,1240,1257],[1160,1214,1219,1231,1232,1258],[1160,1214,1231,1232,1246,1259],[1160,1214,1231,1232,1233,1260],[1160,1214,1231,1232,1261],[1160,1214,1219,1231,1232],[1160,1206,1214,1231,1232],[1160,1214,1231,1232,1262],[1160,1206,1214,1225,1227,1231,1232,1237,1246,1249,1257,1259,1260,1262],[1160,1214,1231,1232,1246,1263],[1160,1214,1226,1231,1232,1246,1264],[1160,1214,1228,1231,1232,1264,1291],[1160,1214,1231,1232,1507],[1160,1214,1231,1232,1267,1498,1500,1502,1508],[1160,1214,1229,1231,1232,1234,1246,1254,1264],[1160,1214,1226,1228,1229,1230,1231,1232,1234,1246,1498,1501,1502,1503,1504,1505,1506],[1160,1214,1228,1231,1232,1246,1507],[1160,1214,1226,1231,1232,1501,1502],[1160,1214,1231,1232,1257,1501],[1160,1214,1231,1232,1508,1509,1510,1511,1512],[1160,1214,1231,1232,1508,1509,1513],[1160,1214,1231,1232,1508,1509],[1160,1214,1228,1229,1231,1232,1234,1498,1508],[1036,1037,1038,1039,1040,1041,1042,1043,1044,1160,1214,1231,1232],[1160,1214,1231,1232,1515],[1008,1160,1214,1231,1232],[1007,1008,1013,1160,1214,1231,1232],[1009,1010,1011,1012,1014,1015,1016,1017,1018,1019,1020,1021,1022,1023,1024,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1046,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,1083,1084,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,1131,1132,1133,1134,1160,1214,1231,1232],[1008,1045,1160,1214,1231,1232],[1008,1039,1160,1214,1231,1232],[1008,1086,1160,1214,1231,1232],[1007,1160,1214,1231,1232],[1003,1004,1005,1006,1007,1008,1013,1135,1136,1137,1138,1142,1160,1214,1231,1232],[1013,1160,1214,1231,1232],[1005,1140,1141,1160,1214,1231,1232],[1007,1139,1160,1214,1231,1232],[1008,1013,1160,1214,1231,1232],[1003,1004,1160,1214,1231,1232],[1160,1214,1231,1232,1279,1283,1284],[1160,1214,1231,1232,1285],[1160,1214,1231,1232,1297,1494,1495],[1160,1214,1228,1231,1232,1246,1264],[1160,1214,1231,1232,1492],[1160,1214,1231,1232,1298,1493],[1085,1160,1214,1231,1232],[1160,1214,1231,1232,1491],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,1160,1214,1231,1232],[122,1160,1214,1231,1232],[78,81,1160,1214,1231,1232],[80,1160,1214,1231,1232],[80,81,1160,1214,1231,1232],[77,78,79,81,1160,1214,1231,1232],[78,80,81,238,1160,1214,1231,1232],[81,1160,1214,1231,1232],[77,80,122,1160,1214,1231,1232],[80,81,238,1160,1214,1231,1232],[80,246,1160,1214,1231,1232],[78,80,81,1160,1214,1231,1232],[90,1160,1214,1231,1232],[113,1160,1214,1231,1232],[134,1160,1214,1231,1232],[80,81,122,1160,1214,1231,1232],[81,129,1160,1214,1231,1232],[80,81,122,140,1160,1214,1231,1232],[80,81,140,1160,1214,1231,1232],[81,181,1160,1214,1231,1232],[81,122,1160,1214,1231,1232],[77,81,199,1160,1214,1231,1232],[77,81,200,1160,1214,1231,1232],[222,1160,1214,1231,1232],[206,208,1160,1214,1231,1232],[217,1160,1214,1231,1232],[206,1160,1214,1231,1232],[77,81,199,206,207,1160,1214,1231,1232],[199,200,208,1160,1214,1231,1232],[220,1160,1214,1231,1232],[77,81,206,207,208,1160,1214,1231,1232],[79,80,81,1160,1214,1231,1232],[77,81,1160,1214,1231,1232],[78,80,200,201,202,203,1160,1214,1231,1232],[122,200,201,202,203,1160,1214,1231,1232],[200,202,1160,1214,1231,1232],[80,201,202,204,205,209,1160,1214,1231,1232],[77,80,1160,1214,1231,1232],[81,224,1160,1214,1231,1232],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,1160,1214,1231,1232],[210,1160,1214,1231,1232],[671,790,1160,1214,1231,1232],[610,989,1160,1214,1231,1232],[674,1160,1214,1231,1232],[781,1160,1214,1231,1232],[777,781,1160,1214,1231,1232],[777,1160,1214,1231,1232],[625,667,668,669,670,672,673,781,1160,1214,1231,1232],[610,611,620,625,668,672,675,679,711,727,728,730,732,738,739,740,741,777,778,779,780,783,790,807,1160,1214,1231,1232],[743,745,747,748,758,760,761,762,763,764,765,766,768,770,771,772,773,776,1160,1214,1231,1232],[614,616,617,647,889,890,891,892,893,894,1160,1214,1231,1232],[617,1160,1214,1231,1232],[614,617,1160,1214,1231,1232],[898,899,900,1160,1214,1231,1232],[907,1160,1214,1231,1232],[614,905,1160,1214,1231,1232],[935,1160,1214,1231,1232],[923,1160,1214,1231,1232],[667,1160,1214,1231,1232],[610,648,1160,1214,1231,1232],[922,1160,1214,1231,1232],[615,1160,1214,1231,1232],[614,615,616,1160,1214,1231,1232],[655,1160,1214,1231,1232],[605,606,607,1160,1214,1231,1232],[651,1160,1214,1231,1232],[614,1160,1214,1231,1232],[646,1160,1214,1231,1232],[605,1160,1214,1231,1232],[614,615,1160,1214,1231,1232],[652,653,1160,1214,1231,1232],[608,610,1160,1214,1231,1232],[807,1160,1214,1231,1232],[663,664,1160,1214,1231,1232],[606,1160,1214,1231,1232],[943,1160,1214,1231,1232],[674,767,1160,1214,1231,1232],[674,675,742,1160,1214,1231,1232],[606,607,614,620,622,624,638,639,640,643,644,674,675,677,678,783,789,790,1160,1214,1231,1232],[674,685,1160,1214,1231,1232],[622,624,642,675,677,683,685,699,712,716,720,727,781,787,789,790,1160,1214,1231,1232],[683,684,1160,1214,1222,1231,1232,1234,1254],[674,675,744,1160,1214,1231,1232],[674,759,1160,1214,1231,1232],[674,675,746,1160,1214,1231,1232],[674,769,1160,1214,1231,1232],[675,774,775,1160,1214,1231,1232],[641,1160,1214,1231,1232],[749,750,751,752,753,754,755,756,1160,1214,1231,1232],[674,675,757,1160,1214,1231,1232],[610,611,620,685,687,691,692,693,694,695,722,724,725,726,728,730,731,732,736,737,739,781,790,807,1160,1214,1231,1232],[611,620,638,685,688,692,696,697,721,722,724,725,726,738,781,783,1160,1214,1231,1232],[738,781,790,1160,1214,1231,1232],[666,1160,1214,1231,1232],[611,648,1160,1214,1231,1232],[614,615,647,649,1160,1214,1231,1232],[645,650,654,655,656,657,658,659,660,661,662,665,989,1160,1214,1231,1232],[604,605,606,607,611,651,652,653,1160,1214,1231,1232],[825,1160,1214,1231,1232],[783,825,1160,1214,1231,1232],[614,638,670,825,1160,1214,1231,1232],[611,825,1160,1214,1231,1232],[741,825,1160,1214,1231,1232],[825,826,827,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,1160,1214,1231,1232],[627,825,1160,1214,1231,1232],[627,783,825,1160,1214,1231,1232],[825,829,1160,1214,1231,1232],[679,825,1160,1214,1231,1232],[682,1160,1214,1231,1232],[691,1160,1214,1231,1232],[680,687,688,689,690,1160,1214,1231,1232],[615,620,681,1160,1214,1231,1232],[685,1160,1214,1231,1232],[620,691,692,729,783,807,1160,1214,1231,1232],[682,685,686,1160,1214,1231,1232],[696,1160,1214,1231,1232],[620,691,1160,1214,1231,1232],[682,686,1160,1214,1231,1232],[620,682,1160,1214,1231,1232],[610,611,620,727,728,730,738,739,777,778,781,807,820,821,1160,1214,1231,1232],[70,608,610,611,614,615,617,620,621,622,623,624,625,645,646,650,651,653,654,655,666,667,668,669,670,673,675,676,677,679,680,681,682,685,686,687,688,689,690,691,692,693,694,695,698,699,701,702,703,704,705,706,707,708,709,710,711,713,716,717,720,722,723,724,725,726,727,728,729,730,733,734,738,739,740,741,777,781,783,786,787,788,789,790,800,801,803,804,805,806,807,821,822,823,824,888,895,896,897,901,902,903,904,906,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,936,937,938,939,940,941,942,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,976,977,978,979,980,981,982,983,984,986,988,1160,1214,1231,1232],[668,669,790,1160,1214,1231,1232],[668,790,969,1160,1214,1231,1232],[668,669,790,969,1160,1214,1231,1232],[790,1160,1214,1231,1232],[668,1160,1214,1231,1232],[617,618,1160,1214,1231,1232],[632,1160,1214,1231,1232],[611,1160,1214,1231,1232],[605,606,607,609,612,1160,1214,1231,1232],[810,1160,1214,1231,1232],[613,619,628,629,633,635,665,714,718,782,784,808,809,810,811,812,813,814,815,816,817,818,819,1160,1214,1231,1232],[604,608,609,612,1160,1214,1231,1232],[655,656,989,1160,1214,1231,1232],[625,714,783,1160,1214,1231,1232],[614,615,619,620,627,637,781,783,1160,1214,1231,1232],[627,628,630,631,634,636,638,781,783,785,1160,1214,1231,1232],[620,632,633,637,783,1160,1214,1231,1232],[620,626,627,630,631,634,636,637,638,655,656,663,664,665,715,719,781,782,785,989,1160,1214,1231,1232],[625,718,783,1160,1214,1231,1232],[605,606,607,625,638,783,1160,1214,1231,1232],[625,637,638,783,784,1160,1214,1231,1232],[627,783,807,808,1160,1214,1231,1232],[620,627,629,783,807,1160,1214,1231,1232],[604,605,606,607,609,613,620,626,637,638,783,1160,1214,1231,1232],[638,1160,1214,1231,1232],[605,625,635,637,638,783,1160,1214,1231,1232],[740,1160,1214,1231,1232],[741,781,790,1160,1214,1231,1232],[625,789,1160,1214,1231,1232],[625,982,1160,1214,1231,1232],[624,789,1160,1214,1231,1232],[620,627,638,783,828,1160,1214,1231,1232],[627,638,829,1160,1214,1231,1232],[670,1160,1214,1225,1226,1231,1232,1246],[783,1160,1214,1231,1232],[733,1160,1214,1231,1232],[611,620,726,733,734,781,790,806,1160,1214,1231,1232],[620,678,734,1160,1214,1231,1232],[611,620,638,722,724,735,806,1160,1214,1231,1232],[627,781,783,792,799,1160,1214,1231,1232],[734,1160,1214,1231,1232],[611,620,638,679,722,734,781,783,790,791,792,798,799,800,801,802,803,804,805,807,1160,1214,1231,1232],[620,627,638,655,678,781,783,791,792,793,794,795,796,797,798,806,1160,1214,1231,1232],[620,1160,1214,1231,1232],[627,783,799,807,1160,1214,1231,1232],[620,627,781,790,807,1160,1214,1231,1232],[620,806,1160,1214,1231,1232],[723,1160,1214,1231,1232],[620,723,1160,1214,1231,1232],[611,620,627,655,683,687,688,689,690,692,733,734,783,790,796,797,799,806,1160,1214,1231,1232],[611,620,655,725,733,734,781,790,806,1160,1214,1231,1232],[620,783,1160,1214,1231,1232],[620,655,722,725,733,734,781,790,806,1160,1214,1231,1232],[620,734,1160,1214,1231,1232],[620,622,624,642,675,677,683,699,712,716,720,723,732,738,781,787,789,1160,1214,1231,1232],[610,620,730,738,739,807,1160,1214,1231,1232],[611,685,687,691,692,693,694,695,722,724,725,726,736,737,739,807,975,1160,1214,1231,1232],[620,685,691,692,696,697,727,739,790,807,1160,1214,1231,1232],[611,620,685,687,691,692,693,694,695,722,724,725,726,736,737,738,790,807,989,1160,1214,1231,1232],[620,729,739,807,1160,1214,1231,1232],[678,735,1160,1214,1231,1232],[621,676,698,713,717,786,1160,1214,1231,1232],[621,638,642,643,781,783,790,1160,1214,1231,1232],[642,1160,1214,1231,1232],[622,677,679,699,716,720,783,787,788,1160,1214,1231,1232],[713,715,1160,1214,1231,1232],[621,1160,1214,1231,1232],[717,719,1160,1214,1231,1232],[626,676,679,1160,1214,1231,1232],[785,786,1160,1214,1231,1232],[636,698,1160,1214,1231,1232],[623,989,1160,1214,1231,1232],[620,627,638,700,711,783,790,1160,1214,1231,1232],[701,702,703,704,705,706,707,708,709,710,1160,1214,1231,1232],[620,738,781,783,790,1160,1214,1231,1232],[738,781,783,790,1160,1214,1231,1232],[705,1160,1214,1231,1232],[620,627,638,738,781,783,790,1160,1214,1231,1232],[622,624,638,641,667,677,682,686,699,716,720,727,734,778,783,787,789,800,801,802,803,804,805,807,829,975,976,977,985,1160,1214,1231,1232],[738,783,987,1160,1214,1231,1232],[1160,1172,1175,1178,1179,1214,1231,1232,1257],[1160,1175,1214,1231,1232,1246,1257],[1160,1175,1179,1214,1231,1232,1257],[1160,1214,1231,1232,1246],[1160,1169,1214,1231,1232],[1160,1173,1214,1231,1232],[1160,1171,1172,1175,1214,1231,1232,1257],[1160,1214,1231,1232,1264],[1160,1169,1214,1231,1232,1264],[1160,1171,1175,1214,1231,1232,1234,1257],[1160,1166,1167,1168,1170,1174,1214,1225,1231,1232,1246,1257],[1160,1175,1183,1191,1214,1231,1232],[1160,1167,1173,1214,1231,1232],[1160,1175,1200,1201,1214,1231,1232],[1160,1167,1170,1175,1214,1231,1232,1249,1257,1264],[1160,1175,1214,1231,1232],[1160,1171,1175,1214,1231,1232,1257],[1160,1166,1214,1231,1232],[1160,1169,1170,1171,1173,1174,1175,1176,1177,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1189,1190,1191,1192,1193,1194,1195,1196,1197,1198,1199,1201,1202,1203,1204,1205,1214,1231,1232],[1160,1175,1193,1196,1214,1222,1231,1232],[1160,1175,1183,1184,1185,1214,1231,1232],[1160,1173,1175,1184,1186,1214,1231,1232],[1160,1174,1214,1231,1232],[1160,1167,1169,1175,1214,1231,1232],[1160,1175,1179,1184,1186,1214,1231,1232],[1160,1179,1214,1231,1232],[1160,1173,1175,1178,1214,1231,1232,1257],[1160,1167,1171,1175,1183,1214,1231,1232],[1160,1175,1193,1214,1231,1232],[1160,1186,1214,1231,1232],[1160,1169,1175,1200,1214,1231,1232,1249,1262,1264]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"65c02b7f1cee6bdf10f3783c1a84456419557cb3e7ad71ac7d585aeee85d06c6","impliedFormat":1},{"version":"f77ae0e0c2486a9a1921b576186aab318d531790ba4afe51a1d1938bea0d0e46","impliedFormat":1},{"version":"97ea7c24274d59c6bd2afe5a9d3b1cd46b31148a33c088dcb85a466b7fb20efb","impliedFormat":1},{"version":"56fa8e4c913b87dce07bba3b1944c899203f2d73d8f24f84763a38ea761dab28","impliedFormat":1},{"version":"0c2883220e91f4f12e8b69ae4e94341d9421fa18fddec364b429598275fe7ecf","impliedFormat":1},{"version":"0e51e71f57a7f310b473cf605abd1c90b27edc5529d918a0a94ffd5adeeb4f99","impliedFormat":1},{"version":"8dd42fb90ace88d6e9362f55a82124b15c526cd0651b7e3335670d5ece08f945","impliedFormat":1},{"version":"baa62a3bdb377243f104bdafc67c6a1e3edd1dd509e6b81557d5313e6e3496f1","impliedFormat":1},{"version":"ea8d3a80f3e11b24014ff7593766be2563c8ccae4e025be9c2a379ef2b0225fa","impliedFormat":1},{"version":"c7df113891b650a97ae373406c50ea1c57437390f90e8647f8596384e2960a5b","impliedFormat":1},{"version":"c3aebc16c93fb1dfec163196503811d2545c73c6e68f9f896bde4d7734951c23","impliedFormat":1},{"version":"baa7f1bba68a6333fef836dc2a3623e18f1217894779492e75b200adbe4a972f","impliedFormat":1},{"version":"adc6974bb6588dfecba07e0384031c4b6569871db22597e3bd2e2caf8c0501db","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"f8fe31cc440a09d01bf7132e73d0e2f7cfba47ca73a9f781ba4b886e63aea1b1","impliedFormat":1},{"version":"9e93930b7ce225c5b85044742a68cac09fbcd283214bb9080e9d9c462cb58445","impliedFormat":1},{"version":"b420a50534e8769f04610534ddfbc5f71cec931f9c00ce6415db7d5a71517baa","impliedFormat":1},{"version":"b24bfbbf779e291257508c70875481181974c62c89814c7650063e881fa7c22e","impliedFormat":1},{"version":"2ee3ce165361ebb9223ac786585fec66c88812bd06e169477c6b720e0f5f59d6","impliedFormat":1},{"version":"240a7a364e8c97a56890cc9c062c21ad36be2c9e65ed43b4d93b9a09241e3a33","impliedFormat":1},{"version":"cecf0cfaa838d1f12ab65cd5c3c426b95bb13b88b4a9cbc2d4c42d6d975f894a","impliedFormat":1},{"version":"ea9fe951093a8ab15233d845aae4f93bc367e518baac34b297dd65e8608ab586","impliedFormat":1},{"version":"021cef4d09b60f8ec97375d7e6bc62291e0076e22aca63852dcadc4f6673ef67","impliedFormat":1},{"version":"83d612cff0b6f50adb30dcfe51fcace0af0db23720d83185ac2be36890b4e985","impliedFormat":1},{"version":"f756f3d6620edc34930b3b6d40c4c9c4b169ec2b04d244cfecdbc6c5b1dba8c7","impliedFormat":1},{"version":"86c68f74bc6b5c958923aaa57ebc2e0ef5605775866cc6a2bfdbecbf486e064a","impliedFormat":1},{"version":"f2bc549817ffbf49512f8c53b452104c2a44c062d41c755d40d1b52e8b883c68","impliedFormat":1},{"version":"24d16fab32c0f222f05292523b4e35d35ff91c24868da14ef35db915c4e540d4","impliedFormat":1},{"version":"59d390c69e5af05d3236dbab4ca1ff0c2b7b6e442bd60b15b7375a6b0e4659c1","impliedFormat":1},{"version":"cbe11f94b09ea1cd9e63f6788b76387fafa4ecfe88336a898a375f0407e4bc8b","impliedFormat":1},{"version":"2a242037a6c14b33ffb46ed3f2e290a4fde41718ef4abb13ceb9a75e7d0b3edf","impliedFormat":1},{"version":"775201eb23a9107b0eaa804fd99158faa1f03f9c315c0c41976f1b34a25b6848","impliedFormat":1},{"version":"9b20980bd1c6f5f9d4f11f4dd199b69c1b191753f1b074d1f200ef611da30c52","impliedFormat":1},{"version":"2d4ae2d55c3d16d2816e05d7a6426bfacc676fdb2dd548d51084cfa6379ca9c5","impliedFormat":1},{"version":"d319ef69302c708260a63f058f5dedf939b962644ea1cb82d4f24b4049925981","impliedFormat":1},{"version":"107278717e50dba422492278c86869043296559da6b2a73b5ed93b539933463c","impliedFormat":1},{"version":"95f774bba309c6e6fec38521ce3d1ebfcf45dc7261a9a814709495cc21e4fb7b","impliedFormat":1},{"version":"877fb70d6d0d1482a15ce5f9daf6bf8751c6cb27719674f25ab8e5f383806531","impliedFormat":1},{"version":"20bd88d48060076163f9575c8bbd7ef53e2cf7996c4bac3b149fbb30e7d82dc3","impliedFormat":1},{"version":"0bc8f2a952631d9cbb93b9c49285bc206691ddea06978275f3fd15c55c99ab53","impliedFormat":1},{"version":"ee9c6c2adb003d015686fba2b2d17601f6dacbd0e7690fdf30d5d5e16a0f47c2","impliedFormat":1},{"version":"f376b22ffd21433936a94cb4ff6122ab9f839901e5305bab4a3896b7583dd447","impliedFormat":1},{"version":"a40484872a5250ced1c91a0f07053e2028c6df9ffa4a2fb8c967e51d39e7fc73","impliedFormat":1},{"version":"e31e9f2216b16a2b8abce4277b543e5f637cd7f75ea006e64246c0e56fe5cc2f","impliedFormat":1},{"version":"bfa6297d90fc18a550adcc6404ca5429ca0834293adf8f3b52172c8f9259eb7b","impliedFormat":1},{"version":"c509fae865aa1b7d6130dfa384137cac6ae9340ca608e5353811c3d23c21d374","impliedFormat":1},{"version":"4aa6fab6e6e7079e8ee4db7ed4262e555e5bdc87e397b1ece85599ec3064f112","impliedFormat":1},{"version":"6ac5233c95cb514dd7bf4797260e1f221ed0ddfe4153f9b0267cc28d9af7d9b2","impliedFormat":1},{"version":"2a0610dbfda2c08616a7ada3968bbb1127a3b51528e2867ea08619033a0bd1a1","impliedFormat":1},{"version":"af3af8b4d6b75a75f16da562a5feb6dee4b71681bae698a362bd489f35ec01f0","impliedFormat":1},{"version":"f09a312da9e5bbcf6c4df67d18496b59065b48a8b0e3331b3a4ad0e2a7dd2412","impliedFormat":1},{"version":"69cf8c8ec67fed0b9e1d5aac6765f16d00bdc55340d42895ba9d60e97d3dc903","impliedFormat":1},{"version":"87f1dad8e25e29473f10281df9dcb28148ccaa11ef0c901daa9ceff07406f94d","impliedFormat":1},{"version":"7d6b83038eada85501eced905ca9a42e39001d8affd7f1b8aec7bd367eefa08f","impliedFormat":1},{"version":"905b0cea2b94535bd0a95ff9892e589bc07217cb00126be9bc937448e68490b7","impliedFormat":1},{"version":"bb362768aef0a1eacc2ec15be24555b8f4d201c6a415d8ee5efe4c5f3ca5952f","impliedFormat":1},{"version":"8c47c4dc236954c94f90c021e692f943e923e286043d1f1d0103943bac422f50","impliedFormat":1},{"version":"a2384708f89e165eb50ec60c4f2ae2b34f6741396847af1ea7030efde5ec7504","impliedFormat":1},{"version":"fd68ec89794433cb0171e5c6474654dc291789a3e3257c78bedd4e5836f59278","impliedFormat":1},{"version":"cc174e03736ad98cae4c795da28ba18194a8ed7e44eb72480acb8362b75eb96b","impliedFormat":1},{"version":"e0b2609c423883d2eccb3ee87034755351f20b3d1a1dc51f117cbeff4d3c0cc2","impliedFormat":1},{"version":"28d597f27780e0acede85d1e57a4974b192c88e176c70e11f6f32866601fc0da","impliedFormat":1},{"version":"16d6ebeae3b39565f5546efb7bf1c5dccc9c5f275baab445d979956fb1199d39","impliedFormat":1},{"version":"f23a3f3cd403758f611beb621b2560d1a3472725038473a820010487e5c23c02","impliedFormat":1},{"version":"7ce30c87b77917ba91db70476677b6fd3ed16b9ee5b7e5498b59d4d76f63efca","impliedFormat":1},{"version":"0fd31364612236bcab4deb1390440574608fb6da8946cae07acf8322bf3dd3e8","impliedFormat":1},{"version":"72e488dd47430be1907dc7e94845888505062c6a43bb7ad88446c056366e6cab","impliedFormat":1},{"version":"31481f5b6f5db0cbd7a58357acc76bbdb901d1fe4dc14960455c1e8ce8786ab8","impliedFormat":1},{"version":"2b3fdd1a1dca7c6d26a89c08c89948d30a7f34bf5af19b32364974a20137c323","impliedFormat":1},{"version":"0232ccf6acd7eedd387374b78026cf210c2fc8f84ba859d88abb7cfe99e4d6ba","impliedFormat":1},{"version":"d0d2cfabc04d096c0dd9e5f7514f9add50765c09ee14875565f275f9e2227434","impliedFormat":1},{"version":"dc58cf370cd637b7bfa342c946a40e3c461bba12093c5019fec7a79ee2c41caa","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"0e7e3fb90bc861cf8b519c79b7f8d502beef2207ff64502c9482f8457ab776bc","impliedFormat":1},{"version":"da47578e54017580d53eb150c8f6942ecf73ab44d03761fb4964cafe2f3637b3","impliedFormat":1},{"version":"4d46cbe3923f5b1eca2aeec855c84630e8c1f6a1215c02e76c69aea7f8d84565","impliedFormat":1},{"version":"f25658f5ef0dda34117d429357d954b3d64707b9476a2c5a4c995c247c8daac7","impliedFormat":1},{"version":"6d95e22c640c0df39aa6f0b995e1ab1b719f2197163245349a03cca8a16ea7ee","impliedFormat":1},{"version":"aac3f9c74191d0b40322fa5ffb64a7d16af2b82fd5c88405c8b864864c716715","impliedFormat":1},{"version":"47e80eb2d1171817e7da08682cdac09a690567b0ade757ea8a0dbbef4cd7ea48","impliedFormat":1},{"version":"c910cc9b9289bda821a270deb5a093b9c8520a0aeb32bd8b491a4d5bd8358b12","impliedFormat":1},{"version":"bd40c05c772c0312a51dfb9997c8ed83fea311fa4530d2f9883490bb8c1a40af","impliedFormat":1},{"version":"9d06e4a9ffbfb4a93a19ac1234db4beb97e94de08f8cb226b1af01d5ddde0718","impliedFormat":1},{"version":"09c6b1cd6813c0240f65db52fd46f598d7e529c37aa2985ca91504bcf4f1c7b0","impliedFormat":1},{"version":"c49e398ad1afba60487548dfa82d492f2dbd460842e195e7daf917666b2dd56f","impliedFormat":1},{"version":"233f8ec3666bd34686634570c86df0fe6128dd2ec8f682e0f46bddc982cdfd57","impliedFormat":1},{"version":"67ae5eaf9ef6ed32a30aced05943e9f83df215d62f80076f7cce3a55d08c8722","impliedFormat":1},{"version":"37b644d53b0a0712b1d122111e0efae8f1ba5b19ff151e049abaebdb3ceca636","impliedFormat":1},{"version":"0774385cc4251fb3e3c24cdee4587e5b8c85ef8f3446bdb4fe3ea3f70933f484","impliedFormat":1},{"version":"844bcb485d7c01e429f61f88f98f8ebe6cb31a8b2d25de3bc7a651ba7e7635c1","impliedFormat":1},{"version":"2e2bc02af7b535d267be8cecbc5831466dd71c5af294401821791b26cb363c47","impliedFormat":1},{"version":"986affe0f60331f20df7d708ee097056b0973d85422ec2ce754af19c1fa4e4b1","impliedFormat":1},{"version":"8f06c2807459f1958b297f4ad09c6612d7dbd7997c9ccfc6ea384f7538e0cea8","impliedFormat":1},{"version":"a7de30cd043d7299bfe9daaca3732b086e734341587c3e923b01f3fd74d31126","impliedFormat":1},{"version":"78f7fad319e4ac305ffe8e03027423279b53a8af4db305096aa75d446b1ec7af","impliedFormat":1},{"version":"3bf58923a1d27819745bdad52bca1bdced9fef12cc0c7f8a3fd5f4e0206b684a","impliedFormat":1},{"version":"8fc11f102df58f03d36fcbf0da3efa37c177f5f18f534c76179ceef0c3a672cd","impliedFormat":1},{"version":"e6935ab0f64a886e778c12a54ed6e9075ce7e7f44723ff0d52020a654b025a09","impliedFormat":1},{"version":"9829af7653a29f1b85d3dd688a6c6256087c0b737b85d84b630e7f93fd420faf","impliedFormat":1},{"version":"3d9d985d41e536fcf79fc95082925c2f1ae5ade75814ad2bd70c0944747f7ac4","impliedFormat":1},{"version":"03b419ce598d77fe4d1705c8281a797a908f57ce24a15d6174d7e7276d355a65","impliedFormat":1},{"version":"b0e6f1b1569779cf567317c2265d67460d1d3b4de4e79126533109d87dc16d50","impliedFormat":1},{"version":"18cb8be1326ffa4158abd8d84c9b0a189c0f52201f12f7af2d2af830c077f2bf","impliedFormat":1},{"version":"9c15e2b87cd3d8b18881bcc7d72b2d1dc6d5fe078b674ae12c12c19ec09a6a1a","impliedFormat":1},{"version":"0de68916e23c1e3df800f9f61cdd7c506ceb0656fcbc245ee9974aad26786781","impliedFormat":1},{"version":"80c538ee6a62249e77ba3de07efb23d4a7ca8946499c065261bf5079f1cd3cf0","impliedFormat":1},{"version":"ad4277862bdcbe1cf5c1e0d43b39770e1ccc033da92f5b9ff75ca8c3a03a569b","impliedFormat":1},{"version":"46a86c47400a564df04a1604fcac41cb599ebbada392527a1462c9dfe4713d78","impliedFormat":1},{"version":"f342dcb96ad26855757929a9f6632704b7013f65786573d4fdcd4da09f475923","impliedFormat":1},{"version":"dcd467dc444953a537502d9e140d4f2dc13010664d4216cc8e6977b3c5c3efa3","impliedFormat":1},{"version":"ca476924dfa6120b807a14e0a8aea7b061b8bdaa7eecdb303d7957c769102e96","impliedFormat":1},{"version":"848fe622fac070f8af9255e5d63fe829e3da079cae30be48fb6deb5dbf2c27c6","impliedFormat":1},{"version":"f3bb275073b5db8931c042d347fdce888775436a4774836221af57fdccec32ff","impliedFormat":1},{"version":"03cb8cb2f8ef002a5cac9b8c9a0c02e5fd09de128b9769c5b920a6cbfc080087","impliedFormat":1},{"version":"3e5ebc3a6a938a03a361f4cdb9a26c9f5a1bac82b46273e11d5d37cd8eccc918","impliedFormat":1},{"version":"a0a7800e71c504c21f3051a29f0f6f948f0b8296c9ebffeb67033822aabf92e0","impliedFormat":1},{"version":"6a219f12b3e853398d51192736707e320699a355052687bad4729784649ff519","impliedFormat":1},{"version":"4294a84634c56529e67301a3258448019e41c101de6b9646ea41c0ecdc70df92","impliedFormat":1},{"version":"80fc027e10234b809a9a40086114a8154657dcb8478d58c85ef850592d352870","impliedFormat":1},{"version":"27f24ba43083d406b372e9eff72dbc378afa0503dac1c1dd32499cc92fc9cb22","impliedFormat":1},{"version":"12594611a054ca7fe69962f690a4e79922d563b4b434716eb855d63a9d11a78f","impliedFormat":1},{"version":"1440eca2d8bc47ebdbc5a901b369de1b7b39c3297e5b4ac9631899f49ea9740b","impliedFormat":1},{"version":"fc9897fbada879bda954603ea204c6e5df913262a90ad848b5efaab182b58033","impliedFormat":1},{"version":"93443b2da120bea58eb48bd7da86559d4cf868dc2d581eebf9b48b51ba1e8894","impliedFormat":1},{"version":"94be5c5f8cf26bbf53554cba4b112e30134349b14f3c0fd0ede3b51ec25a7174","impliedFormat":1},{"version":"c2956026078814be6dc01515213aeb1eb816e81715085952bbc97b7c81fe3f6d","impliedFormat":1},{"version":"ac3a69c529ab256532825b08902aec65d0d88c66963e39ae19a3d214953aedc5","impliedFormat":1},{"version":"fe29108f3ddf7030c3d573c5226ebe03213170b3beca5200ca7cb33755184017","impliedFormat":1},{"version":"04d5bfb0a0eecd66c0b3f522477bf69065a9703be8300fbea5566a0fc4a97b9d","impliedFormat":1},{"version":"d5e3e13faca961679bed01d80bc38b3336e7de598ebf9b03ec7d31081af735ad","impliedFormat":1},{"version":"de05a488fb501de32c1ec0af2a6ddfe0fdef46935b9f4ffb3922d355b15da674","impliedFormat":1},{"version":"9f00f2bc49f0c10275a52cb4f9e2991860d8b7b0922bfab6eafe14178377aa72","impliedFormat":1},{"version":"7bd94408358caf1794ad24546ca0aa56f9be6be2d3245d0972fcb924b84a81fd","impliedFormat":1},{"version":"0e7c3660d1df392b6f6ae7fa697f0629ae4404e5b7bac05dd81136247aff32d5","impliedFormat":1},{"version":"b0b3636502dc0c50295f67747968f202f7b775eac5016329606d1bc2888d5dd9","impliedFormat":1},{"version":"f9ede7ea553dc197fd5d2604f62cda1be1aea50024ed73237d9e3144f0c93608","impliedFormat":1},{"version":"b1005ae67226fd9b7b65333d9a351917f517d421a0c63b7cde59bec3b8e3562f","impliedFormat":1},{"version":"c6688fd4c2a8a24c9b80da3660a7a06b93ed37d12d84f3ba4aa071ffc125e75f","impliedFormat":1},{"version":"20efc25890a0b2f09e4d224afaaf84917baa77b1aee60d9dfd11ff8078d73f93","impliedFormat":1},{"version":"d00b48096854d711cee688e7ff1ca796c1bf0d27ca509633c2a98b85cc23d47d","impliedFormat":1},{"version":"30f116226d0e53c6cbbdbc967479d5c8036935f771b2af51987c2e8d4cc7fc6a","impliedFormat":1},{"version":"8be98ffc3c54fb40b220796b796388f8ade50c8ba813a811bffccf98006566d5","impliedFormat":1},{"version":"4e82eed3c1b5084132708ce030f8ec90b69e4b7bb844dcaacd808045ae24c0e2","impliedFormat":1},{"version":"eae8c7cbcb175b997ce8e76cd6e770eca5dba07228f6cb4a44e1b0a11eb87685","impliedFormat":1},{"version":"b3ded8e50b3cdf548d7c8d3b3b5b2105932b04a2f08b392564f4bc499407e4e5","impliedFormat":1},{"version":"4ed2d8fb4c598719985b8fbef65f7de9c3f5ae6a233fc0fe20bd00193c490908","impliedFormat":1},{"version":"6da51da9b74383988b89e17298ceca510357f63830f78b40f72afe4d5a9cee3e","impliedFormat":1},{"version":"512a079a1a3de2492c80aa599e173b2ea8cc6afb2800e3e99f14330b34155fe1","impliedFormat":1},{"version":"f281f20b801830f2f94b2bc0b18aba01d4fb50c2f4a847ffcadff39de31c8b80","impliedFormat":1},{"version":"738ddac5ab5b61d70d3466f3906d6b3c83c8786e922c6e726a6597296181ae87","impliedFormat":1},{"version":"90d202ace592f7b51b131a5890ec93e4df774c8677a485391c280cef0ea53f48","impliedFormat":1},{"version":"b34e1861949a545916696ef40f4a7fe71793661e72dd4db5e04cacc60ef23f7a","impliedFormat":1},{"version":"dd3f42651cfa863ded8fa0b0608fb892b826e254a0a6cbc447388cb5e11bffd5","impliedFormat":1},{"version":"8e3842ba15690ab4b340893a4552a8c3670b8f347fbb835afe14be98891eef10","impliedFormat":1},{"version":"e7b9673dcd3d1825dbd70ad1d1f848d68189afc302ecdafc6eb30cbe7bd420b5","impliedFormat":1},{"version":"15911b87a2ad4b65b30c445802d55fa6186c66068603113042e8c3dfa4a35e2a","impliedFormat":1},{"version":"a9dc7b8d06b1f69d219f61fa3f7ac621e6e3a8d5a430e800cd7d1a755cc058c3","impliedFormat":1},{"version":"f8c496656cb5fd737931b4d6c60bd72a97c48f37c07dcb74a593dd24ac3f684a","impliedFormat":1},{"version":"f2cf1d33c458ac091983e5dac1613f264d48a69b281e43c5b055321320082358","impliedFormat":1},{"version":"0fa43815d4b05eafe97c056dae73c313f23a9f00b559f1e942d042c7a04db93c","impliedFormat":1},{"version":"e769097e5ea39d2ed548eeb9c093e90f26dde167f95eb80fbdd4efb041778387","impliedFormat":1},{"version":"a02db6aabaa291a85cf52b0c3f02a75301b80be856db63d44af4feea2179f37b","impliedFormat":1},{"version":"e1e94e41f47a4496566a9f40e815687a2eca1e7b7910b67704813cf61248b869","impliedFormat":1},{"version":"557ba6713b2a6fefd943399d5fb6c64e315dc461e9e05eaa6300fdbeeda5d0a1","impliedFormat":1},{"version":"1f7eeb69504ad94d16f4731f707d2af879adc7487dc35b146e2d86825bb779b4","impliedFormat":1},{"version":"c1b5c480e4d38377c82f9f517c12014d3d4475c0e607c4845e0836e0e89bbf7d","impliedFormat":1},{"version":"1a014a8365354f37ea245349a4361d3b46589be7921fe7f1dbf408cc0f084bab","impliedFormat":1},{"version":"87fc4a324b9fa5c9b93a13b5ae1b55ea390929ec1b0450afebff9620921a9cc1","impliedFormat":1},{"version":"73c0b8df0e282e26a53820f53502847a043bd77a9cda78782207d5349842fba2","impliedFormat":1},{"version":"5c7391307b9a7c540d678f015d687c277269aa9171f441467e20bab15694db40","impliedFormat":1},{"version":"082aa8710bbf3d16b877e798341c69599fdd487b4dc34d374ab3e3ec6d46f690","impliedFormat":1},{"version":"acb9367f45f12526ea808d6da48ab77eee1ceb2b6fe47ab02bbcc7cce4c972b0","impliedFormat":1},{"version":"d6db974317fd9ff66a923555464850dcf87976054a7adacf09d53323f64686d1","impliedFormat":1},{"version":"79f4812dffe8f933c12c341d68eee731cb6dd7f2a4bb20097c411560c97a6263","impliedFormat":1},{"version":"c446e8f3bd5b16e121252e05ba7696524ca95ec3f819c12fb8c37e7836744769","impliedFormat":1},{"version":"23386bb0bcb20fcb367149f22f5c6468b53f1987e86fd25de875ffb769e4d241","impliedFormat":1},{"version":"3913806467307a4bd874b105ac3e79ac261ab986fbdce7f0feea26cbcee95765","impliedFormat":1},{"version":"a9417a980a4300048d179d0295e5b7dd76e4db7b566344779ee576cbd084b3c4","impliedFormat":1},{"version":"b96760c030c41fa078b35ea05fc3e7e4d2a81710a8329271d42b6abc110d5dbe","impliedFormat":1},{"version":"ef8ff23609cec5eb95e2beb98132ad90c0c5075415b50228b12f89ffaf981a4a","impliedFormat":1},{"version":"80bbc9365ca8398c69eae77cdf7284d07192a17dacf1904095ab4c89f4520a5d","impliedFormat":1},{"version":"174a3381f98fc78c451528cb1aa1baaa37a51852ec6fa90d42efd876301537c1","impliedFormat":1},{"version":"2c0de27d99a9331cfac8bc5c6bbd174e0593628bf3df268faa6c4188962a9549","impliedFormat":1},{"version":"1a17bcbc124a098987f7b1adbbcd412f8372ecb37e352b1c50165dac439eee5e","impliedFormat":1},{"version":"0ef49170735d9e5902f55b72465accadd0db93cae52544e3c469cbc8fbdbf654","impliedFormat":1},{"version":"f68a30e88dfa7d12d8dd4609bc9d5226a31d260bf3526de5554feed3f0bf0cb6","impliedFormat":1},{"version":"d8acc6f92c85e784acbbc72036156a4c1168a18cba5390c7d363040479c39396","impliedFormat":1},{"version":"1fffef141820a0556f60aa6050eccb17dbcdc29ecd8a17ee4366573fd9c96ce3","impliedFormat":1},{"version":"d2598c755c11170e3b5f85cd0c237033e783fd4896070c06c35b2246879612b8","impliedFormat":1},{"version":"8d2044a28963c6c85a2cf4e334eb49bb6f3dd0c0dfe316233148a9be74510a0e","impliedFormat":1},{"version":"2660eb7dba5976c2dcbea02ec146b1f27109e7bee323392db584f8c78a6477dd","impliedFormat":1},{"version":"54a4f21be5428d7bff9240efb4e8cae3cb771cad37f46911978e013ff7289238","impliedFormat":1},{"version":"10837df0382365c2544fb75cb9a8f6e481e68c64915362941b4ea4468fd0ef61","impliedFormat":1},{"version":"cc4483c79688bd3f69c11cb3299a07d5dcf87646c35b869c77cde553c42893cf","impliedFormat":1},{"version":"faf76eeb5dd5d4d1e37c6eb875d114fa97297c2b50b10e25066fed09e325a77a","impliedFormat":1},{"version":"b741703daf465b44177ef31cc637bde5cd5345e6c048d5807108e6e868182b01","impliedFormat":1},{"version":"9c3e59360437a3e2a22f7f1032559a4c24aba697365b62fb4816b7c8c66035b8","impliedFormat":1},{"version":"393446ab3f0dd3449ad6fd4c8abd0c82b711c514b9e8dfbf75222bbc48eb0cb6","impliedFormat":1},{"version":"ea02a962453ec628e886a6c5d0fc03bf4da9dfa38e1f8d42e65e07b2651edd85","impliedFormat":1},{"version":"5eb09226bfa1928721a438e37c004647fc19d8d1f4817bddcc350e57fb32935f","impliedFormat":1},{"version":"5994ed389d7fc28c03dad647ecb62e5349160bde443b0c7a54e0e10d6368bcbd","impliedFormat":1},{"version":"e1ff7df643e1aa1dbf1863113a913358844ed66f1af452e774834b0008e578b2","impliedFormat":1},{"version":"c5114285d0283d05e09cd959e605a4f76e5816c2fbe712241993fd66496083e5","impliedFormat":1},{"version":"2752e949c871f2cbd146efa21ebc34e4693c0ac8020401f90a45d4e150682181","impliedFormat":1},{"version":"c349cea980e28566998972522156daac849af8a9e4a9d59074845e319b975f5d","impliedFormat":1},{"version":"0370682454d1d243b75a7c7031bc8589531a472e927b67854c1b53b55ee496ea","impliedFormat":1},{"version":"cf6b4dbb5a1ac9ece24761c3a08682029851b292b67113a93b5e2bfd2e64e49d","impliedFormat":1},{"version":"baa9fbd480342a1d5e3e11ba3629f2826d18d4a765f1f9693ab87bfb3ce54adb","impliedFormat":1},{"version":"cb2fea712720bb7951d7e5d63db8670bf4a400d3e0fb197bceb6ef44efe36ec3","impliedFormat":1},{"version":"1b4fcfc691980d63a730d47d5309d9f85cdddc18a4c83f6e3af20936d103e3ff","impliedFormat":1},{"version":"ef19d5fe42541f8b529bccd10f488d12caefa3b57a0deb1ed6143219cba716b4","impliedFormat":1},{"version":"84b5e6269d7cf53008a479eeb533ef09d025eafb4febe3729301b8d4daf37ff2","impliedFormat":1},{"version":"04196b5d9edd60b9648daa329c3355d7c95f33b7e520e7835eb21002174a8b8c","impliedFormat":1},{"version":"637c0d7d8cedbc64a3c228c3fa6bef884746f7a16a631e7532f9828c9ac06b8a","impliedFormat":1},{"version":"9e665aea79b702fd612ffb7ac741e4160d35d8d696a789129ebcbaea003beb3d","impliedFormat":1},{"version":"c8eeffebe6c2c6800f73aa59d1436d4dadbad7f3ddda02a831ffa66114c3122d","impliedFormat":1},{"version":"caf3f141f93cbf527ad18ecce326311d70342fe1e16ce93e5ce8d6bcdf02bd48","impliedFormat":1},{"version":"4283d88023e6e9645626475e392565464eae99068f17e324cfc40a27d10fe94f","impliedFormat":1},{"version":"51e3b73dea24e2a9638345fb7a2a7ef5d3aa2e7a285ad6bd446b45fab826def1","impliedFormat":1},{"version":"77c4c9f71f3736ed179043a72c4fad9832023855804fbe5261a956428b26a7a6","impliedFormat":1},{"version":"7232467057ec57666b884924f84fd21cd3a79cc826430c312e61a5bc5758f879","impliedFormat":1},{"version":"624f5dbfd76f2d77f20ace318e8cb918608a296106e55587fb443ef3030c595d","impliedFormat":1},{"version":"c78bb1275f640e4902ad5c3383ab4f54f73322a59c95924ab671125ba9546294","impliedFormat":1},{"version":"1cb0838371e8213ce116a1497bb86bcf01a11a755b77587980ee7cfb2d625ece","impliedFormat":1},{"version":"f5d29fd7099274774c203d94d8c0238770ab411b922b978be15a2c3ec8ab845c","impliedFormat":1},{"version":"6d99b5b226a65890ce27796e086d58c6351f601757c1e9f217a69e944d05e7e6","impliedFormat":1},{"version":"10b322f5bc001bec9bf08513c978c120adb0abe3c82793b11bdaf75873426c05","impliedFormat":1},{"version":"51b4efdc8dc92bc6ae2c44d4edad265decad70e8577d5653fc7f85200cbf6c6e","impliedFormat":1},{"version":"c3fa40ac56aa2598d9133c90b115eeb39bbad56c6dfca350dc8435b8b107fe26","impliedFormat":1},{"version":"cc542183b68b048a8cf64eb6231b3d0852f7f4d0191d4637c9d1d4c3f44b83b5","impliedFormat":1},{"version":"4b954a3d432dca82c787c06d2f1cca0fe673a4b440c5e0195429bd1fe43b324a","impliedFormat":1},{"version":"c6fd975d319a70d6ba90bf38c34ac8efebe531214038fe561a27f89f2203f78e","impliedFormat":1},{"version":"a818204639081cf07d80885b88aff5120e5a4135211162f5e08cfc00ef3bf5b6","impliedFormat":1},{"version":"c194ca06da86829b836bb188dffc05543bbea3cbda797667c7a7cade2f907646","impliedFormat":1},{"version":"6df6afb0424a7c7581ee98a9333d30e893b943d0a4709b88f18c252ddc3101b4","impliedFormat":1},{"version":"59c2cbf84c22fae87f4f506f36a7258a72b931b602115067dfd6008ee526f8c0","impliedFormat":1},{"version":"1e09cd1bc6b6baa0733e1e799c4533105ea79cbb109937c71e8c870e14693216","impliedFormat":1},{"version":"0b60cfcd94fa9bd9fa58176650c7e4c72f99b9d30a50d0b55aa08b510276af96","impliedFormat":1},{"version":"ba25681012e5117866a2456dd3557e24aa5a946ed641126aa4469880db526883","impliedFormat":1},{"version":"2b1e058a8c3944890c7ce7c712ecfd0f2645420ee67537ac031d7afe6feda6e0","impliedFormat":1},{"version":"175dbcd1f226eebd93fd9628e9180fb537bb1171489b33db7b388ef0f4e73b37","impliedFormat":1},{"version":"69ec6331ee3a7cd6bade5d5f683f1705c1041ff77432aa18c50d2097e61f93db","impliedFormat":1},{"version":"06f34a0f2151b619314fc8a54e4352a40fd5606bda50623c326c3be365cc1ef9","impliedFormat":1},{"version":"6c6dcb49af3d72d823334f74a554b2f9917e3a59b3219934b7ae9e6b03a3e8b4","impliedFormat":1},{"version":"9628be9799a060a3f7fe2e1f08fab2b21cdd7e97a2bbc3ef2f0029be46e0d7da","impliedFormat":1},{"version":"3d24aec533fe2f035b0675ba1c0e55e8680a714fff2a517e0fb388279476701c","impliedFormat":1},{"version":"224e2edff4c1e67d9c5179aa70e31d0dc7dd4ea5a9e80ffde121df9e5254eef2","impliedFormat":1},{"version":"e324c3b2058f9525cf5c11915284f9dfdf7550c98f103429b271fe723c4f8e14","impliedFormat":1},{"version":"70a3659d557bb683091f9d318762a330a3acb3954f5e89e5134d24c9272192f1","impliedFormat":1},{"version":"d9fe2c804f7db2f19e4323601278b748dc2984798f265c37cd37bb84e6c88ab8","impliedFormat":1},{"version":"3525647a73ae2124fa8f353f0a078b44ff1ee6f82958c2bb507de61575f12fff","impliedFormat":1},{"version":"d7238315cbd18ebeed93f41ad756a0ed9759824b9b158c3d7a1e0b71682d8966","impliedFormat":1},{"version":"eeba7376ce9721610d3282a4159f3c60154b7b3877fb251f7b3211b085cfdc18","impliedFormat":1},{"version":"643efb9d7747ee1dd50ff5bd4b7a87351157e55988c7d2f90ffbdf124f063931","impliedFormat":1},{"version":"788c870cac6b39980a5cc41bf610b1873952ecdd339b781f0687d42682ffc5dc","impliedFormat":1},{"version":"d51a2e050c8a131b13ec9330a0869e5ac75b9ac4ebde52d5f474e819510b5263","impliedFormat":1},{"version":"b694593470a9bf370987e5b0757d5a9a88a46a703c9cf7921969f3379ce16148","impliedFormat":1},{"version":"6c034655fa83236bd779cacfc1d5b469d6e2150a1993e66ecca92376a8b2c6a7","impliedFormat":1},{"version":"6bd6933efe9d6263d9f1a534a28a8f88b1e4c331b95d85d39350cf02eca8dce0","impliedFormat":1},{"version":"658cf468a05b2b591fcd5455a76d9927face59ac4a21b4965982b3c234f5d289","impliedFormat":1},{"version":"6bf893d1b824bde22ee5880c0c760c1dd0a5163c38d22311441a3341b6965d2d","impliedFormat":1},{"version":"579d9d3c25058b854a6f7cc6368a473efcaa0740f45db13cb508761d35fc0156","impliedFormat":1},{"version":"68705604f0666ba3862670153eb4f965c3079415e7ab30a35b3126e36277dc9e","impliedFormat":1},{"version":"28b415e70f9da0346545b7d2bcf361844a8e5778bd6b45bc1a2859f99700ff5b","impliedFormat":1},{"version":"a905f2f6785e3971bd97c42191394209d97f2aefb11841f7353dd9789821fa8c","impliedFormat":1},{"version":"e099c5ebddf80ae7285d380c7dd3b5d49c1347346ced51ae121b846833a8d102","impliedFormat":1},{"version":"aec91730b9f4d83758b4a45596317d34d6ecdbe9330a44629f53af47641b96ee","impliedFormat":1},{"version":"2321197343254570a8d4c868572059bfdfb683cf9d4099b6d4694250dac69471","impliedFormat":1},{"version":"18a3be03c31356b60ea1090bcc905d99e4983ca911cc70b34ad0b9b4d4e050c3","impliedFormat":1},{"version":"9833a67663f960dc2d1908a19365ddde55c0651235596ac60d7078a9be6f6e56","impliedFormat":1},{"version":"2bcb8920601b80911430979b6db4a58a7908a31334e74e4e22b75c65edce3587","impliedFormat":1},{"version":"c3186dc74d62d0fb6fba29841ccbf995614992526c37fac5c082d0f28b351e54","impliedFormat":1},{"version":"2306daed18f7f59542a99857a678ef818058eefa30c2a556af123a1cf53889cd","impliedFormat":1},{"version":"b41ed9285a09710807ce2c423e038dfe538e46e9183c0c05aadc27bfb9ae256a","impliedFormat":1},{"version":"56b9f9de03f28eb5922750a213d3f47b21a4f00a48c7c9b89bf1733623873d3a","impliedFormat":1},{"version":"2bdd736078e445858cb1d9df809ff3a2f00445d78664dd70b6794fb2156bdd53","impliedFormat":1},{"version":"2653fb2893a65c610ec17d0e454e2b16726f16118425f0bc8a38c801943ef7f5","impliedFormat":1},{"version":"74ffa4541a56571f379060acaf9ab86da6c889dfe1f588425807e0117e62bba5","impliedFormat":1},{"version":"cf4dc15ca9dc6c0995dd2a9264e5ec37d09d9d551c85f395034e812abdf60a99","impliedFormat":1},{"version":"73e8b003f39c7ce46d2811749dab1dd1b309235fd5c277bd672c30a98b5cf90f","impliedFormat":1},{"version":"4cb49e79595c6413fcb01af55a8a574705bf385bd2ec5cf8b777778952e2914a","impliedFormat":1},{"version":"d6b44382b2670f38c8473e7c16b6e8a9bfa546b396b920afc4c53410eeb22abf","impliedFormat":1},{"version":"3b5c6f451b7ad87e3fcd2008d3a6cb69bd33803e541e9c0fe35754201389158f","impliedFormat":1},{"version":"8329556a2e85e3c3ff3dff43141790ff624b0f5138cedec5bb793164cf8b088f","impliedFormat":1},{"version":"4c889ce7e61ca7f3b7733e0d2be80b3af373e080c922e04639aa25f22963ae63","impliedFormat":1},{"version":"2239a8cd90c48e0b5c075e51099e7e3b4fc3d4741e4d9cc4410d2544d4216946","impliedFormat":1},{"version":"f5aa57712223d7438799be67b0c4a0e5ac3841f6397b5e692673944374f58a83","impliedFormat":1},{"version":"774c37f8faed74c238915868ccc36d0afedfbafb1d2329d6a230966457f57cbd","impliedFormat":1},{"version":"bc41b711477270e8d6f1110d57863284d084b089a22592c7c09df8d4cc3d1d20","impliedFormat":1},{"version":"0c792fe4e5f383b4f085a0033553fb84ed9322b7923fd59d4575aa43135e050d","impliedFormat":1},{"version":"228ed3721f42cc25bfebceef33754ce4766414d975ff71d012f01f141dbe3549","impliedFormat":1},{"version":"08985cdb65bbfe3c70d0037794a3d0f0a5613f55c278c77277a7acc17205db57","impliedFormat":1},{"version":"22bdefb6b2107006ab203073218566443a52ab65eb5e4e8e86c3d38efe776588","impliedFormat":1},{"version":"0f01b48cee64391fabef3f344e6e86197dc921f0f88a6d45d133ac58283d9690","impliedFormat":1},{"version":"c86fea295c21ea01c93410eba2ec6e4f918b97d0c3bf9f1bb1960eabe417e7eb","impliedFormat":1},{"version":"05d41b3e7789381ff4d7f06d8739bf54cc8e75b835cb28f22e59c1d212e48ff3","impliedFormat":1},{"version":"6fbcfc270125b77808679b682663c7c6ad36518f5a528c5f7258bcd635096770","impliedFormat":1},{"version":"9d3bd4ee558de42e9d8434f7293b404c4b7a09b344e77c36bbe959696328d594","impliedFormat":1},{"version":"f63be9b46a22ee5894316cf71a4ba7581809dd98cf046109060a1214ee9e2977","impliedFormat":1},{"version":"dd3cc41b5764c9435b7cae3cc830be4ee6071f41a607188e43aa1edeba4fbb3e","impliedFormat":1},{"version":"b2dbb9485701a1d8250d9a35b74afd41b9a403c32484ed40ed195e8aa369ae70","impliedFormat":1},{"version":"5aa7565991c306061181bd0148c458bcce3472d912e2af6a98a0a54904cd84fc","impliedFormat":1},{"version":"9629e70ae80485928a562adb978890c53c7be47c3b3624dbb82641e1da48fd2f","impliedFormat":1},{"version":"c33d86e1d4753d035c4ea8d0fdb2377043bc894e4227be3ceabc8e6a5411ab2e","impliedFormat":1},{"version":"f9ec74382c95cbc85804daf0e9dabed56511a6dfb72f8a2868aa46a0b9b5eafc","impliedFormat":1},{"version":"1ff7a67731e575e9f31837883ddfc6bfcef4a09630267e433bc5aea65ad2ced4","impliedFormat":1},{"version":"0c4f6b6eb73b0fa4d27ce6eef6c2f1e7bd93d953b941e486b55d5d4b22883350","impliedFormat":1},{"version":"af9692ce3b9db8b94dcfbaa672cb6a87472f8c909b83b5aeea043d6e53e8b107","impliedFormat":1},{"version":"782f2628a998fd03f4ccbe9884da532b8c9be645077556e235149ca9e6bd8c7d","impliedFormat":1},{"version":"269b7db8b769d5677f8d5d219e74ea2390b72ea2c65676b307e172e8f605a74a","impliedFormat":1},{"version":"ae731d469fae328ba73d6928e4466b72e3966f92f14cd1a711f9a489c6f93839","impliedFormat":1},{"version":"90878ed33999d4ff8da72bd2ca3efb1cde76d81940767adc8c229a70eb9332b2","impliedFormat":1},{"version":"d7236656e70e3a7005dba52aa27b2c989ba676aff1cab0863795ac6185f8d54f","impliedFormat":1},{"version":"e327901e9f31d1ad13928a95d95604ee4917d72ad96092da65612879d89aba42","impliedFormat":1},{"version":"868914e3630910e58d4ad917f44b045d05303adc113931e4b197357f59c3e93e","impliedFormat":1},{"version":"7d59adb080be18e595f1ce421fc50facd0073672b8e67abac5665ba7376b29b9","impliedFormat":1},{"version":"275344839c4df9f991bcf5d99c98d61ef3ce3425421e63eeb4641f544cb76e25","impliedFormat":1},{"version":"c4f1cc0bd56665694e010a6096a1d31b689fa33a4dd2e3aa591c4e343dd5181c","impliedFormat":1},{"version":"81c3d9b4d90902aa6b3cbd22e4d956b6eb5c46c4ea2d42c8ff63201c3e9676da","impliedFormat":1},{"version":"5bfc3a4bd84a6f4b992b3d285193a8140c80bbb49d50a98c4f28ad14d10e0acc","impliedFormat":1},{"version":"a7cf6a2391061ca613649bc3497596f96c1e933f7b166fa9b6856022b68783ab","impliedFormat":1},{"version":"864c844c424536df0f6f745101d90d69dd14b36aa8bd6dde11268bb91e7de88e","impliedFormat":1},{"version":"c74a70a215bbd8b763610f195459193ab05c877b3654e74f6c8881848b9ddb7f","impliedFormat":1},{"version":"3fa94513af13055cd79ea0b70078521e4484e576f8973e0712db9aab2f5dd436","impliedFormat":1},{"version":"48ffc1a6b67d61110c44d786d520a0cba81bb89667c7cdc35d4157263bfb7175","impliedFormat":1},{"version":"7cb4007e1e7b6192af196dc1dacd29a0c3adc44df23190752bef6cbbc94b5e0b","impliedFormat":1},{"version":"3d409649b4e73004b7561219ce791874818239913cac47accc083fad58f4f985","impliedFormat":1},{"version":"051908114dee3ca6d0250aacb0a4a201e60f458085177d5eda1fc3cde2e570f3","impliedFormat":1},{"version":"3e8240b75f97eb4495679f6031fb02ad889a43017cae4b17d572324513559372","impliedFormat":1},{"version":"d82609394127fb33eed0b58e33f8a0f55b62b21c2b6c10f1d7348b4781e392cb","impliedFormat":1},{"version":"b0f8a6436fbaf3fb7b707e2551b3029650bfaeb51d4b98e089e9a104d5b559b5","impliedFormat":1},{"version":"eae0ac4f87d56dcf9fbcf9314540cc1447e7a206eee8371b44afa3e2911e520c","impliedFormat":1},{"version":"b585e7131070c77b28cc682f9b1be6710e5506c196a4b6b94c3028eb865de4a7","impliedFormat":1},{"version":"b92ac4cc40d551450a87f9154a8d088e31cff02c36e81db2976d9ff070ba9929","impliedFormat":1},{"version":"6f99b4a552fbdc6afd36d695201712901d9b3f009e340db8b8d1d3415f2776f5","impliedFormat":1},{"version":"43700e8832b12f82e6f519b56fae2695e93bb18dddb485ddea6583a0d1482992","impliedFormat":1},{"version":"e8165ea64af5de7f400d851aeea5703a3b8ac021c08bebc958859d341fa53387","impliedFormat":1},{"version":"6db546ea3ced87efda943e6016c2a748e150941a0704af013dfe535936e820e1","impliedFormat":1},{"version":"f521c4293b6d8f097e885be50c2fef97de3dd512ad26f978360bb70c766e7eae","impliedFormat":1},{"version":"a0666dfd499f319cc51a1e6d9722ed9c830b040801427bbdd2984b73f98d292a","impliedFormat":1},{"version":"a7d86611d7882643dd8c529d56d2e2b698afd3a13a5adc2d9e8157b57927c0da","impliedFormat":1},{"version":"7e4615c366c93399f288c7bfbaa00a1dc123578be9d8ac96b15d489efc3f4851","impliedFormat":1},{"version":"f2e6c87a2c322ee1473cb0bd776eb20ee7bff041bc56619e5d245134ab73e83d","impliedFormat":1},{"version":"ee89bc94431b2dfaf6a7e690f8d9a5473b9d61de4ddcb637217d11229fe5b69f","impliedFormat":1},{"version":"a19c1014936f60281156dd4798395ad4ab26b7578b5a6a062b344a3e924a4333","impliedFormat":1},{"version":"5608be84dd2ca55fc6d9b6da43f67194182f40af00291198b6487229403a98fe","impliedFormat":1},{"version":"4a800f1d740379122c473c18343058f4bd63c3dffdef4d0edba668caa9c75f54","impliedFormat":1},{"version":"8e6868a58ca21e92e09017440fdb42ebfe78361803be2c1e7f49883b7113fdc2","impliedFormat":1},{"version":"2fbb72a22faefa3c9ae0dfb2a7e83d7b3d82ec625a74a8800a9da973511b0672","impliedFormat":1},{"version":"3e8c1a811bad9e5cd313c3d90c39a99867befa746098cdad81a9578ac3392541","impliedFormat":1},{"version":"d88f78b4e272864f414d98e5ed0996cd09f7a3bb01c5b7528320386f7383153d","impliedFormat":1},{"version":"0b9c34da2c6f0170e6a357112b91f2351712c5a537b76e42adfee9a91308b122","impliedFormat":1},{"version":"47adac87ec85a52ed2562cb4a3b441383551727ed802e471aa05c12e7cc7e27e","impliedFormat":1},{"version":"d1cacf181763c5d0960986f6d0abd1a36fc58fc06a707c9f5060b6b5526179ca","impliedFormat":1},{"version":"92610d503212366ff87801c2b9dc2d1bccfa427f175261a5c11331bc3588bb3f","impliedFormat":1},{"version":"805e2737ce5d94d7da549ed51dfa2e27c2f06114b19573687e9bde355a20f0ff","impliedFormat":1},{"version":"a37b576e17cf09938090a0e7feaec52d5091a1d2bbd73d7335d350e5f0e8be95","impliedFormat":1},{"version":"98971aa63683469692fef990fcba8b7ba3bae3077de26ac4be3e1545d09874b8","impliedFormat":1},{"version":"c6d36fa611917b6177e9c103a2719a61421044fb81cdd0accd19eba08d1b54de","impliedFormat":1},{"version":"088592cf2e218b99b02a5029ed8d1a763a3856cd25e012cfbb536b7494f08971","impliedFormat":1},{"version":"5eb39c56462b29c90cb373676a9a9a179f348a8684b85990367b3bbc6be5a6e9","impliedFormat":1},{"version":"52252b11bcbfaeb4c04dc9ec92ea3f1481684eee62c0c913e8ff1421dc0807e5","impliedFormat":1},{"version":"731d07940d9b4313122e6cc58829ea57dcc5748003df9a0cad7eb444b0644685","impliedFormat":1},{"version":"b3ead4874138ce39966238b97f758fdb06f56a14df3f5e538d77596195ece0b5","impliedFormat":1},{"version":"032b40b5529f2ecce0524974dbec04e9c674278ae39760b2ee0d7fce1bb0b165","impliedFormat":1},{"version":"c25736b0cb086cd2afa4206c11959cb8141cea9700f95a766ad37c2712b7772b","impliedFormat":1},{"version":"033c269cd9631b3f56bb69a9f912c1f0d6f83cf2cff4d436ee1c98f6e655e3b5","impliedFormat":1},{"version":"bd6d692a4a950abbfabe29131420abe804e7f3cc187c3c451f9811e9cf4408ce","impliedFormat":1},{"version":"a9b6411417d4bffd9a89c41dc9dedda7d39fb4fa378eaa0ab55ec9ea1a94eb6a","impliedFormat":1},{"version":"1329e7cd7aca4d223ef5a088d82bc3f6f302ce70581c8d3823a050ea155eec3b","impliedFormat":1},{"version":"09248c76437c5b1efce189b4050c398f76a9385135af75c5fb46308b0d1432e0","impliedFormat":1},{"version":"b8df115bf7b30cceeb4550c0be507082b9930ee6268539a1a1aaffb0791cc299","impliedFormat":1},{"version":"dde00f41a2d2b1e70df6df8ac33de7cb3a658956212c7bee326245cc01c990c2","impliedFormat":1},{"version":"115d092e2748990ff0f67f376f47e9a45a2f21f7c7784102419c14b32c4362d1","impliedFormat":1},{"version":"4ba068163c800094cd81b237f86f22c3a33c23cf2a70b9252aca373cfdf59677","impliedFormat":1},{"version":"53e65282ab040a9f535f4ad2e3c8d8346034d8d69941370886d17055874b348d","impliedFormat":1},{"version":"e6db934da4b03c1f4f1da6f4165a981ec004e9e7d956c585775326b392d4d886","impliedFormat":1},{"version":"6ecb85c8cbb289fe72e1d302684e659cc01ef76ae8e0ad01e8b2203706af1d56","impliedFormat":1},{"version":"fca410876e0302680190982f2fc5102d896e65e4f4f20547a185b60364838910","impliedFormat":1},{"version":"601bc70ff67ae9855fc65bad9bb2d135f72147cf22e2490f58ea0d209d95f2ee","impliedFormat":1},{"version":"5cd5a999e218c635ea6c3e0d64da34a0f112757e793f29bc097fd18b5267f427","impliedFormat":1},{"version":"de8a12540370f9f18b160a07ed57917d69fe24525d360531d42d4b1b5d0d9f0f","impliedFormat":1},{"version":"4a397c8a3d1cccf28751bcca469d57faeb637e76b74f6826e76ad66a3c57c7b8","impliedFormat":1},{"version":"34c1bb0d4cf216f2acb3d013ad2c79f906fe89ce829e23a899029dfa738f97e0","impliedFormat":1},{"version":"5c744f3cc0a266dd95b5769a70ddc85c8b6019adbb0954d4de61f89182202ce3","impliedFormat":1},{"version":"b50f05738b1e82cbb7318eb35a7aaf25036f5585b75bbf4377cfa2bad15c40bf","impliedFormat":1},{"version":"c682cb23f38a786bb37901b3f64727bd3c6210292f5bb36f3b11b63fbe2b23ee","impliedFormat":1},{"version":"d6592cf10dc7797d138af32800d53ff4707fdcd6e053812ce701404f5f533351","impliedFormat":1},{"version":"997f6604cd3d35281083706aa2862e8181ed1929a6cbb004c087557d6c7f23c4","impliedFormat":1},{"version":"9584dd669a3bf285e079502ebbb683e7da0bf7f7c1eb3d63f6ef929350667541","impliedFormat":1},{"version":"41a10e2db052a8bf53ed4d933d9b4f5caa30bdaee5a9d978af95f6641ce44860","impliedFormat":1},{"version":"d84761f8a994b5444529c7c294b194de6fd5350ccda974929ea7e8b3893b753a","impliedFormat":1},{"version":"652e51858bafd77e1abcc4d4e9d5e48cc4426c3dd2910021abd8cc664961e135","impliedFormat":1},{"version":"8c5c602045ffdfebeffc7a71cd2bf201fe147a371274b5fcbded765a92f2af78","impliedFormat":1},{"version":"6392ce794eef6f9b57818264bb0eeb24a46cf923f7695a957c15d3d087fbb6cc","impliedFormat":1},{"version":"b10f123e8100aa98723c133af16f1226a6360ec5b6990a0fe82b165d289549db","impliedFormat":1},{"version":"93d20368cdb5fff7f7398bfc9b2b474b2a2d5867277a0631a33b7db7fd53d5b4","impliedFormat":1},{"version":"b1e69b9834104482fabf7fba40e86a282ee10e0600ffd75123622f4610b0ef9e","impliedFormat":1},{"version":"ad5bb6c450cb574289db945ff82be103ed5d0ad8ee8c76164cee7999c695ae01","impliedFormat":1},{"version":"217761e8a5482b3ad20588a801521c2f5f9f7fb2fbb416d4eff3aff9b57f8471","impliedFormat":1},{"version":"7ad780687331f05998c62277d73b6f15ee3e8045b0187a515ffc49c0ad993606","impliedFormat":1},{"version":"e9aa5ccb42e118f5418721d2ac8c0ebdebeb9502007db9b4c1b7c9b8d493013e","impliedFormat":1},{"version":"d300868212b3cc4d13228f5dc2e9880d5959dc742c0c55be2fc43bcda8504c8f","impliedFormat":1},{"version":"0c55daad827669843bd2401f1ddd163b74d9f922680b08ae6e162ceb6c11b078","impliedFormat":1},{"version":"fe45a9bc654dfd1550c9466c0dad9c8017f2626476ed9d25c65ddfc1943f6b74","impliedFormat":1},{"version":"03abcbc7b5b68887525be71a194dd7f9f68276b5fb5b8989abae9a91585ddc33","impliedFormat":1},{"version":"5055e86e689cfe39104ab71298757e5aac839c2ea9d1f12299e76fa79303d47d","impliedFormat":1},{"version":"42266c387025558423c19d624f671352aac3e449c23906cb636f9ae317b72d7e","impliedFormat":1},{"version":"e578a36b3683d233e045a85c9adb0f10e83d2b48f777b9c05fbc363ccc6bdd34","impliedFormat":1},{"version":"0235d0ba0c7b64244d4703b7d6cabd88ba809abeb01da0c13e9ed111bf5e7059","impliedFormat":1},{"version":"9b21e8a79f4213c1cf29f3c408f85a622f9eb6f4902549ccb9a2c00717a0b220","impliedFormat":1},{"version":"d556e498591413e254793f9d64d3108b369a97bd50f9dd4015b5552888e975ef","impliedFormat":1},{"version":"e2c652c7a45072e408c1749908ca39528d3a9a0eb6634a8999b8cf0e35ef20c8","impliedFormat":1},{"version":"ec08224b320739d26aaf61cead7f1e0f82e6581df0216f6fe048aa6f5042cb8c","impliedFormat":1},{"version":"4eadaa271acca9bd20fc6ac1ea5e4bf9ab6698b8ccf3ec07c33df4970f8130f1","impliedFormat":1},{"version":"3238d2eee64423c8d41972c88673b0327d8b40174a78ea346bcd10954a8f3373","impliedFormat":1},{"version":"8f773ddff9070d725dd23f5cf6c8e62bd86984a57b5d5e3fc7583010b48cd8ac","impliedFormat":1},{"version":"5ecd8fdeb6c87db9c320eefbfa9ea27efccbdce853ed38d5ba58e2da482edf1f","impliedFormat":1},{"version":"19a4d116285e7d77e91411966930761a2204ce2d20915afdb12652681a4a88d7","impliedFormat":1},{"version":"c30ca82112586c5dae7477d7e82cc91a7e0d1e658c581f9ec3df07c4485bba84","impliedFormat":1},{"version":"68fca1813d17ee736f41124ccc958d0364cdef79ad1222951bfacc36b2630a58","impliedFormat":1},{"version":"7813329e568df1d42e5a6c52312b1a7c69700e35a561cf085158c345be155b22","impliedFormat":1},{"version":"561067dc7b6b7635277d3cad0a0e11f698d377063dd2c15dfac43ef78847eef4","impliedFormat":1},{"version":"438247e782a8a9b9abdce618e963667cf95157cc6d3f5194a452d3c7d9e9655c","impliedFormat":1},{"version":"0c293195f800014f1fa3ffacf979002c8c1886ab71750432813fb590738eeef5","impliedFormat":1},{"version":"7673348e0cc2f4e33d1db02ecda02f39e66e56ab2cc3c5602246e5532f2715ab","impliedFormat":1},{"version":"83724b26b711d85d6cfc9dd92fd5d666ffaae27fcfb1a0110401b98814ea26c0","impliedFormat":1},{"version":"869a27c929366c3c864013a991fd4c4c86af73eba25513e8ae915f814d3d349c","impliedFormat":1},{"version":"bfa105c32ed586b227188f7b568776d03202dc7aa4c3af2746579450c7d5e7f2","impliedFormat":1},{"version":"756e3f41a7f2501a34e1a070283c7f5550e200eeb43fed3c806e3f2edd924a75","impliedFormat":1},{"version":"59935cc13dcb7c3c7825e770a61e6696bfd11b65e3e47c28acc410dbdf8461c0","impliedFormat":1},{"version":"85e2808cc73ab3ac07774802b34a6ff0d7e1e46c26de7bc2dbe08e04b3340edb","impliedFormat":1},{"version":"f766e5cdea938e0c9d214533fd4501ab0ee23ab4efca9edba334fa02d2869f11","impliedFormat":1},{"version":"eb380820a3a1feda3a182a3d078da18e0d5b7da08ae531ce11133a84b479678c","impliedFormat":1},{"version":"7fba5cc3088ad9acada3daeff52dae0f2cac8d84d19508abd78af5924dc96bea","impliedFormat":1},{"version":"14176cfdbc3d1d633ad9b5daf044ab4c7d0d73be61ca2f14388800e21f0989cd","impliedFormat":1},{"version":"a24f510afe4d938d625a4b5a5374ac0478e56305e8743dd7d37d86d709754286","impliedFormat":1},{"version":"648acdbcbcd01b1a91e8b0ad390ed59fada685977f44b90e148b65bd8159dfe8","impliedFormat":1},{"version":"8309898ba0ac6f2856a94a11723d499091253a6d5df34ddebc6149d43480bfd2","impliedFormat":1},{"version":"a317ae0eb092da3fd799d1717a2da319a74abebe85e2914cb259222969f95705","impliedFormat":1},{"version":"36d76e2dbd5f5243bd566b018c589e2ba707e34b24ec7d285feb11ba6bf23fbe","impliedFormat":1},{"version":"f780879a2ca63dbb59b36f772bc28dccd2840f1377d8d632e8c978b99c26a45f","impliedFormat":1},{"version":"335c2e013b572967a9a282a70f9dded38631189b992381f1df50e966c7f315d6","impliedFormat":1},{"version":"8b7a519edbd0b7654491300d8e3cbd2cb3ef921003569ca39ebd33e77479bb99","impliedFormat":1},{"version":"c90f8038c75600e55db93d97bab73c0ab8fb618d75392d1d1ad32e2f6e9c7908","impliedFormat":1},{"version":"ca083f3bf68e813b5bded56ecbf177636aa75833eb86c7b40e3d75b8ce4c2f78","impliedFormat":1},{"version":"3c8bf00283ef468da8389119d3f5662c81106e302c8810f40ea86b1018df647e","impliedFormat":1},{"version":"67b248e4bac845c5139898b44cbd3e1213674bcc9831039701b5f0f957243a24","impliedFormat":1},{"version":"63d49516f359186f7b3e3115f2c829ed75c319b34022c97b56beead032a073b7","impliedFormat":1},{"version":"9f5f256c7b5cc4a98ef557ea9720f81e96319d569f731c897ddb4514936242b4","impliedFormat":1},{"version":"a20ded6c920f6e566537e93d69cbad79bc57d7e3ce85686003078cf88c1c9cfc","impliedFormat":1},{"version":"40b2d781df7b4a76d33454cb917c3883655ec1d8d05424b7a80d01610ad5082f","impliedFormat":1},{"version":"703ea2acd8b4741248897a5709cd46e22fcd9d13f01ff3481322a86505f0b77c","impliedFormat":1},{"version":"e09c56f8c446225e061b53cb2f95fcbbc8555483ab29165f6b0f39bc82c8d773","impliedFormat":1},{"version":"a571973bc2e34c898c3202452f957e6757f0c08cb66d50d6785f4a9042d74bad","impliedFormat":1},{"version":"a6a059446e66fbf5072eccce94eb5587cef2f99aa04d4bbd4ebe63d0a6592a4f","impliedFormat":1},{"version":"6e2533e27eba5ff02d6eed37e0a7eb69ae7982e0f72fd8f74c90ab201f061867","impliedFormat":1},{"version":"9c10dd3d85b7620ed3105b3f018125d0bb54198bf5847e39622afb22c651a1ad","impliedFormat":1},{"version":"58c62e415bf74b1423bf443587e33d7951a8bf19d7b03073f26e86d9b43ba9ea","impliedFormat":1},{"version":"dd6ec67ad168e92b8bf79ba975c6e0be8c60e403ba704d1c1b31a6059c12f967","impliedFormat":1},{"version":"bcaf468eea143f8e68ca40e5da58d640656b4f36697170c339042500be78ac5d","impliedFormat":1},{"version":"92de961d1db5fe075db8c0b6414a6eec430adaf9022465fe9d0a23f437aafcb3","impliedFormat":1},{"version":"7610ecdae59cea1a8db7580941ebc24d522d8ac1751ce718a6af22d41e1a1279","impliedFormat":1},{"version":"3e55a65822875e85f96e444b79787f619b9473e36c143dedc6d5441a2544b8ab","impliedFormat":1},{"version":"d49275f9098a8e7a5df7c55321b0242cef0bfdde51018b7b2709c4dc74917822","impliedFormat":1},{"version":"b25556c4111afad4cb174aa4674db2e5b23a6b191dc6a3e42c7c3417ea446a68","impliedFormat":1},{"version":"f9568a3a6c74013aee8b09d73ef04175596b51ce6f5d9dcd4885418170fe9306","impliedFormat":1},{"version":"bd3910ccd4fcd05ebd83fbfeb62f5a82a6674c85c6c0e4755c16298df7abe4d7","impliedFormat":1},{"version":"7c0541d0addc3007e5f5776023d5e6e44f96eae0684cdabe59ef04f2a294b116","impliedFormat":1},{"version":"70137204b720e4dd1b81260a70578f0f4f417c53837f8a13859b2f58e20d7150","impliedFormat":1},{"version":"b28b6875a761fd153ebf120fecb359660de80fd36e90c9b3d72a12318bd5d789","impliedFormat":1},{"version":"56d092bd6225f6e67d9acab3fd65ce0a4edb36cadba2f0370e67322e2f6f1bc8","impliedFormat":1},{"version":"a4709d5d466ad8dcf4ddccb905ad95348131df1616f964185be9739f96526bde","impliedFormat":1},{"version":"73b0fd6255f24e82be861f800a264f0175984062b6ccca3052578b03ed6f397b","impliedFormat":1},{"version":"4a3f7c6f02cb01eb7a9800548b41cfa03a57e476fc92a72869983f37efa8067a","impliedFormat":1},{"version":"ee428614fde0db27939b30094352fc85b58d1bdba6d63be6d8b2aec5929fd9a2","impliedFormat":1},{"version":"3d3cc34e24f6ad17c729d9ed471318073179112a2ecf095f150aeb529d0925b7","impliedFormat":1},{"version":"4d6140fdc42067e7ea4e66a5c96b54c9efd0f9cf7ca9ddd62d7596feadb3da67","impliedFormat":1},{"version":"ff66b304369f2b43bc803e7d723c587e18c2156294b15a9711f91f37fc9e461b","impliedFormat":1},{"version":"bc0b17d3fd0e34083fbc886367ed53563b569d1d05214f60b21117e2dbfb7fdd","impliedFormat":1},{"version":"c1cc2a1ac9ae043fd05e07193d408c0f0bf4628e54c19871621ce1049d4c200e","impliedFormat":1},{"version":"d005c21b9c42bd1ccde99f183dc2d3c992be407aa63c4ba3371e4f81cf36b2aa","impliedFormat":1},{"version":"9a7638d62db8cfa1466093d7d413fdf85c5e4a7c663ed76f2bfc8739c8e01505","impliedFormat":1},{"version":"e608cfd08fb30d374ba4b822fb2329a850d515bee8599117c9f53e925f7a548c","impliedFormat":1},{"version":"c338859b98f8a11f80e3e47e33767299e7a4facdf0870c01c8694fa8fa048d16","impliedFormat":1},{"version":"4f64016165565f743356812e33ac22f5ef91891738927e413121f502b186210c","impliedFormat":1},{"version":"b113e9770d5be136c5e2add9e6cdf40d85051762ff2391f71d552975e66b1500","impliedFormat":1},{"version":"8f1241f5d9f0d3d72117768b3c974e462840fbd85026fb66685078945404cf2f","impliedFormat":1},{"version":"dd80bc112babae1ca13b3dc38ffe56031f269c7db617ddd335687614accaca08","impliedFormat":1},{"version":"cb5eaaa2a079305b1c5344af739b29c479746f7a7aefffc7175d23d8b7c8dbb0","impliedFormat":1},{"version":"bd324dccada40f2c94aaa1ebc82b11ce3927b7a2fe74a5ab92b431d495a86e6f","impliedFormat":1},{"version":"56749bf8b557c4c76181b2fd87e41bde2b67843303ae2eabb299623897d704d6","impliedFormat":1},{"version":"5a6fbec8c8e62c37e9685a91a6ef0f6ecaddb1ee90f7b2c2b71b454b40a0d9a6","impliedFormat":1},{"version":"e7435f2f56c50688250f3b6ef99d8f3a1443f4e3d65b4526dfb31dfd4ba532f8","impliedFormat":1},{"version":"51a674644ed5a181ec1497c1b4aa6f8cfcbe3af5481bdb641c1b5a498bcb6f3c","impliedFormat":1},{"version":"33b7f4106cf45ae7ccbb95acd551e9a5cd3c27f598d48216bda84213b8ae0c7e","impliedFormat":1},{"version":"176d6f604b228f727afb8e96fd6ff78c7ca38102e07acfb86a0034d8f8a2064a","impliedFormat":1},{"version":"1b1a02c54361b8c222392054648a2137fc5983ad5680134a653b1d9f655fe43d","impliedFormat":1},{"version":"8bcb884d06860a129dbffa3500d51116d9d1040bb3bf1c9762eb2f1e7fd5c85c","impliedFormat":1},{"version":"e55c0f31407e1e4eee10994001a4f570e1817897a707655f0bbe4d4a66920e9e","impliedFormat":1},{"version":"a37c2194c586faa8979f50a5c5ca165b0903d31ee62a9fe65e4494aa099712c0","impliedFormat":1},{"version":"6602339ddc9cd7e54261bda0e70fb356d9cdc10e3ec7feb5fa28982f8a4d9e34","impliedFormat":1},{"version":"7ffaa736b8a04b0b8af66092da536f71ef13a5ef0428c7711f32b94b68f7c8c8","impliedFormat":1},{"version":"7b4930d666bbe5d10a19fcc8f60cfa392d3ad3383b7f61e979881d2c251bc895","impliedFormat":1},{"version":"46342f04405a2be3fbfb5e38fe3411325769f14482b8cd48077f2d14b64abcfb","impliedFormat":1},{"version":"8fa675c4f44e6020328cf85fdf25419300f35d591b4f56f56e00f9d52b6fbb3b","impliedFormat":1},{"version":"ba98f23160cfa6b47ee8072b8f54201f21a1ee9addc2ef461ebadf559fe5c43a","impliedFormat":1},{"version":"45a4591b53459e21217dc9803367a651e5a1c30358a015f27de0b3e719db816b","impliedFormat":1},{"version":"9ef22bee37885193b9fae7f4cad9502542c12c7fe16afe61e826cdd822643d84","impliedFormat":1},{"version":"b0451895b894c102eed19d50bd5fcb3afd116097f77a7d83625624fafcca8939","impliedFormat":1},{"version":"bce17120b679ff4f1be70f5fe5c56044e07ed45f1e555db6486c6ded8e1da1c8","impliedFormat":1},{"version":"7590477bfa2e309e677ff7f31cb466f377fcd0e10a72950439c3203175309958","impliedFormat":1},{"version":"3f9ebd554335d2c4c4e7dc67af342d37dc8f2938afa64605d8a93236022cc8a5","impliedFormat":1},{"version":"1c077c9f6c0bc02a36207994a6e92a8fbf72d017c4567f640b52bf32984d2392","impliedFormat":1},{"version":"600b42323925b32902b17563654405968aa12ee39e665f83987b7759224cc317","impliedFormat":1},{"version":"32c8f85f6b4e145537dfe61b94ddd98b47dbdd1d37dc4b7042a8d969cd63a1aa","impliedFormat":1},{"version":"2426ed0e9982c3d734a6896b697adf5ae93d634b73eb15b48da8106634f6d911","impliedFormat":1},{"version":"057431f69d565fb44c246f9f64eac09cf309a9af7afb97e588ebef19cc33c779","impliedFormat":1},{"version":"960d026ca8bf27a8f7a3920ee50438b50ec913d635aa92542ca07558f9c59eca","impliedFormat":1},{"version":"71f5d895cc1a8a935c40c070d3d0fade53ae7e303fd76f443b8b541dee19a90c","impliedFormat":1},{"version":"252eb4750d0439d1674ad0dc30d2a2a3e4655e08ad9e58a7e236b21e78d1d540","impliedFormat":1},{"version":"e344b4a389bb2dfa98f144f3f195387a02b6bdb69deed4a96d16cc283c567778","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"2d2ec3235e01474f45a68f28cf826c2f5228b79f7d474d12ca3604cdcfdac80c","impliedFormat":1},{"version":"6dd249868034c0434e170ba6e0451d67a0c98e5a74fd57a7999174ee22a0fa7b","impliedFormat":1},{"version":"9716553c72caf4ff992be810e650707924ec6962f6812bd3fbdb9ac3544fd38f","impliedFormat":1},{"version":"506bc8f4d2d639bebb120e18d3752ddeee11321fd1070ad2ce05612753c628d6","impliedFormat":1},{"version":"053c51bbc32db54be396654ab5ecd03a66118d64102ac9e22e950059bc862a5e","impliedFormat":1},{"version":"1977f62a560f3b0fc824281fd027a97ce06c4b2d47b408f3a439c29f1e9f7e10","impliedFormat":1},{"version":"627570f2487bd8d899dd4f36ecb20fe0eb2f8c379eff297e24caba0c985a6c43","impliedFormat":1},{"version":"0f6e0b1a1deb1ab297103955c8cd3797d18f0f7f7d30048ae73ba7c9fb5a1d89","impliedFormat":1},{"version":"0a051f254f9a16cdde942571baab358018386830fed9bdfff42478e38ba641ce","impliedFormat":1},{"version":"17269f8dfc30c4846ab7d8b5d3c97ac76f50f33de96f996b9bf974d817ed025b","impliedFormat":1},{"version":"9e82194af3a7d314ccbc64bb94bfb62f4bfea047db3422a7f6c5caf2d06540a9","impliedFormat":1},{"version":"083d6f3547ccbf25dfa37b950c50bee6691ed5c42107f038cc324dbca1e173ae","impliedFormat":1},{"version":"952a9eab21103b79b7a6cca8ad970c3872883aa71273f540285cad360c35da40","impliedFormat":1},{"version":"8ba48776335db39e0329018c04486907069f3d7ee06ce8b1a6134b7d745271cc","impliedFormat":1},{"version":"e6d5809e52ed7ef1860d1c483e005d1f71bab36772ef0fd80d5df6db1da0e815","impliedFormat":1},{"version":"893e5cfbae9ed690b75b8b2118b140665e08d182ed8531e1363ec050905e6cb2","impliedFormat":1},{"version":"6ae7c7ada66314a0c3acfbf6f6edf379a12106d8d6a1a15bd35bd803908f2c31","impliedFormat":1},{"version":"e4b1e912737472765e6d2264b8721995f86a463a1225f5e2a27f783ecc013a7b","impliedFormat":1},{"version":"97146bbe9e6b1aab070510a45976faaf37724c747a42d08563aeae7ba0334b4f","impliedFormat":1},{"version":"c40d552bd2a4644b0617ec2f0f1c58618a25d098d2d4aa7c65fb446f3c305b54","impliedFormat":1},{"version":"09e64dea2925f3a0ef972d7c11e7fa75fec4c0824e9383db23eacf17b368532f","impliedFormat":1},{"version":"424ddba00938bb9ae68138f1d03c669f43556fc3e9448ed676866c864ca3f1d6","impliedFormat":1},{"version":"a0fe12181346c8404aab9d9a938360133b770a0c08b75a2fce967d77ca4b543f","impliedFormat":1},{"version":"3cc6eb7935ff45d7628b93bb6aaf1a32e8cb3b24287f9e75694b607484b377b3","impliedFormat":1},{"version":"ced02e78a2e10f89f4d70440d0a8de952a5946623519c54747bc84214d644bac","impliedFormat":1},{"version":"efd463021ccc91579ed8ae62584176baab2cd407c555c69214152480531a2072","impliedFormat":1},{"version":"29647c3b79320cfeecb5862e1f79220e059b26db2be52ea256df9cf9203fb401","impliedFormat":1},{"version":"c87c29ad2df837f7bc528688d96793758e0c4b1965f5ca520a8c287999565f66","impliedFormat":1},{"version":"e8cdefd2dc293cb4866ee8f04368e7001884650bb0f43357c4fe044cc2e1674f","impliedFormat":1},{"version":"582a3578ebba9238eb0c5d30b4d231356d3e8116fea497119920208fb48ccf85","impliedFormat":1},{"version":"185eae4a1e8a54e38f36cd6681cfa54c975a2fc3bc2ba6a39bf8163fac85188d","impliedFormat":1},{"version":"0c0a02625cf59a0c7be595ccc270904042bea523518299b754c705f76d2a6919","impliedFormat":1},{"version":"f2c999522aa544d93920205e05e11a5d43332f95ec35bd8a17025a823035bc56","impliedFormat":1},{"version":"cee72255e129896f0240ceb58c22e207b83d2cc81d8446190d1b4ef9b507ccd6","impliedFormat":1},{"version":"3b54670e11a8d3512f87e46645aa9c83ae93afead4a302299a192ac5458aa586","impliedFormat":1},{"version":"c2fc4d3a130e9dc0e40f7e7d192ef2494a39c37da88b5454c8adf143623e5979","impliedFormat":1},{"version":"2e693158fc1eedba3a5766e032d3620c0e9c8ad0418e4769be8a0f103fdb52cd","impliedFormat":1},{"version":"516275ccf3e66dc391533afd4d326c44dd750345b68bb573fc592e4e4b74545f","impliedFormat":1},{"version":"07c342622568693847f6cb898679402dd19740f815fd43bec996daf24a1e2b85","impliedFormat":1},{"version":"fa40d705f9813843d47f19321591499f14d1a18fa5e8ca9beaee5aac633c3d0d","impliedFormat":1},{"version":"a7a6330fb015f72d821e23004e63a3827e0c632b614ef3a310b3c81b66de61fd","impliedFormat":1},{"version":"89968316b7069339433bd42d53fe56df98b6990783dfe00c9513fb4bd01c2a1c","impliedFormat":1},{"version":"a4096686f982f6977433ee9759ecbef49da29d7e6a5d8278f0fbc7b9f70fce12","impliedFormat":1},{"version":"62e62a477c56cda719013606616dd856cfdc37c60448d0feb53654860d3113bb","impliedFormat":1},{"version":"207c107dd2bd23fa9febac2fe05c7c72cdac02c3f57003ab2e1c6794a6db0c05","impliedFormat":1},{"version":"55133e906c4ddabecdfcbc6a2efd4536a3ac47a8fa0a3fe6d0b918cac882e0d4","impliedFormat":1},{"version":"2147f8d114cf58c05106c3dccea9924d069c69508b5980ed4011d2b648af2ffe","impliedFormat":1},{"version":"2eb4012a758b9a7ba9121951d7c4b9f103fe2fc626f13bec3e29037bb9420dc6","impliedFormat":1},{"version":"fe61f001bd4bd0a374daa75a2ba6d1bb12c849060a607593a3d9a44e6b1df590","impliedFormat":1},{"version":"cfe8221c909ad721b3da6080570553dea2f0e729afbdbcf2c141252cf22f39b5","impliedFormat":1},{"version":"34e89249b6d840032b9acdec61d136877f84f2cd3e3980355b8a18f119809956","impliedFormat":1},{"version":"6f36ff8f8a898184277e7c6e3bf6126f91c7a8b6a841f5b5e6cb415cfc34820e","impliedFormat":1},{"version":"4b6378c9b1b3a2521316c96f5c777e32a1b14d05b034ccd223499e26de8a379c","impliedFormat":1},{"version":"07be5ae9bf5a51f3d98ffcfacf7de2fe4842a7e5016f741e9fad165bb929be93","impliedFormat":1},{"version":"cb1b37eda1afc730d2909a0f62cac4a256276d5e62fea36db1473981a5a65ab1","impliedFormat":1},{"version":"c873a6d6019f0b93889e54bf3dfb133120d5adba79c0a31d2400d1b5d0f2a2a2","impliedFormat":1},{"version":"471386a0a7e4eb88c260bdde4c627e634a772bf22f830c4ec1dad823154fd6f5","impliedFormat":1},{"version":"108314a60f3cb2454f2d889c1fb8b3826795399e5d92e87b2918f14d70c01e69","impliedFormat":1},{"version":"d75cc838286d6b1260f0968557cd5f28495d7341c02ac93989fb5096deddfb47","impliedFormat":1},{"version":"d531dc11bb3a8a577bd9ff83e12638098bfc9e0856b25852b91aac70b0887f2a","impliedFormat":1},{"version":"19968b998a2ab7dfd39de0c942fc738b2b610895843fec25477bc393687babd8","impliedFormat":1},{"version":"c0e6319f0839d76beed6e37b45ec4bb80b394d836db308ae9db4dea0fe8a9297","impliedFormat":1},{"version":"1a7b11be5c442dab3f4af9faf20402798fddf1d3c904f7b310f05d91423ba870","impliedFormat":1},{"version":"079d3f1ddcaf6c0ff28cfc7851b0ce79fcd694b3590afa6b8efa6d1656216924","impliedFormat":1},{"version":"2c817fa37b3d2aa72f01ce4d3f93413a7fbdecafe1b9fb7bd7baaa1bbd46eb08","impliedFormat":1},{"version":"682203aed293a0986cc2fccc6321d862742b48d7359118ac8f36b290d28920d2","impliedFormat":1},{"version":"7406d75a4761b34ce126f099eafe6643b929522e9696e5db5043f4e5c74a9e40","impliedFormat":1},{"version":"7e9c4e62351e3af1e5e49e88ebb1384467c9cd7a03c132a3b96842ccdc8045c4","impliedFormat":1},{"version":"ea1f9c60a912065c08e0876bd9500e8fa194738855effb4c7962f1bfb9b1da86","impliedFormat":1},{"version":"903f34c920e699dacbc483780b45d1f1edcb1ebf4b585a999ece78e403bb2db3","impliedFormat":1},{"version":"100ebfd0470433805c43be5ae377b7a15f56b5d7181c314c21789c4fe9789595","impliedFormat":1},{"version":"12533f60d36d03d3cf48d91dc0b1d585f530e4c9818a4d695f672f2901a74a86","impliedFormat":1},{"version":"57b555a83466fb289968a1713f965f1a2bb3a91cc34d1fa21af8ebdef7fc872a","impliedFormat":1},{"version":"21d9968dad7a7f021080167d874b718197a60535418e240389d0b651dd8110e7","impliedFormat":1},{"version":"2ef7349b243bce723d67901991d5ad0dfc534da994af61c7c172a99ff599e135","impliedFormat":1},{"version":"fa103f65225a4b42576ae02d17604b02330aea35b8aaf889a8423d38c18fa253","impliedFormat":1},{"version":"1b9173f64a1eaee88fa0c66ab4af8474e3c9741e0b0bd1d83bfca6f0574b6025","impliedFormat":1},{"version":"1b212f0159d984162b3e567678e377f522d7bee4d02ada1cc770549c51087170","impliedFormat":1},{"version":"46bd71615bdf9bfa8499b9cfce52da03507f7140c93866805d04155fa19caa1b","impliedFormat":1},{"version":"86cb49eb242fe19c5572f58624354ffb8743ff0f4522428ebcabc9d54a837c73","impliedFormat":1},{"version":"fc2fb9f11e930479d03430ee5b6588c3788695372b0ab42599f3ec7e78c0f6d5","impliedFormat":1},{"version":"bb1e5cf70d99c277c9f1fe7a216b527dd6bd2f26b307a8ab65d24248fb3319f5","impliedFormat":1},{"version":"817547eacf93922e22570ba411f23e9164544dead83e379c7ae9c1cfc700c2cf","impliedFormat":1},{"version":"a728478cb11ab09a46e664c0782610d7dd5c9db3f9a249f002c92918ca0308f7","impliedFormat":1},{"version":"9e91ef9c3e057d6d9df8bcbfbba0207e83ef9ab98aa302cf9223e81e32fdfe8d","impliedFormat":1},{"version":"66d30ef7f307f95b3f9c4f97e6c1a5e4c462703de03f2f81aca8a1a2f8739dbd","impliedFormat":1},{"version":"293ca178fd6c23ed33050052c6544c9d630f9d3b11d42c36aa86218472129243","impliedFormat":1},{"version":"90a4be0e17ba5824558c38c93894e7f480b3adf5edd1fe04877ab56c56111595","impliedFormat":1},{"version":"fadd55cddab059940934df39ce2689d37110cfe37cc6775f06b0e8decf3092d7","impliedFormat":1},{"version":"adb906b7794a71185220332532dcbdd09527e0dd3ce9f0b9be0a88c56bbb7e9e","impliedFormat":1},{"version":"b4f3b4e20e2193179481ab325b8bd0871b986e1e8a8ed2961ce020c2dba7c02d","impliedFormat":1},{"version":"41744c67366a0482db029a21f0df4b52cd6f1c85cbc426b981b83b378ccb6e65","impliedFormat":1},{"version":"c3f3cf7561dd31867635c22f3c47c8491af4cfa3758c53e822a136828fc24e5d","impliedFormat":1},{"version":"a88ddea30fae38aa071a43b43205312dc5ff86f9e21d85ba26b14690dc19d95e","impliedFormat":1},{"version":"34fc71db924616ba097a0cb6cddc2ece273a27673dd3b206abf3f3b5d63bcace","impliedFormat":1},{"version":"5515f17f45c6aafe6459afa3318bba040cb466a8d91617041566808a5fd77a44","impliedFormat":1},{"version":"4df1f0c17953b0450aa988c9930061f8861b114e1649e1a16cfd70c5cbdf8d83","impliedFormat":1},{"version":"441104b363d80fe57eb79a50d495e0b7e3ebeb45a5f0d1a4067d71ef75e8fbfa","impliedFormat":1},{"version":"810c226565b65b1c690ba8acfe597dc37aea99d527be3b51e116b70cd22ca3b1","impliedFormat":1},{"version":"dc085a9d13b6c09dd3254c3b18bbe8c504477be9308ad7f46d01ea01e81812e4","impliedFormat":1},{"version":"74c50592ee97353f54bcfce5123a0666a7d3242d34eb5454992a08c46e05430d","impliedFormat":1},{"version":"cc5a052d548ce1831d26b14cea13f185e27ce32a0545b496dfe1e97a66c82cfb","impliedFormat":1},{"version":"f805572e17e62644773466785cc88578a0af15442d3cfbdf0a1acc49eda0574f","impliedFormat":1},{"version":"81833e7f63c1ebc413dc5ff8ddcec4c1fb1f40e0a014f4175022b95f0aa25fcb","impliedFormat":1},{"version":"d3882a364f93f529267f08e313cf95a9f59269f4d89cdf87c17f7ef1453ae6b2","impliedFormat":1},{"version":"f6c06c23c82358dad9739e9d58b57e7db8368e7cae95dd52657c1385b211b0d9","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"5339f84dfcb7b04aa1c2b4d7713d6128039381447f07abc2e48d36685e2eef44","impliedFormat":1},{"version":"fb35a61a39c933d31b5b2549d906b2c932a1486622958586f662dbd4b2fe72e6","impliedFormat":1},{"version":"24e2728268be1ad2407bab004549d2753a49b2acb0f117a04c4e28ffb3ecdd4f","impliedFormat":1},{"version":"aff159b14eba59afe98a88fe6f57881ba02895fb9763512dda9083497bdcd0e6","impliedFormat":1},{"version":"1f2bddea07543ccda708134cca0600b4d9ac9bd774ec1ede0a69935b04df1496","impliedFormat":1},{"version":"6e8997d08f6798d0a9416df24312cafd084e6184a205d9283eba95ef56f8ef8b","impliedFormat":1},{"version":"ac6968717607889d24d6e407effb48dd5af82005925b4725b1d9eb52a8a047e2","impliedFormat":1},{"version":"26080058b725ac0b480241751255b4391f722263778e84e66a62068705aafd3c","impliedFormat":1},{"version":"46afbf46c3d62eac2afead3a2011d506637bf4f2c05e1fd64bbf7e2bb2947b7c","impliedFormat":1},{"version":"84d02daa32c7a8bff4946bbc7d878ffb7114c19879f7bfceeeb39bef48e93c42","impliedFormat":1},{"version":"0fbbc989ca5a9cb73731434e80741eef2695cf35fb53d384808a0ab2d6732fcc","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"f874ea4d0091b0a44362a5f74d26caab2e66dec306c2bf7e8965f5106e784c3b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,424,[1146,1151]],"options":{"allowSyntheticDefaultImports":true,"declaration":false,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[424,1],[1150,2],[423,3],[1147,4],[1148,4],[1151,5],[1146,6],[1149,7],[1002,8],[1144,9],[991,10],[990,10],[992,10],[1145,11],[603,12],[602,3],[1154,13],[1152,14],[1283,15],[1297,14],[1491,16],[347,14],[334,14],[71,14],[323,17],[324,17],[325,14],[326,3],[336,18],[327,17],[328,19],[329,14],[330,14],[331,17],[332,17],[333,17],[335,20],[343,21],[345,14],[342,14],[349,22],[346,14],[344,14],[340,23],[341,24],[348,25],[350,26],[337,14],[339,27],[338,28],[277,14],[280,29],[276,14],[536,14],[278,14],[279,14],[353,30],[354,30],[355,30],[356,30],[357,30],[358,30],[359,30],[352,31],[360,30],[374,32],[361,30],[351,14],[362,30],[363,30],[364,30],[365,30],[366,30],[367,30],[368,30],[369,30],[370,30],[371,30],[372,30],[373,30],[382,33],[380,34],[379,14],[378,14],[381,35],[422,36],[72,14],[73,14],[74,14],[518,37],[76,38],[524,39],[523,40],[266,41],[267,38],[402,14],[296,14],[297,14],[403,42],[268,14],[404,14],[405,43],[75,14],[270,44],[271,45],[269,46],[272,44],[273,14],[275,47],[287,48],[288,14],[293,49],[289,14],[290,14],[291,14],[292,14],[294,14],[295,50],[301,51],[304,52],[302,14],[303,14],[322,53],[305,14],[306,14],[495,54],[286,55],[284,56],[282,57],[283,58],[285,14],[313,59],[307,14],[316,60],[309,61],[314,62],[312,63],[315,64],[310,65],[311,66],[299,67],[318,68],[300,69],[320,70],[321,71],[308,14],[317,14],[274,14],[281,72],[319,73],[388,74],[383,14],[389,75],[384,76],[385,77],[386,78],[387,79],[390,80],[395,81],[393,82],[394,82],[401,83],[391,14],[392,84],[396,81],[398,85],[400,86],[399,87],[414,88],[407,89],[408,90],[409,90],[410,91],[411,91],[412,90],[413,90],[406,92],[416,93],[415,94],[418,95],[417,96],[419,97],[375,98],[377,99],[298,14],[376,67],[420,100],[397,101],[421,102],[508,103],[509,104],[586,105],[510,106],[511,14],[512,107],[513,108],[522,109],[515,110],[519,111],[527,112],[525,3],[526,113],[516,114],[528,14],[530,115],[531,116],[532,117],[521,118],[517,119],[541,120],[529,121],[559,122],[514,123],[560,124],[557,125],[558,3],[581,126],[552,127],[506,128],[582,129],[556,130],[501,131],[543,132],[542,14],[551,133],[550,134],[584,135],[554,14],[555,136],[553,137],[583,138],[507,139],[505,140],[500,14],[547,141],[563,142],[561,3],[496,3],[546,143],[497,24],[498,106],[499,144],[503,145],[502,146],[562,147],[504,148],[535,149],[533,115],[534,150],[544,24],[545,151],[548,152],[566,153],[567,154],[564,155],[565,156],[568,157],[569,158],[570,159],[540,160],[537,161],[538,17],[539,150],[572,162],[571,163],[578,164],[585,3],[574,165],[573,3],[576,166],[575,14],[577,167],[520,168],[549,169],[580,170],[579,3],[462,171],[445,172],[464,173],[465,174],[466,175],[444,176],[467,177],[468,178],[469,179],[470,180],[459,14],[477,181],[471,182],[472,183],[473,183],[474,183],[475,183],[476,184],[478,185],[479,14],[482,186],[483,3],[486,187],[484,188],[485,3],[481,189],[480,14],[435,14],[432,190],[426,14],[427,14],[428,14],[429,14],[430,14],[431,14],[487,191],[490,192],[489,193],[488,14],[449,14],[433,194],[450,14],[451,195],[452,194],[447,196],[448,197],[438,198],[439,14],[440,196],[446,199],[437,200],[601,201],[425,14],[434,202],[455,203],[453,204],[442,205],[461,206],[456,73],[454,207],[441,14],[457,14],[458,14],[460,183],[443,205],[493,208],[494,209],[491,210],[492,211],[587,212],[590,213],[463,14],[588,14],[589,14],[599,214],[592,215],[593,216],[594,217],[595,218],[596,219],[597,220],[598,221],[591,222],[600,14],[996,223],[994,224],[995,225],[1000,226],[993,10],[998,227],[997,228],[999,229],[1001,230],[1490,231],[1301,232],[1302,233],[1439,232],[1440,234],[1421,235],[1422,236],[1305,237],[1306,238],[1376,239],[1377,240],[1350,232],[1351,241],[1344,232],[1345,242],[1436,243],[1434,244],[1435,14],[1450,245],[1451,246],[1320,247],[1321,248],[1452,249],[1453,250],[1454,251],[1455,252],[1312,253],[1313,254],[1438,255],[1437,256],[1423,232],[1424,257],[1316,258],[1317,259],[1340,14],[1341,260],[1458,261],[1456,262],[1457,263],[1459,264],[1460,265],[1463,266],[1461,267],[1464,244],[1462,268],[1465,269],[1468,270],[1466,271],[1467,272],[1469,273],[1318,253],[1319,274],[1444,275],[1441,276],[1442,277],[1443,14],[1419,278],[1420,279],[1364,280],[1363,281],[1361,282],[1360,283],[1362,284],[1471,285],[1470,286],[1473,287],[1472,288],[1349,289],[1348,232],[1327,290],[1325,291],[1324,237],[1326,292],[1476,293],[1480,294],[1474,295],[1475,296],[1477,293],[1478,293],[1479,293],[1366,297],[1365,237],[1382,298],[1380,299],[1381,244],[1378,300],[1379,301],[1315,302],[1314,232],[1372,303],[1303,232],[1304,304],[1371,305],[1409,306],[1412,307],[1410,308],[1411,309],[1323,310],[1322,232],[1414,311],[1413,237],[1392,312],[1391,232],[1347,313],[1346,232],[1418,314],[1417,315],[1386,316],[1385,317],[1383,318],[1384,319],[1375,320],[1374,321],[1373,322],[1482,323],[1481,324],[1399,325],[1398,326],[1397,327],[1446,328],[1445,14],[1390,329],[1389,330],[1387,331],[1388,332],[1368,333],[1367,237],[1311,334],[1310,335],[1309,336],[1308,337],[1307,338],[1403,339],[1402,340],[1333,341],[1332,237],[1337,342],[1336,343],[1401,344],[1400,232],[1447,14],[1449,345],[1448,14],[1406,346],[1405,347],[1404,348],[1484,349],[1483,350],[1486,351],[1485,352],[1432,353],[1433,354],[1431,355],[1370,356],[1369,14],[1416,357],[1415,358],[1343,359],[1342,232],[1394,360],[1393,232],[1300,361],[1299,14],[1353,362],[1354,363],[1359,364],[1352,365],[1356,366],[1355,367],[1357,368],[1358,369],[1408,370],[1407,237],[1339,371],[1338,237],[1489,372],[1488,373],[1487,374],[1426,375],[1425,232],[1396,376],[1395,232],[1331,377],[1329,378],[1328,237],[1330,379],[1428,380],[1427,232],[1335,381],[1334,232],[1430,382],[1429,232],[1157,383],[1153,13],[1155,384],[1156,13],[1266,385],[1265,386],[1267,14],[1278,387],[1286,388],[1282,389],[1281,390],[1279,14],[1290,391],[1293,392],[1291,14],[1294,14],[1295,393],[1296,394],[1497,395],[1280,14],[1277,396],[1270,397],[1274,398],[1272,399],[1275,400],[1273,401],[1276,402],[1271,14],[1269,403],[1268,404],[1498,14],[1211,405],[1212,405],[1213,406],[1160,407],[1214,408],[1215,409],[1216,410],[1158,14],[1217,411],[1218,412],[1219,413],[1220,414],[1221,415],[1222,416],[1223,416],[1224,417],[1225,418],[1226,419],[1227,420],[1161,14],[1159,14],[1228,421],[1229,422],[1230,423],[1264,424],[1231,425],[1232,14],[1233,426],[1234,427],[1235,428],[1236,429],[1237,430],[1238,431],[1239,432],[1240,433],[1241,434],[1242,434],[1243,435],[1244,14],[1245,436],[1246,437],[1248,438],[1247,439],[1249,440],[1250,441],[1251,442],[1252,443],[1253,444],[1254,445],[1255,446],[1256,447],[1257,448],[1258,449],[1259,450],[1260,451],[1261,452],[1162,14],[1163,453],[1164,14],[1165,14],[1207,454],[1208,455],[1209,14],[1210,440],[1262,456],[1263,457],[1288,14],[1289,14],[1287,458],[1292,459],[1499,14],[1508,460],[1500,14],[1503,461],[1506,462],[1507,463],[1501,464],[1504,465],[1502,466],[1513,467],[1510,468],[1512,14],[1511,469],[1509,470],[1514,14],[1045,471],[1036,14],[1037,14],[1038,14],[1039,14],[1040,14],[1041,14],[1042,14],[1043,14],[1044,14],[1515,14],[1516,472],[436,14],[1298,14],[1006,14],[1127,473],[1131,473],[1130,473],[1128,473],[1129,473],[1132,473],[1009,473],[1021,473],[1010,473],[1023,473],[1025,473],[1019,473],[1018,473],[1020,473],[1024,473],[1026,473],[1011,473],[1022,473],[1012,473],[1014,474],[1015,473],[1016,473],[1017,473],[1033,473],[1032,473],[1135,475],[1027,473],[1029,473],[1028,473],[1030,473],[1031,473],[1134,473],[1133,473],[1034,473],[1117,473],[1116,473],[1046,476],[1047,476],[1049,473],[1094,473],[1115,473],[1050,476],[1095,473],[1092,473],[1096,473],[1051,473],[1052,473],[1053,476],[1097,473],[1091,476],[1048,476],[1098,473],[1054,476],[1099,473],[1079,473],[1055,476],[1056,473],[1057,473],[1089,476],[1060,473],[1059,473],[1100,473],[1101,477],[1102,476],[1062,473],[1064,473],[1065,473],[1071,473],[1072,473],[1073,473],[1118,473],[1066,476],[1103,473],[1090,476],[1067,473],[1068,473],[1104,473],[1069,473],[1061,476],[1105,473],[1088,473],[1106,473],[1070,476],[1074,473],[1075,473],[1093,476],[1107,473],[1108,473],[1087,478],[1063,473],[1109,476],[1110,473],[1111,473],[1112,473],[1113,476],[1076,473],[1114,473],[1080,473],[1077,476],[1078,476],[1058,473],[1081,473],[1084,473],[1082,473],[1083,473],[1035,473],[1125,473],[1119,473],[1120,473],[1122,473],[1123,473],[1121,473],[1126,473],[1124,473],[1008,479],[1143,480],[1141,481],[1142,482],[1140,483],[1139,473],[1138,484],[1005,14],[1007,14],[1003,14],[1136,14],[1137,485],[1013,479],[1004,14],[1285,486],[1284,487],[1496,488],[1505,489],[1493,490],[1494,491],[1495,14],[1086,492],[1085,14],[1492,493],[70,14],[265,494],[238,14],[216,495],[214,495],[264,496],[229,497],[228,497],[129,498],[80,499],[236,498],[237,498],[239,500],[240,498],[241,501],[140,502],[242,498],[213,498],[243,498],[244,503],[245,498],[246,497],[247,504],[248,498],[249,498],[250,498],[251,498],[252,497],[253,498],[254,498],[255,498],[256,498],[257,505],[258,498],[259,498],[260,498],[261,498],[262,498],[79,496],[82,501],[83,501],[84,501],[85,501],[86,501],[87,501],[88,501],[89,498],[91,506],[92,501],[90,501],[93,501],[94,501],[95,501],[96,501],[97,501],[98,501],[99,498],[100,501],[101,501],[102,501],[103,501],[104,501],[105,498],[106,501],[107,501],[108,501],[109,501],[110,501],[111,501],[112,498],[114,507],[113,501],[115,501],[116,501],[117,501],[118,501],[119,505],[120,498],[121,498],[135,508],[123,509],[124,501],[125,501],[126,498],[127,501],[128,501],[130,510],[131,501],[132,501],[133,501],[134,501],[136,501],[137,501],[138,501],[139,501],[141,511],[142,501],[143,501],[144,501],[145,498],[146,501],[147,512],[148,512],[149,512],[150,498],[151,501],[152,501],[153,501],[158,501],[154,501],[155,498],[156,501],[157,498],[159,501],[160,501],[161,501],[162,501],[163,501],[164,501],[165,498],[166,501],[167,501],[168,501],[169,501],[170,501],[171,501],[172,501],[173,501],[174,501],[175,501],[176,501],[177,501],[178,501],[179,501],[180,501],[181,501],[182,513],[183,501],[184,501],[185,501],[186,501],[187,501],[188,501],[189,498],[190,498],[191,498],[192,498],[193,498],[194,501],[195,501],[196,501],[197,501],[215,514],[263,498],[200,515],[199,516],[223,517],[222,518],[218,519],[217,518],[219,520],[208,521],[206,522],[221,523],[220,520],[207,14],[209,524],[122,525],[78,526],[77,501],[212,14],[204,527],[205,528],[202,14],[203,529],[201,501],[210,530],[81,531],[230,14],[231,14],[224,14],[227,497],[226,14],[232,14],[233,14],[225,532],[234,14],[235,14],[198,533],[211,534],[672,535],[671,14],[693,14],[611,536],[673,14],[620,14],[610,14],[737,14],[824,14],[774,537],[980,538],[821,539],[979,540],[978,540],[823,14],[674,541],[781,542],[777,543],[975,539],[945,14],[895,544],[896,545],[897,545],[909,545],[902,546],[901,547],[903,545],[904,545],[908,548],[906,549],[936,550],[933,14],[932,551],[934,545],[948,552],[946,14],[942,553],[947,14],[941,554],[910,14],[911,14],[914,14],[912,14],[913,14],[915,14],[916,14],[919,14],[917,14],[918,14],[920,14],[921,14],[616,555],[889,14],[890,14],[891,14],[892,14],[617,556],[893,14],[894,14],[923,557],[648,558],[922,14],[651,14],[652,559],[653,559],[900,560],[898,560],[899,14],[608,558],[647,561],[943,562],[615,14],[907,555],[935,10],[905,563],[924,559],[925,564],[926,565],[927,565],[928,565],[929,565],[930,566],[931,566],[940,567],[939,14],[937,14],[938,568],[944,569],[767,14],[768,570],[771,537],[772,537],[773,537],[742,195],[743,571],[762,537],[679,572],[766,537],[684,14],[761,573],[721,574],[685,575],[744,14],[745,576],[765,537],[759,14],[760,577],[746,195],[747,578],[641,14],[764,537],[769,14],[770,579],[775,14],[776,580],[642,581],[748,537],[763,537],[750,14],[751,14],[752,14],[753,14],[754,14],[755,14],[749,14],[756,14],[977,14],[757,582],[758,583],[614,14],[639,14],[670,14],[644,14],[646,14],[732,14],[640,560],[675,14],[678,14],[738,584],[727,585],[778,586],[667,587],[658,14],[649,588],[650,589],[984,552],[659,14],[662,588],[645,14],[660,545],[666,590],[661,566],[654,591],[657,562],[827,592],[850,592],[831,592],[834,593],[836,592],[885,592],[862,592],[826,592],[854,592],[882,592],[833,592],[863,592],[848,592],[851,592],[839,592],[872,594],[868,592],[861,592],[843,595],[842,595],[859,593],[869,592],[887,596],[888,597],[873,598],[865,592],[846,592],[832,592],[835,592],[867,592],[852,593],[860,592],[857,599],[874,599],[858,593],[844,592],[853,592],[886,592],[876,592],[864,592],[884,592],[866,592],[845,592],[880,592],[870,592],[847,592],[875,592],[883,592],[849,592],[871,595],[855,592],[879,600],[830,600],[841,592],[840,592],[838,601],[825,14],[837,592],[881,599],[877,599],[856,599],[878,599],[686,602],[692,603],[691,604],[682,605],[681,14],[690,606],[689,606],[688,606],[968,607],[687,608],[729,14],[680,14],[697,609],[696,610],[949,602],[951,602],[952,602],[953,602],[954,602],[955,602],[956,611],[961,602],[957,602],[958,602],[967,602],[959,602],[960,602],[962,602],[963,602],[964,602],[965,602],[950,602],[966,612],[655,14],[822,613],[989,614],[969,615],[970,616],[973,617],[971,616],[668,618],[669,619],[972,616],[714,14],[619,620],[814,14],[628,14],[633,621],[815,622],[812,14],[718,14],[819,623],[818,14],[784,14],[813,545],[810,14],[811,624],[820,625],[809,14],[808,566],[629,566],[613,626],[782,627],[816,14],[817,14],[665,567],[618,14],[635,562],[715,628],[638,629],[637,630],[634,631],[783,632],[719,633],[626,634],[785,635],[631,636],[630,637],[627,638],[664,639],[605,14],[632,14],[606,14],[607,14],[609,14],[612,622],[604,14],[656,14],[663,14],[636,640],[741,641],[981,642],[740,618],[982,643],[983,644],[625,645],[829,646],[828,647],[683,648],[792,649],[734,650],[801,651],[735,652],[803,653],[793,654],[805,655],[806,656],[791,14],[799,657],[722,658],[795,659],[794,659],[780,660],[779,660],[804,661],[726,662],[724,663],[725,663],[796,14],[807,664],[797,14],[802,665],[731,666],[800,667],[798,14],[733,668],[723,14],[790,669],[974,670],[976,671],[987,14],[728,672],[695,14],[739,673],[694,14],[730,674],[736,675],[713,14],[621,14],[717,14],[676,14],[786,14],[788,676],[698,14],[623,10],[985,677],[643,678],[789,679],[716,680],[622,681],[720,682],[677,683],[787,684],[699,685],[624,686],[712,687],[700,14],[711,688],[706,689],[707,690],[710,586],[709,691],[705,690],[708,691],[701,586],[702,586],[703,586],[704,692],[986,693],[988,694],[67,14],[68,14],[13,14],[11,14],[12,14],[17,14],[16,14],[2,14],[18,14],[19,14],[20,14],[21,14],[22,14],[23,14],[24,14],[25,14],[3,14],[26,14],[27,14],[4,14],[28,14],[32,14],[29,14],[30,14],[31,14],[33,14],[34,14],[35,14],[5,14],[36,14],[37,14],[38,14],[39,14],[6,14],[43,14],[40,14],[41,14],[42,14],[44,14],[7,14],[45,14],[50,14],[51,14],[46,14],[47,14],[48,14],[49,14],[8,14],[55,14],[52,14],[53,14],[54,14],[56,14],[9,14],[57,14],[58,14],[59,14],[61,14],[60,14],[62,14],[63,14],[10,14],[69,14],[64,14],[1,14],[65,14],[66,14],[15,14],[14,14],[1183,695],[1195,696],[1181,697],[1196,698],[1205,699],[1172,700],[1173,701],[1171,194],[1204,702],[1199,703],[1203,704],[1175,705],[1192,706],[1174,707],[1202,708],[1169,709],[1170,703],[1176,710],[1177,14],[1182,711],[1180,710],[1167,712],[1206,713],[1197,714],[1186,715],[1185,710],[1187,716],[1190,717],[1184,718],[1188,719],[1200,702],[1178,720],[1179,721],[1191,722],[1168,698],[1194,723],[1193,710],[1189,724],[1198,14],[1166,14],[1201,725]],"affectedFilesPendingEmit":[424,1150,423,1147,1148,1151,1146,1149,1002,1144,991,990,992,1145,603,602],"version":"5.9.3"} \ No newline at end of file diff --git a/challenge-1/dist/apps/relay/main.js b/challenge-1/dist/apps/relay/main.js new file mode 100644 index 00000000..56d8915a --- /dev/null +++ b/challenge-1/dist/apps/relay/main.js @@ -0,0 +1,568 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ([ +/* 0 */, +/* 1 */ +/***/ ((module) => { + +module.exports = require("@nestjs/core"); + +/***/ }), +/* 2 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RelayModule = void 0; +const common_1 = __webpack_require__(3); +const schedule_1 = __webpack_require__(4); +const relay_service_1 = __webpack_require__(5); +const shared_1 = __webpack_require__(8); +const microservices_1 = __webpack_require__(6); +let RelayModule = class RelayModule { +}; +exports.RelayModule = RelayModule; +exports.RelayModule = RelayModule = __decorate([ + (0, common_1.Module)({ + imports: [ + shared_1.DatabaseModule, + schedule_1.ScheduleModule.forRoot(), + microservices_1.ClientsModule.register([ + { + name: 'KAFKA_CLIENT', + transport: microservices_1.Transport.KAFKA, + options: { + client: { + clientId: 'outbox-relay', + brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], + }, + producerOnlyMode: true, + }, + }, + ]), + ], + providers: [relay_service_1.RelayService], + }) +], RelayModule); + + +/***/ }), +/* 3 */ +/***/ ((module) => { + +module.exports = require("@nestjs/common"); + +/***/ }), +/* 4 */ +/***/ ((module) => { + +module.exports = require("@nestjs/schedule"); + +/***/ }), +/* 5 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var RelayService_1; +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RelayService = void 0; +const common_1 = __webpack_require__(3); +const microservices_1 = __webpack_require__(6); +const schedule_1 = __webpack_require__(4); +const typeorm_1 = __webpack_require__(7); +const shared_1 = __webpack_require__(8); +let RelayService = RelayService_1 = class RelayService { + kafkaClient; + dataSource; + logger = new common_1.Logger(RelayService_1.name); + constructor(kafkaClient, dataSource) { + this.kafkaClient = kafkaClient; + this.dataSource = dataSource; + } + async onApplicationBootstrap() { + await this.kafkaClient.connect(); + } + async relayOutboxEvents() { + this.logger.debug('Running Outbox Relay...'); + const events = await this.dataSource.manager.find(shared_1.OutboxEvent, { + where: { status: shared_1.OutboxStatus.PENDING }, + take: 100, + order: { createdAt: 'ASC' }, + }); + if (events.length === 0) + return; + this.logger.log(`Found ${events.length} pending events to relay`); + for (const event of events) { + try { + await new Promise((resolve, reject) => { + this.kafkaClient.emit(event.eventType, { + key: event.aggregateId, + value: event.payload + }).subscribe({ + next: (val) => resolve(val), + error: (err) => reject(err), + }); + }); + event.status = shared_1.OutboxStatus.SENT; + event.sentAt = new Date(); + await this.dataSource.manager.save(event); + this.logger.log(`Relayed event ${event.eventId} successfully`); + } + catch (error) { + this.logger.error(`Failed to relay event ${event.eventId}`, error.stack); + event.retryCount += 1; + await this.dataSource.manager.save(event); + } + } + } +}; +exports.RelayService = RelayService; +__decorate([ + (0, schedule_1.Cron)(schedule_1.CronExpression.EVERY_5_SECONDS), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", Promise) +], RelayService.prototype, "relayOutboxEvents", null); +exports.RelayService = RelayService = RelayService_1 = __decorate([ + (0, common_1.Injectable)(), + __param(0, (0, common_1.Inject)('KAFKA_CLIENT')), + __metadata("design:paramtypes", [typeof (_a = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _a : Object, typeof (_b = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _b : Object]) +], RelayService); + + +/***/ }), +/* 6 */ +/***/ ((module) => { + +module.exports = require("@nestjs/microservices"); + +/***/ }), +/* 7 */ +/***/ ((module) => { + +module.exports = require("typeorm"); + +/***/ }), +/* 8 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__webpack_require__(9), exports); +__exportStar(__webpack_require__(10), exports); +__exportStar(__webpack_require__(11), exports); +__exportStar(__webpack_require__(12), exports); +__exportStar(__webpack_require__(13), exports); +__exportStar(__webpack_require__(14), exports); +__exportStar(__webpack_require__(16), exports); + + +/***/ }), +/* 9 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedModule = void 0; +const common_1 = __webpack_require__(3); +const shared_service_1 = __webpack_require__(10); +let SharedModule = class SharedModule { +}; +exports.SharedModule = SharedModule; +exports.SharedModule = SharedModule = __decorate([ + (0, common_1.Module)({ + providers: [shared_service_1.SharedService], + exports: [shared_service_1.SharedService], + }) +], SharedModule); + + +/***/ }), +/* 10 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.SharedService = void 0; +const common_1 = __webpack_require__(3); +let SharedService = class SharedService { +}; +exports.SharedService = SharedService; +exports.SharedService = SharedService = __decorate([ + (0, common_1.Injectable)() +], SharedService); + + +/***/ }), +/* 11 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.Payment = exports.PaymentStatus = void 0; +const typeorm_1 = __webpack_require__(7); +var PaymentStatus; +(function (PaymentStatus) { + PaymentStatus["PENDING"] = "PENDING"; + PaymentStatus["SETTLED"] = "SETTLED"; + PaymentStatus["FAILED"] = "FAILED"; +})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); +let Payment = class Payment { + id; + amount; + currency; + country; + status; + createdAt; + updatedAt; +}; +exports.Payment = Payment; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], Payment.prototype, "id", void 0); +__decorate([ + (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), + __metadata("design:type", Number) +], Payment.prototype, "amount", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "currency", void 0); +__decorate([ + (0, typeorm_1.Column)(), + __metadata("design:type", String) +], Payment.prototype, "country", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: PaymentStatus, + default: PaymentStatus.PENDING, + }), + __metadata("design:type", String) +], Payment.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)(), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], Payment.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.UpdateDateColumn)(), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], Payment.prototype, "updatedAt", void 0); +exports.Payment = Payment = __decorate([ + (0, typeorm_1.Entity)('payments') +], Payment); + + +/***/ }), +/* 12 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a, _b, _c; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OutboxEvent = exports.OutboxStatus = void 0; +const typeorm_1 = __webpack_require__(7); +var OutboxStatus; +(function (OutboxStatus) { + OutboxStatus["PENDING"] = "PENDING"; + OutboxStatus["SENT"] = "SENT"; + OutboxStatus["FAILED"] = "FAILED"; +})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); +let OutboxEvent = class OutboxEvent { + eventId; + aggregateId; + eventType; + payload; + status; + retryCount; + createdAt; + sentAt; +}; +exports.OutboxEvent = OutboxEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.Column)('uuid'), + __metadata("design:type", String) +], OutboxEvent.prototype, "aggregateId", void 0); +__decorate([ + (0, typeorm_1.Column)({ length: 100 }), + __metadata("design:type", String) +], OutboxEvent.prototype, "eventType", void 0); +__decorate([ + (0, typeorm_1.Column)('jsonb'), + __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) +], OutboxEvent.prototype, "payload", void 0); +__decorate([ + (0, typeorm_1.Column)({ + type: 'enum', + enum: OutboxStatus, + default: OutboxStatus.PENDING, + }), + __metadata("design:type", String) +], OutboxEvent.prototype, "status", void 0); +__decorate([ + (0, typeorm_1.Column)({ default: 0 }), + __metadata("design:type", Number) +], OutboxEvent.prototype, "retryCount", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) +], OutboxEvent.prototype, "createdAt", void 0); +__decorate([ + (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), + __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) +], OutboxEvent.prototype, "sentAt", void 0); +exports.OutboxEvent = OutboxEvent = __decorate([ + (0, typeorm_1.Entity)('outbox_events'), + (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) +], OutboxEvent); + + +/***/ }), +/* 13 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.ProcessedEvent = void 0; +const typeorm_1 = __webpack_require__(7); +let ProcessedEvent = class ProcessedEvent { + eventId; + consumer; + processedAt; +}; +exports.ProcessedEvent = ProcessedEvent; +__decorate([ + (0, typeorm_1.PrimaryColumn)('uuid'), + __metadata("design:type", String) +], ProcessedEvent.prototype, "eventId", void 0); +__decorate([ + (0, typeorm_1.PrimaryColumn)({ length: 50 }), + __metadata("design:type", String) +], ProcessedEvent.prototype, "consumer", void 0); +__decorate([ + (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), + __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) +], ProcessedEvent.prototype, "processedAt", void 0); +exports.ProcessedEvent = ProcessedEvent = __decorate([ + (0, typeorm_1.Entity)('processed_events') +], ProcessedEvent); + + +/***/ }), +/* 14 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.DatabaseModule = void 0; +const common_1 = __webpack_require__(3); +const typeorm_1 = __webpack_require__(15); +const payment_entity_1 = __webpack_require__(11); +const outbox_event_entity_1 = __webpack_require__(12); +const processed_event_entity_1 = __webpack_require__(13); +let DatabaseModule = class DatabaseModule { +}; +exports.DatabaseModule = DatabaseModule; +exports.DatabaseModule = DatabaseModule = __decorate([ + (0, common_1.Module)({ + imports: [ + typeorm_1.TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.DB_HOST || 'localhost', + port: parseInt(process.env.DB_PORT || '5432', 10), + username: process.env.DB_USER || 'user', + password: process.env.DB_PASSWORD || 'password', + database: process.env.DB_NAME || 'payments_db', + entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], + synchronize: true, + }), + typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), + ], + exports: [typeorm_1.TypeOrmModule], + }) +], DatabaseModule); + + +/***/ }), +/* 15 */ +/***/ ((module) => { + +module.exports = require("@nestjs/typeorm"); + +/***/ }), +/* 16 */ +/***/ (function(__unused_webpack_module, exports, __webpack_require__) { + + +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.CreatePaymentDto = void 0; +const class_validator_1 = __webpack_require__(17); +class CreatePaymentDto { + amount; + currency; + country; +} +exports.CreatePaymentDto = CreatePaymentDto; +__decorate([ + (0, class_validator_1.IsNumber)(), + (0, class_validator_1.IsPositive)(), + __metadata("design:type", Number) +], CreatePaymentDto.prototype, "amount", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "currency", void 0); +__decorate([ + (0, class_validator_1.IsString)(), + (0, class_validator_1.IsNotEmpty)(), + __metadata("design:type", String) +], CreatePaymentDto.prototype, "country", void 0); + + +/***/ }), +/* 17 */ +/***/ ((module) => { + +module.exports = require("class-validator"); + +/***/ }) +/******/ ]); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +var exports = __webpack_exports__; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +const core_1 = __webpack_require__(1); +const relay_module_1 = __webpack_require__(2); +async function bootstrap() { + const app = await core_1.NestFactory.createApplicationContext(relay_module_1.RelayModule); + console.log('Outbox Relay Worker started'); +} +bootstrap(); + +})(); + +/******/ })() +; \ No newline at end of file diff --git a/challenge-3/.prettierrc b/challenge-3/.prettierrc new file mode 100644 index 00000000..a20502b7 --- /dev/null +++ b/challenge-3/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/challenge-3/README.md b/challenge-3/README.md new file mode 100644 index 00000000..1323d0cf --- /dev/null +++ b/challenge-3/README.md @@ -0,0 +1,84 @@ +# Challenge 3: Shared Platform Library 👉 `@yape/kafka-module` + +Bienvenido a la demostración de la librería dinámica genérica construida en NestJS para la segregación y aislamiento de lógica Kafka de las escuadras de Producto. + +Este desafío cumple la premisa de encapsular las conexiones, habilitar **DLT Automático sin configuración en el Squat** y, crucialmente, obligar el acoplamiento a tipos con **EventContract** validado puramente en compilación (`strict: true`). Hemos documentado la decisión clave de usar DynamicModules de NestJS en la carpeta *adr*. + +--- + +## 🛠 Instalación y Configuración + +Dado que el reto exige el proyecto en una nueva carpeta independiente, simularemos su uso internamente: +El código base de la librería vive en `src/` (y sus subcarpetas). El archivo de la app simulada *Squad Payments* que importa la librería está en `src/app.module.ts` y se lanza con Nest. + +```bash +# 1. Ingresa la carpeta +cd challenge-3 + +# 2. Instala dependencias (si no lo hiciste) +npm install + +# 3. Necesitarás Kafka corriendo en localhost:9092 +# Usa el mismo contenedor de Infraestructura del Challenge 1 (docker-compose up -d) + +# 4. Inicia la aplicación (Squad que consume tu módulo) +npm run start +``` + +--- + +## 🧐 Cómo Probar y Validar cada Escenario Exigido + +La librería inyecta `KafkaTypedProducer` que previene payloads inválidos en su invocación de *Publish*. + +### A) Validar Compilación Estricta de EventContract +Los squads **NO** pueden compilar el proyecto ni envíar mensajes a Kafka si los datos no coinciden estrictamente con las Interfaces. En vez de explotar en ejecución, atraparemos el error tipográfico previniendo builds subidos a Master. + +**Paso 1:** Abre el archivo `src/app.controller.ts`. +**Paso 2:** Localiza la línea 37 en la petición del body de Prueba. +```typescript +currency: 'PEN', // Si cambias esto a 'EUR', Fallará en tiempo de compilación Typescript +``` +**Paso 3:** Cambia `'PEN'` por una moneda que no figure (e.g. `'BRL'`) o borra una propiedad requerida de la Interfaz *PaymentCreatedPayload*. +**Paso 4:** En tu terminal escribe: `npm run build` o `npx tsc`. +¡El compilador TypeScript rechaza tu push! (Requisito 4 del Challenge validado). + +### B) Validar el Orquestador y Discovery (`@KafkaEvent()`) +La app de pruebas suscribe indirectamente usando el decorador creado `@KafkaEvent()` dentro del `app.controller.ts` (línea 46). Al disparar el evento usando un POST, observaremos instantáneamente el log del Subscriber interceptándolo. + +Para iniciar un flujo positivo, corre el entorno en una terminal y dispara la URL: +```bash +curl -X POST http://localhost:3000/test-publish \ + -H "Content-Type: application/json" \ + -d '{"amount": 100}' +``` +**Resultado en los logs de Nestjs:** +```bash +[KafkaTypedProducer] Published message to payment.created.v1 ... +[KafkaConsumerExplorer] Mapped {payment.created.v1} event to AppController.handlePaymentCreated() ... +[AppController] Received Kafka Event in Squad Consumer: {"paymentId":"PAY-123456","amount":100,"currency":"PEN","fromCountry":"PE"} +``` + +### C) Validar el DLT Automático (Configurado a las 2 reintentos) +La librería inyecta silenciosamente un `KafkaDltHandler` global al Squad. Si algún microservicio suelta una excepción irrecuperable un número de veces que excede `maxRetries`, la librería atrapa ese evento fallido y lo deriva al sub-tópico `{topic}.dlt` para no desechar el Request de Cliente. + +Dispara el POST con una cantidad altísima (el código en Controller lanzará throw explícito emulando un Crash): +```bash +curl -X POST http://localhost:3000/test-publish \ + -H "Content-Type: application/json" \ + -d '{"amount": 5000}' +``` +Observarás en los Logs cómo reintenta de forma consecutiva la excepción (Intentos 1, 2 y 3). +**Resultado:** Al rebasar el límite, publicará en el DLT Topic: +```bash +[KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 1/2)... +[KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 2/2)... +[KafkaConsumerExplorer] Max retries exceeded for topic payment.created.v1. Routing to DLT. +[KafkaDltHandler] Routing message to DLT topic: payment.created.v1.dlt ... +``` +¡El squad NUNCA necesitó tocar la configuración de DLT! + +--- + +## 🏛 Registro de Decisiones de Arquitectura (MADR) +Se encuentra alojado en forma de reporte en formato **MADR** en el folder local: `./adr/001-kafka-module-dynamic.md`. Explica en detalle por qué NestJS Dynamic Modules frente a clases comunes y alternativas discutidas (Schema Registries vs TypeScript Code-Checking). diff --git a/challenge-3/adr/001-kafka-module-dynamic.md b/challenge-3/adr/001-kafka-module-dynamic.md new file mode 100644 index 00000000..ab569c2c --- /dev/null +++ b/challenge-3/adr/001-kafka-module-dynamic.md @@ -0,0 +1,32 @@ +# ADR-001: @yape/kafka-module como NestJS Dynamic Module + +## Status +Accepted + +## Context +Diversos squads en Yape (e.g. Payments, Notifications, Fraud) necesitan publicar y consumir eventos desde Kafka con contratos tipados, ruteo DLT (Dead Letter Topic) automático y convenciones de nombres homogéneas. + +Sin una librería compartida estricta: +1. Cada squad implementa su propio envoltorio sobre `kafkajs`, lo que genera inconsistencias al fallar mensajes (algunos lo ignoran, otros mueren silenciosamente). +2. Los productores de eventos envían JSON en esquemas variables, provocando excepciones inesperadas (crashes en runtime) a nivel de deserialización cuando cambian atributos sin avisar. +3. Se pierden capacidades analíticas porque los *consumer groups* no siguen naming conventions establecidas. + +## Decision +Implementar la librería `@yape/kafka-module` como un **NestJS Dynamic Module** que se importa localmente en la aplicación de cada squad utilizando `KafkaModule.forFeature({...})`. Las abstracciones inyectan decoradores transparentes (`@KafkaEvent`) en reemplazo de métodos imperativos y exponen `EventContract` exclusivamente. + +## Alternatives Considered + +| Alternativa | Razón de rechazo | +|---|---| +| **Clase singleton u objeto estático global exportado** | No integra con la Inyección de Dependencias (DI) de NestJS. Los squads no pueden "mockearla" nativamente (`jest.spyOn`) dentro de TestingModules, impidiendo Unit Tests limpios. | +| **Librería Agnóstica pura de Node/Express (ej. Wrapper TS plano)** | Exige que el programador importe, instancie parámetros y amarre su ciclo de vida manualmente. Impide aprovechar el DiscoveryModule de NestJS para escanear controladores decorados en bootstrap. | +| **Implementar Confluent Schema Registry (Protobuf/Avro) puro** | Produce gran latencia y overhead de infraestructura técnica para un MVP inicial. Fue descartada en favor de *TypeScript Compile Checks* por ser instantáneo y suficiente para Squads dentro del mismo Monorepo, aunque se planteará como segunda etapa. | + +## Schema Evolution Strategy +En la V1 del módulo se adopta la política de **Additive-only fields**. Los Event Contracts solo pueden agregar campos opcionales; de lo contrario, TypeScript alertará un fallo en Compile-Time que impide el `git push`. Si se requiere eliminar o transformar propiedades (Breaking Changes), se adoptará una estrategia de **Topic Versioning** explícito (ej. `payment.created.v2` en vez de `v1`), forzando un período de coexistencia de la V1 y V2 por un mínimo de dos Sprints para dar tiempo a los downstream consumers de migrar sin caída del servicio. + +## What would be added with 2 more weeks +1. Integración completa con **Verdaccio local / GitHub Packages registry** con control estricto SemVer y changelogs automáticos. +2. Incorporación de **Confluent Schema Registry** validando cargas pesadas en runtime para atrapar payloads originados fuera de TypeScript (Microservicios en Go/Java). +3. Monitoreo unificado Prometheus inyectando un iterador sobre métricas de `producer.send` midiendo tasas de desbordamiento DLT. +4. Generación automática de tipos Typescript (Typing Code-Gen) desde un contrato YAML o un repositorio central de esquemas en lugar de que cada Squad lo tipee. diff --git a/challenge-3/dist/app.controller.d.ts b/challenge-3/dist/app.controller.d.ts new file mode 100644 index 00000000..9d01f22b --- /dev/null +++ b/challenge-3/dist/app.controller.d.ts @@ -0,0 +1,22 @@ +import { AppService } from './app.service'; +import { KafkaTypedProducer } from './kafka-typed-producer'; +import type { EventContract } from './types/event-contract.type'; +type PaymentCreatedPayload = { + paymentId: string; + amount: number; + currency: 'PEN' | 'MXN' | 'USD'; + fromCountry: string; +}; +export declare class AppController { + private readonly appService; + private readonly producer; + private readonly logger; + readonly maxRetries = 2; + constructor(appService: AppService, producer: KafkaTypedProducer); + getHello(): string; + testPublish(body: any): Promise<{ + status: string; + }>; + handlePaymentCreated(event: EventContract): Promise; +} +export {}; diff --git a/challenge-3/dist/app.controller.js b/challenge-3/dist/app.controller.js new file mode 100644 index 00000000..aa88f213 --- /dev/null +++ b/challenge-3/dist/app.controller.js @@ -0,0 +1,82 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var AppController_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppController = void 0; +const common_1 = require("@nestjs/common"); +const app_service_1 = require("./app.service"); +const kafka_typed_producer_1 = require("./kafka-typed-producer"); +const kafka_event_decorator_1 = require("./decorators/kafka-event.decorator"); +let AppController = AppController_1 = class AppController { + appService; + producer; + logger = new common_1.Logger(AppController_1.name); + maxRetries = 2; + constructor(appService, producer) { + this.appService = appService; + this.producer = producer; + } + getHello() { + return this.appService.getHello(); + } + async testPublish(body) { + await this.producer.publish('payment.created.v1', { + eventId: Math.random().toString(), + eventType: 'payment.created.v1', + version: 1, + producer: 'squad-payments', + occurredAt: new Date().toISOString(), + data: { + paymentId: 'PAY-123456', + amount: body.amount || 100, + currency: 'PEN', + fromCountry: 'PE', + }, + }); + return { status: 'published' }; + } + async handlePaymentCreated(event) { + this.logger.log(`Received Kafka Event in Squad Consumer: ${JSON.stringify(event.data)}`); + if (event.data.amount > 1000) { + this.logger.error('Amount too high! Simulating crash to trigger DLT handler...'); + throw new Error('Amount exceeds maximum allowed limit. Simulating failure.'); + } + } +}; +exports.AppController = AppController; +__decorate([ + (0, common_1.Get)(), + __metadata("design:type", Function), + __metadata("design:paramtypes", []), + __metadata("design:returntype", String) +], AppController.prototype, "getHello", null); +__decorate([ + (0, common_1.Post)('/test-publish'), + __param(0, (0, common_1.Body)()), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], AppController.prototype, "testPublish", null); +__decorate([ + (0, kafka_event_decorator_1.KafkaEvent)('payment.created.v1'), + __metadata("design:type", Function), + __metadata("design:paramtypes", [Object]), + __metadata("design:returntype", Promise) +], AppController.prototype, "handlePaymentCreated", null); +exports.AppController = AppController = AppController_1 = __decorate([ + (0, common_1.Controller)(), + __metadata("design:paramtypes", [app_service_1.AppService, + kafka_typed_producer_1.KafkaTypedProducer]) +], AppController); +//# sourceMappingURL=app.controller.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.controller.js.map b/challenge-3/dist/app.controller.js.map new file mode 100644 index 00000000..e4f599bf --- /dev/null +++ b/challenge-3/dist/app.controller.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,+CAA2C;AAC3C,iEAA4D;AAC5D,8EAAgE;AAYzD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAOL;IACA;IAPF,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAGzC,UAAU,GAAG,CAAC,CAAC;IAE/B,YACmB,UAAsB,EACtB,QAA4B;QAD5B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAoB;IAC5C,CAAC;IAGJ,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAS;QAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAwB,oBAAoB,EAAE;YACvE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE;gBACJ,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;gBAC1B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB,CAAC,KAA2C;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGzF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,sCAAa;AAYxB;IADC,IAAA,YAAG,GAAE;;;;6CAGL;AAGK;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAiBxB;AAIK;IADL,IAAA,kCAAU,EAAC,oBAAoB,CAAC;;;;yDAShC;wBA9CU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAQoB,wBAAU;QACZ,yCAAkB;GARpC,aAAa,CA+CzB"} \ No newline at end of file diff --git a/challenge-3/dist/app.module.d.ts b/challenge-3/dist/app.module.d.ts new file mode 100644 index 00000000..09cdb35c --- /dev/null +++ b/challenge-3/dist/app.module.d.ts @@ -0,0 +1,2 @@ +export declare class AppModule { +} diff --git a/challenge-3/dist/app.module.js b/challenge-3/dist/app.module.js new file mode 100644 index 00000000..0cdd5cd8 --- /dev/null +++ b/challenge-3/dist/app.module.js @@ -0,0 +1,29 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppModule = void 0; +const common_1 = require("@nestjs/common"); +const app_controller_1 = require("./app.controller"); +const app_service_1 = require("./app.service"); +const kafka_module_1 = require("./kafka.module"); +let AppModule = class AppModule { +}; +exports.AppModule = AppModule; +exports.AppModule = AppModule = __decorate([ + (0, common_1.Module)({ + imports: [ + kafka_module_1.KafkaModule.forFeature({ + topics: ['payment.created.v1'], + consumerGroup: 'payments-service-cg', + }), + ], + controllers: [app_controller_1.AppController], + providers: [app_service_1.AppService], + }) +], AppModule); +//# sourceMappingURL=app.module.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.module.js.map b/challenge-3/dist/app.module.js.map new file mode 100644 index 00000000..cb6fc0be --- /dev/null +++ b/challenge-3/dist/app.module.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,iDAA6C;AAYtC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAVrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,0BAAW,CAAC,UAAU,CAAC;gBACrB,MAAM,EAAE,CAAC,oBAAoB,CAAC;gBAC9B,aAAa,EAAE,qBAAqB;aACrC,CAAC;SACH;QACD,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,CAAC;KACxB,CAAC;GACW,SAAS,CAAG"} \ No newline at end of file diff --git a/challenge-3/dist/app.service.d.ts b/challenge-3/dist/app.service.d.ts new file mode 100644 index 00000000..0496e790 --- /dev/null +++ b/challenge-3/dist/app.service.d.ts @@ -0,0 +1,3 @@ +export declare class AppService { + getHello(): string; +} diff --git a/challenge-3/dist/app.service.js b/challenge-3/dist/app.service.js new file mode 100644 index 00000000..3bfb90bd --- /dev/null +++ b/challenge-3/dist/app.service.js @@ -0,0 +1,20 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AppService = void 0; +const common_1 = require("@nestjs/common"); +let AppService = class AppService { + getHello() { + return 'Hello World!'; + } +}; +exports.AppService = AppService; +exports.AppService = AppService = __decorate([ + (0, common_1.Injectable)() +], AppService); +//# sourceMappingURL=app.service.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.service.js.map b/challenge-3/dist/app.service.js.map new file mode 100644 index 00000000..b1674f62 --- /dev/null +++ b/challenge-3/dist/app.service.js.map @@ -0,0 +1 @@ +{"version":3,"file":"app.service.js","sourceRoot":"","sources":["../src/app.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAGrC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,QAAQ;QACN,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AAJY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAItB"} \ No newline at end of file diff --git a/challenge-3/dist/decorators/kafka-event.decorator.d.ts b/challenge-3/dist/decorators/kafka-event.decorator.d.ts new file mode 100644 index 00000000..64f9ec44 --- /dev/null +++ b/challenge-3/dist/decorators/kafka-event.decorator.d.ts @@ -0,0 +1,2 @@ +export declare const KAFKA_EVENT_METADATA: unique symbol; +export declare function KafkaEvent(topic: string): MethodDecorator; diff --git a/challenge-3/dist/decorators/kafka-event.decorator.js b/challenge-3/dist/decorators/kafka-event.decorator.js new file mode 100644 index 00000000..b8de736d --- /dev/null +++ b/challenge-3/dist/decorators/kafka-event.decorator.js @@ -0,0 +1,12 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KAFKA_EVENT_METADATA = void 0; +exports.KafkaEvent = KafkaEvent; +exports.KAFKA_EVENT_METADATA = Symbol('KAFKA_EVENT_METADATA'); +function KafkaEvent(topic) { + return (target, propertyKey, descriptor) => { + Reflect.defineMetadata(exports.KAFKA_EVENT_METADATA, { topic }, descriptor.value); + return descriptor; + }; +} +//# sourceMappingURL=kafka-event.decorator.js.map \ No newline at end of file diff --git a/challenge-3/dist/decorators/kafka-event.decorator.js.map b/challenge-3/dist/decorators/kafka-event.decorator.js.map new file mode 100644 index 00000000..1a1f4507 --- /dev/null +++ b/challenge-3/dist/decorators/kafka-event.decorator.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kafka-event.decorator.js","sourceRoot":"","sources":["../../src/decorators/kafka-event.decorator.ts"],"names":[],"mappings":";;;AAEA,gCASC;AAXY,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QACzC,OAAO,CAAC,cAAc,CACpB,4BAAoB,EACpB,EAAE,KAAK,EAAE,EACT,UAAU,CAAC,KAAe,CAC3B,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/challenge-3/dist/index.d.ts b/challenge-3/dist/index.d.ts new file mode 100644 index 00000000..387790bc --- /dev/null +++ b/challenge-3/dist/index.d.ts @@ -0,0 +1,4 @@ +export * from './kafka.module'; +export * from './kafka-typed-producer'; +export * from './decorators/kafka-event.decorator'; +export * from './types/event-contract.type'; diff --git a/challenge-3/dist/index.js b/challenge-3/dist/index.js new file mode 100644 index 00000000..6a2dc4f2 --- /dev/null +++ b/challenge-3/dist/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./kafka.module"), exports); +__exportStar(require("./kafka-typed-producer"), exports); +__exportStar(require("./decorators/kafka-event.decorator"), exports); +__exportStar(require("./types/event-contract.type"), exports); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/challenge-3/dist/index.js.map b/challenge-3/dist/index.js.map new file mode 100644 index 00000000..cc175667 --- /dev/null +++ b/challenge-3/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,yDAAuC;AACvC,qEAAmD;AACnD,8DAA4C"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-consumer.explorer.d.ts b/challenge-3/dist/kafka-consumer.explorer.d.ts new file mode 100644 index 00000000..bc3f4e0c --- /dev/null +++ b/challenge-3/dist/kafka-consumer.explorer.d.ts @@ -0,0 +1,18 @@ +import { OnModuleInit, OnModuleDestroy } from '@nestjs/common'; +import { DiscoveryService, Reflector } from '@nestjs/core'; +import { Kafka } from 'kafkajs'; +import { KafkaDltHandler } from './kafka-dlt.handler'; +export declare const KAFKA_CONSUMER_GROUP = "KAFKA_CONSUMER_GROUP"; +export declare class KafkaConsumerExplorer implements OnModuleInit, OnModuleDestroy { + private readonly discoveryService; + private readonly reflector; + private readonly client; + private readonly dltHandler; + private readonly groupId; + private readonly logger; + private consumer; + constructor(discoveryService: DiscoveryService, reflector: Reflector, client: Kafka, dltHandler: KafkaDltHandler, groupId: string); + onModuleInit(): Promise; + private executeWithRetryAndDlt; + onModuleDestroy(): Promise; +} diff --git a/challenge-3/dist/kafka-consumer.explorer.js b/challenge-3/dist/kafka-consumer.explorer.js new file mode 100644 index 00000000..2b59ec6a --- /dev/null +++ b/challenge-3/dist/kafka-consumer.explorer.js @@ -0,0 +1,121 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var __param = (this && this.__param) || function (paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +}; +var KafkaConsumerExplorer_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaConsumerExplorer = exports.KAFKA_CONSUMER_GROUP = void 0; +const common_1 = require("@nestjs/common"); +const core_1 = require("@nestjs/core"); +const kafkajs_1 = require("kafkajs"); +const kafka_event_decorator_1 = require("./decorators/kafka-event.decorator"); +const kafka_dlt_handler_1 = require("./kafka-dlt.handler"); +exports.KAFKA_CONSUMER_GROUP = 'KAFKA_CONSUMER_GROUP'; +let KafkaConsumerExplorer = KafkaConsumerExplorer_1 = class KafkaConsumerExplorer { + discoveryService; + reflector; + client; + dltHandler; + groupId; + logger = new common_1.Logger(KafkaConsumerExplorer_1.name); + consumer; + constructor(discoveryService, reflector, client, dltHandler, groupId) { + this.discoveryService = discoveryService; + this.reflector = reflector; + this.client = client; + this.dltHandler = dltHandler; + this.groupId = groupId; + if (this.groupId) { + this.consumer = this.client.consumer({ groupId: this.groupId }); + } + } + async onModuleInit() { + if (!this.consumer) { + return; + } + const providers = this.discoveryService.getProviders(); + const handlers = []; + providers.forEach((wrapper) => { + const { instance } = wrapper; + if (!instance || typeof instance !== 'object' || !Object.getPrototypeOf(instance)) { + return; + } + const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(instance)); + methodNames.forEach((methodName) => { + const method = instance[methodName]; + if (typeof method === 'function') { + const metadata = this.reflector.get(kafka_event_decorator_1.KAFKA_EVENT_METADATA, method); + if (metadata && metadata.topic) { + handlers.push({ + topic: metadata.topic, + handler: method.bind(instance), + instance, + }); + this.logger.log(`Mapped {${metadata.topic}} event to ${instance.constructor.name}.${methodName}()`); + } + } + }); + }); + if (handlers.length === 0) + return; + await this.consumer.connect(); + for (const handler of handlers) { + await this.consumer.subscribe({ topic: handler.topic, fromBeginning: false }); + } + await this.consumer.run({ + eachMessage: async (payload) => { + const matchingHandlers = handlers.filter((h) => h.topic === payload.topic); + for (const handlerConf of matchingHandlers) { + await this.executeWithRetryAndDlt(handlerConf, payload); + } + }, + }); + } + async executeWithRetryAndDlt(handlerConf, payload) { + let attempts = 0; + const maxRetries = handlerConf.instance?.maxRetries ?? 3; + const { message, topic } = payload; + while (attempts <= maxRetries) { + try { + const parsedMessage = JSON.parse(message.value?.toString() || '{}'); + await handlerConf.handler(parsedMessage); + return; + } + catch (error) { + attempts++; + this.logger.error(`Error processing message on ${topic} (Attempt ${attempts}/${maxRetries}): ${error.message}`); + if (attempts > maxRetries) { + this.logger.warn(`Max retries exceeded for topic ${topic}. Routing to DLT.`); + await this.dltHandler.connect(); + await this.dltHandler.route(topic, message, error); + return; + } + } + } + } + async onModuleDestroy() { + if (this.consumer) { + await this.consumer.disconnect(); + } + await this.dltHandler.disconnect(); + } +}; +exports.KafkaConsumerExplorer = KafkaConsumerExplorer; +exports.KafkaConsumerExplorer = KafkaConsumerExplorer = KafkaConsumerExplorer_1 = __decorate([ + (0, common_1.Injectable)(), + __param(4, (0, common_1.Inject)(exports.KAFKA_CONSUMER_GROUP)), + __metadata("design:paramtypes", [core_1.DiscoveryService, + core_1.Reflector, + kafkajs_1.Kafka, + kafka_dlt_handler_1.KafkaDltHandler, String]) +], KafkaConsumerExplorer); +//# sourceMappingURL=kafka-consumer.explorer.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-consumer.explorer.js.map b/challenge-3/dist/kafka-consumer.explorer.js.map new file mode 100644 index 00000000..bd97217d --- /dev/null +++ b/challenge-3/dist/kafka-consumer.explorer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kafka-consumer.explorer.js","sourceRoot":"","sources":["../src/kafka-consumer.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,uCAA2D;AAC3D,qCAA8D;AAC9D,8EAA0E;AAC1E,2DAAsD;AAEzC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAKb;IACA;IACA;IACA;IAC8B;IARhC,MAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAW;IAE3B,YACmB,gBAAkC,EAClC,SAAoB,EACpB,MAAa,EACb,UAA2B,EACG,OAAe;QAJ7C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAO;QACb,eAAU,GAAV,UAAU,CAAiB;QACG,YAAO,GAAP,OAAO,CAAQ;QAE9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAmE,EAAE,CAAC;QAEpF,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAmC,CAAC,CAAC;gBAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,4CAAoB,EACpB,MAAM,CACP,CAAC;oBAEF,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC9B,QAAQ;yBACT,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,KAAK,cAAc,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;gBACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3E,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAgE,EAChE,OAA2B;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnC,OAAO,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACpE,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,aAAa,QAAQ,IAAI,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEhH,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,mBAAmB,CAAC,CAAC;oBAC7E,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AAvGY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCAJM,uBAAgB;QACvB,gBAAS;QACZ,eAAK;QACD,mCAAe;GARnC,qBAAqB,CAuGjC"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-dlt.handler.d.ts b/challenge-3/dist/kafka-dlt.handler.d.ts new file mode 100644 index 00000000..a22df98c --- /dev/null +++ b/challenge-3/dist/kafka-dlt.handler.d.ts @@ -0,0 +1,10 @@ +import { Kafka } from 'kafkajs'; +export declare class KafkaDltHandler { + private readonly client; + private readonly logger; + private producer; + constructor(client: Kafka); + connect(): Promise; + disconnect(): Promise; + route(originalTopic: string, message: any, error: Error): Promise; +} diff --git a/challenge-3/dist/kafka-dlt.handler.js b/challenge-3/dist/kafka-dlt.handler.js new file mode 100644 index 00000000..1becf4c0 --- /dev/null +++ b/challenge-3/dist/kafka-dlt.handler.js @@ -0,0 +1,57 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var KafkaDltHandler_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaDltHandler = void 0; +const common_1 = require("@nestjs/common"); +const kafkajs_1 = require("kafkajs"); +let KafkaDltHandler = KafkaDltHandler_1 = class KafkaDltHandler { + client; + logger = new common_1.Logger(KafkaDltHandler_1.name); + producer; + constructor(client) { + this.client = client; + this.producer = this.client.producer(); + } + async connect() { + await this.producer.connect(); + } + async disconnect() { + await this.producer.disconnect(); + } + async route(originalTopic, message, error) { + const dltTopic = `${originalTopic}.dlt`; + this.logger.warn(`Routing message to DLT topic: ${dltTopic} due to error: ${error.message}`); + const payload = { + key: message.key, + value: JSON.stringify({ + originalTopic, + originalPayload: message.value?.toString(), + error: error.message, + failedAt: new Date().toISOString(), + }), + headers: { + 'x-original-topic': originalTopic, + 'x-error-type': error.constructor.name, + }, + }; + await this.producer.send({ + topic: dltTopic, + messages: [payload], + }); + } +}; +exports.KafkaDltHandler = KafkaDltHandler; +exports.KafkaDltHandler = KafkaDltHandler = KafkaDltHandler_1 = __decorate([ + (0, common_1.Injectable)(), + __metadata("design:paramtypes", [kafkajs_1.Kafka]) +], KafkaDltHandler); +//# sourceMappingURL=kafka-dlt.handler.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-dlt.handler.js.map b/challenge-3/dist/kafka-dlt.handler.js.map new file mode 100644 index 00000000..bba5ee85 --- /dev/null +++ b/challenge-3/dist/kafka-dlt.handler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kafka-dlt.handler.js","sourceRoot":"","sources":["../src/kafka-dlt.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAmD;AAG5C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAIG;IAHZ,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAW;IAE3B,YAA6B,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAAqB,EAAE,OAAY,EAAE,KAAY;QAC3D,MAAM,QAAQ,GAAG,GAAG,aAAa,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,QAAQ,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7F,MAAM,OAAO,GAAY;YACvB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,aAAa;gBACb,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE;gBAC1C,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACnC,CAAC;YACF,OAAO,EAAE;gBACP,kBAAkB,EAAE,aAAa;gBACjC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;aACvC;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAK0B,eAAK;GAJ/B,eAAe,CAuC3B"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-typed-producer.d.ts b/challenge-3/dist/kafka-typed-producer.d.ts new file mode 100644 index 00000000..e82d3878 --- /dev/null +++ b/challenge-3/dist/kafka-typed-producer.d.ts @@ -0,0 +1,10 @@ +import { Kafka } from 'kafkajs'; +import { EventContract } from './types/event-contract.type'; +export declare class KafkaTypedProducer { + private readonly client; + private readonly logger; + private producers; + constructor(client: Kafka); + publish(topic: string, payload: EventContract): Promise; + disconnectAll(): Promise; +} diff --git a/challenge-3/dist/kafka-typed-producer.js b/challenge-3/dist/kafka-typed-producer.js new file mode 100644 index 00000000..5faaa11a --- /dev/null +++ b/challenge-3/dist/kafka-typed-producer.js @@ -0,0 +1,48 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; +var KafkaTypedProducer_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaTypedProducer = void 0; +const common_1 = require("@nestjs/common"); +const kafkajs_1 = require("kafkajs"); +let KafkaTypedProducer = KafkaTypedProducer_1 = class KafkaTypedProducer { + client; + logger = new common_1.Logger(KafkaTypedProducer_1.name); + producers = new Map(); + constructor(client) { + this.client = client; + } + async publish(topic, payload) { + let producer = this.producers.get(topic); + if (!producer) { + producer = this.client.producer(); + await producer.connect(); + this.producers.set(topic, producer); + this.logger.log(`Initialized and connected producer for topic: ${topic}`); + } + await producer.send({ + topic, + messages: [{ value: JSON.stringify(payload) }], + }); + this.logger.debug(`Published message to ${topic}: ${JSON.stringify(payload.eventId)}`); + } + async disconnectAll() { + for (const producer of this.producers.values()) { + await producer.disconnect(); + } + } +}; +exports.KafkaTypedProducer = KafkaTypedProducer; +exports.KafkaTypedProducer = KafkaTypedProducer = KafkaTypedProducer_1 = __decorate([ + (0, common_1.Injectable)(), + __metadata("design:paramtypes", [kafkajs_1.Kafka]) +], KafkaTypedProducer); +//# sourceMappingURL=kafka-typed-producer.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-typed-producer.js.map b/challenge-3/dist/kafka-typed-producer.js.map new file mode 100644 index 00000000..05abb9ee --- /dev/null +++ b/challenge-3/dist/kafka-typed-producer.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kafka-typed-producer.js","sourceRoot":"","sources":["../src/kafka-typed-producer.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAA0C;AAInC,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAIA;IAHZ,MAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD,YAA6B,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;IAAG,CAAC;IAE9C,KAAK,CAAC,OAAO,CACX,KAAa,EACb,OAAyB;QAEzB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,QAAQ,CAAC,IAAI,CAAC;YAClB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;CACF,CAAA;AA/BY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAK0B,eAAK;GAJ/B,kBAAkB,CA+B9B"} \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.d.ts b/challenge-3/dist/kafka.module.d.ts new file mode 100644 index 00000000..fb784ba3 --- /dev/null +++ b/challenge-3/dist/kafka.module.d.ts @@ -0,0 +1,9 @@ +import { DynamicModule } from '@nestjs/common'; +export interface KafkaFeatureOptions { + topics: string[]; + consumerGroup?: string; + brokers?: string[]; +} +export declare class KafkaModule { + static forFeature(options: KafkaFeatureOptions): DynamicModule; +} diff --git a/challenge-3/dist/kafka.module.js b/challenge-3/dist/kafka.module.js new file mode 100644 index 00000000..a60989d5 --- /dev/null +++ b/challenge-3/dist/kafka.module.js @@ -0,0 +1,53 @@ +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +var KafkaModule_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KafkaModule = void 0; +const common_1 = require("@nestjs/common"); +const core_1 = require("@nestjs/core"); +const kafkajs_1 = require("kafkajs"); +const kafka_consumer_explorer_1 = require("./kafka-consumer.explorer"); +const kafka_typed_producer_1 = require("./kafka-typed-producer"); +const kafka_dlt_handler_1 = require("./kafka-dlt.handler"); +let KafkaModule = KafkaModule_1 = class KafkaModule { + static forFeature(options) { + const brokers = options.brokers || process.env.KAFKA_BROKERS?.split(',') || ['localhost:9092']; + const clientProvider = { + provide: kafkajs_1.Kafka, + useFactory: () => { + return new kafkajs_1.Kafka({ + clientId: `yape-kafka-module-${Math.random().toString(36).substring(7)}`, + brokers: brokers, + }); + }, + }; + const groupIdProvider = { + provide: kafka_consumer_explorer_1.KAFKA_CONSUMER_GROUP, + useValue: options.consumerGroup || '', + }; + return { + module: KafkaModule_1, + providers: [ + clientProvider, + groupIdProvider, + kafka_typed_producer_1.KafkaTypedProducer, + kafka_dlt_handler_1.KafkaDltHandler, + kafka_consumer_explorer_1.KafkaConsumerExplorer, + ], + exports: [kafka_typed_producer_1.KafkaTypedProducer], + }; + } +}; +exports.KafkaModule = KafkaModule; +exports.KafkaModule = KafkaModule = KafkaModule_1 = __decorate([ + (0, common_1.Global)(), + (0, common_1.Module)({ + imports: [core_1.DiscoveryModule], + }) +], KafkaModule); +//# sourceMappingURL=kafka.module.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.js.map b/challenge-3/dist/kafka.module.js.map new file mode 100644 index 00000000..cc6087c6 --- /dev/null +++ b/challenge-3/dist/kafka.module.js.map @@ -0,0 +1 @@ +{"version":3,"file":"kafka.module.js","sourceRoot":"","sources":["../src/kafka.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,qCAAgC;AAChC,uEAAwF;AACxF,iEAA4D;AAC5D,2DAAsD;AAY/C,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,UAAU,CAAC,OAA4B;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/F,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,eAAK;YACd,UAAU,EAAE,GAAG,EAAE;gBACf,OAAO,IAAI,eAAK,CAAC;oBACf,QAAQ,EAAE,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACxE,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QAEF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,8CAAoB;YAC7B,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;SACtC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,cAAc;gBACd,eAAe;gBACf,yCAAkB;gBAClB,mCAAe;gBACf,+CAAqB;aACtB;YACD,OAAO,EAAE,CAAC,yCAAkB,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,kCAAW;sBAAX,WAAW;IAJvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;KAC3B,CAAC;GACW,WAAW,CA+BvB"} \ No newline at end of file diff --git a/challenge-3/dist/main.d.ts b/challenge-3/dist/main.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/challenge-3/dist/main.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/challenge-3/dist/main.js b/challenge-3/dist/main.js new file mode 100644 index 00000000..274552ef --- /dev/null +++ b/challenge-3/dist/main.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const core_1 = require("@nestjs/core"); +const app_module_1 = require("./app.module"); +async function bootstrap() { + const app = await core_1.NestFactory.create(app_module_1.AppModule); + await app.listen(process.env.PORT ?? 3000); +} +bootstrap(); +//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/challenge-3/dist/main.js.map b/challenge-3/dist/main.js.map new file mode 100644 index 00000000..fa2fb809 --- /dev/null +++ b/challenge-3/dist/main.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/challenge-3/dist/tsconfig.build.tsbuildinfo b/challenge-3/dist/tsconfig.build.tsbuildinfo new file mode 100644 index 00000000..33eefe09 --- /dev/null +++ b/challenge-3/dist/tsconfig.build.tsbuildinfo @@ -0,0 +1 @@ +{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2023.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/subscription.d.ts","../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../node_modules/rxjs/dist/types/internal/operator.d.ts","../node_modules/rxjs/dist/types/internal/observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../node_modules/rxjs/dist/types/internal/notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/constants.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/kafkajs/types/index.d.ts","../src/types/event-contract.type.ts","../src/kafka-typed-producer.ts","../src/decorators/kafka-event.decorator.ts","../src/app.controller.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../node_modules/@nestjs/core/router/router-proxy.d.ts","../node_modules/@nestjs/core/helpers/context-creator.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../node_modules/@nestjs/core/guards/constants.d.ts","../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../node_modules/@nestjs/core/guards/index.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../node_modules/@nestjs/core/interceptors/index.d.ts","../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../node_modules/@nestjs/core/pipes/index.d.ts","../node_modules/@nestjs/core/helpers/context-utils.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../node_modules/@nestjs/core/inspector/index.d.ts","../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/kafka-dlt.handler.ts","../src/kafka-consumer.explorer.ts","../src/kafka.module.ts","../src/app.module.ts","../src/index.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@eslint/core/dist/cjs/types.d.cts","../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../node_modules/eslint/lib/types/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/jest-mock/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/types.d.ts","../node_modules/@types/supertest/lib/agent.d.ts","../node_modules/@types/supertest/lib/test.d.ts","../node_modules/@types/supertest/lib/cookies.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[426,481,498,499,635],[426,481,498,499],[426,481,498,499,645],[426,481,498,499,855],[322,426,481,498,499],[422,426,481,498,499],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,426,481,498,499],[274,308,426,481,498,499],[281,426,481,498,499],[271,322,422,426,481,498,499],[340,341,342,343,344,345,346,348,426,481,498,499],[276,426,481,498,499],[322,422,426,481,498,499],[276,347,426,481,498,499],[336,339,349,426,481,498,499],[337,338,426,481,498,499],[312,426,481,498,499],[276,277,278,279,426,481,498,499],[352,426,481,498,499],[294,351,426,481,498,499],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,426,481,498,499],[381,426,481,498,499],[378,379,426,481,498,499],[377,380,426,481,498,499,513],[70,280,322,350,374,377,382,389,414,419,421,426,481,498,499],[76,274,426,481,498,499],[75,426,481,498,499],[76,266,267,426,481,498,499,567,572],[266,274,426,481,498,499],[75,265,426,481,498,499],[274,402,426,481,498,499],[268,404,426,481,498,499],[265,269,426,481,498,499],[269,426,481,498,499],[75,322,426,481,498,499],[273,274,426,481,498,499],[286,426,481,498,499],[288,289,290,291,292,426,481,498,499],[280,426,481,498,499],[280,281,300,426,481,498,499],[294,295,301,302,303,426,481,498,499],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,426,481,498,499],[299,426,481,498,499],[282,283,284,285,426,481,498,499],[274,282,283,426,481,498,499],[274,280,281,426,481,498,499],[274,284,426,481,498,499],[274,312,426,481,498,499],[307,309,310,311,312,313,314,315,426,481,498,499],[72,274,426,481,498,499],[308,426,481,498,499],[72,274,307,311,313,426,481,498,499],[283,426,481,498,499],[309,426,481,498,499],[274,308,309,310,426,481,498,499],[298,426,481,498,499],[274,278,298,299,316,317,426,481,498,499],[296,297,299,426,481,498,499],[270,272,281,287,301,318,319,322,426,481,498,499],[76,265,270,272,275,318,319,426,481,498,499],[279,426,481,498,499],[265,426,481,498,499],[298,322,383,387,426,481,498,499],[387,388,426,481,498,499],[322,383,426,481,498,499],[322,383,384,426,481,498,499],[384,385,426,481,498,499],[384,385,386,426,481,498,499],[275,426,481,498,499],[392,393,394,426,481,498,499],[392,426,481,498,499],[394,395,396,398,399,400,426,481,498,499],[391,426,481,498,499],[394,397,426,481,498,499],[394,395,396,398,399,426,481,498,499],[275,392,394,398,426,481,498,499],[390,401,406,407,408,409,410,411,412,413,426,481,498,499],[275,322,406,426,481,498,499],[275,397,426,481,498,499],[275,397,422,426,481,498,499],[268,274,275,397,402,403,404,405,426,481,498,499],[265,322,402,403,415,426,481,498,499],[322,402,426,481,498,499],[417,426,481,498,499],[350,415,426,481,498,499],[415,416,418,426,481,498,499],[298,426,481,498,499,525],[298,375,376,426,481,498,499],[307,426,481,498,499],[280,322,426,481,498,499],[420,426,481,498,499],[300,322,422,426,481,498,499],[426,481,498,499,537],[322,422,426,481,498,499,556,557],[347,426,481,498,499],[422,426,481,498,499,550,555,556],[426,481,498,499,560,561],[76,322,426,481,498,499,551,556,570],[422,426,481,498,499,538,563],[75,422,426,481,498,499,564,567],[322,426,481,498,499,551,556,558,569,571,575],[75,426,481,498,499,573,574],[426,481,498,499,564],[265,322,422,426,481,498,499,578],[322,422,426,481,498,499,551,556,558,570],[426,481,498,499,577,579,580],[322,426,481,498,499,556],[426,481,498,499,556],[322,422,426,481,498,499,578],[75,322,422,426,481,498,499],[322,422,426,481,498,499,550,551,556,576,578,581,584,589,590,603,604],[265,426,481,498,499,537],[426,481,498,499,563,566,605],[426,481,498,499,590,602],[70,426,481,498,499,538,558,559,562,565,597,602,606,609,613,614,615,617,619,625,627],[322,422,426,481,498,499,544,552,555,556],[322,426,481,498,499,548],[299,322,347,422,426,481,498,499,547,548,549,550,555,556,558,628],[426,481,498,499,550,551,554,556,592,601],[322,422,426,481,498,499,543,555,556],[426,481,498,499,591],[422,426,481,498,499,551,556],[422,426,481,498,499,544,551,555,596],[322,347,422,426,481,498,499,543,555],[422,426,481,498,499,549,550,554,594,598,599,600],[422,426,481,498,499,544,551,552,553,555,556],[322,347,426,481,498,499,551,554,556],[265,426,481,498,499,555],[274,307,313,426,481,498,499],[426,481,498,499,540,541,542,551,555,556,595],[426,481,498,499,547,596,607,608],[347,422,426,481,498,499,556],[347,422,426,481,498,499],[426,481,498,499,539,540,541,542,545,547],[426,481,498,499,544],[426,481,498,499,546,547],[422,426,481,498,499,539,540,541,542,545,546],[426,481,498,499,582,583],[322,426,481,498,499,551,556,558,570],[426,481,498,499,593],[305,426,481,498,499],[286,322,426,481,498,499,610,611],[426,481,498,499,612],[322,426,481,498,499,558],[322,426,481,498,499,551,558],[299,322,422,426,481,498,499,544,551,552,553,555,556],[298,322,422,426,481,498,499,538,551,558,596,614],[299,300,422,426,481,498,499,537,616],[426,481,498,499,586,587,588],[422,426,481,498,499,585],[426,481,498,499,618],[422,426,481,498,499,510],[426,481,498,499,621,623,624],[426,481,498,499,620],[426,481,498,499,622],[422,426,481,498,499,550,555,621],[426,481,498,499,568],[322,347,422,426,481,498,499,551,555,556,558,593,594,596,597],[426,481,498,499,626],[426,481,498,499,665,667,671,674,676,678,680,682,684,688,692,696,698,700,702,704,706,708,710,712,714,716,724,729,731,733,735,737,740,742,747,751,755,757,759,761,764,766,768,771,773,777,779,781,783,785,787,789,791,793,795,798,801,803,805,809,811,814,816,818,820,824,830,834,836,838,845,847,849,851,854],[426,481,498,499,665,798],[426,481,498,499,666],[426,481,498,499,804],[426,481,498,499,665,781,785,798],[426,481,498,499,786],[426,481,498,499,665,781,798],[426,481,498,499,670],[426,481,498,499,686,692,696,702,733,785,798],[426,481,498,499,741],[426,481,498,499,715],[426,481,498,499,709],[426,481,498,499,799,800],[426,481,498,499,798],[426,481,498,499,688,692,729,735,747,783,785,798],[426,481,498,499,815],[426,481,498,499,664,798],[426,481,498,499,685],[426,481,498,499,667,674,680,684,688,704,716,757,759,761,783,785,789,791,793,798],[426,481,498,499,817],[426,481,498,499,678,688,704,798],[426,481,498,499,819],[426,481,498,499,665,674,676,740,781,785,798],[426,481,498,499,677],[426,481,498,499,802],[426,481,498,499,796],[426,481,498,499,788],[426,481,498,499,665,680,798],[426,481,498,499,681],[426,481,498,499,705],[426,481,498,499,737,783,798,822],[426,481,498,499,724,798,822],[426,481,498,499,688,696,724,737,781,785,798,821,823],[426,481,498,499,821,822,823],[426,481,498,499,706,798],[426,481,498,499,680,737,783,785,798,827],[426,481,498,499,737,783,798,827],[426,481,498,499,696,737,781,785,798,826,828],[426,481,498,499,825,826,827,828,829],[426,481,498,499,737,783,798,832],[426,481,498,499,724,798,832],[426,481,498,499,688,696,724,737,781,785,798,831,833],[426,481,498,499,831,832,833],[426,481,498,499,683],[426,481,498,499,806,807,808],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,706,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,688,783,798],[426,481,498,499,784],[426,481,498,499,725,726,727,728],[426,481,498,499,727,737,783,785,798],[426,481,498,499,725,729,737,783,798],[426,481,498,499,680,696,712,714,724,798],[426,481,498,499,686,688,692,696,698,702,704,725,726,728,737,783,785,787,798],[426,481,498,499,835],[426,481,498,499,678,688,798],[426,481,498,499,837],[426,481,498,499,671,674,676,678,684,692,696,704,731,733,740,768,783,787,793,798,805],[426,481,498,499,713],[426,481,498,499,689,690,691],[426,481,498,499,674,688,689,740,798],[426,481,498,499,688,689,798],[426,481,498,499,798,840],[426,481,498,499,839,840,841,842,843,844],[426,481,498,499,680,737,783,785,798,840],[426,481,498,499,680,696,724,737,798,839],[426,481,498,499,730],[426,481,498,499,743,744,745,746],[426,481,498,499,737,744,783,785,798],[426,481,498,499,692,696,698,704,735,783,785,787,798],[426,481,498,499,680,686,696,702,712,737,743,745,785,798],[426,481,498,499,679],[426,481,498,499,668,669,736],[426,481,498,499,665,783,798],[426,481,498,499,668,669,671,674,678,680,682,684,692,696,704,729,731,733,735,740,783,785,787,798],[426,481,498,499,671,674,678,682,684,686,688,692,696,702,704,729,731,740,742,747,751,755,764,768,771,773,783,785,787,798],[426,481,498,499,776],[426,481,498,499,671,674,678,682,684,692,696,698,702,704,731,740,768,781,783,785,787,798],[426,481,498,499,665,774,775,781,783,798],[426,481,498,499,687],[426,481,498,499,778],[426,481,498,499,756],[426,481,498,499,711],[426,481,498,499,782],[426,481,498,499,665,674,740,781,785,798],[426,481,498,499,748,749,750],[426,481,498,499,737,749,783,798],[426,481,498,499,737,749,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,748,750,783,785,798],[426,481,498,499,738,739],[426,481,498,499,737,738,783],[426,481,498,499,665,737,739,785,798],[426,481,498,499,846],[426,481,498,499,684,688,704,798],[426,481,498,499,762,763],[426,481,498,499,737,762,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,763,783,785,798],[426,481,498,499,810],[426,481,498,499,752,753,754],[426,481,498,499,737,753,783,798],[426,481,498,499,737,753,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,752,754,783,785,798],[426,481,498,499,732],[426,481,498,499,675],[426,481,498,499,674,740,798],[426,481,498,499,672,673],[426,481,498,499,672,737,783],[426,481,498,499,665,673,737,785,798],[426,481,498,499,767],[426,481,498,499,665,667,680,682,688,696,708,710,712,714,724,766,781,783,785,798],[426,481,498,499,697],[426,481,498,499,701],[426,481,498,499,665,700,781,798],[426,481,498,499,765],[426,481,498,499,812,813],[426,481,498,499,769,770],[426,481,498,499,737,769,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,770,783,785,798],[426,481,498,499,848],[426,481,498,499,692,696,704,798],[426,481,498,499,850],[426,481,498,499,684,688,798],[426,481,498,499,667,671,678,680,682,684,692,696,698,702,704,708,710,712,714,716,724,731,733,757,759,761,766,768,779,783,787,789,791,793,795,796],[426,481,498,499,796,797],[426,481,498,499,665],[426,481,498,499,734],[426,481,498,499,780],[426,481,498,499,671,674,678,682,684,688,692,696,698,700,702,704,731,733,740,768,773,777,779,783,785,787,798],[426,481,498,499,707],[426,481,498,499,758],[426,481,498,499,664],[426,481,498,499,680,696,706,708,710,712,714,716,717,724],[426,481,498,499,680,696,706,710,717,718,724,785],[426,481,498,499,717,718,719,720,721,722,723],[426,481,498,499,706],[426,481,498,499,706,724],[426,481,498,499,680,696,708,710,712,716,724,785],[426,481,498,499,665,680,688,696,708,710,712,714,716,720,781,785,798],[426,481,498,499,680,696,722,781,785],[426,481,498,499,772],[426,481,498,499,703],[426,481,498,499,852,853],[426,481,498,499,671,678,684,716,731,733,742,759,761,766,789,791,795,798,805,820,836,838,847,851,852],[426,481,498,499,667,674,676,680,682,688,692,696,698,700,702,704,708,710,712,714,724,729,737,740,747,751,755,757,764,768,771,773,777,779,783,787,793,798,816,818,824,830,834,845,849],[426,481,498,499,790],[426,481,498,499,760],[426,481,498,499,693,694,695],[426,481,498,499,674,688,693,740,798],[426,481,498,499,688,693,798],[426,481,498,499,792],[426,481,498,499,699],[426,481,498,499,794],[426,481,498,499,635,636,637,638,639],[426,481,498,499,635,637],[426,481,495,498,499,531,641],[426,481,495,498,499,531],[426,481,498,499,644,650],[426,481,498,499,644,645,646],[426,481,498,499,647],[426,481,492,495,498,499,531,652,653,654],[426,481,498,499,642,655,657],[426,481,498,499,659],[426,481,498,499,660],[426,481,498,499,857,861],[426,478,479,481,498,499],[426,480,481,498,499],[481,498,499],[426,481,486,498,499,516],[426,481,482,487,492,498,499,501,513,524],[426,481,482,483,492,498,499,501],[426,481,484,498,499,525],[426,481,485,486,493,498,499,502],[426,481,486,498,499,513,521],[426,481,487,489,492,498,499,501],[426,480,481,488,498,499],[426,481,489,490,498,499],[426,481,491,492,498,499],[426,480,481,492,498,499],[426,481,492,493,494,498,499,513,524],[426,481,492,493,494,498,499,508,513,516],[426,473,481,489,492,495,498,499,501,513,524],[426,481,492,493,495,496,498,499,501,513,521,524],[426,481,495,497,498,499,513,521,524],[424,425,426,427,428,429,430,431,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,492,498,499],[426,481,498,499,500,524],[426,481,489,492,498,499,501,513],[426,481,498,499,502],[426,481,498,499,503],[426,480,481,498,499,504],[426,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,498,499,506],[426,481,498,499,507],[426,481,492,498,499,508,509],[426,481,498,499,508,510,525,527],[426,481,493,498,499],[426,481,492,498,499,513,514,516],[426,481,498,499,515,516],[426,481,498,499,513,514],[426,481,498,499,516],[426,481,498,499,517],[426,478,481,498,499,513,518,524],[426,481,492,498,499,519,520],[426,481,498,499,519,520],[426,481,486,498,499,501,513,521],[426,481,498,499,522],[426,481,498,499,501,523],[426,481,495,498,499,507,524],[426,481,486,498,499,525],[426,481,498,499,513,526],[426,481,498,499,500,527],[426,481,498,499,528],[426,481,486,498,499],[426,473,481,498,499],[426,481,498,499,529],[426,473,481,492,494,498,499,504,513,516,524,526,527,529],[426,481,498,499,513,530],[426,481,493,498,499,513,531],[426,481,495,498,499,531,656],[426,481,498,499,872],[426,481,498,499,643,863,865,867,873],[426,481,496,498,499,501,513,521,531],[426,481,493,495,496,497,498,499,501,513,863,866,867,868,869,870,871],[426,481,495,498,499,513,872],[426,481,493,498,499,866,867],[426,481,498,499,524,866],[426,481,498,499,873,874,875,876,877],[426,481,498,499,873,874,878],[426,481,498,499,873,874],[426,481,495,496,498,499,501,863,873],[426,481,498,499,879],[426,481,498,499,644,648,649],[426,481,498,499,650],[426,481,498,499,662,859,860],[426,481,495,498,499,513,531],[426,481,498,499,857],[426,481,498,499,663,858],[426,481,498,499,501,521,531],[426,481,498,499,856],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,426,481,498,499],[122,426,481,498,499],[78,81,426,481,498,499],[80,426,481,498,499],[80,81,426,481,498,499],[77,78,79,81,426,481,498,499],[78,80,81,238,426,481,498,499],[81,426,481,498,499],[77,80,122,426,481,498,499],[80,81,238,426,481,498,499],[80,246,426,481,498,499],[78,80,81,426,481,498,499],[90,426,481,498,499],[113,426,481,498,499],[134,426,481,498,499],[80,81,122,426,481,498,499],[81,129,426,481,498,499],[80,81,122,140,426,481,498,499],[80,81,140,426,481,498,499],[81,181,426,481,498,499],[81,122,426,481,498,499],[77,81,199,426,481,498,499],[77,81,200,426,481,498,499],[222,426,481,498,499],[206,208,426,481,498,499],[217,426,481,498,499],[206,426,481,498,499],[77,81,199,206,207,426,481,498,499],[199,200,208,426,481,498,499],[220,426,481,498,499],[77,81,206,207,208,426,481,498,499],[79,80,81,426,481,498,499],[77,81,426,481,498,499],[78,80,200,201,202,203,426,481,498,499],[122,200,201,202,203,426,481,498,499],[200,202,426,481,498,499],[80,201,202,204,205,209,426,481,498,499],[77,80,426,481,498,499],[81,224,426,481,498,499],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,426,481,498,499],[210,426,481,498,499],[426,439,442,445,446,481,498,499,524],[426,442,481,498,499,513,524],[426,442,446,481,498,499,524],[426,481,498,499,513],[426,436,481,498,499],[426,440,481,498,499],[426,438,439,442,481,498,499,524],[426,481,498,499,501,521],[426,481,498,499,531],[426,436,481,498,499,531],[426,438,442,481,498,499,501,524],[426,433,434,435,437,441,481,492,498,499,513,524],[426,442,450,458,481,498,499],[426,434,440,481,498,499],[426,442,467,468,481,498,499],[426,434,437,442,481,498,499,516,524,531],[426,442,481,498,499],[426,438,442,481,498,499,524],[426,433,481,498,499],[426,436,437,438,440,441,442,443,444,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,468,469,470,471,472,481,498,499],[426,442,460,463,481,489,498,499],[426,442,450,451,452,481,498,499],[426,440,442,451,453,481,498,499],[426,441,481,498,499],[426,434,436,442,481,498,499],[426,442,446,451,453,481,498,499],[426,446,481,498,499],[426,440,442,445,481,498,499,524],[426,434,438,442,450,481,498,499],[426,442,460,481,498,499],[426,453,481,498,499],[426,436,442,467,481,498,499,516,529,531],[422,423,426,481,498,499,533,534,535],[422,423,426,481,498,499,536,631],[426,481,498,499,533,534,535,631],[422,426,481,498,499,532,535,628,629],[422,426,481,498,499,532],[422,426,481,498,499,532,533],[422,426,481,498,499,532,534,628,629,630],[426,481,498,499,628,632]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"5d4242d50092a353e5ab1f06663a89dbc714c7d9d70072ea03c83c5b14750f05","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"c724034e22cbbde98550aca4ee32006f7f4c566885328949ac16ff9ff2f76e89","impliedFormat":1},{"version":"983d890a7ed6e4c856bdba8ec32c36b5904ba4c53a610041dcbd568faa7aca32","impliedFormat":1},{"version":"3d02d26a579f63218675f46f42ef9279e4254cd053667384e93bf4a078feb002","impliedFormat":1},{"version":"51e7382cb5b63c92ebf346cc88e9af83cbea8f7d9ead2d7973ef997273bcd9ef","impliedFormat":1},{"version":"05975f8ce6c58de1011f474df2ac8f73112762f0016978d8b0c2121feb73d413","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"59ff7d8f6d9c68b2db8bbddf8773c763fbe7b250947e4d45ca64d54f6f3c7d96","impliedFormat":1},{"version":"01710763d8e235dfb7933fd61f017dcf12888a30331da8f472444793ac6db5eb","impliedFormat":1},{"version":"192cf836364f204f554d27d033c68301985ed5bc17062c556e5ed29d558ee7a7","impliedFormat":1},{"version":"730e20aedd9f265450adbd07b6bd3310560f8f148ccb062b8c86659a27c786dc","impliedFormat":1},{"version":"0a9c0f3730c701bdf8ebca077c067fbf365194cb5ff7584f2e7e4ca93371262c","impliedFormat":1},{"version":"e903b48387dd626caef216089c16a96692848a859edc4e6d9a9c9f739c604114","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,[533,536],[629,634]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[637,1],[635,2],[648,3],[662,2],[856,4],[347,2],[334,2],[71,2],[323,5],[324,5],[325,2],[326,6],[336,7],[327,5],[328,8],[329,2],[330,2],[331,5],[332,5],[333,5],[335,9],[343,10],[345,2],[342,2],[349,11],[346,2],[344,2],[340,12],[341,13],[348,14],[350,15],[337,2],[339,16],[338,17],[277,2],[280,18],[276,2],[585,2],[278,2],[279,2],[353,19],[354,19],[355,19],[356,19],[357,19],[358,19],[359,19],[352,20],[360,19],[374,21],[361,19],[351,2],[362,19],[363,19],[364,19],[365,19],[366,19],[367,19],[368,19],[369,19],[370,19],[371,19],[372,19],[373,19],[382,22],[380,23],[379,2],[378,2],[381,24],[422,25],[72,2],[73,2],[74,2],[567,26],[76,27],[573,28],[572,29],[266,30],[267,27],[402,2],[296,2],[297,2],[403,31],[268,2],[404,2],[405,32],[75,2],[270,33],[271,34],[269,35],[272,33],[273,2],[275,36],[287,37],[288,2],[293,38],[289,2],[290,2],[291,2],[292,2],[294,2],[295,39],[301,40],[304,41],[302,2],[303,2],[322,42],[305,2],[306,2],[616,43],[286,44],[284,45],[282,46],[283,47],[285,2],[313,48],[307,2],[316,49],[309,50],[314,51],[312,52],[315,53],[310,54],[311,55],[299,56],[318,57],[300,58],[320,59],[321,60],[308,2],[317,2],[274,2],[281,61],[319,62],[388,63],[383,2],[389,64],[384,65],[385,66],[386,67],[387,68],[390,69],[395,70],[393,71],[394,71],[401,72],[391,2],[392,73],[396,70],[398,74],[400,75],[399,76],[414,77],[407,78],[408,79],[409,79],[410,80],[411,80],[412,79],[413,79],[406,81],[416,82],[415,83],[418,84],[417,85],[419,86],[375,87],[377,88],[298,2],[376,56],[420,89],[397,90],[421,91],[537,92],[538,93],[558,94],[559,95],[560,2],[561,96],[562,97],[571,98],[564,99],[568,100],[576,101],[574,6],[575,102],[565,103],[577,2],[579,104],[580,105],[581,106],[570,107],[566,108],[590,109],[578,110],[605,111],[563,112],[606,113],[603,114],[604,6],[628,115],[553,116],[549,117],[551,118],[602,119],[544,120],[592,121],[591,2],[552,122],[599,123],[556,124],[600,2],[601,125],[554,126],[555,127],[550,128],[548,129],[543,2],[596,130],[609,131],[607,6],[539,6],[595,132],[540,13],[541,95],[542,133],[546,134],[545,135],[608,136],[547,137],[584,138],[582,104],[583,139],[593,13],[594,140],[597,141],[612,142],[613,143],[610,144],[611,145],[614,146],[615,147],[617,148],[589,149],[586,150],[587,5],[588,139],[619,151],[618,152],[625,153],[557,6],[621,154],[620,6],[623,155],[622,2],[624,156],[569,157],[598,158],[627,159],[626,6],[855,160],[666,161],[667,162],[804,161],[805,163],[786,164],[787,165],[670,166],[671,167],[741,168],[742,169],[715,161],[716,170],[709,161],[710,171],[801,172],[799,173],[800,2],[815,174],[816,175],[685,176],[686,177],[817,178],[818,179],[819,180],[820,181],[677,182],[678,183],[803,184],[802,185],[788,161],[789,186],[681,187],[682,188],[705,2],[706,189],[823,190],[821,191],[822,192],[824,193],[825,194],[828,195],[826,196],[829,173],[827,197],[830,198],[833,199],[831,200],[832,201],[834,202],[683,182],[684,203],[809,204],[806,205],[807,206],[808,2],[784,207],[785,208],[729,209],[728,210],[726,211],[725,212],[727,213],[836,214],[835,215],[838,216],[837,217],[714,218],[713,161],[692,219],[690,220],[689,166],[691,221],[841,222],[845,223],[839,224],[840,225],[842,222],[843,222],[844,222],[731,226],[730,166],[747,227],[745,228],[746,173],[743,229],[744,230],[680,231],[679,161],[737,232],[668,161],[669,233],[736,234],[774,235],[777,236],[775,237],[776,238],[688,239],[687,161],[779,240],[778,166],[757,241],[756,161],[712,242],[711,161],[783,243],[782,244],[751,245],[750,246],[748,247],[749,248],[740,249],[739,250],[738,251],[847,252],[846,253],[764,254],[763,255],[762,256],[811,257],[810,2],[755,258],[754,259],[752,260],[753,261],[733,262],[732,166],[676,263],[675,264],[674,265],[673,266],[672,267],[768,268],[767,269],[698,270],[697,166],[702,271],[701,272],[766,273],[765,161],[812,2],[814,274],[813,2],[771,275],[770,276],[769,277],[849,278],[848,279],[851,280],[850,281],[797,282],[798,283],[796,284],[735,285],[734,2],[781,286],[780,287],[708,288],[707,161],[759,289],[758,161],[665,290],[664,2],[718,291],[719,292],[724,293],[717,294],[721,295],[720,296],[722,297],[723,298],[773,299],[772,166],[704,300],[703,166],[854,301],[853,302],[852,303],[791,304],[790,161],[761,305],[760,161],[696,306],[694,307],[693,166],[695,308],[793,309],[792,161],[700,310],[699,161],[795,311],[794,161],[640,312],[636,1],[638,313],[639,1],[642,314],[641,315],[643,2],[651,316],[647,317],[646,318],[644,2],[655,319],[658,320],[656,2],[659,2],[660,321],[661,322],[862,323],[645,2],[863,2],[478,324],[479,324],[480,325],[426,326],[481,327],[482,328],[483,329],[424,2],[484,330],[485,331],[486,332],[487,333],[488,334],[489,335],[490,335],[491,336],[492,337],[493,338],[494,339],[427,2],[425,2],[495,340],[496,341],[497,342],[531,343],[498,344],[499,2],[500,345],[501,346],[502,347],[503,348],[504,349],[505,350],[506,351],[507,352],[508,353],[509,353],[510,354],[511,2],[512,355],[513,356],[515,357],[514,358],[516,359],[517,360],[518,361],[519,362],[520,363],[521,364],[522,365],[523,366],[524,367],[525,368],[526,369],[527,370],[528,371],[428,2],[429,372],[430,2],[431,2],[474,373],[475,374],[476,2],[477,359],[529,375],[530,376],[653,2],[654,2],[652,377],[657,378],[864,2],[873,379],[865,2],[868,380],[871,381],[872,382],[866,383],[869,384],[867,385],[878,386],[875,387],[877,2],[876,388],[874,389],[879,2],[880,390],[432,2],[663,2],[650,391],[649,392],[861,393],[870,394],[858,395],[859,396],[860,2],[532,397],[857,398],[70,2],[265,399],[238,2],[216,400],[214,400],[264,401],[229,402],[228,402],[129,403],[80,404],[236,403],[237,403],[239,405],[240,403],[241,406],[140,407],[242,403],[213,403],[243,403],[244,408],[245,403],[246,402],[247,409],[248,403],[249,403],[250,403],[251,403],[252,402],[253,403],[254,403],[255,403],[256,403],[257,410],[258,403],[259,403],[260,403],[261,403],[262,403],[79,401],[82,406],[83,406],[84,406],[85,406],[86,406],[87,406],[88,406],[89,403],[91,411],[92,406],[90,406],[93,406],[94,406],[95,406],[96,406],[97,406],[98,406],[99,403],[100,406],[101,406],[102,406],[103,406],[104,406],[105,403],[106,406],[107,406],[108,406],[109,406],[110,406],[111,406],[112,403],[114,412],[113,406],[115,406],[116,406],[117,406],[118,406],[119,410],[120,403],[121,403],[135,413],[123,414],[124,406],[125,406],[126,403],[127,406],[128,406],[130,415],[131,406],[132,406],[133,406],[134,406],[136,406],[137,406],[138,406],[139,406],[141,416],[142,406],[143,406],[144,406],[145,403],[146,406],[147,417],[148,417],[149,417],[150,403],[151,406],[152,406],[153,406],[158,406],[154,406],[155,403],[156,406],[157,403],[159,406],[160,406],[161,406],[162,406],[163,406],[164,406],[165,403],[166,406],[167,406],[168,406],[169,406],[170,406],[171,406],[172,406],[173,406],[174,406],[175,406],[176,406],[177,406],[178,406],[179,406],[180,406],[181,406],[182,418],[183,406],[184,406],[185,406],[186,406],[187,406],[188,406],[189,403],[190,403],[191,403],[192,403],[193,403],[194,406],[195,406],[196,406],[197,406],[215,419],[263,403],[200,420],[199,421],[223,422],[222,423],[218,424],[217,423],[219,425],[208,426],[206,427],[221,428],[220,425],[207,2],[209,429],[122,430],[78,431],[77,406],[212,2],[204,432],[205,433],[202,2],[203,434],[201,406],[210,435],[81,436],[230,2],[231,2],[224,2],[227,402],[226,2],[232,2],[233,2],[225,437],[234,2],[235,2],[198,438],[211,439],[67,2],[68,2],[13,2],[11,2],[12,2],[17,2],[16,2],[2,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[3,2],[26,2],[27,2],[4,2],[28,2],[32,2],[29,2],[30,2],[31,2],[33,2],[34,2],[35,2],[5,2],[36,2],[37,2],[38,2],[39,2],[6,2],[43,2],[40,2],[41,2],[42,2],[44,2],[7,2],[45,2],[50,2],[51,2],[46,2],[47,2],[48,2],[49,2],[8,2],[55,2],[52,2],[53,2],[54,2],[56,2],[9,2],[57,2],[58,2],[59,2],[61,2],[60,2],[62,2],[63,2],[10,2],[69,2],[64,2],[1,2],[65,2],[66,2],[15,2],[14,2],[450,440],[462,441],[448,442],[463,443],[472,444],[439,445],[440,446],[438,447],[471,448],[466,449],[470,450],[442,451],[459,452],[441,453],[469,454],[436,455],[437,449],[443,456],[444,2],[449,457],[447,456],[434,458],[473,459],[464,460],[453,461],[452,456],[454,462],[457,463],[451,464],[455,465],[467,448],[445,466],[446,467],[458,468],[435,443],[461,469],[460,456],[456,470],[465,2],[433,2],[468,471],[536,472],[632,473],[423,6],[535,2],[633,474],[630,475],[629,476],[534,477],[631,478],[634,479],[533,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880],"version":"5.9.3"} \ No newline at end of file diff --git a/challenge-3/dist/types/event-contract.type.d.ts b/challenge-3/dist/types/event-contract.type.d.ts new file mode 100644 index 00000000..e9b5ec4c --- /dev/null +++ b/challenge-3/dist/types/event-contract.type.d.ts @@ -0,0 +1,11 @@ +export interface EventEnvelope { + eventId: string; + eventType: string; + version: number; + producer: string; + occurredAt: string; + correlationId?: string; +} +export type EventContract = EventEnvelope & { + data: T; +}; diff --git a/challenge-3/dist/types/event-contract.type.js b/challenge-3/dist/types/event-contract.type.js new file mode 100644 index 00000000..ce9ca1cf --- /dev/null +++ b/challenge-3/dist/types/event-contract.type.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=event-contract.type.js.map \ No newline at end of file diff --git a/challenge-3/dist/types/event-contract.type.js.map b/challenge-3/dist/types/event-contract.type.js.map new file mode 100644 index 00000000..a887b7f0 --- /dev/null +++ b/challenge-3/dist/types/event-contract.type.js.map @@ -0,0 +1 @@ +{"version":3,"file":"event-contract.type.js","sourceRoot":"","sources":["../../src/types/event-contract.type.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/challenge-3/eslint.config.mjs b/challenge-3/eslint.config.mjs new file mode 100644 index 00000000..4e9f8271 --- /dev/null +++ b/challenge-3/eslint.config.mjs @@ -0,0 +1,35 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + "prettier/prettier": ["error", { endOfLine: "auto" }], + }, + }, +); diff --git a/challenge-3/nest-cli.json b/challenge-3/nest-cli.json new file mode 100644 index 00000000..f9aa683b --- /dev/null +++ b/challenge-3/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/challenge-3/package-lock.json b/challenge-3/package-lock.json new file mode 100644 index 00000000..9c50a568 --- /dev/null +++ b/challenge-3/package-lock.json @@ -0,0 +1,9946 @@ +{ + "name": "challenge-3", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "challenge-3", + "version": "0.0.1", + "license": "UNLICENSED", + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/microservices": "^11.1.17", + "@nestjs/platform-express": "^11.0.1", + "kafkajs": "^2.2.4", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", + "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular-devkit/core/node_modules/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, + "license": "MIT" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", + "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", + "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@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, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", + "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", + "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", + "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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, + "license": "ISC", + "dependencies": { + "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": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT" + }, + "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, + "license": "MIT", + "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.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "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, + "license": "MIT", + "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, + "license": "ISC", + "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/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", + "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.3.0", + "jest-config": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-resolve-dependencies": "30.3.0", + "jest-runner": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "jest-watcher": "30.3.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.17", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", + "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@angular-devkit/schematics-cli": "19.2.22", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "13.0.6", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.9.3", + "webpack": "5.105.4", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", + "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", + "license": "MIT", + "dependencies": { + "file-type": "21.3.2", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", + "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/microservices": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.17.tgz", + "integrity": "sha512-rubBPEEXS9PwA3LwdNN/ytjEUmON+d8+4fbiUCIFGW8i+rR/g36vrpwuvoAzcGpxlu45/TpZPfHTb0nJciG9Yw==", + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@grpc/grpc-js": "*", + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "amqp-connection-manager": "*", + "amqplib": "*", + "cache-manager": "*", + "ioredis": "*", + "kafkajs": "*", + "mqtt": "*", + "nats": "*", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@grpc/grpc-js": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + }, + "amqp-connection-manager": { + "optional": true + }, + "amqplib": { + "optional": true + }, + "cache-manager": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "kafkajs": { + "optional": true + }, + "mqtt": { + "optional": true + }, + "nats": { + "optional": true + } + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", + "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", + "license": "MIT", + "dependencies": { + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.1.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", + "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "@angular-devkit/schematics": "19.2.23", + "comment-json": "4.6.2", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", + "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.4", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", + "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/schematics/node_modules/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, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", + "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.2.2.tgz", + "integrity": "sha512-KK6HfcJHaxmQNzHSsCrRzp1igwAWUXEtD64EScEUsaHw3ViNHgpFR/ACgHpesDR/YDbu6IZMzNbQkTDMlnZHGw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@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, + "license": "MIT" + }, + "node_modules/@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, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "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, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", + "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@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, + "license": "BSD-3-Clause" + }, + "node_modules/@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, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", + "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", + "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "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, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", + "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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, + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.330", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", + "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/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, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "21.3.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", + "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/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, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "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, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", + "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/types": "30.3.0", + "import-local": "^3.2.0", + "jest-cli": "30.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", + "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.3.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", + "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", + "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kafkajs": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", + "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/multer/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/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, + "license": "ISC" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "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, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "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==", + "dev": true, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/superagent": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", + "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.5", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.14.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supertest": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", + "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-signature": "^1.2.2", + "methods": "^1.1.2", + "superagent": "^10.3.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-jest": { + "version": "29.4.9", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", + "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.4", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <7" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-loader": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", + "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT" + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "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, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/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==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/challenge-3/package.json b/challenge-3/package.json new file mode 100644 index 00000000..8a2cc2ed --- /dev/null +++ b/challenge-3/package.json @@ -0,0 +1,73 @@ +{ + "name": "challenge-3", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/microservices": "^11.1.17", + "@nestjs/platform-express": "^11.0.1", + "kafkajs": "^2.2.4", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} diff --git a/challenge-3/src/app.controller.spec.ts b/challenge-3/src/app.controller.spec.ts new file mode 100644 index 00000000..d22f3890 --- /dev/null +++ b/challenge-3/src/app.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +describe('AppController', () => { + let appController: AppController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + + appController = app.get(AppController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(appController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/challenge-3/src/app.controller.ts b/challenge-3/src/app.controller.ts new file mode 100644 index 00000000..c73c30e3 --- /dev/null +++ b/challenge-3/src/app.controller.ts @@ -0,0 +1,63 @@ +import { Controller, Get, Post, Body, Logger } from '@nestjs/common'; +import { AppService } from './app.service'; +import { KafkaTypedProducer } from './kafka-typed-producer'; // Simulating @yape/kafka-module +import { KafkaEvent } from './decorators/kafka-event.decorator'; +import type { EventContract } from './types/event-contract.type'; + +// The interface required by the squad +type PaymentCreatedPayload = { + paymentId: string; + amount: number; + currency: 'PEN' | 'MXN' | 'USD'; + fromCountry: string; +} + +@Controller() +export class AppController { + private readonly logger = new Logger(AppController.name); + + // Demonstrating how instance variables can be read by our Explorer (maxRetries) + public readonly maxRetries = 2; + + constructor( + private readonly appService: AppService, + private readonly producer: KafkaTypedProducer, + ) {} + + @Get() + getHello(): string { + return this.appService.getHello(); + } + + @Post('/test-publish') + async testPublish(@Body() body: any) { + // Demostrando validación Type-Safe EventContract en Tiempo de Compilación + await this.producer.publish('payment.created.v1', { + eventId: Math.random().toString(), + eventType: 'payment.created.v1', + version: 1, + producer: 'squad-payments', + occurredAt: new Date().toISOString(), + data: { + paymentId: 'PAY-123456', + amount: body.amount || 100, + currency: 'PEN', // Si cambias esto a 'EUR', Fallará en tiempo de compilación Typescript + fromCountry: 'PE', + }, + }); + + return { status: 'published' }; + } + + // Consumer Method + @KafkaEvent('payment.created.v1') + async handlePaymentCreated(event: EventContract): Promise { + this.logger.log(`Received Kafka Event in Squad Consumer: ${JSON.stringify(event.data)}`); + + // Provocar fallo condicional para probar DLT + if (event.data.amount > 1000) { + this.logger.error('Amount too high! Simulating crash to trigger DLT handler...'); + throw new Error('Amount exceeds maximum allowed limit. Simulating failure.'); + } + } +} diff --git a/challenge-3/src/app.module.ts b/challenge-3/src/app.module.ts new file mode 100644 index 00000000..71bd17ff --- /dev/null +++ b/challenge-3/src/app.module.ts @@ -0,0 +1,16 @@ +import { Module } from '@nestjs/common'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; +import { KafkaModule } from './kafka.module'; // Simulando el module '@yape/kafka-module' + +@Module({ + imports: [ + KafkaModule.forFeature({ + topics: ['payment.created.v1'], + consumerGroup: 'payments-service-cg', + }), + ], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/challenge-3/src/app.service.ts b/challenge-3/src/app.service.ts new file mode 100644 index 00000000..927d7cca --- /dev/null +++ b/challenge-3/src/app.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getHello(): string { + return 'Hello World!'; + } +} diff --git a/challenge-3/src/decorators/kafka-event.decorator.ts b/challenge-3/src/decorators/kafka-event.decorator.ts new file mode 100644 index 00000000..2268fed1 --- /dev/null +++ b/challenge-3/src/decorators/kafka-event.decorator.ts @@ -0,0 +1,12 @@ +export const KAFKA_EVENT_METADATA = Symbol('KAFKA_EVENT_METADATA'); + +export function KafkaEvent(topic: string): MethodDecorator { + return (target, propertyKey, descriptor) => { + Reflect.defineMetadata( + KAFKA_EVENT_METADATA, + { topic }, + descriptor.value as object, + ); + return descriptor; + }; +} diff --git a/challenge-3/src/index.ts b/challenge-3/src/index.ts new file mode 100644 index 00000000..387790bc --- /dev/null +++ b/challenge-3/src/index.ts @@ -0,0 +1,4 @@ +export * from './kafka.module'; +export * from './kafka-typed-producer'; +export * from './decorators/kafka-event.decorator'; +export * from './types/event-contract.type'; diff --git a/challenge-3/src/kafka-consumer.explorer.ts b/challenge-3/src/kafka-consumer.explorer.ts new file mode 100644 index 00000000..3b2728f1 --- /dev/null +++ b/challenge-3/src/kafka-consumer.explorer.ts @@ -0,0 +1,113 @@ +import { Injectable, OnModuleInit, OnModuleDestroy, Logger, Inject } from '@nestjs/common'; +import { DiscoveryService, Reflector } from '@nestjs/core'; +import { Kafka, Consumer, EachMessagePayload } from 'kafkajs'; +import { KAFKA_EVENT_METADATA } from './decorators/kafka-event.decorator'; +import { KafkaDltHandler } from './kafka-dlt.handler'; + +export const KAFKA_CONSUMER_GROUP = 'KAFKA_CONSUMER_GROUP'; + +@Injectable() +export class KafkaConsumerExplorer implements OnModuleInit, OnModuleDestroy { + private readonly logger = new Logger(KafkaConsumerExplorer.name); + private consumer: Consumer; + + constructor( + private readonly discoveryService: DiscoveryService, + private readonly reflector: Reflector, + private readonly client: Kafka, + private readonly dltHandler: KafkaDltHandler, + @Inject(KAFKA_CONSUMER_GROUP) private readonly groupId: string, + ) { + if (this.groupId) { + this.consumer = this.client.consumer({ groupId: this.groupId }); + } + } + + async onModuleInit(): Promise { + if (!this.consumer) { + return; // No consumer logic if no groupId + } + + const providers = this.discoveryService.getProviders(); + const handlers: Array<{ topic: string; handler: Function; instance: unknown }> = []; + + providers.forEach((wrapper) => { + const { instance } = wrapper; + if (!instance || typeof instance !== 'object' || !Object.getPrototypeOf(instance)) { + return; + } + + const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(instance)); + + methodNames.forEach((methodName) => { + const method = instance[methodName as keyof typeof instance]; + if (typeof method === 'function') { + const metadata = this.reflector.get<{ topic: string }>( + KAFKA_EVENT_METADATA, + method, + ); + + if (metadata && metadata.topic) { + handlers.push({ + topic: metadata.topic, + handler: method.bind(instance), + instance, + }); + this.logger.log(`Mapped {${metadata.topic}} event to ${instance.constructor.name}.${methodName}()`); + } + } + }); + }); + + if (handlers.length === 0) return; + + await this.consumer.connect(); + + for (const handler of handlers) { + await this.consumer.subscribe({ topic: handler.topic, fromBeginning: false }); + } + + await this.consumer.run({ + eachMessage: async (payload: EachMessagePayload) => { + const matchingHandlers = handlers.filter((h) => h.topic === payload.topic); + for (const handlerConf of matchingHandlers) { + await this.executeWithRetryAndDlt(handlerConf, payload); + } + }, + }); + } + + private async executeWithRetryAndDlt( + handlerConf: { topic: string; handler: Function; instance: any }, + payload: EachMessagePayload, + ): Promise { + let attempts = 0; + const maxRetries = handlerConf.instance?.maxRetries ?? 3; + const { message, topic } = payload; + + while (attempts <= maxRetries) { + try { + const parsedMessage = JSON.parse(message.value?.toString() || '{}'); + await handlerConf.handler(parsedMessage); + return; // Success + } catch (error) { + attempts++; + this.logger.error(`Error processing message on ${topic} (Attempt ${attempts}/${maxRetries}): ${error.message}`); + + if (attempts > maxRetries) { + this.logger.warn(`Max retries exceeded for topic ${topic}. Routing to DLT.`); + await this.dltHandler.connect(); + await this.dltHandler.route(topic, message, error as Error); + return; // Done handling DLT + } + } + } + } + + async onModuleDestroy(): Promise { + if (this.consumer) { + await this.consumer.disconnect(); + } + await this.dltHandler.disconnect(); + } +} diff --git a/challenge-3/src/kafka-dlt.handler.ts b/challenge-3/src/kafka-dlt.handler.ts new file mode 100644 index 00000000..374f6f2d --- /dev/null +++ b/challenge-3/src/kafka-dlt.handler.ts @@ -0,0 +1,44 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Kafka, Producer, Message } from 'kafkajs'; + +@Injectable() +export class KafkaDltHandler { + private readonly logger = new Logger(KafkaDltHandler.name); + private producer: Producer; + + constructor(private readonly client: Kafka) { + this.producer = this.client.producer(); + } + + async connect(): Promise { + await this.producer.connect(); + } + + async disconnect(): Promise { + await this.producer.disconnect(); + } + + async route(originalTopic: string, message: any, error: Error): Promise { + const dltTopic = `${originalTopic}.dlt`; + this.logger.warn(`Routing message to DLT topic: ${dltTopic} due to error: ${error.message}`); + + const payload: Message = { + key: message.key, + value: JSON.stringify({ + originalTopic, + originalPayload: message.value?.toString(), + error: error.message, + failedAt: new Date().toISOString(), + }), + headers: { + 'x-original-topic': originalTopic, + 'x-error-type': error.constructor.name, + }, + }; + + await this.producer.send({ + topic: dltTopic, + messages: [payload], + }); + } +} diff --git a/challenge-3/src/kafka-typed-producer.ts b/challenge-3/src/kafka-typed-producer.ts new file mode 100644 index 00000000..6a4b82c2 --- /dev/null +++ b/challenge-3/src/kafka-typed-producer.ts @@ -0,0 +1,37 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { Producer, Kafka } from 'kafkajs'; +import { EventContract } from './types/event-contract.type'; + +@Injectable() +export class KafkaTypedProducer { + private readonly logger = new Logger(KafkaTypedProducer.name); + private producers: Map = new Map(); + + constructor(private readonly client: Kafka) {} + + async publish( + topic: string, + payload: EventContract, // type-safe schema checking at compile time + ): Promise { + let producer = this.producers.get(topic); + if (!producer) { + producer = this.client.producer(); + await producer.connect(); + this.producers.set(topic, producer); + this.logger.log(`Initialized and connected producer for topic: ${topic}`); + } + + await producer.send({ + topic, + messages: [{ value: JSON.stringify(payload) }], + }); + + this.logger.debug(`Published message to ${topic}: ${JSON.stringify(payload.eventId)}`); + } + + async disconnectAll(): Promise { + for (const producer of this.producers.values()) { + await producer.disconnect(); + } + } +} diff --git a/challenge-3/src/kafka.module.ts b/challenge-3/src/kafka.module.ts new file mode 100644 index 00000000..ab7b190a --- /dev/null +++ b/challenge-3/src/kafka.module.ts @@ -0,0 +1,49 @@ +import { DynamicModule, Module, Provider, Global } from '@nestjs/common'; +import { DiscoveryModule } from '@nestjs/core'; +import { Kafka } from 'kafkajs'; +import { KafkaConsumerExplorer, KAFKA_CONSUMER_GROUP } from './kafka-consumer.explorer'; +import { KafkaTypedProducer } from './kafka-typed-producer'; +import { KafkaDltHandler } from './kafka-dlt.handler'; + +export interface KafkaFeatureOptions { + topics: string[]; + consumerGroup?: string; + brokers?: string[]; +} + +@Global() +@Module({ + imports: [DiscoveryModule], +}) +export class KafkaModule { + static forFeature(options: KafkaFeatureOptions): DynamicModule { + const brokers = options.brokers || process.env.KAFKA_BROKERS?.split(',') || ['localhost:9092']; + + const clientProvider: Provider = { + provide: Kafka, + useFactory: () => { + return new Kafka({ + clientId: `yape-kafka-module-${Math.random().toString(36).substring(7)}`, + brokers: brokers, + }); + }, + }; + + const groupIdProvider: Provider = { + provide: KAFKA_CONSUMER_GROUP, + useValue: options.consumerGroup || '', + }; + + return { + module: KafkaModule, + providers: [ + clientProvider, + groupIdProvider, + KafkaTypedProducer, + KafkaDltHandler, + KafkaConsumerExplorer, + ], + exports: [KafkaTypedProducer], // Squads will use KafkaTypedProducer to publish + }; + } +} diff --git a/challenge-3/src/main.ts b/challenge-3/src/main.ts new file mode 100644 index 00000000..f76bc8d9 --- /dev/null +++ b/challenge-3/src/main.ts @@ -0,0 +1,8 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + await app.listen(process.env.PORT ?? 3000); +} +bootstrap(); diff --git a/challenge-3/src/types/event-contract.type.ts b/challenge-3/src/types/event-contract.type.ts new file mode 100644 index 00000000..01a75140 --- /dev/null +++ b/challenge-3/src/types/event-contract.type.ts @@ -0,0 +1,13 @@ +export interface EventEnvelope { + eventId: string; + eventType: string; + version: number; + producer: string; + occurredAt: string; // ISO 8601 + correlationId?: string; +} + +// El generic T fuerza que el payload coincida en tiempo de compilación +export type EventContract = EventEnvelope & { + data: T; +}; diff --git a/challenge-3/test/app.e2e-spec.ts b/challenge-3/test/app.e2e-spec.ts new file mode 100644 index 00000000..a767839c --- /dev/null +++ b/challenge-3/test/app.e2e-spec.ts @@ -0,0 +1,29 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import request from 'supertest'; +import { App } from 'supertest/types'; +import { AppModule } from './../src/app.module'; + +describe('AppController (e2e)', () => { + let app: INestApplication; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); + + afterEach(async () => { + await app.close(); + }); +}); diff --git a/challenge-3/test/jest-e2e.json b/challenge-3/test/jest-e2e.json new file mode 100644 index 00000000..e9d912f3 --- /dev/null +++ b/challenge-3/test/jest-e2e.json @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff --git a/challenge-3/tsconfig.build.json b/challenge-3/tsconfig.build.json new file mode 100644 index 00000000..64f86c6b --- /dev/null +++ b/challenge-3/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] +} diff --git a/challenge-3/tsconfig.json b/challenge-3/tsconfig.json new file mode 100644 index 00000000..57f96352 --- /dev/null +++ b/challenge-3/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", + "resolvePackageJsonExports": true, + "esModuleInterop": true, + "isolatedModules": true, + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2023", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "noFallthroughCasesInSwitch": true + } +} From 80094dae5b2a0728dfd1f1048e076093612e4c4e Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Wed, 1 Apr 2026 18:15:36 -0500 Subject: [PATCH 03/18] subiendo mejoras --- challenge-1/README.md | 132 +++++++++----------- challenge-1/apps/api/src/main.ts | 2 +- challenge-1/apps/api/tsconfig.app.json | 2 +- challenge-1/apps/relay/src/relay.service.ts | 4 + challenge-1/dist/apps/api/main.js | 2 +- challenge-1/dist/apps/relay/main.js | 3 + challenge-1/nest-cli.json | 5 +- challenge-1/package.json | 2 +- 8 files changed, 71 insertions(+), 81 deletions(-) diff --git a/challenge-1/README.md b/challenge-1/README.md index edab43af..b6c8fa08 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -64,93 +64,77 @@ npm install ## Cómo probar y validar cada escenario paso a paso -### 1. Crear un Pago (Trigger del Pipeline) -Una vez que hayas levantado los 3 microservicios (`api`, `relay`, `consumers`), interactúa con el API REST para iniciar el flujo. Reemplaza este comando en una terminal: +### 1. Preparar el Entorno y Levantar Microservicios +Antes de realizar pruebas, asegúrate de tener la infraestructura (Docker) y los 3 microservicios corriendo en terminales separadas para observar el flujo en tiempo real. + +**Paso A: Infraestructura (Terminal 1)** ```bash -curl -X POST http://localhost:3000/payments -H "Content-Type: application/json" -d "{\"amount\": 1500, \"currency\": \"USD\", \"country\": \"PE\"}" -``` -**Resultado esperado:** -```json -{ - "id": "651ba78b-cee5-4f2a-91dd-6d4db19a7848", - "amount": 1500, - "currency": "USD", - "country": "PE", - "status": "PENDING", - "createdAt": "2026-04-01T20:41:24.450Z", - "updatedAt": "2026-04-01T20:41:24.450Z" -} -``` -Esto creará el registro con estado `PENDING` e insertará en la tabla transaccional `outbox_events`. Copia el **ID** de respuesta para los siguientes pasos. - -### 2. Verificar el proceso Relay -> Kafka -> Consumers -Observa los logs en la terminal de cada microservicio: -1. **Relay (`npm run start relay`)**: Mostrará `[RelayService] Relayed event successfully` al extraer de base de datos y publicar a Kafka. -2. **Consumers (`npm run start consumers`)**: El `DispatcherController` atrape el mensaje y coordina a los evaluadores: -**Resultado esperado (Terminal Consumers):** -```text -[DispatcherController] Payment created event received by Dispatcher -[FraudConsumer] Processing fraud scoring for payment 651ba78b... -[LedgerConsumer] Processing ledger entry for payment 651ba78b... -[FraudConsumer] Fraud scoring passed for payment 651ba78b... -[LedgerConsumer] Ledger entry written for payment 651ba78b... -[SagaConsumer] Both consumers processed for 651ba78b... Settling payment. +docker-compose up -d ``` -### 3. GET Endpoint (Validación de API Consistencia Eventual) -Verifica que el estado convergente pasó de `PENDING` a `SETTLED` haciendo fetch del endpoint con tu ID: +**Paso B: Levantar Microservicios (Terminales 2, 3 y 4)** +Se recomienda iniciar los 3 procesos **antes** de enviar la petición para observar el procesamiento asíncrono inmediato: +- **API:** `npm run start api` (Puerto 3001) +- **Relay:** `npm run start relay` (Escanea Outbox cada 10s) +- **Consumers:** `npm run start consumers` (Escucha Kafka) + +--- + +### 2. Crear un Pago y Verificar Outbox (Garantía Atómica) +Envía un pago a la API. En este punto, la API guarda el Pago y el Evento en una misma transacción de BD. + +**Ejecutar Petición:** ```bash -curl -X GET http://localhost:3000/payments/{TU-PAYMENT-ID} -``` -**Resultado esperado:** -```json -{ - "data": { - "paymentId": "651ba78b-cee5-4f2a-91dd-6d4db19a7848", - "status": "SETTLED", - "amount": "1500.00", - "currency": "USD" - }, - "meta": { - "consistencyModel": "eventual", - "note": "Status may be pending while downstream consumers are processing." - } -} +curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500, \"currency\": \"USD\", \"country\": \"PE\"}" ``` -### 4. Direct Database Validation (Verificación Integridad) -Puedes verificar directamente en tu GUI de BD si los *Idempotent Consumers* garantizaron la transacción "Exactly-once" a nivel conceptual: -```sql -SELECT * FROM payment; +**Validar Inserción en Outbox:** +Para comprobar que el registro se creó con estado `PENDING` antes de ser procesado por el Relay, ejecuta: +```bash +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", \"aggregateId\", status, \"eventType\" FROM outbox_events;" ``` -**Resultado esperado:** Tu pago deberá tener status `SETTLED`. +*Si el Relay ya lo procesó, verás el estado como `SENT`.* + +--- -```sql -SELECT * FROM processed_events WHERE "aggregateId" = '{TU-PAYMENT-ID}'; +### 3. Verificar el flujo Relay -> Kafka -> Consumers +Observa los logs en las terminales donde levantaste los servicios en el Paso 1: + +1. **Relay Terminal**: Verás `[RelayService] Relayed event successfully` indicando que el registro cambió a `SENT` y se publicó en Kafka. +2. **Consumers Terminal**: El `DispatcherController` recibirá el mensaje y verás la coordinación de la Saga: + - `[FraudConsumer] Fraud scoring passed...` + - `[LedgerConsumer] Ledger entry written...` + - `[SagaConsumer] Both consumers processed... Settling payment.` + +--- + +### 4. Validación de Consistencia Eventual (API y DB) + +**Consultar Estado Final vía API:** +```bash +curl -X GET http://localhost:3001/payments/{TU-PAYMENT-ID} ``` -**Resultado esperado:** Deberás tener 2 filas registradas (una para `FraudConsumer` y otra para `LedgerConsumer`), indicando que sus operaciones fueron exitosas y previene duplicidad de procesamiento en reintentos. +**Resultado esperado:** `"status": "SETTLED"`. -### 5. Escenario Negativo / Fallido -Para probar la rama condicional de la DLT (Dead Letter Queue), envía un pago declarando un *Amount inmenso* (regla de oro del código base para gatillar fraude intencional): +**Verificar Idempotencia en DB:** +Comprueba que los consumidores marcaron el evento como procesado para evitar duplicados. Dado que `processed_events` usa el `eventId`, vinculamos con `outbox_events` para filtrar por tu ID de pago: ```bash -curl -X POST http://localhost:3000/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT pe.* FROM processed_events pe JOIN outbox_events oe ON pe.\"eventId\" = oe.\"eventId\" WHERE oe.\"aggregateId\" = '{TU-PAYMENT-ID}';" ``` -**Resultado esperado (Logs):** -En consola el consumer fallará y observarás `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt`. -Si procedes a pedir el estatus del pago vía HTTP o SQL: +--- + +### 5. Escenario Negativo (DLT y Reintentos) +Para forzar un fallo de fraude y ver el flujo hacia la **Dead Letter Queue (DLT)**, envía un pago con un monto mayor a 1,000,000: + ```bash -curl -X GET http://localhost:3000/payments/{RIESGO-PAYMENT-ID} +curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" ``` -**Resultado esperado:** -```json -{ - "data": { - "paymentId": "772aa89c-a1b2-4c3d-...", - "status": "FAILED", - "amount": "1500000.00", - "currency": "USD" - }, - ... -} +**Resultado esperado en Logs:** +Observarás `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt` y eventualmente el estado del pago cambiará a `FAILED`. + +**Validar Estado en DB:** +```bash +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments WHERE id = '{TU-PAYMENT-ID}';" ``` + diff --git a/challenge-1/apps/api/src/main.ts b/challenge-1/apps/api/src/main.ts index a33c344e..3fc6af40 100644 --- a/challenge-1/apps/api/src/main.ts +++ b/challenge-1/apps/api/src/main.ts @@ -5,6 +5,6 @@ import { ValidationPipe } from '@nestjs/common'; async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })); - await app.listen(process.env.PORT ?? 3000); + await app.listen(process.env.PORT ?? 3001); } bootstrap(); diff --git a/challenge-1/apps/api/tsconfig.app.json b/challenge-1/apps/api/tsconfig.app.json index 4cb2ffe0..e2e0b2ff 100644 --- a/challenge-1/apps/api/tsconfig.app.json +++ b/challenge-1/apps/api/tsconfig.app.json @@ -2,7 +2,7 @@ "extends": "../../tsconfig.json", "compilerOptions": { "declaration": false, - "outDir": "../../dist/apps/challenge-1" + "outDir": "../../dist/apps/api" }, "include": ["src/**/*"], "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] diff --git a/challenge-1/apps/relay/src/relay.service.ts b/challenge-1/apps/relay/src/relay.service.ts index 0fec6568..27641845 100644 --- a/challenge-1/apps/relay/src/relay.service.ts +++ b/challenge-1/apps/relay/src/relay.service.ts @@ -59,4 +59,8 @@ export class RelayService implements OnApplicationBootstrap { } } } + + getHello(): string { + return 'Outbox Relay Service is running.'; + } } diff --git a/challenge-1/dist/apps/api/main.js b/challenge-1/dist/apps/api/main.js index da24d037..35f73cbe 100644 --- a/challenge-1/dist/apps/api/main.js +++ b/challenge-1/dist/apps/api/main.js @@ -602,7 +602,7 @@ const common_1 = __webpack_require__(3); async function bootstrap() { const app = await core_1.NestFactory.create(app_module_1.AppModule); app.useGlobalPipes(new common_1.ValidationPipe({ whitelist: true, transform: true })); - await app.listen(process.env.PORT ?? 3000); + await app.listen(process.env.PORT ?? 3001); } bootstrap(); diff --git a/challenge-1/dist/apps/relay/main.js b/challenge-1/dist/apps/relay/main.js index 56d8915a..2059a7db 100644 --- a/challenge-1/dist/apps/relay/main.js +++ b/challenge-1/dist/apps/relay/main.js @@ -134,6 +134,9 @@ let RelayService = RelayService_1 = class RelayService { } } } + getHello() { + return 'Outbox Relay Service is running.'; + } }; exports.RelayService = RelayService; __decorate([ diff --git a/challenge-1/nest-cli.json b/challenge-1/nest-cli.json index 502d7794..35d3e9ec 100644 --- a/challenge-1/nest-cli.json +++ b/challenge-1/nest-cli.json @@ -4,11 +4,10 @@ "sourceRoot": "apps/api/src", "compilerOptions": { "deleteOutDir": true, - "webpack": true, - "tsConfigPath": "apps/api/tsconfig.app.json" + "webpack": true }, "monorepo": true, - "root": "apps/api", + "root": "", "projects": { "api": { "type": "application", diff --git a/challenge-1/package.json b/challenge-1/package.json index 9343fb93..50ff7026 100644 --- a/challenge-1/package.json +++ b/challenge-1/package.json @@ -11,7 +11,7 @@ "start": "nest start", "start:dev": "nest start --watch", "start:debug": "nest start --debug --watch", - "start:prod": "node dist/apps/challenge-1/main", + "start:prod": "node dist/apps/api/main", "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", "test": "jest", "test:watch": "jest --watch", From f83f1e17b2dcc982c59506adbbb557da22434560 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Wed, 1 Apr 2026 19:15:53 -0500 Subject: [PATCH 04/18] Subiendo mejoras para soportar paises --- challenge-1/README.md | 206 +++++++++++++++--- .../consumers/src/dispatcher.controller.ts | 7 +- .../apps/consumers/src/fraud.consumer.ts | 14 +- .../apps/consumers/src/ledger.consumer.ts | 11 +- .../apps/consumers/src/saga.consumer.ts | 27 ++- challenge-1/apps/relay/src/relay.service.ts | 7 +- challenge-1/dist/apps/consumers/main.js | 52 ++++- challenge-1/dist/apps/relay/main.js | 5 +- 8 files changed, 272 insertions(+), 57 deletions(-) diff --git a/challenge-1/README.md b/challenge-1/README.md index b6c8fa08..71eb082a 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -2,16 +2,109 @@ ## Arquitectura -La solución implementa un **Payment Settlement Pipeline** basado en arquitectura guiada por eventos (EDA) utilizando NestJS, Kafka y PostgreSQL. +La solución que **implemento** es un **Payment Settlement Pipeline** basado en arquitectura guiada por eventos (EDA) utilizando NestJS, Kafka y PostgreSQL. + +Para resolver el requerimiento de no emitir mensajes al broker (Kafka) dentro de transacciones de base de datos distribuidas, **adopto** el **Transactional Outbox Pattern**. + +### Flujo del Sistema (Diagrama de Secuencia) + +```mermaid +sequenceDiagram + participant C as Cliente (Curl/Postman) + participant API as Payment API (Port 3001) + participant DB as PostgreSQL (DB) + participant R as Outbox Relay (Worker) + participant K as Kafka Broker (Topic) + participant D as Dispatcher / Consumers + participant S as Saga Consumer + + Note over C,API: 1. Creación Atómica + C->>API: POST /payments + API->>DB: START TRANSACTION + API->>DB: INSERT Payment (PENDING) + API->>DB: INSERT OutboxEvent (PENDING) + API->>DB: COMMIT + API-->>C: 201 Created (paymentId) + + Note over R,DB: 2. Publicación Asíncrona (Relay) + loop Cada 10 segundos (@Cron) + R->>DB: SELECT PENDING events + R->>K: Publish {pais}.payment.created.v1 + R->>DB: UPDATE OutboxEvent (SENT) + end + + Note over K,D: 3. Procesamiento Paralelo e Idempotencia + K->>D: Consume {pais}.payment.created.v1 + par Fraud Check + D->>DB: Check & Save Idempotency (processed_events) + D->>K: Emit {pais}.payment.fraud.approved.v1 + and Ledger Write + D->>DB: Check & Save Idempotency (processed_events) + D->>K: Emit {pais}.payment.ledger.written.v1 + end + + Note over K,S: 4. Consistencia Final (Saga) + K->>S: Consume {pais}.fraud.approved / {pais}.ledger.written + S->>DB: Verify processed_events (fraud & ledger) + alt Ambas condiciones cumplidas + S->>DB: UPDATE Payment (SETTLED) + Note right of S: El pago ahora es SETTLED + end +``` + +### Explicación del Proceso + +1. **Transactional Outbox (API & DB):** + * **Hay 2 tablas** Para garantizar la atomicidad. Al guardar el `Payment` (negocio) y el `OutboxEvent` (mensaje pendiente) en la **misma transacción de base de datos**, aseguramos que no se pierdan mensajes si el sistema falla antes de avisar a Kafka. + * Si la transacción local falla, no hay ni pago ni mensaje. Si tiene éxito, ambos están persistidos de forma segura. + +2. **Outbox Relay (The Worker):** + * Es un proceso independiente que actúa como un "cartero". Su única función es leer la tabla `outbox_events`, publicar los mensajes en Kafka y marcarlos como `SENT`. + * Esto desacopla la disponibilidad de la API de la de Kafka (si Kafka no está disponible, el Relay reintenta luego). + +3. **Dispatcher (Consumers Entry Point):** + * Centraliza la recepción del evento `payment.created.v1` y dispara en paralelo las evaluaciones de **Fraude** y **Libro Contable (Ledger)**. + +4. **Consumidores Especializados (Fraud & Ledger):** + * **Fraud Check:** Realiza el scoring de riesgo. Si es exitoso, emite `payment.fraud.approved.v1`. + * **Ledger Write:** Registra el movimiento financiero (débito/crédito) y emite `payment.ledger.written.v1`. + * **Idempotencia:** Ambos usan la tabla `processed_events` para asegurar que un mismo `eventId` nunca sea procesado dos veces por el mismo consumidor. -La arquitectura resuelve específicamente el requerimiento crítico de no emitir mensajes al broker (Kafka) dentro de transacciones de base de datos distribuidas. La solución adopta el **Transactional Outbox Pattern**: +5. **Saga Consumer (Orquestador de Consistencia Final):** + * Recoge los eventos de aprobación de Fraude y Ledger. + * **Función:** Verifica en la BD (`processed_events`) si ambos procesos han terminado para ese pago. + * **Cierre:** Solo cuando ambas condiciones se cumplen, la Saga actualiza el registro original en la tabla `payments` a estado **`SETTLED`**, alcanzando la **consistencia eventual**. -1. **`apps/api` (Payment API)**: Se ejecuta la creación del pago y la escritura en la tabla de Outbox de eventos (`outbox_events`). Ambos registros se guardan utilizando la misma estructura de transacción a nivel de Base de datos (vía `QueryRunner`), otorgando garantías de integridad relacional ACID. El broker Kafka **no** interviene en esta ejecución. -2. **`apps/relay` (Outbox Relay Process)**: Un proceso (Worker) asíncrono configurado con `@Cron` escanea la tabla `outbox_events` cada X segundos capturando los eventos marcados como `PENDING`. Estos son publicados en Kafka (`payment.created.v1`) y el registro cambia a estado `SENT`. +--- + + +1. **`apps/api` (Payment API)**: **Gestiono** la creación del pago y la escritura en la tabla de Outbox. Ambos registros los **guardo** usando una transacción de Base de datos (vía `QueryRunner`), otorgando garantías ACID. El broker Kafka **no** interviene aquí. +2. **`apps/relay` (Outbox Relay Process)**: **Diseño** un proceso asíncrono con `@Cron` que **escanea** la tabla `outbox_events` cada 10s capturando eventos `PENDING`. Los **publico** en Kafka y cambio su estado a `SENT`. 3. **`apps/consumers` (Consumers & Saga)**: - - Escuchan los eventos en Kafka. - - Se aseguran de aplicar el patrón **Idempotent Consumer**, basándose en una clave compuesta `eventId` y `consumerType` dentro de una tabla compartida en Base de datos (`processed_events`). Esto otorga manejo de reintentos e idempotencia (*at-least-once guarantee*). - - Un coordinador local (*Saga Consumer*) escucha eventos intermedios (ej. `payment.fraud.approved.v1` y `payment.ledger.written.v1`) para alterar de forma asíncrona la consistencia final (*eventual consistency*) del pago a `SETTLED`. + - **Escucho** los eventos en Kafka. + - **Aplico** el patrón **Idempotent Consumer**, basándome en una clave compuesta `eventId` y `consumer` en la tabla `processed_events`. + - **Coordino** el estado final mediante un `SagaConsumer` para alterar la consistencia final del pago a `SETTLED`. +### Modelo de Datos (PostgreSQL) + +**Utilizo** tres tablas clave para garantizar la atomicidad y la idempotencia: + +1. **`payments`**: Almacena el estado actual del pago. + - `id` (UUID, PK): Identificador único del pago. + - `amount` (Decimal): Monto de la transacción. + - `status` (Enum): PENDING, SETTLED, FAILED. + - `currency`, `country`: Metadatos de la transacción. + +2. **`outbox_events`**: Implemento el Outbox Pattern. + - `eventId` (UUID, PK): ID único del evento. + - `aggregateId` (UUID): Referencia al `payment.id`. + - `eventType` (String): Ejemplo `payment.created.v1`. + - `payload` (JSONB): Datos serializados del evento. + - `status` (Enum): PENDING, SENT. + +3. **`processed_events`**: Garantizo la idempotencia de los consumidores. + - `eventId` (UUID, PK): ID del evento procesado. + - `consumer` (String, PK): Nombre del microservicio que procesó el evento (ej. `fraud`, `ledger`). + - `processedAt` (Timestamp): Fecha de procesamiento. ## Tech Stack - **Framework:** NestJS @@ -29,12 +122,12 @@ docker-compose up -d ``` 2. **Instalar dependencias** -Asegúrate de tener Node.js instalado (v18+) y ubicado en la carpeta del challenge. +**Aseguro** tener Node.js (v18+) y estar ubicado en la carpeta del challenge. ```bash npm install ``` -3. **Ejecutar módulos por separado (en diferentes terminales preferentemente)** +3. **Ejecutar módulos en diferentes terminales** - API y Creación Outbox: `npm run start api` - Relay (Cron publicador a Kafka): `npm run start relay` - Consumidores Kafka: `npm run start consumers` @@ -44,28 +137,54 @@ npm install ## Arquitecturas y Decisiones (ADR) ### ADR 1: The Transactional Outbox vs Two-Phase Commit -- **Decisión:** Implementar Transactional Outbox pattern. +- **Decisión:** **Implementé** el Transactional Outbox pattern. - **Razón:** El uso de 2PC o llamar a `kafkaClient.emit` dentro de una transacción genera pérdida de datos cuando el bloque local es exitoso pero el mensaje al Broker fracasa. Guardar una copia serializada del payload como `OutboxEvent` en PostgreSQL nos permite delegar a un *Poller Relay* la publicación, desacoplándonos de la disponibilidad instantánea de Kafka. ### ADR 2: Monorepo NestJS vs Repositorios Múltiples -- **Decisión:** NestJS Standard Monorepo (`apps/api`, `apps/relay`, `apps/consumers`). -- **Razón:** Al tratarse de un challenge conceptual, y con la estricta idea de no acoplar los consumer / relay en procesos `setInterval()` internos de la API, el monorepo nos brinda separación de subprocesos y puertos, además de permitir exportar las entidades Base de datos (`Payment`, `OutboxEvent`) y los DTOs en una única librería `libs/shared` consolidada, sin duplicidad de esfuerzo. +- **Decisión:** **Elegí** un NestJS Standard Monorepo (`apps/api`, `apps/relay`, `apps/consumers`). +- **Razón:** Al tratarse de un challenge, y con la estricta idea de no acoplar los consumer / relay en procesos `setInterval()` internos de la API, el monorepo nos brinda separación de subprocesos y puertos, además de permitir exportar las entidades Base de datos (`Payment`, `OutboxEvent`) y los DTOs en una única librería `libs/shared` consolidada, sin duplicidad de esfuerzo. ### ADR 3: Coreografía del Estado Final (Eventual Consistency) -- **Decisión:** Coreografiar el estado de los pagos desde un tercer oyente `SagaConsumer`. +- **Decisión:** **Decidí** coreografiar el estado de los pagos desde un tercer oyente `SagaConsumer`. - **Razón:** En lugar de hacer que Fraud o Ledger modifiquen el `PaymentTable` diréctamente (creando cuellos de acceso a tabla central), enviamos una repuesta Kafka `payment.fraud.approved` que un saga local evalúa. Esto documenta con claridad la garantía *eventual* donde la API devuelve el Payload intacto con semántica PENDING hasta la convergencia final. -### Requerimientos / Limitaciones Conocidas / Qué Incluir con más tiempo -- Por motivos prácticos, todo el Monorepo asume una conexión genérica a la BD. En producción, el Relay y los Consumers utilizarían credenciales restrictivas. -- Para Namespace País (opcional check): No se implementó un enrutamiento en sub-Kafka. De implementarlo, sería mediante `topic: pe.payments.payment...` inyectando dependencias configurables bajo módulo por entorno. -- Dead Letter Queue (`DLT`) y Retry Policies: El relay reintenta sin fin. Si los consumidores fallan (Simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al subtopic `.dlt`, a su vez enviando `payment.failed.v1` donde la Saga finalmente declara status `FAILED` en la tabla para reflejarse vía API `GET /payments/:id`. +--- + +## Por qué esta es una solución sólida + +He diseñado este proyecto siguiendo los estándares más exigentes de sistemas distribuidos: + +* **Aislamiento de Procesos:** El **Relay de Outbox** corre en un subproceso totalmente independiente (Worker), evitando el uso de errores comunes como `setInterval` dentro de la aplicación API. +* **Idempotencia en el Consumidor:** He implementado las claves de idempotencia (basadas en `eventId`) en el lado del **Consumidor**. Esto garantiza que, aunque Kafka entregue un mensaje más de una vez (at-least-once), mi sistema no duplique registros de contabilidad o fraude. +* **Consistencia Documentada:** Mi API documenta explícitamente en el sobre de respuesta (`meta.consistencyModel`) que el sistema opera bajo **Consistencia Eventual**. +* **Resiliencia ante Fallos del Relay:** Si mi Relay falla después de escribir en el outbox pero antes de publicar en Kafka, el evento permanece en `PENDING`. Al reiniciarse, el Relay simplemente reintenta el envío, asegurando que ningún pago se pierda. +* **Escalabilidad Regional (Namespacing):** **He implementado** un sistema de nombres de tópicos basado en el país (ej: `pe.payment.created.v1`). Esto permite que cada región escale sus consumidores de forma independiente y que un fallo en un país no bloquee a los demás. + +### Prácticas Evitadas +* **NUNCA llamo a `kafkaClient.emit()` dentro de un decorador `@Transaction()`**. Este es un error crítico que produce pérdida silenciosa de datos. En mi solución, la interacción con Kafka ocurre estrictamente fuera de la transacción de base de datos. + +--- + +## Estrategia Implementada: Namespacing por País + +Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitectura ofrece: +* **Aislamiento de Fallos:** Un retraso o error masivo en el procesamiento de un país no afecta la liquidación de pagos en los demás. +* **Grupos de Consumo Dinámicos:** Permite configurar grupos por país (`fraud-group-pe`) para optimizar recursos en regiones con mayor volumen. +* **Cumplimiento de Datos:** Facilita la futura implementación de residencia de datos local según regulaciones nacionales. --- +### Requerimientos realizados +- Por motivos prácticos, **asumo** una conexión genérica a la BD en todo el Monorepo. En producción, **usaría** credenciales restrictivas. +- Dead Letter Queue (`DLT`) y Retry Policies: **Configuré** el relay para que reintente sin fin. Si los consumidores fallan (simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al sub-tópico `.dlt`, enviando a su vez `payment.failed.v1` donde **mi Saga** declara el estado `FAILED`. + +--- + + ## Cómo probar y validar cada escenario paso a paso ### 1. Preparar el Entorno y Levantar Microservicios -Antes de realizar pruebas, asegúrate de tener la infraestructura (Docker) y los 3 microservicios corriendo en terminales separadas para observar el flujo en tiempo real. +Antes de realizar pruebas, **me aseguro** de tener la infraestructura (Docker) y los 3 microservicios corriendo para observar el flujo en tiempo real. **Paso A: Infraestructura (Terminal 1)** ```bash @@ -73,7 +192,7 @@ docker-compose up -d ``` **Paso B: Levantar Microservicios (Terminales 2, 3 y 4)** -Se recomienda iniciar los 3 procesos **antes** de enviar la petición para observar el procesamiento asíncrono inmediato: +**Inicio** los 3 procesos **antes** de enviar la petición para observar el procesamiento asíncrono inmediato: - **API:** `npm run start api` (Puerto 3001) - **Relay:** `npm run start relay` (Escanea Outbox cada 10s) - **Consumers:** `npm run start consumers` (Escucha Kafka) @@ -81,7 +200,7 @@ Se recomienda iniciar los 3 procesos **antes** de enviar la petición para obser --- ### 2. Crear un Pago y Verificar Outbox (Garantía Atómica) -Envía un pago a la API. En este punto, la API guarda el Pago y el Evento en una misma transacción de BD. +**Envío** un pago a la API. En este punto, la API guarda el Pago y el Evento en una misma transacción de BD. **Ejecutar Petición:** ```bash @@ -89,7 +208,7 @@ curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" ``` **Validar Inserción en Outbox:** -Para comprobar que el registro se creó con estado `PENDING` antes de ser procesado por el Relay, ejecuta: +Para comprobar que el registro se creó con estado `PENDING` antes de ser procesado por el Relay, **ejecuto**: ```bash docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", \"aggregateId\", status, \"eventType\" FROM outbox_events;" ``` @@ -98,7 +217,7 @@ docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", --- ### 3. Verificar el flujo Relay -> Kafka -> Consumers -Observa los logs en las terminales donde levantaste los servicios en el Paso 1: +**Observo** los logs en las terminales donde levantaste los servicios en el Paso 1: 1. **Relay Terminal**: Verás `[RelayService] Relayed event successfully` indicando que el registro cambió a `SENT` y se publicó en Kafka. 2. **Consumers Terminal**: El `DispatcherController` recibirá el mensaje y verás la coordinación de la Saga: @@ -117,24 +236,57 @@ curl -X GET http://localhost:3001/payments/{TU-PAYMENT-ID} **Resultado esperado:** `"status": "SETTLED"`. **Verificar Idempotencia en DB:** -Comprueba que los consumidores marcaron el evento como procesado para evitar duplicados. Dado que `processed_events` usa el `eventId`, vinculamos con `outbox_events` para filtrar por tu ID de pago: +**Compruebo** que los consumidores marcaron el procesamiento. Mis consumidores usan el **ID del pago** como clave de idempotencia: + ```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT pe.* FROM processed_events pe JOIN outbox_events oe ON pe.\"eventId\" = oe.\"eventId\" WHERE oe.\"aggregateId\" = '{TU-PAYMENT-ID}';" +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT pe.\"eventId\" as \"paymentId\", pe.consumer, pe.\"processedAt\" FROM processed_events pe WHERE pe.\"eventId\" = '{TU-PAYMENT-ID}';" +``` + +```bash +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount, country FROM payments;" ``` --- ### 5. Escenario Negativo (DLT y Reintentos) -Para forzar un fallo de fraude y ver el flujo hacia la **Dead Letter Queue (DLT)**, envía un pago con un monto mayor a 1,000,000: +Para forzar un fallo de fraude y ver el flujo hacia la **Dead Letter Queue (DLT)**, envío un pago con un monto mayor a 1,000,000: ```bash curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" ``` -**Resultado esperado en Logs:** -Observarás `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt` y eventualmente el estado del pago cambiará a `FAILED`. +**Resultado en Logs:** + `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt` y eventualmente el estado del pago cambiará a `FAILED`. **Validar Estado en DB:** + +```bash +docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments;" +``` + ```bash docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments WHERE id = '{TU-PAYMENT-ID}';" ``` +--- + +### Monitoreo de Kafka (Inspección de Tópicos) + +Como ahora usamos nombres de tópico por país, **ejecuto** estos comandos para validar que los mensajes fluyen correctamente por los canales regionales: + +**1. Listar tópicos existentes:** +```bash +docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list +``` + +**2. Ver contenido de un tópico (ej. Perú):** +```bash +docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.created.v1 --from-beginning +``` + +**3. Ver la "Cola de Errores" (DLT) de México:** +```bash +docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic mx.payment.created.v1.dlt --from-beginning +``` + +--- + diff --git a/challenge-1/apps/consumers/src/dispatcher.controller.ts b/challenge-1/apps/consumers/src/dispatcher.controller.ts index dada4f13..24120bdc 100644 --- a/challenge-1/apps/consumers/src/dispatcher.controller.ts +++ b/challenge-1/apps/consumers/src/dispatcher.controller.ts @@ -12,7 +12,12 @@ export class DispatcherController { private readonly ledger: LedgerConsumer, ) {} - @EventPattern('payment.created.v1') + @EventPattern([ + 'pe.payment.created.v1', + 'mx.payment.created.v1', + 'co.payment.created.v1', + 'gen.payment.created.v1' + ]) async handlePaymentCreated(@Payload() message: any, @Ctx() context: KafkaContext) { this.logger.log('Payment created event received by Dispatcher'); // Run both checks concurrently diff --git a/challenge-1/apps/consumers/src/fraud.consumer.ts b/challenge-1/apps/consumers/src/fraud.consumer.ts index e0d9d4b4..c00ae24f 100644 --- a/challenge-1/apps/consumers/src/fraud.consumer.ts +++ b/challenge-1/apps/consumers/src/fraud.consumer.ts @@ -43,8 +43,10 @@ export class FraudConsumer { this.logger.log(`Fraud scoring passed for payment ${aggregateId}`); + const countryPrefix = (value.country || 'gen').toLowerCase(); + // Emit success for this stage - this.kafkaClient.emit('payment.fraud.approved.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.fraud.approved.v1`, { key: aggregateId, value: { aggregateId, eventId, status: 'APPROVED' }, }); @@ -52,17 +54,15 @@ export class FraudConsumer { } catch (error) { this.logger.error(`Error processing ${eventId} in Fraud: ${error.message}`); - // Note: Native Kafka retries might handle retries, but for DLT pattern we manage it: - // For a strict retry budget we could read headers or a local table. - // Simplification: assume it failed permanently after standard catches, send to DLT. - - await this.sendToDlt('payment.created.v1', value, error); + const countryPrefix = (value.country || 'gen').toLowerCase(); + await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); } } private async sendToDlt(originalTopic: string, message: any, error: Error) { const dltTopic = `${originalTopic}.dlt`; const aggregateId = message.aggregateId || message.id; + const countryPrefix = (message.country || 'gen').toLowerCase(); this.logger.warn(`Sending to DLT -> ${dltTopic}`); this.kafkaClient.emit(dltTopic, { @@ -75,7 +75,7 @@ export class FraudConsumer { }, }); - this.kafkaClient.emit('payment.failed.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, }); diff --git a/challenge-1/apps/consumers/src/ledger.consumer.ts b/challenge-1/apps/consumers/src/ledger.consumer.ts index d7dee581..580bcb19 100644 --- a/challenge-1/apps/consumers/src/ledger.consumer.ts +++ b/challenge-1/apps/consumers/src/ledger.consumer.ts @@ -38,21 +38,26 @@ export class LedgerConsumer { this.logger.log(`Ledger entry written for payment ${aggregateId}`); + const countryPrefix = (value.country || 'gen').toLowerCase(); + // Emit success for this stage - this.kafkaClient.emit('payment.ledger.written.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.ledger.written.v1`, { key: aggregateId, value: { aggregateId, eventId, status: 'WRITTEN' }, }); } catch (error) { this.logger.error(`Error processing ${eventId} in Ledger: ${error.message}`); - await this.sendToDlt('payment.created.v1', value, error); + + const countryPrefix = (value.country || 'gen').toLowerCase(); + await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); } } private async sendToDlt(originalTopic: string, message: any, error: Error) { const dltTopic = `${originalTopic}.dlt`; const aggregateId = message.aggregateId || message.id; + const countryPrefix = (message.country || 'gen').toLowerCase(); this.logger.warn(`Sending to DLT -> ${dltTopic}`); this.kafkaClient.emit(dltTopic, { @@ -65,7 +70,7 @@ export class LedgerConsumer { }, }); - this.kafkaClient.emit('payment.failed.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, }); diff --git a/challenge-1/apps/consumers/src/saga.consumer.ts b/challenge-1/apps/consumers/src/saga.consumer.ts index a23786de..9ef4f63a 100644 --- a/challenge-1/apps/consumers/src/saga.consumer.ts +++ b/challenge-1/apps/consumers/src/saga.consumer.ts @@ -13,17 +13,34 @@ export class SagaConsumer { private readonly processedRepo: ProcessedEventsRepository, ) {} - @EventPattern('payment.fraud.approved.v1') + @EventPattern([ + 'pe.payment.fraud.approved.v1', + 'mx.payment.fraud.approved.v1', + 'co.payment.fraud.approved.v1', + 'gen.payment.fraud.approved.v1' + ]) async handleFraudApproved(@Payload() message: any): Promise { - await this.trySettlePayment(message.eventId, message.aggregateId); + const aggregateId = message.aggregateId || message.id; + await this.trySettlePayment(message.eventId, aggregateId); } - @EventPattern('payment.ledger.written.v1') + @EventPattern([ + 'pe.payment.ledger.written.v1', + 'mx.payment.ledger.written.v1', + 'co.payment.ledger.written.v1', + 'gen.payment.ledger.written.v1' + ]) async handleLedgerWritten(@Payload() message: any): Promise { - await this.trySettlePayment(message.eventId, message.aggregateId); + const aggregateId = message.aggregateId || message.id; + await this.trySettlePayment(message.eventId, aggregateId); } - @EventPattern('payment.failed.v1') + @EventPattern([ + 'pe.payment.failed.v1', + 'mx.payment.failed.v1', + 'co.payment.failed.v1', + 'gen.payment.failed.v1' + ]) async handlePaymentFailed(@Payload() message: any): Promise { const aggregateId = message.aggregateId || message.id; this.logger.warn(`Saga reacting to failure for payment ${aggregateId}`); diff --git a/challenge-1/apps/relay/src/relay.service.ts b/challenge-1/apps/relay/src/relay.service.ts index 27641845..d13a477d 100644 --- a/challenge-1/apps/relay/src/relay.service.ts +++ b/challenge-1/apps/relay/src/relay.service.ts @@ -37,8 +37,13 @@ export class RelayService implements OnApplicationBootstrap { for (const event of events) { try { + const countryPrefix = (event.payload?.country || 'gen').toLowerCase(); + const topic = `${countryPrefix}.${event.eventType}`; + + this.logger.log(`Publishing to namespaced topic: ${topic}`); + await new Promise((resolve, reject) => { - this.kafkaClient.emit(event.eventType, { + this.kafkaClient.emit(topic, { key: event.aggregateId, value: event.payload }).subscribe({ diff --git a/challenge-1/dist/apps/consumers/main.js b/challenge-1/dist/apps/consumers/main.js index 3b6cfe0a..50cd0b06 100644 --- a/challenge-1/dist/apps/consumers/main.js +++ b/challenge-1/dist/apps/consumers/main.js @@ -486,7 +486,12 @@ let DispatcherController = DispatcherController_1 = class DispatcherController { }; exports.DispatcherController = DispatcherController; __decorate([ - (0, microservices_1.EventPattern)('payment.created.v1'), + (0, microservices_1.EventPattern)([ + 'pe.payment.created.v1', + 'mx.payment.created.v1', + 'co.payment.created.v1', + 'gen.payment.created.v1' + ]), __param(0, (0, microservices_1.Payload)()), __param(1, (0, microservices_1.Ctx)()), __metadata("design:type", Function), @@ -553,19 +558,22 @@ let FraudConsumer = FraudConsumer_1 = class FraudConsumer { } await this.processedRepo.markProcessed(eventId, this.consumerName); this.logger.log(`Fraud scoring passed for payment ${aggregateId}`); - this.kafkaClient.emit('payment.fraud.approved.v1', { + const countryPrefix = (value.country || 'gen').toLowerCase(); + this.kafkaClient.emit(`${countryPrefix}.payment.fraud.approved.v1`, { key: aggregateId, value: { aggregateId, eventId, status: 'APPROVED' }, }); } catch (error) { this.logger.error(`Error processing ${eventId} in Fraud: ${error.message}`); - await this.sendToDlt('payment.created.v1', value, error); + const countryPrefix = (value.country || 'gen').toLowerCase(); + await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); } } async sendToDlt(originalTopic, message, error) { const dltTopic = `${originalTopic}.dlt`; const aggregateId = message.aggregateId || message.id; + const countryPrefix = (message.country || 'gen').toLowerCase(); this.logger.warn(`Sending to DLT -> ${dltTopic}`); this.kafkaClient.emit(dltTopic, { key: aggregateId, @@ -576,7 +584,7 @@ let FraudConsumer = FraudConsumer_1 = class FraudConsumer { failedAt: new Date().toISOString(), }, }); - this.kafkaClient.emit('payment.failed.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, }); @@ -686,19 +694,22 @@ let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { this.logger.log(`Processing ledger entry (double-entry write) for payment ${aggregateId}`); await this.processedRepo.markProcessed(eventId, this.consumerName); this.logger.log(`Ledger entry written for payment ${aggregateId}`); - this.kafkaClient.emit('payment.ledger.written.v1', { + const countryPrefix = (value.country || 'gen').toLowerCase(); + this.kafkaClient.emit(`${countryPrefix}.payment.ledger.written.v1`, { key: aggregateId, value: { aggregateId, eventId, status: 'WRITTEN' }, }); } catch (error) { this.logger.error(`Error processing ${eventId} in Ledger: ${error.message}`); - await this.sendToDlt('payment.created.v1', value, error); + const countryPrefix = (value.country || 'gen').toLowerCase(); + await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); } } async sendToDlt(originalTopic, message, error) { const dltTopic = `${originalTopic}.dlt`; const aggregateId = message.aggregateId || message.id; + const countryPrefix = (message.country || 'gen').toLowerCase(); this.logger.warn(`Sending to DLT -> ${dltTopic}`); this.kafkaClient.emit(dltTopic, { key: aggregateId, @@ -709,7 +720,7 @@ let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { failedAt: new Date().toISOString(), }, }); - this.kafkaClient.emit('payment.failed.v1', { + this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, }); @@ -758,10 +769,12 @@ let SagaConsumer = SagaConsumer_1 = class SagaConsumer { this.processedRepo = processedRepo; } async handleFraudApproved(message) { - await this.trySettlePayment(message.eventId, message.aggregateId); + const aggregateId = message.aggregateId || message.id; + await this.trySettlePayment(message.eventId, aggregateId); } async handleLedgerWritten(message) { - await this.trySettlePayment(message.eventId, message.aggregateId); + const aggregateId = message.aggregateId || message.id; + await this.trySettlePayment(message.eventId, aggregateId); } async handlePaymentFailed(message) { const aggregateId = message.aggregateId || message.id; @@ -781,21 +794,36 @@ let SagaConsumer = SagaConsumer_1 = class SagaConsumer { }; exports.SagaConsumer = SagaConsumer; __decorate([ - (0, microservices_1.EventPattern)('payment.fraud.approved.v1'), + (0, microservices_1.EventPattern)([ + 'pe.payment.fraud.approved.v1', + 'mx.payment.fraud.approved.v1', + 'co.payment.fraud.approved.v1', + 'gen.payment.fraud.approved.v1' + ]), __param(0, (0, microservices_1.Payload)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) ], SagaConsumer.prototype, "handleFraudApproved", null); __decorate([ - (0, microservices_1.EventPattern)('payment.ledger.written.v1'), + (0, microservices_1.EventPattern)([ + 'pe.payment.ledger.written.v1', + 'mx.payment.ledger.written.v1', + 'co.payment.ledger.written.v1', + 'gen.payment.ledger.written.v1' + ]), __param(0, (0, microservices_1.Payload)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) ], SagaConsumer.prototype, "handleLedgerWritten", null); __decorate([ - (0, microservices_1.EventPattern)('payment.failed.v1'), + (0, microservices_1.EventPattern)([ + 'pe.payment.failed.v1', + 'mx.payment.failed.v1', + 'co.payment.failed.v1', + 'gen.payment.failed.v1' + ]), __param(0, (0, microservices_1.Payload)()), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), diff --git a/challenge-1/dist/apps/relay/main.js b/challenge-1/dist/apps/relay/main.js index 2059a7db..1c764be1 100644 --- a/challenge-1/dist/apps/relay/main.js +++ b/challenge-1/dist/apps/relay/main.js @@ -113,8 +113,11 @@ let RelayService = RelayService_1 = class RelayService { this.logger.log(`Found ${events.length} pending events to relay`); for (const event of events) { try { + const countryPrefix = (event.payload?.country || 'gen').toLowerCase(); + const topic = `${countryPrefix}.${event.eventType}`; + this.logger.log(`Publishing to namespaced topic: ${topic}`); await new Promise((resolve, reject) => { - this.kafkaClient.emit(event.eventType, { + this.kafkaClient.emit(topic, { key: event.aggregateId, value: event.payload }).subscribe({ From 52203b14fbf74ee6b5f0e563a6f95eb2b17e4843 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Wed, 1 Apr 2026 19:22:44 -0500 Subject: [PATCH 05/18] Mejorando mensaje para las colas de kafka --- challenge-1/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/challenge-1/README.md b/challenge-1/README.md index 71eb082a..e84ccb6a 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -278,12 +278,17 @@ Como ahora usamos nombres de tópico por país, **ejecuto** estos comandos para docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list ``` -**2. Ver contenido de un tópico (ej. Perú):** +**2. Listar solo tópicos de Perú (PE):** +```bash +docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list | grep pe. +``` + +**3. Ver contenido de un tópico (ej. Perú):** ```bash docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.created.v1 --from-beginning ``` -**3. Ver la "Cola de Errores" (DLT) de México:** +**4. Ver la "Cola de Errores" (DLT) de México:** ```bash docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic mx.payment.created.v1.dlt --from-beginning ``` From 47fd8653d107707e6722a3de9db8c5f991646a6c Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Thu, 2 Apr 2026 12:14:29 -0500 Subject: [PATCH 06/18] Challenge 2 --- .gitignore | 6 +- challenge-1/README.md | 11 + challenge-2/.prettierrc | 4 + challenge-2/README.md | 160 + challenge-2/docker-compose.yml | 23 + challenge-2/eslint.config.mjs | 35 + challenge-2/nest-cli.json | 8 + challenge-2/package-lock.json | 10475 ++++++++++++++++ challenge-2/package.json | 75 + challenge-2/src/app.controller.spec.ts | 22 + challenge-2/src/app.controller.ts | 12 + challenge-2/src/app.module.ts | 45 + challenge-2/src/app.service.ts | 8 + challenge-2/src/fx/fx.module.ts | 8 + challenge-2/src/fx/fx.service.ts | 30 + challenge-2/src/main.ts | 8 + .../src/read-model/read-model.entity.ts | 31 + .../src/read-model/read-model.module.ts | 12 + .../transfer-read-model.projector.ts | 61 + .../read-model/transfer-read.controller.ts | 29 + .../src/shared/events/transfer.events.ts | 24 + challenge-2/src/transfer/saga.repository.ts | 25 + .../src/transfer/transfer.controller.ts | 18 + challenge-2/src/transfer/transfer.entity.ts | 44 + challenge-2/src/transfer/transfer.module.ts | 19 + .../src/transfer/transfer.orchestrator.ts | 93 + challenge-2/src/wallet/wallet.entity.ts | 48 + challenge-2/src/wallet/wallet.module.ts | 11 + challenge-2/src/wallet/wallet.service.ts | 157 + challenge-2/test/app.e2e-spec.ts | 29 + challenge-2/test/jest-e2e.json | 9 + challenge-2/tsconfig.build.json | 4 + challenge-2/tsconfig.json | 25 + challenge-3/README.md | 194 +- challenge-3/dist/app.controller.js.map | 2 +- challenge-3/dist/kafka-consumer.explorer.js | 4 +- .../dist/kafka-consumer.explorer.js.map | 2 +- challenge-3/dist/kafka.module.d.ts | 3 + challenge-3/dist/kafka.module.js | 10 +- challenge-3/dist/kafka.module.js.map | 2 +- challenge-3/dist/main.js | 2 +- challenge-3/dist/tsconfig.build.tsbuildinfo | 2 +- challenge-3/src/app.controller.ts | 6 +- challenge-3/src/kafka-consumer.explorer.ts | 5 +- challenge-3/src/kafka.module.ts | 2 + challenge-3/src/main.ts | 2 +- 46 files changed, 11736 insertions(+), 69 deletions(-) create mode 100644 challenge-2/.prettierrc create mode 100644 challenge-2/README.md create mode 100644 challenge-2/docker-compose.yml create mode 100644 challenge-2/eslint.config.mjs create mode 100644 challenge-2/nest-cli.json create mode 100644 challenge-2/package-lock.json create mode 100644 challenge-2/package.json create mode 100644 challenge-2/src/app.controller.spec.ts create mode 100644 challenge-2/src/app.controller.ts create mode 100644 challenge-2/src/app.module.ts create mode 100644 challenge-2/src/app.service.ts create mode 100644 challenge-2/src/fx/fx.module.ts create mode 100644 challenge-2/src/fx/fx.service.ts create mode 100644 challenge-2/src/main.ts create mode 100644 challenge-2/src/read-model/read-model.entity.ts create mode 100644 challenge-2/src/read-model/read-model.module.ts create mode 100644 challenge-2/src/read-model/transfer-read-model.projector.ts create mode 100644 challenge-2/src/read-model/transfer-read.controller.ts create mode 100644 challenge-2/src/shared/events/transfer.events.ts create mode 100644 challenge-2/src/transfer/saga.repository.ts create mode 100644 challenge-2/src/transfer/transfer.controller.ts create mode 100644 challenge-2/src/transfer/transfer.entity.ts create mode 100644 challenge-2/src/transfer/transfer.module.ts create mode 100644 challenge-2/src/transfer/transfer.orchestrator.ts create mode 100644 challenge-2/src/wallet/wallet.entity.ts create mode 100644 challenge-2/src/wallet/wallet.module.ts create mode 100644 challenge-2/src/wallet/wallet.service.ts create mode 100644 challenge-2/test/app.e2e-spec.ts create mode 100644 challenge-2/test/jest-e2e.json create mode 100644 challenge-2/tsconfig.build.json create mode 100644 challenge-2/tsconfig.json diff --git a/.gitignore b/.gitignore index 8af8f5c3..386c8019 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ .agents challenge-1/node_modules -challenge-3/node_modules \ No newline at end of file +challenge-1/dist +challenge-2/node_modules +challenge-2/dist +challenge-3/node_modules +challenge-3/dist \ No newline at end of file diff --git a/challenge-1/README.md b/challenge-1/README.md index e84ccb6a..98b109ec 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -295,3 +295,14 @@ docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --top --- +## Cumplimiento de Entregables (Checklist) + +He diseñado la solución alineada con el 100% de los requerimientos técnicos: + +| Punto | Entregable Requerido | Estado | Ubicación / Implementación | +| :--- | :--- | :---: | :--- | +| **1** | **Transactional outbox** | ✅ | `apps/api/src/payments/payments.service.ts`. Escritura atómica garantizada usando `QueryRunner`. Relay asíncrono en `apps/relay`. | +| **2** | **Consumidores idempotentes** | ✅ | `FraudConsumer` y `LedgerConsumer` en `apps/consumers`. Previenen reprocesamiento mediante la tabla DB `processed_events`. | +| **3** | **Manejador de DLT** | ✅ | Los fallos (y límites de reintentos) se enrutan de forma segura a `{topico_dlt}` mediante llamadas `sendToDlt` implementadas en el módulo. | +| **4** | **Endpoint de consulta** | ✅ | `GET /payments/:id` en el modulo API. Demuestra honestamente consistencia eventual (transiciona validando BD por `SagaConsumer`). | +| **Opt** | **Namespaces geográficos** | ✅ | En el servicio se añade el prefijo `{country}.payment...` al Outbox. Obliga implícitamente a enrutar a flujos apartados (Consumer Groups). | diff --git a/challenge-2/.prettierrc b/challenge-2/.prettierrc new file mode 100644 index 00000000..a20502b7 --- /dev/null +++ b/challenge-2/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/challenge-2/README.md b/challenge-2/README.md new file mode 100644 index 00000000..72fae68f --- /dev/null +++ b/challenge-2/README.md @@ -0,0 +1,160 @@ +# Challenge 2: Wallet Transfer con Distributed Saga + +He diseñado esta solución con un enfoque prioritario en la integridad y trazabilidad de las transferencias financieras, utilizando una **arquitectura basada en Orquestación de Sagas**, **CQRS acoplado a eventos** y técnicas de **Pessimistic y Optimistic Locking**. Mi objetivo fue abstraer la complejidad del manejo de errores parciales de los servicios core y evitar por todos los medios las transacciones distribuidas. + +--- + +## Arquitectura y Flujo de la Solución + +El siguiente diagrama ilustra cómo el Orquestador y la State Machine manejan el ciclo de vida de la transacción entre los diferentes dominios, asegurando consistencia eventual y escalabilidad. + +```mermaid +sequenceDiagram + participant C as Cliente (API) + participant O as TransferOrchestrator + participant S as SagaRepository (State) + participant W as WalletService + participant F as FxService + participant CQ as CQRS Projector (< 500ms) + + Note over O,S: 1. Idempotency & Lifecycle Init + C->>O: POST /transfers/:id + O->>S: create {step: STARTED} + versioning + O-->>C: 202 Accepted (Saga Iniciada) + + Note over W: 2. Coreografía Protegida (Pessimistic Lock) + O->>W: debit(fromWallet) + W-->>O: OK + O->>S: update step DEBIT_COMPLETED + O->>W: credit(toWallet) + + alt Falla en CreditWallet + W--xO: Error + O->>S: step COMPENSATING + O->>W: reverseDebit(fromWallet) + O->>S: step FAILED + O->>CQ: emit('TransferFailedEvent') + else Éxito en CreditWallet + W-->>O: OK + O->>S: update step CREDIT_COMPLETED + end + + Note over F: 3. Timed Integrations (FX Ambiguo) + O->>F: settle(FX) + alt Timeout + F--xO: TimeoutError + O->>S: step FX_AMBIGUOUS (Manual Review) + else Éxito + O->>S: update step COMPLETED + O->>CQ: emit('TransferCompletedEvent') + end +``` + +--- + +## Cómo poner en marcha mi solución + +He configurado la aplicación para inicializar tanto la base de datos PostgreSQL como la API NestJS automáticamente. + +```bash +# 1. Ingresar a la carpeta del reto +cd challenge-2 + +# 2. Instalar dependencias +npm install + +# 3. Levantar Infraestructura PostgreSQL +docker-compose up -d + +# 4. Iniciar la aplicación y el Orquestador +npm run start +``` +*(TypeORM se encarga vía `synchronize: true` de crear el schema ideal para revisión local)* + +--- + +## Escenarios de Validación (Mi Solución en Acción) + +### A) Orquestación Feliz y CQRS en < 500ms +1. Inserta fondos de prueba directamente en DB (o confía en la auto-creación y haz un UPDATE). + Pero para evitarlo, puedes enviar un Débito con fondos e iniciar transferencia: + ```bash + curl -X POST http://localhost:3000/transfers/T-001 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 100, "fromCurrency":"USD", "toCurrency":"USD"}' + ``` +2. **Verifica estado en CQRS Read Model:** + ```bash + curl http://localhost:3000/transfers/T-001 + ``` + **Respuesta esperada:** + ```json + { + "data": { "transferId": "T-001", "status": "completed", "lastEventVersion": 4 }, + "meta": { + "consistencyModel": "eventual", + "stalenessWindowMs": 500, + "note": "Read model is updated via projected events. Status reflects last known state." + } + } + ``` + +> [!IMPORTANT] +> **Bloqueo Pesimista en Acción:** +> Dentro de `WalletService.debit()`, se ha utilizado `lock: { mode: 'pessimistic_write' }` (`SELECT ... FOR UPDATE`). Si se envían 10 requests concurrentes hacia `W-A`, el lock encolará las transacciones secundarias en DB garantizando que el saldo **jamás** baje de 0. + +>>>> + +### B) Compensación Segura (ReversalDebit) +Para forzar el error, simula que `Credit` lanza un error dentro de `transfer.orchestrator.ts`. +1. Observarás en la consola de despliegue: + ```text + WARN [TransferOrchestrator] Compensating saga T-ERR1 that failed at CREDIT_COMPLETED: Credit error... + WARN [WalletService] Reversed debit for transfer T-ERR1 + ``` +2. ¿Por qué es seguro? `WalletService.reverseDebit(id)` contiene una validación de Reversión Idempotente en su propia tabla `reversal_records`. Si la compensación reintenta y falla, no multiplicará el saldo. + +>>>> + +### C) Escalation: FX State Ambiguo 💥 +> [!WARNING] +> La liquidación FX llama a una pasarela impredecible que en 5 segundos puede o no dejarnos a medias. NO podemos deshacer un FX ciegamente. + +1. Dispara un timeout usando `timeout` en el `id`: + ```bash + curl -X POST http://localhost:3000/transfers/T-timeout-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 150}' + ``` +2. **Resultado en Logs:** + ```text + WARN [FxService] FX provider timeout for transfer T-timeout-1 + ERROR [TransferOrchestrator] Transfer T-timeout-1 is in FX_AMBIGUOUS state. Needs manual intervention. + ``` + El read model permanecerá desactualizado o en pending notificándolo correctamente. + +--- + +## Por qué esta es una solución de nivel Plataforma + +He diseñado esta orquestación tomando decisiones que priorizan control y mitigación de fallos sobre un simple MVP: + +### 💡 Orquestación vs Coreografía (ADR) +Elegí **Orquestación (State Machine Manual + Repo)** por sobre Coreografía Purificada. +1. **Estado centralizado (Explícito):** En finanzas, Coreografía significa tener a Servicios "A", "B" y "C" escupiendo eventos sin nadie al volante. En caso de disputa, Support tiene que rastrear 4 tópicos Kafka. En mi solución, consultar la tabla `transfer_sagas` otorga trazabilidad milimétrica (`"FAILED in CREDIT_COMPLETED"`). +2. **Ciclo de vida central:** Me permite inyectar compensaciones de manera asíncrona pero coordinada y determinista. +3. Lo negativo (SPOF) se mitiga con alta disponibilidad en la DB y reinicios asíncronos en los workers que puedan seguir iterando Sagas incompletas. + +### 💡 CQRS Asíncrono +1. Nunca consulto la DB de Sagas para servir el endpoint GET Client-facing. Este obtiene data de la tabla `transfer_read_model` actualizada pasivamente en milisegundos usando eventos (NestJS Event Emitter, que en un ambiente mayor sería Kafka consumers). + +### Prácticas Evitadas +* **Transacciones Distribuidas Mágicas:** Evito `@Transaction()` que cruce los repositorios de `Wallet` y `TransferSaga`, adhiriéndome a las buenas prácticas de Boundary Types. + +--- + +## Cumplimiento de Entregables + +| Entregable | Estado | Ubicación | +| :--- | :---: | :--- | +| **TransferOrchestrator** | ✅ | `transfer.orchestrator.ts` coordina la máquina de estado. | +| **Compensación por fallo** | ✅ | Emisión estructurada usando compensaciones en cascada y reversiones idempotentes. | +| **CQRS Read Model** | ✅ | EventEmitter en `transfer-read-model.projector.ts` separando lecturas. | +| **Concurrencia Segura** | ✅ | `SELECT FOR UPDATE` y `version` columns para rechazar saldos negativos. | +| **Escalation FX Ambiguo** | ✅ | Condicionales timeout encapsuladas y estados controlados. | diff --git a/challenge-2/docker-compose.yml b/challenge-2/docker-compose.yml new file mode 100644 index 00000000..36e7c03b --- /dev/null +++ b/challenge-2/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.8' + +services: + db: + image: postgres:15-alpine + container_name: yape-challenge-2-db + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + # Let DB creation be automatic for default db + POSTGRES_DB: yape_transfer + ports: + - "5432:5432" + volumes: + - pgdata:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + pgdata: diff --git a/challenge-2/eslint.config.mjs b/challenge-2/eslint.config.mjs new file mode 100644 index 00000000..4e9f8271 --- /dev/null +++ b/challenge-2/eslint.config.mjs @@ -0,0 +1,35 @@ +// @ts-check +import eslint from '@eslint/js'; +import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; +import globals from 'globals'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + { + ignores: ['eslint.config.mjs'], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + eslintPluginPrettierRecommended, + { + languageOptions: { + globals: { + ...globals.node, + ...globals.jest, + }, + sourceType: 'commonjs', + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, + { + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-unsafe-argument': 'warn', + "prettier/prettier": ["error", { endOfLine: "auto" }], + }, + }, +); diff --git a/challenge-2/nest-cli.json b/challenge-2/nest-cli.json new file mode 100644 index 00000000..f9aa683b --- /dev/null +++ b/challenge-2/nest-cli.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/nest-cli", + "collection": "@nestjs/schematics", + "sourceRoot": "src", + "compilerOptions": { + "deleteOutDir": true + } +} diff --git a/challenge-2/package-lock.json b/challenge-2/package-lock.json new file mode 100644 index 00000000..1adfcbe0 --- /dev/null +++ b/challenge-2/package-lock.json @@ -0,0 +1,10475 @@ +{ + "name": "challenge-2", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "challenge-2", + "version": "0.0.1", + "license": "UNLICENSED", + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/typeorm": "^11.0.0", + "pg": "^8.20.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.28" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", + "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular-devkit/core/node_modules/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, + "license": "MIT" + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", + "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli": { + "version": "19.2.22", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", + "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@inquirer/prompts": "7.3.2", + "ansi-colors": "4.1.3", + "symbol-observable": "4.0.0", + "yargs-parser": "21.1.1" + }, + "bin": { + "schematics": "bin/schematics.js" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.1.2", + "@inquirer/confirm": "^5.1.6", + "@inquirer/editor": "^4.2.7", + "@inquirer/expand": "^4.0.9", + "@inquirer/input": "^4.1.6", + "@inquirer/number": "^3.0.9", + "@inquirer/password": "^4.0.9", + "@inquirer/rawlist": "^4.0.9", + "@inquirer/search": "^3.0.9", + "@inquirer/select": "^4.0.9" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@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, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@borewit/text-codec": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", + "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@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, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@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==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@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, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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==", + "license": "ISC", + "dependencies": { + "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": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "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==", + "license": "MIT", + "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.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "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==", + "license": "MIT", + "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, + "license": "ISC", + "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/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/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, + "license": "MIT", + "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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", + "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", + "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/pattern": "30.0.1", + "@jest/reporters": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-changed-files": "30.3.0", + "jest-config": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-resolve-dependencies": "30.3.0", + "jest-runner": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "jest-watcher": "30.3.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/diff-sequences": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", + "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", + "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "30.3.0", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", + "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", + "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@sinonjs/fake-timers": "^15.0.0", + "@types/node": "*", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", + "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/types": "30.3.0", + "jest-mock": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", + "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "@types/node": "*", + "chalk": "^4.1.2", + "collect-v8-coverage": "^1.0.2", + "exit-x": "^0.2.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^5.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "slash": "^3.0.0", + "string-length": "^4.0.2", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/snapshot-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", + "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "natural-compare": "^1.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", + "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "callsites": "^3.1.0", + "graceful-fs": "^4.2.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", + "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/types": "30.3.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "collect-v8-coverage": "^1.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", + "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", + "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.3.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/types": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", + "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, + "node_modules/@nestjs/cli": { + "version": "11.0.17", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", + "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.22", + "@angular-devkit/schematics": "19.2.22", + "@angular-devkit/schematics-cli": "19.2.22", + "@inquirer/prompts": "7.10.1", + "@nestjs/schematics": "^11.0.1", + "ansis": "4.2.0", + "chokidar": "4.0.3", + "cli-table3": "0.6.5", + "commander": "4.1.1", + "fork-ts-checker-webpack-plugin": "9.1.0", + "glob": "13.0.6", + "node-emoji": "1.11.0", + "ora": "5.4.1", + "tsconfig-paths": "4.2.0", + "tsconfig-paths-webpack-plugin": "4.2.0", + "typescript": "5.9.3", + "webpack": "5.105.4", + "webpack-node-externals": "3.0.0" + }, + "bin": { + "nest": "bin/nest.js" + }, + "engines": { + "node": ">= 20.11" + }, + "peerDependencies": { + "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", + "@swc/core": "^1.3.62" + }, + "peerDependenciesMeta": { + "@swc/cli": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/@nestjs/common": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", + "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", + "license": "MIT", + "dependencies": { + "file-type": "21.3.2", + "iterare": "1.2.1", + "load-esm": "1.0.3", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": ">=0.4.1", + "class-validator": ">=0.13.2", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/core": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", + "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxt/opencollective": "0.4.1", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1", + "uid": "2.0.2" + }, + "engines": { + "node": ">= 20" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0", + "@nestjs/websockets": "^11.0.0", + "reflect-metadata": "^0.1.12 || ^0.2.0", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/event-emitter": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.0.1.tgz", + "integrity": "sha512-0Ln/x+7xkU6AJFOcQI9tIhUMXVF7D5itiaQGOyJbXtlAfAIt8gzDdJm+Im7cFzKoWkiW5nCXCPh6GSvdQd/3Dw==", + "license": "MIT", + "dependencies": { + "eventemitter2": "6.4.9" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0" + } + }, + "node_modules/@nestjs/platform-express": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", + "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", + "license": "MIT", + "dependencies": { + "cors": "2.8.6", + "express": "5.2.1", + "multer": "2.1.1", + "path-to-regexp": "8.3.0", + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0" + } + }, + "node_modules/@nestjs/schematics": { + "version": "11.0.10", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", + "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "@angular-devkit/schematics": "19.2.23", + "comment-json": "4.6.2", + "jsonc-parser": "3.3.1", + "pluralize": "8.0.0" + }, + "peerDependencies": { + "typescript": ">=4.8.2" + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", + "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.18.0", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.4", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^4.0.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { + "version": "19.2.23", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", + "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "19.2.23", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.17", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@nestjs/schematics/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@nestjs/schematics/node_modules/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, + "license": "MIT" + }, + "node_modules/@nestjs/schematics/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@nestjs/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@nestjs/testing": { + "version": "11.1.17", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", + "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "2.8.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^11.0.0", + "@nestjs/core": "^11.0.0", + "@nestjs/microservices": "^11.0.0", + "@nestjs/platform-express": "^11.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + } + } + }, + "node_modules/@nestjs/typeorm": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", + "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/core": "^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0", + "rxjs": "^7.2.0", + "typeorm": "^0.3.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nuxt/opencollective": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", + "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0", + "npm": ">=5.10.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.49", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", + "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz", + "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sqltools/formatter": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", + "license": "MIT" + }, + "node_modules/@tokenizer/inflate": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "token-types": "^6.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/cookiejar": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", + "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^30.0.0", + "pretty-format": "^30.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/methods": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", + "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", + "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/superagent": { + "version": "8.1.9", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", + "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookiejar": "^2.1.5", + "@types/methods": "^1.1.4", + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/supertest": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", + "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/methods": "^1.1.4", + "@types/superagent": "^8.1.0" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", + "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/type-utils": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", + "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", + "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.0", + "@typescript-eslint/types": "^8.58.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", + "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", + "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", + "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", + "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", + "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.0", + "@typescript-eslint/tsconfig-utils": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/visitor-keys": "8.58.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", + "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.0", + "@typescript-eslint/types": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", + "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@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, + "license": "BSD-3-Clause" + }, + "node_modules/@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, + "license": "Apache-2.0" + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "devOptional": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "acorn": "^8.14.0" + } + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", + "license": "MIT" + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/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, + "license": "Python-2.0" + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", + "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "30.3.0", + "@types/babel__core": "^7.20.5", + "babel-plugin-istanbul": "^7.0.1", + "babel-preset-jest": "30.3.0", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "slash": "^3.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", + "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", + "dev": true, + "license": "BSD-3-Clause", + "workspaces": [ + "test/babel-8" + ], + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-instrument": "^6.0.2", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", + "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel__core": "^7.20.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", + "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@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" + }, + "peerDependencies": { + "@babel/core": "^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/babel-preset-jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", + "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0 || ^8.0.0-beta.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", + "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001784", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", + "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" + }, + "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==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/comment-json": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", + "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", + "devOptional": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.331", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", + "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", + "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.12" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/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, + "license": "ISC" + }, + "node_modules/exit-x": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", + "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", + "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-type": { + "version": "21.3.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", + "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "license": "MIT", + "dependencies": { + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", + "uint8array-extras": "^1.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^4.0.1", + "cosmiconfig": "^8.2.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">=14.21.3" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", + "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", + "dev": true, + "license": "Unlicense" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/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, + "license": "BSD-2-Clause" + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "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, + "license": "ISC" + }, + "node_modules/handlebars": { + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/handlebars/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "license": "ISC", + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", + "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/types": "30.3.0", + "import-local": "^3.2.0", + "jest-cli": "30.3.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", + "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1", + "jest-util": "30.3.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", + "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/expect": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "co": "^4.6.0", + "dedent": "^1.6.0", + "is-generator-fn": "^2.1.0", + "jest-each": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-runtime": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "p-limit": "^3.1.0", + "pretty-format": "30.3.0", + "pure-rand": "^7.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-cli": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", + "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "exit-x": "^0.2.2", + "import-local": "^3.2.0", + "jest-config": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "yargs": "^17.7.2" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", + "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/get-type": "30.1.0", + "@jest/pattern": "30.0.1", + "@jest/test-sequencer": "30.3.0", + "@jest/types": "30.3.0", + "babel-jest": "30.3.0", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "deepmerge": "^4.3.1", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-circus": "30.3.0", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-runner": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "parse-json": "^5.2.0", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "esbuild-register": ">=3.4.0", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "esbuild-register": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-config/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-diff": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", + "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.3.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", + "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "chalk": "^4.1.2", + "jest-util": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", + "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-mock": "30.3.0", + "jest-util": "30.3.0", + "jest-validate": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", + "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.3.0", + "jest-worker": "30.3.0", + "picomatch": "^4.0.3", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/jest-haste-map/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-leak-detector": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", + "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", + "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.3.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", + "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.3.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3", + "pretty-format": "30.3.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-mock": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", + "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "jest-util": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", + "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-pnp-resolver": "^1.2.3", + "jest-util": "30.3.0", + "jest-validate": "30.3.0", + "slash": "^3.0.0", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", + "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "30.0.1", + "jest-snapshot": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", + "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "30.3.0", + "@jest/environment": "30.3.0", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "exit-x": "^0.2.2", + "graceful-fs": "^4.2.11", + "jest-docblock": "30.2.0", + "jest-environment-node": "30.3.0", + "jest-haste-map": "30.3.0", + "jest-leak-detector": "30.3.0", + "jest-message-util": "30.3.0", + "jest-resolve": "30.3.0", + "jest-runtime": "30.3.0", + "jest-util": "30.3.0", + "jest-watcher": "30.3.0", + "jest-worker": "30.3.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runner/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runtime": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", + "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "30.3.0", + "@jest/fake-timers": "30.3.0", + "@jest/globals": "30.3.0", + "@jest/source-map": "30.0.1", + "@jest/test-result": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "cjs-module-lexer": "^2.1.0", + "collect-v8-coverage": "^1.0.2", + "glob": "^10.5.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.3.0", + "jest-message-util": "30.3.0", + "jest-mock": "30.3.0", + "jest-regex-util": "30.0.1", + "jest-resolve": "30.3.0", + "jest-snapshot": "30.3.0", + "jest-util": "30.3.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-snapshot": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", + "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.27.1", + "@babel/types": "^7.27.3", + "@jest/expect-utils": "30.3.0", + "@jest/get-type": "30.1.0", + "@jest/snapshot-utils": "30.3.0", + "@jest/transform": "30.3.0", + "@jest/types": "30.3.0", + "babel-preset-current-node-syntax": "^1.2.0", + "chalk": "^4.1.2", + "expect": "30.3.0", + "graceful-fs": "^4.2.11", + "jest-diff": "30.3.0", + "jest-matcher-utils": "30.3.0", + "jest-message-util": "30.3.0", + "jest-util": "30.3.0", + "pretty-format": "30.3.0", + "semver": "^7.7.2", + "synckit": "^0.11.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", + "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.3.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/jest-validate": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", + "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "@jest/types": "30.3.0", + "camelcase": "^6.3.0", + "chalk": "^4.1.2", + "leven": "^3.1.0", + "pretty-format": "30.3.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", + "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "30.3.0", + "@jest/types": "30.3.0", + "@types/node": "*", + "ansi-escapes": "^4.3.2", + "chalk": "^4.1.2", + "emittery": "^0.13.1", + "jest-util": "30.3.0", + "string-length": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", + "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.3.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-worker/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/load-esm": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", + "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + }, + { + "type": "buymeacoffee", + "url": "https://buymeacoffee.com/borewit" + } + ], + "license": "MIT", + "engines": { + "node": ">=13.2.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/multer": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", + "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "license": "MIT", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.6.0", + "concat-stream": "^2.0.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">= 10.16.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/multer/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/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==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/multer/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/napi-postinstall": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/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, + "license": "MIT" + }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "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.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "@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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pg": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "license": "MIT", + "dependencies": { + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", + "pg-types": "2.2.0", + "pgpass": "1.0.5" + }, + "engines": { + "node": ">= 16.0.0" + }, + "optionalDependencies": { + "pg-cloudflare": "^1.3.0" + }, + "peerDependencies": { + "pg-native": ">=3.0.1" + }, + "peerDependenciesMeta": { + "pg-native": { + "optional": true + } + } + }, + "node_modules/pg-cloudflare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", + "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "license": "MIT", + "optional": true + }, + "node_modules/pg-connection-string": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "license": "MIT" + }, + "node_modules/pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", + "license": "ISC", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pg-pool": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "license": "MIT", + "peerDependencies": { + "pg": ">=8.0" + } + }, + "node_modules/pg-protocol": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "license": "MIT" + }, + "node_modules/pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "license": "MIT", + "dependencies": { + "split2": "^4.1.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/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, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postgres-bytea": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", + "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "license": "MIT", + "dependencies": { + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-format": { + "version": "30.3.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", + "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", + "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/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, + "license": "ISC" + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/schema-utils": { + "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, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sha.js": { + "version": "2.4.12", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", + "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1", + "to-buffer": "^1.2.0" + }, + "bin": { + "sha.js": "bin.js" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/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, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sql-highlight": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", + "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", + "funding": [ + "https://github.com/scriptcoded/sql-highlight?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/scriptcoded" + } + ], + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/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==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strtok3": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", + "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/superagent": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", + "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.1", + "cookiejar": "^2.1.4", + "debug": "^4.3.7", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.5", + "formidable": "^3.5.4", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.14.1" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/supertest": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", + "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-signature": "^1.2.2", + "methods": "^1.1.2", + "superagent": "^10.3.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/synckit": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", + "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@pkgr/core": "^0.2.9" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/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, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/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, + "license": "MIT" + }, + "node_modules/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, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-buffer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", + "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", + "dependencies": { + "isarray": "^2.0.5", + "safe-buffer": "^5.2.1", + "typed-array-buffer": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", + "license": "MIT", + "dependencies": { + "@borewit/text-codec": "^0.2.1", + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-jest": { + "version": "29.4.9", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", + "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "fast-json-stable-stringify": "^2.1.0", + "handlebars": "^4.7.9", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.7.4", + "type-fest": "^4.41.0", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0 || ^30.0.0", + "@jest/types": "^29.0.0 || ^30.0.0", + "babel-jest": "^29.0.0 || ^30.0.0", + "jest": "^29.0.0 || ^30.0.0", + "jest-util": "^29.0.0 || ^30.0.0", + "typescript": ">=4.3 <7" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jest-util": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ts-loader": { + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", + "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@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" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", + "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tapable": "^2.2.1", + "tsconfig-paths": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths/node_modules/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, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/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, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "license": "MIT" + }, + "node_modules/typeorm": { + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", + "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", + "license": "MIT", + "dependencies": { + "@sqltools/formatter": "^1.2.5", + "ansis": "^4.2.0", + "app-root-path": "^3.1.0", + "buffer": "^6.0.3", + "dayjs": "^1.11.19", + "debug": "^4.4.3", + "dedent": "^1.7.0", + "dotenv": "^16.6.1", + "glob": "^10.5.0", + "reflect-metadata": "^0.2.2", + "sha.js": "^2.4.12", + "sql-highlight": "^6.1.0", + "tslib": "^2.8.1", + "uuid": "^11.1.0", + "yargs": "^17.7.2" + }, + "bin": { + "typeorm": "cli.js", + "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", + "typeorm-ts-node-esm": "cli-ts-node-esm.js" + }, + "engines": { + "node": ">=16.13.0" + }, + "funding": { + "url": "https://opencollective.com/typeorm" + }, + "peerDependencies": { + "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "@sap/hana-client": "^2.14.22", + "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "ioredis": "^5.0.4", + "mongodb": "^5.8.0 || ^6.0.0", + "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", + "mysql2": "^2.2.5 || ^3.0.1", + "oracledb": "^6.3.0", + "pg": "^8.5.1", + "pg-native": "^3.0.0", + "pg-query-stream": "^4.0.0", + "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", + "sql.js": "^1.4.0", + "sqlite3": "^5.0.3", + "ts-node": "^10.7.0", + "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@google-cloud/spanner": { + "optional": true + }, + "@sap/hana-client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "mongodb": { + "optional": true + }, + "mssql": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "oracledb": { + "optional": true + }, + "pg": { + "optional": true + }, + "pg-native": { + "optional": true + }, + "pg-query-stream": { + "optional": true + }, + "redis": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + }, + "ts-node": { + "optional": true + }, + "typeorm-aurora-data-api-driver": { + "optional": true + } + } + }, + "node_modules/typeorm/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/typeorm/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/typeorm/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/typeorm/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typeorm/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", + "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.0", + "@typescript-eslint/parser": "8.58.0", + "@typescript-eslint/typescript-estree": "8.58.0", + "@typescript-eslint/utils": "8.58.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/uint8array-extras": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unrs-resolver": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.3.0" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.11.1", + "@unrs/resolver-binding-android-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-arm64": "1.11.1", + "@unrs/resolver-binding-darwin-x64": "1.11.1", + "@unrs/resolver-binding-freebsd-x64": "1.11.1", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", + "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", + "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", + "@unrs/resolver-binding-linux-x64-musl": "1.11.1", + "@unrs/resolver-binding-wasm32-wasi": "1.11.1", + "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", + "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", + "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/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==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webpack": { + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.8", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.16.0", + "acorn-import-phases": "^1.0.3", + "browserslist": "^4.28.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.20.0", + "es-module-lexer": "^2.0.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.3.1", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.3", + "tapable": "^2.3.0", + "terser-webpack-plugin": "^5.3.17", + "watchpack": "^2.5.1", + "webpack-sources": "^3.3.4" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-sources": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", + "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack/node_modules/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, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT" + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/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, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/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, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/challenge-2/package.json b/challenge-2/package.json new file mode 100644 index 00000000..32b8109b --- /dev/null +++ b/challenge-2/package.json @@ -0,0 +1,75 @@ +{ + "name": "challenge-2", + "version": "0.0.1", + "description": "", + "author": "", + "private": true, + "license": "UNLICENSED", + "scripts": { + "build": "nest build", + "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"", + "start": "nest start", + "start:dev": "nest start --watch", + "start:debug": "nest start --debug --watch", + "start:prod": "node dist/main", + "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix", + "test": "jest", + "test:watch": "jest --watch", + "test:cov": "jest --coverage", + "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand", + "test:e2e": "jest --config ./test/jest-e2e.json" + }, + "dependencies": { + "@nestjs/common": "^11.0.1", + "@nestjs/core": "^11.0.1", + "@nestjs/event-emitter": "^3.0.1", + "@nestjs/platform-express": "^11.0.1", + "@nestjs/typeorm": "^11.0.0", + "pg": "^8.20.0", + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.28" + }, + "devDependencies": { + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "^9.18.0", + "@nestjs/cli": "^11.0.0", + "@nestjs/schematics": "^11.0.0", + "@nestjs/testing": "^11.0.1", + "@types/express": "^5.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^24.0.0", + "@types/supertest": "^7.0.0", + "eslint": "^9.18.0", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.2", + "globals": "^17.0.0", + "jest": "^30.0.0", + "prettier": "^3.4.2", + "source-map-support": "^0.5.21", + "supertest": "^7.0.0", + "ts-jest": "^29.2.5", + "ts-loader": "^9.5.2", + "ts-node": "^10.9.2", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.7.3", + "typescript-eslint": "^8.20.0" + }, + "jest": { + "moduleFileExtensions": [ + "js", + "json", + "ts" + ], + "rootDir": "src", + "testRegex": ".*\\.spec\\.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + }, + "collectCoverageFrom": [ + "**/*.(t|j)s" + ], + "coverageDirectory": "../coverage", + "testEnvironment": "node" + } +} diff --git a/challenge-2/src/app.controller.spec.ts b/challenge-2/src/app.controller.spec.ts new file mode 100644 index 00000000..d22f3890 --- /dev/null +++ b/challenge-2/src/app.controller.spec.ts @@ -0,0 +1,22 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +describe('AppController', () => { + let appController: AppController; + + beforeEach(async () => { + const app: TestingModule = await Test.createTestingModule({ + controllers: [AppController], + providers: [AppService], + }).compile(); + + appController = app.get(AppController); + }); + + describe('root', () => { + it('should return "Hello World!"', () => { + expect(appController.getHello()).toBe('Hello World!'); + }); + }); +}); diff --git a/challenge-2/src/app.controller.ts b/challenge-2/src/app.controller.ts new file mode 100644 index 00000000..cce879ee --- /dev/null +++ b/challenge-2/src/app.controller.ts @@ -0,0 +1,12 @@ +import { Controller, Get } from '@nestjs/common'; +import { AppService } from './app.service'; + +@Controller() +export class AppController { + constructor(private readonly appService: AppService) {} + + @Get() + getHello(): string { + return this.appService.getHello(); + } +} diff --git a/challenge-2/src/app.module.ts b/challenge-2/src/app.module.ts new file mode 100644 index 00000000..d5296a63 --- /dev/null +++ b/challenge-2/src/app.module.ts @@ -0,0 +1,45 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { EventEmitterModule } from '@nestjs/event-emitter'; + +import { AppController } from './app.controller'; +import { AppService } from './app.service'; + +import { TransferModule } from './transfer/transfer.module'; +import { WalletModule } from './wallet/wallet.module'; +import { FxModule } from './fx/fx.module'; +import { ReadModelModule } from './read-model/read-model.module'; + +import { Wallet, DebitRecord, ReversalRecord } from './wallet/wallet.entity'; +import { TransferSaga } from './transfer/transfer.entity'; +import { TransferReadModel } from './read-model/read-model.entity'; + +@Module({ + imports: [ + TypeOrmModule.forRoot({ + type: 'postgres', + host: process.env.POSTGRES_HOST || 'localhost', + port: 5432, + username: process.env.POSTGRES_USER || 'postgres', + password: process.env.POSTGRES_PASSWORD || 'password', + database: process.env.POSTGRES_DB || 'yape_transfer', + entities: [ + Wallet, + DebitRecord, + ReversalRecord, + TransferSaga, + TransferReadModel, + ], + synchronize: true, // Auto-create tables for dev challenge + logging: ['query', 'error'], + }), + EventEmitterModule.forRoot(), + TransferModule, + WalletModule, + FxModule, + ReadModelModule, + ], + controllers: [AppController], + providers: [AppService], +}) +export class AppModule {} diff --git a/challenge-2/src/app.service.ts b/challenge-2/src/app.service.ts new file mode 100644 index 00000000..927d7cca --- /dev/null +++ b/challenge-2/src/app.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class AppService { + getHello(): string { + return 'Hello World!'; + } +} diff --git a/challenge-2/src/fx/fx.module.ts b/challenge-2/src/fx/fx.module.ts new file mode 100644 index 00000000..80b04d2a --- /dev/null +++ b/challenge-2/src/fx/fx.module.ts @@ -0,0 +1,8 @@ +import { Module } from '@nestjs/common'; +import { FxService } from './fx.service'; + +@Module({ + providers: [FxService], + exports: [FxService], +}) +export class FxModule {} diff --git a/challenge-2/src/fx/fx.service.ts b/challenge-2/src/fx/fx.service.ts new file mode 100644 index 00000000..b70cc61c --- /dev/null +++ b/challenge-2/src/fx/fx.service.ts @@ -0,0 +1,30 @@ +import { Injectable, Logger } from '@nestjs/common'; + +export class TimeoutError extends Error {} + +@Injectable() +export class FxService { + private readonly logger = new Logger(FxService.name); + + async settle(transferId: string, fromCurrency: string, toCurrency: string, amount: number): Promise { + if (fromCurrency === toCurrency) { + return; // No FX needed + } + + this.logger.log(`Settling FX for transfer ${transferId} - ${amount} ${fromCurrency} to ${toCurrency}`); + + // Simular un timeout como pide la 'Optional escalation' + // Forzaremos que si un transferId contiene 'timeout', lanza TimeoutError + return new Promise((resolve, reject) => { + setTimeout(() => { + if (transferId.includes('timeout')) { + this.logger.warn(`FX provider timeout for transfer ${transferId}`); + reject(new TimeoutError('FX Provider did not respond within 5000ms')); + } else { + this.logger.log(`FX Settled successfully for transfer ${transferId}`); + resolve(); + } + }, 500); // Para pruebas reducimos a 500ms + }); + } +} diff --git a/challenge-2/src/main.ts b/challenge-2/src/main.ts new file mode 100644 index 00000000..f76bc8d9 --- /dev/null +++ b/challenge-2/src/main.ts @@ -0,0 +1,8 @@ +import { NestFactory } from '@nestjs/core'; +import { AppModule } from './app.module'; + +async function bootstrap() { + const app = await NestFactory.create(AppModule); + await app.listen(process.env.PORT ?? 3000); +} +bootstrap(); diff --git a/challenge-2/src/read-model/read-model.entity.ts b/challenge-2/src/read-model/read-model.entity.ts new file mode 100644 index 00000000..8f4d49e3 --- /dev/null +++ b/challenge-2/src/read-model/read-model.entity.ts @@ -0,0 +1,31 @@ +import { Entity, Column, PrimaryColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm'; + +@Entity('transfer_read_model') +export class TransferReadModel { + @PrimaryColumn('uuid') + transferId: string; + + @Column() + status: string; + + @Column({ nullable: true }) + fromWallet: string; + + @Column({ nullable: true }) + toWallet: string; + + @Column('decimal', { precision: 12, scale: 2, nullable: true }) + amount: number; + + @Column({ nullable: true }) + failureReason: string; + + @Column() + lastEventVersion: number; + + @CreateDateColumn({ type: 'timestamptz' }) + createdAt: Date; + + @UpdateDateColumn({ type: 'timestamptz' }) + updatedAt: Date; +} diff --git a/challenge-2/src/read-model/read-model.module.ts b/challenge-2/src/read-model/read-model.module.ts new file mode 100644 index 00000000..917e9134 --- /dev/null +++ b/challenge-2/src/read-model/read-model.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { TransferReadModel } from './read-model.entity'; +import { TransferReadController } from './transfer-read.controller'; +import { TransferReadModelProjector } from './transfer-read-model.projector'; + +@Module({ + imports: [TypeOrmModule.forFeature([TransferReadModel])], + controllers: [TransferReadController], + providers: [TransferReadModelProjector], +}) +export class ReadModelModule {} diff --git a/challenge-2/src/read-model/transfer-read-model.projector.ts b/challenge-2/src/read-model/transfer-read-model.projector.ts new file mode 100644 index 00000000..aae2026e --- /dev/null +++ b/challenge-2/src/read-model/transfer-read-model.projector.ts @@ -0,0 +1,61 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { OnEvent } from '@nestjs/event-emitter'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { TransferReadModel } from './read-model.entity'; +import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent } from '../shared/events/transfer.events'; + +@Injectable() +export class TransferReadModelProjector { + private readonly logger = new Logger(TransferReadModelProjector.name); + + constructor( + @InjectRepository(TransferReadModel) + private readonly repo: Repository, + ) {} + + @OnEvent('TransferStartedEvent') + async onStarted(event: TransferStartedEvent): Promise { + this.logger.debug(`Projecting TransferStartedEvent for ${event.transferId}`); + const existing = await this.repo.findOne({ where: { transferId: event.transferId } }); + + // Evitar procesar eventos obsoletos + if (existing && existing.lastEventVersion >= event.version) return; + + await this.repo.save({ + transferId: event.transferId, + status: 'pending', + fromWallet: event.fromWalletId, + toWallet: event.toWalletId, + amount: event.amount, + lastEventVersion: event.version, + }); + } + + @OnEvent('TransferCompletedEvent') + async onCompleted(event: TransferCompletedEvent): Promise { + this.logger.debug(`Projecting TransferCompletedEvent for ${event.transferId}`); + const existing = await this.repo.findOne({ where: { transferId: event.transferId } }); + if (existing && existing.lastEventVersion >= event.version) return; + + await this.repo.save({ + transferId: event.transferId, + status: 'completed', + lastEventVersion: event.version, + }); + } + + @OnEvent('TransferFailedEvent') + async onFailed(event: TransferFailedEvent): Promise { + this.logger.debug(`Projecting TransferFailedEvent for ${event.transferId}`); + const existing = await this.repo.findOne({ where: { transferId: event.transferId } }); + if (existing && existing.lastEventVersion >= event.version) return; + + await this.repo.save({ + transferId: event.transferId, + status: 'failed', + failureReason: event.reason, + lastEventVersion: event.version, + }); + } +} diff --git a/challenge-2/src/read-model/transfer-read.controller.ts b/challenge-2/src/read-model/transfer-read.controller.ts new file mode 100644 index 00000000..0b345bf2 --- /dev/null +++ b/challenge-2/src/read-model/transfer-read.controller.ts @@ -0,0 +1,29 @@ +import { Controller, Get, Param, NotFoundException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { TransferReadModel } from './read-model.entity'; + +@Controller('transfers') +export class TransferReadController { + constructor( + @InjectRepository(TransferReadModel) + private readonly readRepo: Repository, + ) {} + + @Get(':id') + async getTransfer(@Param('id') id: string) { + const transfer = await this.readRepo.findOne({ where: { transferId: id } }); + if (!transfer) { + throw new NotFoundException(`Transfer ${id} not found`); + } + + return { + data: transfer, + meta: { + consistencyModel: 'eventual', + stalenessWindowMs: 500, + note: 'Read model is updated via projected events. Status reflects last known state.', + }, + }; + } +} diff --git a/challenge-2/src/shared/events/transfer.events.ts b/challenge-2/src/shared/events/transfer.events.ts new file mode 100644 index 00000000..5dfe1aa5 --- /dev/null +++ b/challenge-2/src/shared/events/transfer.events.ts @@ -0,0 +1,24 @@ +export class TransferStartedEvent { + constructor( + public readonly transferId: string, + public readonly fromWalletId: string, + public readonly toWalletId: string, + public readonly amount: number, + public readonly version: number, + ) {} +} + +export class TransferCompletedEvent { + constructor( + public readonly transferId: string, + public readonly version: number, + ) {} +} + +export class TransferFailedEvent { + constructor( + public readonly transferId: string, + public readonly reason: string, + public readonly version: number, + ) {} +} diff --git a/challenge-2/src/transfer/saga.repository.ts b/challenge-2/src/transfer/saga.repository.ts new file mode 100644 index 00000000..8ed1189c --- /dev/null +++ b/challenge-2/src/transfer/saga.repository.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { TransferSaga, SagaStep, TransferDto } from './transfer.entity'; + +@Injectable() +export class SagaRepository { + constructor( + @InjectRepository(TransferSaga) + private readonly repo: Repository, + ) {} + + async findById(transferId: string): Promise { + return this.repo.findOne({ where: { transferId } }); + } + + async create(data: { transferId: string; step: SagaStep; dto: TransferDto }): Promise { + const saga = this.repo.create(data); + return this.repo.save(saga); + } + + async updateStep(transferId: string, step: SagaStep, errorMessage?: string): Promise { + await this.repo.update({ transferId }, { step, errorMessage }); + } +} diff --git a/challenge-2/src/transfer/transfer.controller.ts b/challenge-2/src/transfer/transfer.controller.ts new file mode 100644 index 00000000..3ca63074 --- /dev/null +++ b/challenge-2/src/transfer/transfer.controller.ts @@ -0,0 +1,18 @@ +import { Controller, Post, Body, Param } from '@nestjs/common'; +import { TransferOrchestrator } from './transfer.orchestrator'; +import { TransferDto } from './transfer.entity'; + +@Controller('transfers') +export class TransferController { + constructor(private readonly orchestrator: TransferOrchestrator) {} + + @Post(':id') + async createTransfer(@Param('id') transferId: string, @Body() dto: TransferDto) { + // Iniciamos la saga asincrónicamente para respuesta rápida (202 Accepted style) + this.orchestrator.startTransfer(transferId, dto).catch(console.error); + return { + message: 'Transfer saga initiated', + transferId, + }; + } +} diff --git a/challenge-2/src/transfer/transfer.entity.ts b/challenge-2/src/transfer/transfer.entity.ts new file mode 100644 index 00000000..6626b21d --- /dev/null +++ b/challenge-2/src/transfer/transfer.entity.ts @@ -0,0 +1,44 @@ +import { Entity, Column, PrimaryColumn, CreateDateColumn, UpdateDateColumn, VersionColumn } from 'typeorm'; + +export enum SagaStep { + STARTED = 'STARTED', + DEBIT_COMPLETED = 'DEBIT_COMPLETED', + CREDIT_COMPLETED = 'CREDIT_COMPLETED', + FX_SETTLED = 'FX_SETTLED', + FX_AMBIGUOUS = 'FX_AMBIGUOUS', + COMPLETED = 'COMPLETED', + COMPENSATING = 'COMPENSATING', + FAILED = 'FAILED', +} + +export interface TransferDto { + fromWalletId: string; + toWalletId: string; + amount: number; + fromCurrency: string; + toCurrency: string; +} + +@Entity('transfer_sagas') +export class TransferSaga { + @PrimaryColumn('uuid') + transferId: string; + + @Column({ type: 'varchar', length: 30, default: SagaStep.STARTED }) + step: SagaStep; + + @Column({ type: 'jsonb' }) + dto: TransferDto; + + @Column({ type: 'text', nullable: true }) + errorMessage: string; + + @VersionColumn() + version: number; + + @CreateDateColumn({ type: 'timestamptz' }) + createdAt: Date; + + @UpdateDateColumn({ type: 'timestamptz' }) + updatedAt: Date; +} diff --git a/challenge-2/src/transfer/transfer.module.ts b/challenge-2/src/transfer/transfer.module.ts new file mode 100644 index 00000000..3abd4cfc --- /dev/null +++ b/challenge-2/src/transfer/transfer.module.ts @@ -0,0 +1,19 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { TransferSaga } from './transfer.entity'; +import { SagaRepository } from './saga.repository'; +import { TransferOrchestrator } from './transfer.orchestrator'; +import { TransferController } from './transfer.controller'; +import { WalletModule } from '../wallet/wallet.module'; +import { FxModule } from '../fx/fx.module'; + +@Module({ + imports: [ + TypeOrmModule.forFeature([TransferSaga]), + WalletModule, + FxModule, + ], + controllers: [TransferController], + providers: [SagaRepository, TransferOrchestrator], +}) +export class TransferModule {} diff --git a/challenge-2/src/transfer/transfer.orchestrator.ts b/challenge-2/src/transfer/transfer.orchestrator.ts new file mode 100644 index 00000000..de6900fa --- /dev/null +++ b/challenge-2/src/transfer/transfer.orchestrator.ts @@ -0,0 +1,93 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { EventEmitter2 } from '@nestjs/event-emitter'; +import { SagaRepository } from './saga.repository'; +import { SagaStep, TransferDto } from './transfer.entity'; +import { WalletService } from '../wallet/wallet.service'; +import { FxService, TimeoutError } from '../fx/fx.service'; +import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent } from '../shared/events/transfer.events'; + +@Injectable() +export class TransferOrchestrator { + private readonly logger = new Logger(TransferOrchestrator.name); + + constructor( + private readonly sagaRepo: SagaRepository, + private readonly walletService: WalletService, + private readonly fxService: FxService, + private readonly eventEmitter: EventEmitter2, + ) {} + + // Idempotency key en la INSTANCIA de saga + async startTransfer(transferId: string, dto: TransferDto): Promise { + const existing = await this.sagaRepo.findById(transferId); + if (existing) { + if (existing.step !== SagaStep.COMPLETED && existing.step !== SagaStep.FAILED && existing.step !== SagaStep.FX_AMBIGUOUS) { + this.logger.log(`Resuming saga ${transferId} from step ${existing.step}`); + await this.execute(transferId); + } + return; + } + + const saga = await this.sagaRepo.create({ transferId, step: SagaStep.STARTED, dto }); + + // Emitir para el read model CQRS + this.eventEmitter.emit('TransferStartedEvent', new TransferStartedEvent(transferId, dto.fromWalletId, dto.toWalletId, dto.amount, saga.version)); + + await this.execute(transferId); + } + + async execute(transferId: string): Promise { + const saga = await this.sagaRepo.findById(transferId); + if (!saga) return; + + try { + if (saga.step === SagaStep.STARTED) { + await this.walletService.debit(transferId, saga.dto.fromWalletId, saga.dto.amount); + await this.sagaRepo.updateStep(transferId, SagaStep.DEBIT_COMPLETED); + saga.step = SagaStep.DEBIT_COMPLETED; + } + + if (saga.step === SagaStep.DEBIT_COMPLETED) { + await this.walletService.credit(transferId, saga.dto.toWalletId, saga.dto.amount); + await this.sagaRepo.updateStep(transferId, SagaStep.CREDIT_COMPLETED); + saga.step = SagaStep.CREDIT_COMPLETED; + } + + if (saga.step === SagaStep.CREDIT_COMPLETED) { + await this.fxService.settle(transferId, saga.dto.fromCurrency, saga.dto.toCurrency, saga.dto.amount); + await this.sagaRepo.updateStep(transferId, SagaStep.FX_SETTLED); + saga.step = SagaStep.FX_SETTLED; + } + + if (saga.step === SagaStep.FX_SETTLED) { + // Receipt service emit o just completion + await this.sagaRepo.updateStep(transferId, SagaStep.COMPLETED); + saga.step = SagaStep.COMPLETED; + this.eventEmitter.emit('TransferCompletedEvent', new TransferCompletedEvent(transferId, saga.version + 4)); // +4 para simular incremento de version por steps + this.logger.log(`Transfer ${transferId} COMPLETED successfully.`); + } + } catch (error) { + if (error instanceof TimeoutError) { + // Escalation: FX state is ambiguous, manual review needed, DO NOT compensate. + await this.sagaRepo.updateStep(transferId, SagaStep.FX_AMBIGUOUS); + this.logger.error(`Transfer ${transferId} is in FX_AMBIGUOUS state. Needs manual intervention.`); + return; + } + await this.compensate(transferId, saga.step, error as Error); + } + } + + private async compensate(transferId: string, failedAt: SagaStep, error: Error): Promise { + this.logger.warn(`Compensating saga ${transferId} that failed at ${failedAt}: ${error.message}`); + await this.sagaRepo.updateStep(transferId, SagaStep.COMPENSATING); + + if (failedAt === SagaStep.CREDIT_COMPLETED || failedAt === SagaStep.DEBIT_COMPLETED) { + // Revertir débito que ya se ejecutó correctamente + await this.walletService.reverseDebit(transferId); + } + + await this.sagaRepo.updateStep(transferId, SagaStep.FAILED, error.message); + const updatedSaga = await this.sagaRepo.findById(transferId); + this.eventEmitter.emit('TransferFailedEvent', new TransferFailedEvent(transferId, error.message, updatedSaga?.version || 0)); + } +} diff --git a/challenge-2/src/wallet/wallet.entity.ts b/challenge-2/src/wallet/wallet.entity.ts new file mode 100644 index 00000000..026c8eec --- /dev/null +++ b/challenge-2/src/wallet/wallet.entity.ts @@ -0,0 +1,48 @@ +import { Entity, Column, PrimaryGeneratedColumn, VersionColumn } from 'typeorm'; + +@Entity('wallets') +export class Wallet { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column({ type: 'decimal', precision: 12, scale: 2, default: 0 }) + balance: number; + + @Column({ length: 3 }) + currency: string; + + // Optimistic locking for safety outside raw SQL if needed, + // but we will primarily use raw SQL version updates and pessimistic locking. + @VersionColumn() + version: number; +} + +@Entity('debit_records') +export class DebitRecord { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('uuid') + transferId: string; + + @Column('uuid') + walletId: string; + + @Column('decimal', { precision: 12, scale: 2 }) + amount: number; + + @Column('timestamp', { default: () => 'CURRENT_TIMESTAMP' }) + createdAt: Date; +} + +@Entity('reversal_records') +export class ReversalRecord { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column('uuid', { unique: true }) + transferId: string; + + @Column('timestamp', { default: () => 'CURRENT_TIMESTAMP' }) + createdAt: Date; +} diff --git a/challenge-2/src/wallet/wallet.module.ts b/challenge-2/src/wallet/wallet.module.ts new file mode 100644 index 00000000..60ef6f4f --- /dev/null +++ b/challenge-2/src/wallet/wallet.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Wallet, DebitRecord, ReversalRecord } from './wallet.entity'; +import { WalletService } from './wallet.service'; + +@Module({ + imports: [TypeOrmModule.forFeature([Wallet, DebitRecord, ReversalRecord])], + providers: [WalletService], + exports: [WalletService], +}) +export class WalletModule {} diff --git a/challenge-2/src/wallet/wallet.service.ts b/challenge-2/src/wallet/wallet.service.ts new file mode 100644 index 00000000..d04475db --- /dev/null +++ b/challenge-2/src/wallet/wallet.service.ts @@ -0,0 +1,157 @@ +import { Injectable, Logger, ConflictException } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository, DataSource } from 'typeorm'; +import { Wallet, DebitRecord, ReversalRecord } from './wallet.entity'; + +export class InsufficientFundsError extends Error {} +export class ConcurrentModificationError extends Error {} + +@Injectable() +export class WalletService { + private readonly logger = new Logger(WalletService.name); + + constructor( + @InjectRepository(Wallet) + private readonly walletRepo: Repository, + @InjectRepository(DebitRecord) + private readonly debitRepo: Repository, + @InjectRepository(ReversalRecord) + private readonly reversalRepo: Repository, + private readonly dataSource: DataSource, + ) {} + + async debit(transferId: string, walletId: string, amount: number): Promise { + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + + try { + // Optimistic locking + Pessimistic: SELECT ... FOR UPDATE previene race condition + const wallet = await queryRunner.manager.findOne(Wallet, { + where: { id: walletId }, + lock: { mode: 'pessimistic_write' }, + }); + + if (!wallet) throw new Error('Wallet not found'); + + if (wallet.balance < amount) { + throw new InsufficientFundsError( + `Wallet ${walletId} has insufficient funds. Balance: ${wallet.balance}, Required: ${amount}`, + ); + } + + // Versioned update + const result = await queryRunner.manager + .createQueryBuilder() + .update(Wallet) + .set({ + balance: () => `balance - ${amount}`, + version: () => `version + 1`, + }) + .where('id = :id AND version = :version AND balance >= :amount', { + id: walletId, + version: wallet.version, + amount, + }) + .execute(); + + if (result.affected === 0) { + throw new ConcurrentModificationError(`Concurrent debit detected on wallet ${walletId}`); + } + + // Guardar registro para posible idempotencia / reversión + await queryRunner.manager.save(DebitRecord, { + transferId, + walletId, + amount, + }); + + await queryRunner.commitTransaction(); + this.logger.log(`Debited ${amount} from wallet ${walletId} for transfer ${transferId}`); + } catch (e) { + await queryRunner.rollbackTransaction(); + throw e; + } finally { + await queryRunner.release(); + } + } + + async credit(transferId: string, walletId: string, amount: number): Promise { + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + + try { + // Avoid duplicate credits logic if needed, but for the challenge scope credit is simple + const wallet = await queryRunner.manager.findOne(Wallet, { + where: { id: walletId }, + lock: { mode: 'pessimistic_write' }, + }); + + if (!wallet) throw new Error('Wallet not found'); + + await queryRunner.manager + .createQueryBuilder() + .update(Wallet) + .set({ + balance: () => `balance + ${amount}`, + version: () => `version + 1`, + }) + .where('id = :id AND version = :version', { + id: walletId, + version: wallet.version, + }) + .execute(); + + await queryRunner.commitTransaction(); + this.logger.log(`Credited ${amount} to wallet ${walletId} for transfer ${transferId}`); + } catch (e) { + await queryRunner.rollbackTransaction(); + throw e; + } finally { + await queryRunner.release(); + } + } + + // Compensación idempotente + async reverseDebit(transferId: string): Promise { + const queryRunner = this.dataSource.createQueryRunner(); + await queryRunner.connect(); + await queryRunner.startTransaction(); + + try { + // Verificamos si ya fue revertido en este queryRunner + const alreadyReversed = await queryRunner.manager.findOne(ReversalRecord, { + where: { transferId }, + lock: { mode: 'pessimistic_write' }, + }); + + if (alreadyReversed) { + await queryRunner.rollbackTransaction(); + return; // Idempotente + } + + const debitRecord = await queryRunner.manager.findOne(DebitRecord, { + where: { transferId }, + }); + + if (!debitRecord) { + // Si no hay debito, no hay nada que revertir + await queryRunner.rollbackTransaction(); + return; + } + + // Aplicar el reverse + await queryRunner.manager.increment(Wallet, { id: debitRecord.walletId }, 'balance', debitRecord.amount); + await queryRunner.manager.save(ReversalRecord, { transferId }); + + await queryRunner.commitTransaction(); + this.logger.warn(`Reversed debit for transfer ${transferId}`); + } catch (e) { + await queryRunner.rollbackTransaction(); + throw e; + } finally { + await queryRunner.release(); + } + } +} diff --git a/challenge-2/test/app.e2e-spec.ts b/challenge-2/test/app.e2e-spec.ts new file mode 100644 index 00000000..a767839c --- /dev/null +++ b/challenge-2/test/app.e2e-spec.ts @@ -0,0 +1,29 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { INestApplication } from '@nestjs/common'; +import request from 'supertest'; +import { App } from 'supertest/types'; +import { AppModule } from './../src/app.module'; + +describe('AppController (e2e)', () => { + let app: INestApplication; + + beforeEach(async () => { + const moduleFixture: TestingModule = await Test.createTestingModule({ + imports: [AppModule], + }).compile(); + + app = moduleFixture.createNestApplication(); + await app.init(); + }); + + it('/ (GET)', () => { + return request(app.getHttpServer()) + .get('/') + .expect(200) + .expect('Hello World!'); + }); + + afterEach(async () => { + await app.close(); + }); +}); diff --git a/challenge-2/test/jest-e2e.json b/challenge-2/test/jest-e2e.json new file mode 100644 index 00000000..e9d912f3 --- /dev/null +++ b/challenge-2/test/jest-e2e.json @@ -0,0 +1,9 @@ +{ + "moduleFileExtensions": ["js", "json", "ts"], + "rootDir": ".", + "testEnvironment": "node", + "testRegex": ".e2e-spec.ts$", + "transform": { + "^.+\\.(t|j)s$": "ts-jest" + } +} diff --git a/challenge-2/tsconfig.build.json b/challenge-2/tsconfig.build.json new file mode 100644 index 00000000..64f86c6b --- /dev/null +++ b/challenge-2/tsconfig.build.json @@ -0,0 +1,4 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "test", "dist", "**/*spec.ts"] +} diff --git a/challenge-2/tsconfig.json b/challenge-2/tsconfig.json new file mode 100644 index 00000000..57f96352 --- /dev/null +++ b/challenge-2/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "nodenext", + "moduleResolution": "nodenext", + "resolvePackageJsonExports": true, + "esModuleInterop": true, + "isolatedModules": true, + "declaration": true, + "removeComments": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "allowSyntheticDefaultImports": true, + "target": "ES2023", + "sourceMap": true, + "outDir": "./dist", + "baseUrl": "./", + "incremental": true, + "skipLibCheck": true, + "strictNullChecks": true, + "forceConsistentCasingInFileNames": true, + "noImplicitAny": true, + "strictBindCallApply": true, + "noFallthroughCasesInSwitch": true + } +} diff --git a/challenge-3/README.md b/challenge-3/README.md index 1323d0cf..106d8e7f 100644 --- a/challenge-3/README.md +++ b/challenge-3/README.md @@ -1,84 +1,166 @@ -# Challenge 3: Shared Platform Library 👉 `@yape/kafka-module` +# Challenge 3: Shared Platform Library `@yape/kafka-module` -Bienvenido a la demostración de la librería dinámica genérica construida en NestJS para la segregación y aislamiento de lógica Kafka de las escuadras de Producto. +He desarrollado esta librería dinámica para NestJS con un objetivo claro: **aislar por completo la complejidad de Kafka de las escuadras de producto (Squads)**. Mi solución encapsula la infraestructura, habilita políticas de resiliencia automáticas y garantiza la integridad de los datos mediante contratos de tipos estrictos en tiempo de compilación. -Este desafío cumple la premisa de encapsular las conexiones, habilitar **DLT Automático sin configuración en el Squat** y, crucialmente, obligar el acoplamiento a tipos con **EventContract** validado puramente en compilación (`strict: true`). Hemos documentado la decisión clave de usar DynamicModules de NestJS en la carpeta *adr*. +--- + +## Arquitectura y Flujo de la Librería + +El siguiente diagrama muestra cómo mi librería interactúa con un Squad (ej. *Squad Payments*) para automatizar el descubrimiento de eventos y la gestión de errores: + +```mermaid +sequenceDiagram + participant S as Squad (AppController) + participant L as @yape/kafka-module + participant K as Kafka Broker (9092) + participant DLT as Tópico DLT (.dlt) + + Note over L: 1. Discovery (OnModuleInit) + L->>L: Escanea decoradores @KafkaEvent() + L->>K: Suscribe dinámicamente al Tópico + + Note over S,K: 2. Publicación Tipada + S->>L: KafkaTypedProducer.publish(topic, payload) + Note right of L: Válida Contrato de Interfaz (TS) + L->>K: Emitir mensaje + + Note over K,S: 3. Consumo y Resiliencia + K->>L: Mensaje recibido + L->>S: Invoca Handler decorado + alt Error en Squad + L->>L: Reintento Automático (Backoff local) + L->>DLT: Si falla N veces -> Enrutamiento Automático + else Éxito + S-->>L: OK + end +``` + +### Explicación Paso a Paso del Diagrama: + +El diagrama muestra la interacción entre tres actores principales y un tópico de rescate: +* **S (Squad):** Tu aplicación de producto (por ejemplo, el equipo de Pagos), representada por `AppController`. +* **L (@yape/kafka-module):** La librería de plataforma (el módulo dinámico). +* **K (Kafka Broker):** El servidor de mensajería (puerto 9092). +* **DLT (.dlt):** El Tópico Dead Letter, nuestra red de seguridad. + +**1. Discovery (Fase de Arranque - `OnModuleInit`)** +Ocurre en el momento exacto en que la aplicación está levantando (`npm run start`). +* La librería escanea la memoria buscando funciones con el decorador `@KafkaEvent()`. +* Por cada hallazgo, se suscribe *dinámicamente* a ese tópico en el Broker. +* **Ventaja:** El desarrollador del Squad nunca configura listeners ni clientes manualmente. + +**2. Publicación Tipada (Cuando el Squad envía un evento)** +La app del Squad llama a `KafkaTypedProducer.publish(topic, payload)`. +* **Magia en Compilación:** Antes de ejecutar el código, TypeScript entra en acción y verifica que el `payload` cumpla con el contrato `EventContract`. Si intentas enviar datos no permitidos, lanzará error de compilación previniendo la contaminación de los tópicos. +* Si pasa la validación física del código, el mensaje va a Kafka (`K`). + +**3. Consumo y Resiliencia (Cuando Kafka entrega un mensaje)** +El Broker (`K`) envía datos a nuestra librería (`L`), y ella invoca la función del Squad (`S`). +* **Flujo de Éxito:** El Squad procesa la data sin lanzar errores. Fin. +* **Flujo de Error:** Si la lógica del Squad falla y "crashea", el módulo intercepta la explosión. Aplica reintentos locales automatizados. Si los falla todos (por ejemplo, 3 intentos), el manejador interno `KafkaDltHandler` captura el mensaje defectuoso y lo manda al tópico **DLT**, desatascando la cola principal de Kafka, permitiendo al sistema seguir operando de manera saludable. --- -## 🛠 Instalación y Configuración +## Cómo poner en marcha mi solución -Dado que el reto exige el proyecto en una nueva carpeta independiente, simularemos su uso internamente: -El código base de la librería vive en `src/` (y sus subcarpetas). El archivo de la app simulada *Squad Payments* que importa la librería está en `src/app.module.ts` y se lanza con Nest. +Dado que esta es una librería diseñada para ser consumida como módulo interno, he preparado una aplicación de prueba dentro de `src/` que simula el comportamiento de un Squad real. ```bash -# 1. Ingresa la carpeta +# 1. Ingresar a la carpeta del reto cd challenge-3 -# 2. Instala dependencias (si no lo hiciste) +# 2. Instalar dependencias npm install -# 3. Necesitarás Kafka corriendo en localhost:9092 -# Usa el mismo contenedor de Infraestructura del Challenge 1 (docker-compose up -d) +# 3. Levantar Infraestructura +# (Asegúrate de que Kafka esté corriendo, puedes usar el docker-compose del Challenge 1) +# docker-compose up -d -# 4. Inicia la aplicación (Squad que consume tu módulo) +# 4. Iniciar el Squad de Pruebas npm run start ``` --- -## 🧐 Cómo Probar y Validar cada Escenario Exigido +## Escenarios de Validación (Mi Solución en Acción) + +> [!IMPORTANT] +> **Prueba esto:** Abre `src/app.controller.ts` y cambia una propiedad del payload por un valor inválido (ej. `currency: 'EUR'`). +> Al ejecutar `npm run build`, **Typescript rechazará el código** con un error como este: +> ```text +> src/app.controller.ts:44:9 - error TS2322: Type '"EUR"' is not assignable to type '"PEN" | "MXN" | "USD"'. +> 44 currency: 'EUR', +> ~~~~~~~~ +> ``` +> Esto garantiza la integridad de los datos **antes** de que el mensaje llegue a Kafka. +>>>> + +### B) Descubrimiento Automático (`@KafkaEvent`) +He eliminado la necesidad de configurar manualmente los listeners de Kafka. +1. Dispara un evento de prueba: + ```bash + curl -X POST http://localhost:3002/test-publish -H "Content-Type: application/json" -d '{"amount": 100}' + ``` +2. **Verificación de Mapeo:** Al iniciar la app, verás este log que confirma el descubrimiento automático: + `LOG [KafkaConsumerExplorer] Mapped {payment.created.v1} event to AppController.handlePaymentCreated()` +3. **Verificación de Consumo:** Tras ejecutar el curl, verás al Squad procesando el evento: + `LOG [AppController] Received Kafka Event in Squad Consumer: {"paymentId":"PAY-123456","amount":100,...}` +>>>> + +### C) DLT y Reintentos Automáticos +La resiliencia no debería ser responsabilidad del desarrollador de producto. Mi librería inyecta un `KafkaDltHandler` que maneja el ciclo de vida del fallo: +1. Fuerza un error enviando un monto alto: + ```bash + curl -X POST http://localhost:3002/test-publish -H "Content-Type: application/json" -d '{"amount": 5000}' + ``` +2. **Resultado en Logs:** Observarás el ciclo de reintentos y el enrutamiento final: + ```text + ERROR [KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 1/2): ... + ERROR [KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 2/2): ... + WARN [KafkaConsumerExplorer] Max retries exceeded for topic payment.created.v1. Routing to DLT. + WARN [KafkaDltHandler] Routing message to DLT topic: payment.created.v1.dlt due to error: ... + ``` + +> [!NOTE] +> **¿Qué significa DLT?** Un **Dead Letter Topic (DLT)** es una red de seguridad. Cuando un mensaje falla repetidamente (mensaje "venenoso"), lo movemos a este tópico especial para no bloquear la cola principal. Esto permite que el sistema siga operando con otros mensajes mientras nosotros analizamos y corregimos el problema para reprocesar ese mensaje específico más tarde. +>>>> -La librería inyecta `KafkaTypedProducer` que previene payloads inválidos en su invocación de *Publish*. +--- -### A) Validar Compilación Estricta de EventContract -Los squads **NO** pueden compilar el proyecto ni envíar mensajes a Kafka si los datos no coinciden estrictamente con las Interfaces. En vez de explotar en ejecución, atraparemos el error tipográfico previniendo builds subidos a Master. +## Por qué esta es una solución de nivel Plataforma -**Paso 1:** Abre el archivo `src/app.controller.ts`. -**Paso 2:** Localiza la línea 37 en la petición del body de Prueba. -```typescript -currency: 'PEN', // Si cambias esto a 'EUR', Fallará en tiempo de compilación Typescript -``` -**Paso 3:** Cambia `'PEN'` por una moneda que no figure (e.g. `'BRL'`) o borra una propiedad requerida de la Interfaz *PaymentCreatedPayload*. -**Paso 4:** En tu terminal escribe: `npm run build` o `npx tsc`. -¡El compilador TypeScript rechaza tu push! (Requisito 4 del Challenge validado). +He diseñado esta librería pensando en la **experiencia del desarrollador (DX)** y en la **estabilidad del sistema global**: -### B) Validar el Orquestador y Discovery (`@KafkaEvent()`) -La app de pruebas suscribe indirectamente usando el decorador creado `@KafkaEvent()` dentro del `app.controller.ts` (línea 46). Al disparar el evento usando un POST, observaremos instantáneamente el log del Subscriber interceptándolo. +* **Abstracción Total de Infraestructura:** Las escuadras de producto (Squads) no necesitan saber qué librería de Kafka usamos (`kafkajs`, `confluent-kafka`, etc.). Solo inyectan mi `KafkaTypedProducer`. Esto nos permite migrar la infraestructura subyacente en el futuro sin tocar una sola línea de código de negocio. +* **Contratos Inquebrantables:** Al forzar el uso de `EventContract`, garantizo que ningún mensaje mal formateado llegue a Kafka. He convertido un error de ejecución en un error de compilación. +* **Resiliencia Out-of-the-box:** El manejo de reintentos y DLT suele ser el punto donde fallan los microservicios. Mi librería lo automatiza de forma transparente, asegurando que la plataforma sea robusta por defecto. -Para iniciar un flujo positivo, corre el entorno en una terminal y dispara la URL: -```bash -curl -X POST http://localhost:3000/test-publish \ - -H "Content-Type: application/json" \ - -d '{"amount": 100}' -``` -**Resultado en los logs de Nestjs:** -```bash -[KafkaTypedProducer] Published message to payment.created.v1 ... -[KafkaConsumerExplorer] Mapped {payment.created.v1} event to AppController.handlePaymentCreated() ... -[AppController] Received Kafka Event in Squad Consumer: {"paymentId":"PAY-123456","amount":100,"currency":"PEN","fromCountry":"PE"} -``` +### Prácticas Evitadas +* **Evito el acoplamiento directo a strings de tópicos:** Los canales se gestionan mediante constantes y tipos, reduciendo errores humanos. +* **No obligo al Squad a configurar el DLT:** Muchas implementaciones fallan porque el desarrollador olvida configurar el bloque `catch` y el envío a DLT; en mi solución, esto es una funcionalidad de "seguridad pasiva" de la propia plataforma. -### C) Validar el DLT Automático (Configurado a las 2 reintentos) -La librería inyecta silenciosamente un `KafkaDltHandler` global al Squad. Si algún microservicio suelta una excepción irrecuperable un número de veces que excede `maxRetries`, la librería atrapa ese evento fallido y lo deriva al sub-tópico `{topic}.dlt` para no desechar el Request de Cliente. +--- -Dispara el POST con una cantidad altísima (el código en Controller lanzará throw explícito emulando un Crash): -```bash -curl -X POST http://localhost:3000/test-publish \ - -H "Content-Type: application/json" \ - -d '{"amount": 5000}' -``` -Observarás en los Logs cómo reintenta de forma consecutiva la excepción (Intentos 1, 2 y 3). -**Resultado:** Al rebasar el límite, publicará en el DLT Topic: -```bash -[KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 1/2)... -[KafkaConsumerExplorer] Error processing message on payment.created.v1 (Attempt 2/2)... -[KafkaConsumerExplorer] Max retries exceeded for topic payment.created.v1. Routing to DLT. -[KafkaDltHandler] Routing message to DLT topic: payment.created.v1.dlt ... -``` -¡El squad NUNCA necesitó tocar la configuración de DLT! +## Registro de Decisiones (ADR) + +He documentado el porqué de cada decisión arquitectónica (como el uso de `DynamicModules` frente a clases estáticas) en formato MADR. [Consulta el ADR aquí](./adr/001-kafka-module-dynamic.md) + +--- + +> [!TIP] +> Esta librería cumple con el **Requisito 4 del Challenge 3**, garantizando que el Squad esté acoplado a tipos y no al cliente de Kafka directamente. --- -## 🏛 Registro de Decisiones de Arquitectura (MADR) -Se encuentra alojado en forma de reporte en formato **MADR** en el folder local: `./adr/001-kafka-module-dynamic.md`. Explica en detalle por qué NestJS Dynamic Modules frente a clases comunes y alternativas discutidas (Schema Registries vs TypeScript Code-Checking). +## Cumplimiento de Entregables + +He diseñado la solución alineada con el 100% de los requerimientos técnicos: + +| Punto | Entregable Requerido | Estado | Ubicación | +| :--- | :--- | :---: | :--- | +| **1** | **API de módulo dinámico** | ✅ | `KafkaModule.forFeature({ topics, consumerGroup })` en `kafka.module.ts`. Registra productores/consumidores vía DI (no singletons). | +| **2** | **Decorador @KafkaEvent()** | ✅ | Implementado en `kafka-event.decorator.ts`. El `KafkaConsumerExplorer` vincula métodos al tópico sin config manual. | +| **3** | **Configuración de DLT** | ✅ | Automatizado en `KafkaConsumerExplorer` y `KafkaDltHandler`. El Squad no necesita escribir lógica de enrutamiento a DLT. | +| **4** | **Tipo EventContract** | ✅ | Definido en `event-contract.type.ts`. Forza el esquema en tiempo de compilación; errores de tipo impiden el `build`. | +| **5** | **ADR (MADR format)** | ✅ | Documentado en `adr/001-kafka-module-dynamic.md`. Cubre decisiones técnicas, evolución de esquemas y roadmap. | +>>>> diff --git a/challenge-3/dist/app.controller.js.map b/challenge-3/dist/app.controller.js.map index e4f599bf..3babd66b 100644 --- a/challenge-3/dist/app.controller.js.map +++ b/challenge-3/dist/app.controller.js.map @@ -1 +1 @@ -{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,+CAA2C;AAC3C,iEAA4D;AAC5D,8EAAgE;AAYzD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAOL;IACA;IAPF,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAGzC,UAAU,GAAG,CAAC,CAAC;IAE/B,YACmB,UAAsB,EACtB,QAA4B;QAD5B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAoB;IAC5C,CAAC;IAGJ,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAS;QAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAwB,oBAAoB,EAAE;YACvE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE;gBACJ,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;gBAC1B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB,CAAC,KAA2C;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGzF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,sCAAa;AAYxB;IADC,IAAA,YAAG,GAAE;;;;6CAGL;AAGK;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAiBxB;AAIK;IADL,IAAA,kCAAU,EAAC,oBAAoB,CAAC;;;;yDAShC;wBA9CU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAQoB,wBAAU;QACZ,yCAAkB;GARpC,aAAa,CA+CzB"} \ No newline at end of file +{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,+CAA2C;AAC3C,iEAA4D;AAC5D,8EAAgE;AAYzD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAOL;IACA;IAPF,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAGzC,UAAU,GAAG,CAAC,CAAC;IAE/B,YACmB,UAAsB,EACtB,QAA4B;QAD5B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAoB;IAC3C,CAAC;IAGL,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAS;QAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAwB,oBAAoB,EAAE;YACvE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE;gBACJ,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;gBAC1B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB,CAAC,KAA2C;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGzF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,sCAAa;AAYxB;IADC,IAAA,YAAG,GAAE;;;;6CAGL;AAGK;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAiBxB;AAIK;IADL,IAAA,kCAAU,EAAC,oBAAoB,CAAC;;;;yDAShC;wBA9CU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAQoB,wBAAU;QACZ,yCAAkB;GARpC,aAAa,CA+CzB"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-consumer.explorer.js b/challenge-3/dist/kafka-consumer.explorer.js index 2b59ec6a..85d5cda8 100644 --- a/challenge-3/dist/kafka-consumer.explorer.js +++ b/challenge-3/dist/kafka-consumer.explorer.js @@ -43,8 +43,10 @@ let KafkaConsumerExplorer = KafkaConsumerExplorer_1 = class KafkaConsumerExplore return; } const providers = this.discoveryService.getProviders(); + const controllers = this.discoveryService.getControllers(); + const allInstances = [...providers, ...controllers]; const handlers = []; - providers.forEach((wrapper) => { + allInstances.forEach((wrapper) => { const { instance } = wrapper; if (!instance || typeof instance !== 'object' || !Object.getPrototypeOf(instance)) { return; diff --git a/challenge-3/dist/kafka-consumer.explorer.js.map b/challenge-3/dist/kafka-consumer.explorer.js.map index bd97217d..fa3deab2 100644 --- a/challenge-3/dist/kafka-consumer.explorer.js.map +++ b/challenge-3/dist/kafka-consumer.explorer.js.map @@ -1 +1 @@ -{"version":3,"file":"kafka-consumer.explorer.js","sourceRoot":"","sources":["../src/kafka-consumer.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,uCAA2D;AAC3D,qCAA8D;AAC9D,8EAA0E;AAC1E,2DAAsD;AAEzC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAKb;IACA;IACA;IACA;IAC8B;IARhC,MAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAW;IAE3B,YACmB,gBAAkC,EAClC,SAAoB,EACpB,MAAa,EACb,UAA2B,EACG,OAAe;QAJ7C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAO;QACb,eAAU,GAAV,UAAU,CAAiB;QACG,YAAO,GAAP,OAAO,CAAQ;QAE9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAmE,EAAE,CAAC;QAEpF,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAmC,CAAC,CAAC;gBAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,4CAAoB,EACpB,MAAM,CACP,CAAC;oBAEF,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC9B,QAAQ;yBACT,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,KAAK,cAAc,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;gBACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3E,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAgE,EAChE,OAA2B;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnC,OAAO,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACpE,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,aAAa,QAAQ,IAAI,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEhH,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,mBAAmB,CAAC,CAAC;oBAC7E,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AAvGY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCAJM,uBAAgB;QACvB,gBAAS;QACZ,eAAK;QACD,mCAAe;GARnC,qBAAqB,CAuGjC"} \ No newline at end of file +{"version":3,"file":"kafka-consumer.explorer.js","sourceRoot":"","sources":["../src/kafka-consumer.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,uCAA2D;AAC3D,qCAA8D;AAC9D,8EAA0E;AAC1E,2DAAsD;AAEzC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAKb;IACA;IACA;IACA;IAC8B;IARhC,MAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAW;IAE3B,YACmB,gBAAkC,EAClC,SAAoB,EACpB,MAAa,EACb,UAA2B,EACG,OAAe;QAJ7C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAO;QACb,eAAU,GAAV,UAAU,CAAiB;QACG,YAAO,GAAP,OAAO,CAAQ;QAE9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAmE,EAAE,CAAC;QAEpF,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAmC,CAAC,CAAC;gBAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,4CAAoB,EACpB,MAAM,CACP,CAAC;oBAEF,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC9B,QAAQ;yBACT,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,KAAK,cAAc,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;gBACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3E,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAgE,EAChE,OAA2B;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnC,OAAO,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACpE,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,aAAa,QAAQ,IAAI,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEhH,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,mBAAmB,CAAC,CAAC;oBAC7E,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AA1GY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCAJM,uBAAgB;QACvB,gBAAS;QACZ,eAAK;QACD,mCAAe;GARnC,qBAAqB,CA0GjC"} \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.d.ts b/challenge-3/dist/kafka.module.d.ts index fb784ba3..99b8ea53 100644 --- a/challenge-3/dist/kafka.module.d.ts +++ b/challenge-3/dist/kafka.module.d.ts @@ -1,9 +1,12 @@ import { DynamicModule } from '@nestjs/common'; +import { KafkaConsumerExplorer } from './kafka-consumer.explorer'; export interface KafkaFeatureOptions { topics: string[]; consumerGroup?: string; brokers?: string[]; } export declare class KafkaModule { + private readonly explorer; + constructor(explorer: KafkaConsumerExplorer); static forFeature(options: KafkaFeatureOptions): DynamicModule; } diff --git a/challenge-3/dist/kafka.module.js b/challenge-3/dist/kafka.module.js index a60989d5..9e372b52 100644 --- a/challenge-3/dist/kafka.module.js +++ b/challenge-3/dist/kafka.module.js @@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; +var __metadata = (this && this.__metadata) || function (k, v) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); +}; var KafkaModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.KafkaModule = void 0; @@ -15,6 +18,10 @@ const kafka_consumer_explorer_1 = require("./kafka-consumer.explorer"); const kafka_typed_producer_1 = require("./kafka-typed-producer"); const kafka_dlt_handler_1 = require("./kafka-dlt.handler"); let KafkaModule = KafkaModule_1 = class KafkaModule { + explorer; + constructor(explorer) { + this.explorer = explorer; + } static forFeature(options) { const brokers = options.brokers || process.env.KAFKA_BROKERS?.split(',') || ['localhost:9092']; const clientProvider = { @@ -48,6 +55,7 @@ exports.KafkaModule = KafkaModule = KafkaModule_1 = __decorate([ (0, common_1.Global)(), (0, common_1.Module)({ imports: [core_1.DiscoveryModule], - }) + }), + __metadata("design:paramtypes", [kafka_consumer_explorer_1.KafkaConsumerExplorer]) ], KafkaModule); //# sourceMappingURL=kafka.module.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.js.map b/challenge-3/dist/kafka.module.js.map index cc6087c6..ddeb3ec9 100644 --- a/challenge-3/dist/kafka.module.js.map +++ b/challenge-3/dist/kafka.module.js.map @@ -1 +1 @@ -{"version":3,"file":"kafka.module.js","sourceRoot":"","sources":["../src/kafka.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,qCAAgC;AAChC,uEAAwF;AACxF,iEAA4D;AAC5D,2DAAsD;AAY/C,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,UAAU,CAAC,OAA4B;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/F,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,eAAK;YACd,UAAU,EAAE,GAAG,EAAE;gBACf,OAAO,IAAI,eAAK,CAAC;oBACf,QAAQ,EAAE,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACxE,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QAEF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,8CAAoB;YAC7B,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;SACtC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,cAAc;gBACd,eAAe;gBACf,yCAAkB;gBAClB,mCAAe;gBACf,+CAAqB;aACtB;YACD,OAAO,EAAE,CAAC,yCAAkB,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,kCAAW;sBAAX,WAAW;IAJvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;KAC3B,CAAC;GACW,WAAW,CA+BvB"} \ No newline at end of file +{"version":3,"file":"kafka.module.js","sourceRoot":"","sources":["../src/kafka.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,qCAAgC;AAChC,uEAAwF;AACxF,iEAA4D;AAC5D,2DAAsD;AAY/C,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACO;IAA7B,YAA6B,QAA+B;QAA/B,aAAQ,GAAR,QAAQ,CAAuB;IAAG,CAAC;IAEhE,MAAM,CAAC,UAAU,CAAC,OAA4B;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/F,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,eAAK;YACd,UAAU,EAAE,GAAG,EAAE;gBACf,OAAO,IAAI,eAAK,CAAC;oBACf,QAAQ,EAAE,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACxE,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QAEF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,8CAAoB;YAC7B,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;SACtC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,cAAc;gBACd,eAAe;gBACf,yCAAkB;gBAClB,mCAAe;gBACf,+CAAqB;aACtB;YACD,OAAO,EAAE,CAAC,yCAAkB,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,kCAAW;sBAAX,WAAW;IAJvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;KAC3B,CAAC;qCAEuC,+CAAqB;GADjD,WAAW,CAiCvB"} \ No newline at end of file diff --git a/challenge-3/dist/main.js b/challenge-3/dist/main.js index 274552ef..873b31da 100644 --- a/challenge-3/dist/main.js +++ b/challenge-3/dist/main.js @@ -4,7 +4,7 @@ const core_1 = require("@nestjs/core"); const app_module_1 = require("./app.module"); async function bootstrap() { const app = await core_1.NestFactory.create(app_module_1.AppModule); - await app.listen(process.env.PORT ?? 3000); + await app.listen(process.env.PORT ?? 3002); } bootstrap(); //# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/challenge-3/dist/tsconfig.build.tsbuildinfo b/challenge-3/dist/tsconfig.build.tsbuildinfo index 33eefe09..ff65c630 100644 --- a/challenge-3/dist/tsconfig.build.tsbuildinfo +++ b/challenge-3/dist/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2023.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/subscription.d.ts","../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../node_modules/rxjs/dist/types/internal/operator.d.ts","../node_modules/rxjs/dist/types/internal/observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../node_modules/rxjs/dist/types/internal/notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/constants.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/kafkajs/types/index.d.ts","../src/types/event-contract.type.ts","../src/kafka-typed-producer.ts","../src/decorators/kafka-event.decorator.ts","../src/app.controller.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../node_modules/@nestjs/core/router/router-proxy.d.ts","../node_modules/@nestjs/core/helpers/context-creator.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../node_modules/@nestjs/core/guards/constants.d.ts","../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../node_modules/@nestjs/core/guards/index.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../node_modules/@nestjs/core/interceptors/index.d.ts","../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../node_modules/@nestjs/core/pipes/index.d.ts","../node_modules/@nestjs/core/helpers/context-utils.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../node_modules/@nestjs/core/inspector/index.d.ts","../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/kafka-dlt.handler.ts","../src/kafka-consumer.explorer.ts","../src/kafka.module.ts","../src/app.module.ts","../src/index.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@eslint/core/dist/cjs/types.d.cts","../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../node_modules/eslint/lib/types/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/jest-mock/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/types.d.ts","../node_modules/@types/supertest/lib/agent.d.ts","../node_modules/@types/supertest/lib/test.d.ts","../node_modules/@types/supertest/lib/cookies.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[426,481,498,499,635],[426,481,498,499],[426,481,498,499,645],[426,481,498,499,855],[322,426,481,498,499],[422,426,481,498,499],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,426,481,498,499],[274,308,426,481,498,499],[281,426,481,498,499],[271,322,422,426,481,498,499],[340,341,342,343,344,345,346,348,426,481,498,499],[276,426,481,498,499],[322,422,426,481,498,499],[276,347,426,481,498,499],[336,339,349,426,481,498,499],[337,338,426,481,498,499],[312,426,481,498,499],[276,277,278,279,426,481,498,499],[352,426,481,498,499],[294,351,426,481,498,499],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,426,481,498,499],[381,426,481,498,499],[378,379,426,481,498,499],[377,380,426,481,498,499,513],[70,280,322,350,374,377,382,389,414,419,421,426,481,498,499],[76,274,426,481,498,499],[75,426,481,498,499],[76,266,267,426,481,498,499,567,572],[266,274,426,481,498,499],[75,265,426,481,498,499],[274,402,426,481,498,499],[268,404,426,481,498,499],[265,269,426,481,498,499],[269,426,481,498,499],[75,322,426,481,498,499],[273,274,426,481,498,499],[286,426,481,498,499],[288,289,290,291,292,426,481,498,499],[280,426,481,498,499],[280,281,300,426,481,498,499],[294,295,301,302,303,426,481,498,499],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,426,481,498,499],[299,426,481,498,499],[282,283,284,285,426,481,498,499],[274,282,283,426,481,498,499],[274,280,281,426,481,498,499],[274,284,426,481,498,499],[274,312,426,481,498,499],[307,309,310,311,312,313,314,315,426,481,498,499],[72,274,426,481,498,499],[308,426,481,498,499],[72,274,307,311,313,426,481,498,499],[283,426,481,498,499],[309,426,481,498,499],[274,308,309,310,426,481,498,499],[298,426,481,498,499],[274,278,298,299,316,317,426,481,498,499],[296,297,299,426,481,498,499],[270,272,281,287,301,318,319,322,426,481,498,499],[76,265,270,272,275,318,319,426,481,498,499],[279,426,481,498,499],[265,426,481,498,499],[298,322,383,387,426,481,498,499],[387,388,426,481,498,499],[322,383,426,481,498,499],[322,383,384,426,481,498,499],[384,385,426,481,498,499],[384,385,386,426,481,498,499],[275,426,481,498,499],[392,393,394,426,481,498,499],[392,426,481,498,499],[394,395,396,398,399,400,426,481,498,499],[391,426,481,498,499],[394,397,426,481,498,499],[394,395,396,398,399,426,481,498,499],[275,392,394,398,426,481,498,499],[390,401,406,407,408,409,410,411,412,413,426,481,498,499],[275,322,406,426,481,498,499],[275,397,426,481,498,499],[275,397,422,426,481,498,499],[268,274,275,397,402,403,404,405,426,481,498,499],[265,322,402,403,415,426,481,498,499],[322,402,426,481,498,499],[417,426,481,498,499],[350,415,426,481,498,499],[415,416,418,426,481,498,499],[298,426,481,498,499,525],[298,375,376,426,481,498,499],[307,426,481,498,499],[280,322,426,481,498,499],[420,426,481,498,499],[300,322,422,426,481,498,499],[426,481,498,499,537],[322,422,426,481,498,499,556,557],[347,426,481,498,499],[422,426,481,498,499,550,555,556],[426,481,498,499,560,561],[76,322,426,481,498,499,551,556,570],[422,426,481,498,499,538,563],[75,422,426,481,498,499,564,567],[322,426,481,498,499,551,556,558,569,571,575],[75,426,481,498,499,573,574],[426,481,498,499,564],[265,322,422,426,481,498,499,578],[322,422,426,481,498,499,551,556,558,570],[426,481,498,499,577,579,580],[322,426,481,498,499,556],[426,481,498,499,556],[322,422,426,481,498,499,578],[75,322,422,426,481,498,499],[322,422,426,481,498,499,550,551,556,576,578,581,584,589,590,603,604],[265,426,481,498,499,537],[426,481,498,499,563,566,605],[426,481,498,499,590,602],[70,426,481,498,499,538,558,559,562,565,597,602,606,609,613,614,615,617,619,625,627],[322,422,426,481,498,499,544,552,555,556],[322,426,481,498,499,548],[299,322,347,422,426,481,498,499,547,548,549,550,555,556,558,628],[426,481,498,499,550,551,554,556,592,601],[322,422,426,481,498,499,543,555,556],[426,481,498,499,591],[422,426,481,498,499,551,556],[422,426,481,498,499,544,551,555,596],[322,347,422,426,481,498,499,543,555],[422,426,481,498,499,549,550,554,594,598,599,600],[422,426,481,498,499,544,551,552,553,555,556],[322,347,426,481,498,499,551,554,556],[265,426,481,498,499,555],[274,307,313,426,481,498,499],[426,481,498,499,540,541,542,551,555,556,595],[426,481,498,499,547,596,607,608],[347,422,426,481,498,499,556],[347,422,426,481,498,499],[426,481,498,499,539,540,541,542,545,547],[426,481,498,499,544],[426,481,498,499,546,547],[422,426,481,498,499,539,540,541,542,545,546],[426,481,498,499,582,583],[322,426,481,498,499,551,556,558,570],[426,481,498,499,593],[305,426,481,498,499],[286,322,426,481,498,499,610,611],[426,481,498,499,612],[322,426,481,498,499,558],[322,426,481,498,499,551,558],[299,322,422,426,481,498,499,544,551,552,553,555,556],[298,322,422,426,481,498,499,538,551,558,596,614],[299,300,422,426,481,498,499,537,616],[426,481,498,499,586,587,588],[422,426,481,498,499,585],[426,481,498,499,618],[422,426,481,498,499,510],[426,481,498,499,621,623,624],[426,481,498,499,620],[426,481,498,499,622],[422,426,481,498,499,550,555,621],[426,481,498,499,568],[322,347,422,426,481,498,499,551,555,556,558,593,594,596,597],[426,481,498,499,626],[426,481,498,499,665,667,671,674,676,678,680,682,684,688,692,696,698,700,702,704,706,708,710,712,714,716,724,729,731,733,735,737,740,742,747,751,755,757,759,761,764,766,768,771,773,777,779,781,783,785,787,789,791,793,795,798,801,803,805,809,811,814,816,818,820,824,830,834,836,838,845,847,849,851,854],[426,481,498,499,665,798],[426,481,498,499,666],[426,481,498,499,804],[426,481,498,499,665,781,785,798],[426,481,498,499,786],[426,481,498,499,665,781,798],[426,481,498,499,670],[426,481,498,499,686,692,696,702,733,785,798],[426,481,498,499,741],[426,481,498,499,715],[426,481,498,499,709],[426,481,498,499,799,800],[426,481,498,499,798],[426,481,498,499,688,692,729,735,747,783,785,798],[426,481,498,499,815],[426,481,498,499,664,798],[426,481,498,499,685],[426,481,498,499,667,674,680,684,688,704,716,757,759,761,783,785,789,791,793,798],[426,481,498,499,817],[426,481,498,499,678,688,704,798],[426,481,498,499,819],[426,481,498,499,665,674,676,740,781,785,798],[426,481,498,499,677],[426,481,498,499,802],[426,481,498,499,796],[426,481,498,499,788],[426,481,498,499,665,680,798],[426,481,498,499,681],[426,481,498,499,705],[426,481,498,499,737,783,798,822],[426,481,498,499,724,798,822],[426,481,498,499,688,696,724,737,781,785,798,821,823],[426,481,498,499,821,822,823],[426,481,498,499,706,798],[426,481,498,499,680,737,783,785,798,827],[426,481,498,499,737,783,798,827],[426,481,498,499,696,737,781,785,798,826,828],[426,481,498,499,825,826,827,828,829],[426,481,498,499,737,783,798,832],[426,481,498,499,724,798,832],[426,481,498,499,688,696,724,737,781,785,798,831,833],[426,481,498,499,831,832,833],[426,481,498,499,683],[426,481,498,499,806,807,808],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,706,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,688,783,798],[426,481,498,499,784],[426,481,498,499,725,726,727,728],[426,481,498,499,727,737,783,785,798],[426,481,498,499,725,729,737,783,798],[426,481,498,499,680,696,712,714,724,798],[426,481,498,499,686,688,692,696,698,702,704,725,726,728,737,783,785,787,798],[426,481,498,499,835],[426,481,498,499,678,688,798],[426,481,498,499,837],[426,481,498,499,671,674,676,678,684,692,696,704,731,733,740,768,783,787,793,798,805],[426,481,498,499,713],[426,481,498,499,689,690,691],[426,481,498,499,674,688,689,740,798],[426,481,498,499,688,689,798],[426,481,498,499,798,840],[426,481,498,499,839,840,841,842,843,844],[426,481,498,499,680,737,783,785,798,840],[426,481,498,499,680,696,724,737,798,839],[426,481,498,499,730],[426,481,498,499,743,744,745,746],[426,481,498,499,737,744,783,785,798],[426,481,498,499,692,696,698,704,735,783,785,787,798],[426,481,498,499,680,686,696,702,712,737,743,745,785,798],[426,481,498,499,679],[426,481,498,499,668,669,736],[426,481,498,499,665,783,798],[426,481,498,499,668,669,671,674,678,680,682,684,692,696,704,729,731,733,735,740,783,785,787,798],[426,481,498,499,671,674,678,682,684,686,688,692,696,702,704,729,731,740,742,747,751,755,764,768,771,773,783,785,787,798],[426,481,498,499,776],[426,481,498,499,671,674,678,682,684,692,696,698,702,704,731,740,768,781,783,785,787,798],[426,481,498,499,665,774,775,781,783,798],[426,481,498,499,687],[426,481,498,499,778],[426,481,498,499,756],[426,481,498,499,711],[426,481,498,499,782],[426,481,498,499,665,674,740,781,785,798],[426,481,498,499,748,749,750],[426,481,498,499,737,749,783,798],[426,481,498,499,737,749,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,748,750,783,785,798],[426,481,498,499,738,739],[426,481,498,499,737,738,783],[426,481,498,499,665,737,739,785,798],[426,481,498,499,846],[426,481,498,499,684,688,704,798],[426,481,498,499,762,763],[426,481,498,499,737,762,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,763,783,785,798],[426,481,498,499,810],[426,481,498,499,752,753,754],[426,481,498,499,737,753,783,798],[426,481,498,499,737,753,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,752,754,783,785,798],[426,481,498,499,732],[426,481,498,499,675],[426,481,498,499,674,740,798],[426,481,498,499,672,673],[426,481,498,499,672,737,783],[426,481,498,499,665,673,737,785,798],[426,481,498,499,767],[426,481,498,499,665,667,680,682,688,696,708,710,712,714,724,766,781,783,785,798],[426,481,498,499,697],[426,481,498,499,701],[426,481,498,499,665,700,781,798],[426,481,498,499,765],[426,481,498,499,812,813],[426,481,498,499,769,770],[426,481,498,499,737,769,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,770,783,785,798],[426,481,498,499,848],[426,481,498,499,692,696,704,798],[426,481,498,499,850],[426,481,498,499,684,688,798],[426,481,498,499,667,671,678,680,682,684,692,696,698,702,704,708,710,712,714,716,724,731,733,757,759,761,766,768,779,783,787,789,791,793,795,796],[426,481,498,499,796,797],[426,481,498,499,665],[426,481,498,499,734],[426,481,498,499,780],[426,481,498,499,671,674,678,682,684,688,692,696,698,700,702,704,731,733,740,768,773,777,779,783,785,787,798],[426,481,498,499,707],[426,481,498,499,758],[426,481,498,499,664],[426,481,498,499,680,696,706,708,710,712,714,716,717,724],[426,481,498,499,680,696,706,710,717,718,724,785],[426,481,498,499,717,718,719,720,721,722,723],[426,481,498,499,706],[426,481,498,499,706,724],[426,481,498,499,680,696,708,710,712,716,724,785],[426,481,498,499,665,680,688,696,708,710,712,714,716,720,781,785,798],[426,481,498,499,680,696,722,781,785],[426,481,498,499,772],[426,481,498,499,703],[426,481,498,499,852,853],[426,481,498,499,671,678,684,716,731,733,742,759,761,766,789,791,795,798,805,820,836,838,847,851,852],[426,481,498,499,667,674,676,680,682,688,692,696,698,700,702,704,708,710,712,714,724,729,737,740,747,751,755,757,764,768,771,773,777,779,783,787,793,798,816,818,824,830,834,845,849],[426,481,498,499,790],[426,481,498,499,760],[426,481,498,499,693,694,695],[426,481,498,499,674,688,693,740,798],[426,481,498,499,688,693,798],[426,481,498,499,792],[426,481,498,499,699],[426,481,498,499,794],[426,481,498,499,635,636,637,638,639],[426,481,498,499,635,637],[426,481,495,498,499,531,641],[426,481,495,498,499,531],[426,481,498,499,644,650],[426,481,498,499,644,645,646],[426,481,498,499,647],[426,481,492,495,498,499,531,652,653,654],[426,481,498,499,642,655,657],[426,481,498,499,659],[426,481,498,499,660],[426,481,498,499,857,861],[426,478,479,481,498,499],[426,480,481,498,499],[481,498,499],[426,481,486,498,499,516],[426,481,482,487,492,498,499,501,513,524],[426,481,482,483,492,498,499,501],[426,481,484,498,499,525],[426,481,485,486,493,498,499,502],[426,481,486,498,499,513,521],[426,481,487,489,492,498,499,501],[426,480,481,488,498,499],[426,481,489,490,498,499],[426,481,491,492,498,499],[426,480,481,492,498,499],[426,481,492,493,494,498,499,513,524],[426,481,492,493,494,498,499,508,513,516],[426,473,481,489,492,495,498,499,501,513,524],[426,481,492,493,495,496,498,499,501,513,521,524],[426,481,495,497,498,499,513,521,524],[424,425,426,427,428,429,430,431,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,492,498,499],[426,481,498,499,500,524],[426,481,489,492,498,499,501,513],[426,481,498,499,502],[426,481,498,499,503],[426,480,481,498,499,504],[426,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,498,499,506],[426,481,498,499,507],[426,481,492,498,499,508,509],[426,481,498,499,508,510,525,527],[426,481,493,498,499],[426,481,492,498,499,513,514,516],[426,481,498,499,515,516],[426,481,498,499,513,514],[426,481,498,499,516],[426,481,498,499,517],[426,478,481,498,499,513,518,524],[426,481,492,498,499,519,520],[426,481,498,499,519,520],[426,481,486,498,499,501,513,521],[426,481,498,499,522],[426,481,498,499,501,523],[426,481,495,498,499,507,524],[426,481,486,498,499,525],[426,481,498,499,513,526],[426,481,498,499,500,527],[426,481,498,499,528],[426,481,486,498,499],[426,473,481,498,499],[426,481,498,499,529],[426,473,481,492,494,498,499,504,513,516,524,526,527,529],[426,481,498,499,513,530],[426,481,493,498,499,513,531],[426,481,495,498,499,531,656],[426,481,498,499,872],[426,481,498,499,643,863,865,867,873],[426,481,496,498,499,501,513,521,531],[426,481,493,495,496,497,498,499,501,513,863,866,867,868,869,870,871],[426,481,495,498,499,513,872],[426,481,493,498,499,866,867],[426,481,498,499,524,866],[426,481,498,499,873,874,875,876,877],[426,481,498,499,873,874,878],[426,481,498,499,873,874],[426,481,495,496,498,499,501,863,873],[426,481,498,499,879],[426,481,498,499,644,648,649],[426,481,498,499,650],[426,481,498,499,662,859,860],[426,481,495,498,499,513,531],[426,481,498,499,857],[426,481,498,499,663,858],[426,481,498,499,501,521,531],[426,481,498,499,856],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,426,481,498,499],[122,426,481,498,499],[78,81,426,481,498,499],[80,426,481,498,499],[80,81,426,481,498,499],[77,78,79,81,426,481,498,499],[78,80,81,238,426,481,498,499],[81,426,481,498,499],[77,80,122,426,481,498,499],[80,81,238,426,481,498,499],[80,246,426,481,498,499],[78,80,81,426,481,498,499],[90,426,481,498,499],[113,426,481,498,499],[134,426,481,498,499],[80,81,122,426,481,498,499],[81,129,426,481,498,499],[80,81,122,140,426,481,498,499],[80,81,140,426,481,498,499],[81,181,426,481,498,499],[81,122,426,481,498,499],[77,81,199,426,481,498,499],[77,81,200,426,481,498,499],[222,426,481,498,499],[206,208,426,481,498,499],[217,426,481,498,499],[206,426,481,498,499],[77,81,199,206,207,426,481,498,499],[199,200,208,426,481,498,499],[220,426,481,498,499],[77,81,206,207,208,426,481,498,499],[79,80,81,426,481,498,499],[77,81,426,481,498,499],[78,80,200,201,202,203,426,481,498,499],[122,200,201,202,203,426,481,498,499],[200,202,426,481,498,499],[80,201,202,204,205,209,426,481,498,499],[77,80,426,481,498,499],[81,224,426,481,498,499],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,426,481,498,499],[210,426,481,498,499],[426,439,442,445,446,481,498,499,524],[426,442,481,498,499,513,524],[426,442,446,481,498,499,524],[426,481,498,499,513],[426,436,481,498,499],[426,440,481,498,499],[426,438,439,442,481,498,499,524],[426,481,498,499,501,521],[426,481,498,499,531],[426,436,481,498,499,531],[426,438,442,481,498,499,501,524],[426,433,434,435,437,441,481,492,498,499,513,524],[426,442,450,458,481,498,499],[426,434,440,481,498,499],[426,442,467,468,481,498,499],[426,434,437,442,481,498,499,516,524,531],[426,442,481,498,499],[426,438,442,481,498,499,524],[426,433,481,498,499],[426,436,437,438,440,441,442,443,444,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,468,469,470,471,472,481,498,499],[426,442,460,463,481,489,498,499],[426,442,450,451,452,481,498,499],[426,440,442,451,453,481,498,499],[426,441,481,498,499],[426,434,436,442,481,498,499],[426,442,446,451,453,481,498,499],[426,446,481,498,499],[426,440,442,445,481,498,499,524],[426,434,438,442,450,481,498,499],[426,442,460,481,498,499],[426,453,481,498,499],[426,436,442,467,481,498,499,516,529,531],[422,423,426,481,498,499,533,534,535],[422,423,426,481,498,499,536,631],[426,481,498,499,533,534,535,631],[422,426,481,498,499,532,535,628,629],[422,426,481,498,499,532],[422,426,481,498,499,532,533],[422,426,481,498,499,532,534,628,629,630],[426,481,498,499,628,632]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"5d4242d50092a353e5ab1f06663a89dbc714c7d9d70072ea03c83c5b14750f05","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"c724034e22cbbde98550aca4ee32006f7f4c566885328949ac16ff9ff2f76e89","impliedFormat":1},{"version":"983d890a7ed6e4c856bdba8ec32c36b5904ba4c53a610041dcbd568faa7aca32","impliedFormat":1},{"version":"3d02d26a579f63218675f46f42ef9279e4254cd053667384e93bf4a078feb002","impliedFormat":1},{"version":"51e7382cb5b63c92ebf346cc88e9af83cbea8f7d9ead2d7973ef997273bcd9ef","impliedFormat":1},{"version":"05975f8ce6c58de1011f474df2ac8f73112762f0016978d8b0c2121feb73d413","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"59ff7d8f6d9c68b2db8bbddf8773c763fbe7b250947e4d45ca64d54f6f3c7d96","impliedFormat":1},{"version":"01710763d8e235dfb7933fd61f017dcf12888a30331da8f472444793ac6db5eb","impliedFormat":1},{"version":"192cf836364f204f554d27d033c68301985ed5bc17062c556e5ed29d558ee7a7","impliedFormat":1},{"version":"730e20aedd9f265450adbd07b6bd3310560f8f148ccb062b8c86659a27c786dc","impliedFormat":1},{"version":"0a9c0f3730c701bdf8ebca077c067fbf365194cb5ff7584f2e7e4ca93371262c","impliedFormat":1},{"version":"e903b48387dd626caef216089c16a96692848a859edc4e6d9a9c9f739c604114","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,[533,536],[629,634]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[637,1],[635,2],[648,3],[662,2],[856,4],[347,2],[334,2],[71,2],[323,5],[324,5],[325,2],[326,6],[336,7],[327,5],[328,8],[329,2],[330,2],[331,5],[332,5],[333,5],[335,9],[343,10],[345,2],[342,2],[349,11],[346,2],[344,2],[340,12],[341,13],[348,14],[350,15],[337,2],[339,16],[338,17],[277,2],[280,18],[276,2],[585,2],[278,2],[279,2],[353,19],[354,19],[355,19],[356,19],[357,19],[358,19],[359,19],[352,20],[360,19],[374,21],[361,19],[351,2],[362,19],[363,19],[364,19],[365,19],[366,19],[367,19],[368,19],[369,19],[370,19],[371,19],[372,19],[373,19],[382,22],[380,23],[379,2],[378,2],[381,24],[422,25],[72,2],[73,2],[74,2],[567,26],[76,27],[573,28],[572,29],[266,30],[267,27],[402,2],[296,2],[297,2],[403,31],[268,2],[404,2],[405,32],[75,2],[270,33],[271,34],[269,35],[272,33],[273,2],[275,36],[287,37],[288,2],[293,38],[289,2],[290,2],[291,2],[292,2],[294,2],[295,39],[301,40],[304,41],[302,2],[303,2],[322,42],[305,2],[306,2],[616,43],[286,44],[284,45],[282,46],[283,47],[285,2],[313,48],[307,2],[316,49],[309,50],[314,51],[312,52],[315,53],[310,54],[311,55],[299,56],[318,57],[300,58],[320,59],[321,60],[308,2],[317,2],[274,2],[281,61],[319,62],[388,63],[383,2],[389,64],[384,65],[385,66],[386,67],[387,68],[390,69],[395,70],[393,71],[394,71],[401,72],[391,2],[392,73],[396,70],[398,74],[400,75],[399,76],[414,77],[407,78],[408,79],[409,79],[410,80],[411,80],[412,79],[413,79],[406,81],[416,82],[415,83],[418,84],[417,85],[419,86],[375,87],[377,88],[298,2],[376,56],[420,89],[397,90],[421,91],[537,92],[538,93],[558,94],[559,95],[560,2],[561,96],[562,97],[571,98],[564,99],[568,100],[576,101],[574,6],[575,102],[565,103],[577,2],[579,104],[580,105],[581,106],[570,107],[566,108],[590,109],[578,110],[605,111],[563,112],[606,113],[603,114],[604,6],[628,115],[553,116],[549,117],[551,118],[602,119],[544,120],[592,121],[591,2],[552,122],[599,123],[556,124],[600,2],[601,125],[554,126],[555,127],[550,128],[548,129],[543,2],[596,130],[609,131],[607,6],[539,6],[595,132],[540,13],[541,95],[542,133],[546,134],[545,135],[608,136],[547,137],[584,138],[582,104],[583,139],[593,13],[594,140],[597,141],[612,142],[613,143],[610,144],[611,145],[614,146],[615,147],[617,148],[589,149],[586,150],[587,5],[588,139],[619,151],[618,152],[625,153],[557,6],[621,154],[620,6],[623,155],[622,2],[624,156],[569,157],[598,158],[627,159],[626,6],[855,160],[666,161],[667,162],[804,161],[805,163],[786,164],[787,165],[670,166],[671,167],[741,168],[742,169],[715,161],[716,170],[709,161],[710,171],[801,172],[799,173],[800,2],[815,174],[816,175],[685,176],[686,177],[817,178],[818,179],[819,180],[820,181],[677,182],[678,183],[803,184],[802,185],[788,161],[789,186],[681,187],[682,188],[705,2],[706,189],[823,190],[821,191],[822,192],[824,193],[825,194],[828,195],[826,196],[829,173],[827,197],[830,198],[833,199],[831,200],[832,201],[834,202],[683,182],[684,203],[809,204],[806,205],[807,206],[808,2],[784,207],[785,208],[729,209],[728,210],[726,211],[725,212],[727,213],[836,214],[835,215],[838,216],[837,217],[714,218],[713,161],[692,219],[690,220],[689,166],[691,221],[841,222],[845,223],[839,224],[840,225],[842,222],[843,222],[844,222],[731,226],[730,166],[747,227],[745,228],[746,173],[743,229],[744,230],[680,231],[679,161],[737,232],[668,161],[669,233],[736,234],[774,235],[777,236],[775,237],[776,238],[688,239],[687,161],[779,240],[778,166],[757,241],[756,161],[712,242],[711,161],[783,243],[782,244],[751,245],[750,246],[748,247],[749,248],[740,249],[739,250],[738,251],[847,252],[846,253],[764,254],[763,255],[762,256],[811,257],[810,2],[755,258],[754,259],[752,260],[753,261],[733,262],[732,166],[676,263],[675,264],[674,265],[673,266],[672,267],[768,268],[767,269],[698,270],[697,166],[702,271],[701,272],[766,273],[765,161],[812,2],[814,274],[813,2],[771,275],[770,276],[769,277],[849,278],[848,279],[851,280],[850,281],[797,282],[798,283],[796,284],[735,285],[734,2],[781,286],[780,287],[708,288],[707,161],[759,289],[758,161],[665,290],[664,2],[718,291],[719,292],[724,293],[717,294],[721,295],[720,296],[722,297],[723,298],[773,299],[772,166],[704,300],[703,166],[854,301],[853,302],[852,303],[791,304],[790,161],[761,305],[760,161],[696,306],[694,307],[693,166],[695,308],[793,309],[792,161],[700,310],[699,161],[795,311],[794,161],[640,312],[636,1],[638,313],[639,1],[642,314],[641,315],[643,2],[651,316],[647,317],[646,318],[644,2],[655,319],[658,320],[656,2],[659,2],[660,321],[661,322],[862,323],[645,2],[863,2],[478,324],[479,324],[480,325],[426,326],[481,327],[482,328],[483,329],[424,2],[484,330],[485,331],[486,332],[487,333],[488,334],[489,335],[490,335],[491,336],[492,337],[493,338],[494,339],[427,2],[425,2],[495,340],[496,341],[497,342],[531,343],[498,344],[499,2],[500,345],[501,346],[502,347],[503,348],[504,349],[505,350],[506,351],[507,352],[508,353],[509,353],[510,354],[511,2],[512,355],[513,356],[515,357],[514,358],[516,359],[517,360],[518,361],[519,362],[520,363],[521,364],[522,365],[523,366],[524,367],[525,368],[526,369],[527,370],[528,371],[428,2],[429,372],[430,2],[431,2],[474,373],[475,374],[476,2],[477,359],[529,375],[530,376],[653,2],[654,2],[652,377],[657,378],[864,2],[873,379],[865,2],[868,380],[871,381],[872,382],[866,383],[869,384],[867,385],[878,386],[875,387],[877,2],[876,388],[874,389],[879,2],[880,390],[432,2],[663,2],[650,391],[649,392],[861,393],[870,394],[858,395],[859,396],[860,2],[532,397],[857,398],[70,2],[265,399],[238,2],[216,400],[214,400],[264,401],[229,402],[228,402],[129,403],[80,404],[236,403],[237,403],[239,405],[240,403],[241,406],[140,407],[242,403],[213,403],[243,403],[244,408],[245,403],[246,402],[247,409],[248,403],[249,403],[250,403],[251,403],[252,402],[253,403],[254,403],[255,403],[256,403],[257,410],[258,403],[259,403],[260,403],[261,403],[262,403],[79,401],[82,406],[83,406],[84,406],[85,406],[86,406],[87,406],[88,406],[89,403],[91,411],[92,406],[90,406],[93,406],[94,406],[95,406],[96,406],[97,406],[98,406],[99,403],[100,406],[101,406],[102,406],[103,406],[104,406],[105,403],[106,406],[107,406],[108,406],[109,406],[110,406],[111,406],[112,403],[114,412],[113,406],[115,406],[116,406],[117,406],[118,406],[119,410],[120,403],[121,403],[135,413],[123,414],[124,406],[125,406],[126,403],[127,406],[128,406],[130,415],[131,406],[132,406],[133,406],[134,406],[136,406],[137,406],[138,406],[139,406],[141,416],[142,406],[143,406],[144,406],[145,403],[146,406],[147,417],[148,417],[149,417],[150,403],[151,406],[152,406],[153,406],[158,406],[154,406],[155,403],[156,406],[157,403],[159,406],[160,406],[161,406],[162,406],[163,406],[164,406],[165,403],[166,406],[167,406],[168,406],[169,406],[170,406],[171,406],[172,406],[173,406],[174,406],[175,406],[176,406],[177,406],[178,406],[179,406],[180,406],[181,406],[182,418],[183,406],[184,406],[185,406],[186,406],[187,406],[188,406],[189,403],[190,403],[191,403],[192,403],[193,403],[194,406],[195,406],[196,406],[197,406],[215,419],[263,403],[200,420],[199,421],[223,422],[222,423],[218,424],[217,423],[219,425],[208,426],[206,427],[221,428],[220,425],[207,2],[209,429],[122,430],[78,431],[77,406],[212,2],[204,432],[205,433],[202,2],[203,434],[201,406],[210,435],[81,436],[230,2],[231,2],[224,2],[227,402],[226,2],[232,2],[233,2],[225,437],[234,2],[235,2],[198,438],[211,439],[67,2],[68,2],[13,2],[11,2],[12,2],[17,2],[16,2],[2,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[3,2],[26,2],[27,2],[4,2],[28,2],[32,2],[29,2],[30,2],[31,2],[33,2],[34,2],[35,2],[5,2],[36,2],[37,2],[38,2],[39,2],[6,2],[43,2],[40,2],[41,2],[42,2],[44,2],[7,2],[45,2],[50,2],[51,2],[46,2],[47,2],[48,2],[49,2],[8,2],[55,2],[52,2],[53,2],[54,2],[56,2],[9,2],[57,2],[58,2],[59,2],[61,2],[60,2],[62,2],[63,2],[10,2],[69,2],[64,2],[1,2],[65,2],[66,2],[15,2],[14,2],[450,440],[462,441],[448,442],[463,443],[472,444],[439,445],[440,446],[438,447],[471,448],[466,449],[470,450],[442,451],[459,452],[441,453],[469,454],[436,455],[437,449],[443,456],[444,2],[449,457],[447,456],[434,458],[473,459],[464,460],[453,461],[452,456],[454,462],[457,463],[451,464],[455,465],[467,448],[445,466],[446,467],[458,468],[435,443],[461,469],[460,456],[456,470],[465,2],[433,2],[468,471],[536,472],[632,473],[423,6],[535,2],[633,474],[630,475],[629,476],[534,477],[631,478],[634,479],[533,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880],"version":"5.9.3"} \ No newline at end of file +{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2023.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/subscription.d.ts","../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../node_modules/rxjs/dist/types/internal/operator.d.ts","../node_modules/rxjs/dist/types/internal/observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../node_modules/rxjs/dist/types/internal/notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/constants.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/kafkajs/types/index.d.ts","../src/types/event-contract.type.ts","../src/kafka-typed-producer.ts","../src/decorators/kafka-event.decorator.ts","../src/app.controller.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../node_modules/@nestjs/core/router/router-proxy.d.ts","../node_modules/@nestjs/core/helpers/context-creator.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../node_modules/@nestjs/core/guards/constants.d.ts","../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../node_modules/@nestjs/core/guards/index.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../node_modules/@nestjs/core/interceptors/index.d.ts","../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../node_modules/@nestjs/core/pipes/index.d.ts","../node_modules/@nestjs/core/helpers/context-utils.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../node_modules/@nestjs/core/inspector/index.d.ts","../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/kafka-dlt.handler.ts","../src/kafka-consumer.explorer.ts","../src/kafka.module.ts","../src/app.module.ts","../src/index.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@eslint/core/dist/cjs/types.d.cts","../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../node_modules/eslint/lib/types/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/jest-mock/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/types.d.ts","../node_modules/@types/supertest/lib/agent.d.ts","../node_modules/@types/supertest/lib/test.d.ts","../node_modules/@types/supertest/lib/cookies.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[426,481,498,499,635],[426,481,498,499],[426,481,498,499,645],[426,481,498,499,855],[322,426,481,498,499],[422,426,481,498,499],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,426,481,498,499],[274,308,426,481,498,499],[281,426,481,498,499],[271,322,422,426,481,498,499],[340,341,342,343,344,345,346,348,426,481,498,499],[276,426,481,498,499],[322,422,426,481,498,499],[276,347,426,481,498,499],[336,339,349,426,481,498,499],[337,338,426,481,498,499],[312,426,481,498,499],[276,277,278,279,426,481,498,499],[352,426,481,498,499],[294,351,426,481,498,499],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,426,481,498,499],[381,426,481,498,499],[378,379,426,481,498,499],[377,380,426,481,498,499,513],[70,280,322,350,374,377,382,389,414,419,421,426,481,498,499],[76,274,426,481,498,499],[75,426,481,498,499],[76,266,267,426,481,498,499,567,572],[266,274,426,481,498,499],[75,265,426,481,498,499],[274,402,426,481,498,499],[268,404,426,481,498,499],[265,269,426,481,498,499],[269,426,481,498,499],[75,322,426,481,498,499],[273,274,426,481,498,499],[286,426,481,498,499],[288,289,290,291,292,426,481,498,499],[280,426,481,498,499],[280,281,300,426,481,498,499],[294,295,301,302,303,426,481,498,499],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,426,481,498,499],[299,426,481,498,499],[282,283,284,285,426,481,498,499],[274,282,283,426,481,498,499],[274,280,281,426,481,498,499],[274,284,426,481,498,499],[274,312,426,481,498,499],[307,309,310,311,312,313,314,315,426,481,498,499],[72,274,426,481,498,499],[308,426,481,498,499],[72,274,307,311,313,426,481,498,499],[283,426,481,498,499],[309,426,481,498,499],[274,308,309,310,426,481,498,499],[298,426,481,498,499],[274,278,298,299,316,317,426,481,498,499],[296,297,299,426,481,498,499],[270,272,281,287,301,318,319,322,426,481,498,499],[76,265,270,272,275,318,319,426,481,498,499],[279,426,481,498,499],[265,426,481,498,499],[298,322,383,387,426,481,498,499],[387,388,426,481,498,499],[322,383,426,481,498,499],[322,383,384,426,481,498,499],[384,385,426,481,498,499],[384,385,386,426,481,498,499],[275,426,481,498,499],[392,393,394,426,481,498,499],[392,426,481,498,499],[394,395,396,398,399,400,426,481,498,499],[391,426,481,498,499],[394,397,426,481,498,499],[394,395,396,398,399,426,481,498,499],[275,392,394,398,426,481,498,499],[390,401,406,407,408,409,410,411,412,413,426,481,498,499],[275,322,406,426,481,498,499],[275,397,426,481,498,499],[275,397,422,426,481,498,499],[268,274,275,397,402,403,404,405,426,481,498,499],[265,322,402,403,415,426,481,498,499],[322,402,426,481,498,499],[417,426,481,498,499],[350,415,426,481,498,499],[415,416,418,426,481,498,499],[298,426,481,498,499,525],[298,375,376,426,481,498,499],[307,426,481,498,499],[280,322,426,481,498,499],[420,426,481,498,499],[300,322,422,426,481,498,499],[426,481,498,499,537],[322,422,426,481,498,499,556,557],[347,426,481,498,499],[422,426,481,498,499,550,555,556],[426,481,498,499,560,561],[76,322,426,481,498,499,551,556,570],[422,426,481,498,499,538,563],[75,422,426,481,498,499,564,567],[322,426,481,498,499,551,556,558,569,571,575],[75,426,481,498,499,573,574],[426,481,498,499,564],[265,322,422,426,481,498,499,578],[322,422,426,481,498,499,551,556,558,570],[426,481,498,499,577,579,580],[322,426,481,498,499,556],[426,481,498,499,556],[322,422,426,481,498,499,578],[75,322,422,426,481,498,499],[322,422,426,481,498,499,550,551,556,576,578,581,584,589,590,603,604],[265,426,481,498,499,537],[426,481,498,499,563,566,605],[426,481,498,499,590,602],[70,426,481,498,499,538,558,559,562,565,597,602,606,609,613,614,615,617,619,625,627],[322,422,426,481,498,499,544,552,555,556],[322,426,481,498,499,548],[299,322,347,422,426,481,498,499,547,548,549,550,555,556,558,628],[426,481,498,499,550,551,554,556,592,601],[322,422,426,481,498,499,543,555,556],[426,481,498,499,591],[422,426,481,498,499,551,556],[422,426,481,498,499,544,551,555,596],[322,347,422,426,481,498,499,543,555],[422,426,481,498,499,549,550,554,594,598,599,600],[422,426,481,498,499,544,551,552,553,555,556],[322,347,426,481,498,499,551,554,556],[265,426,481,498,499,555],[274,307,313,426,481,498,499],[426,481,498,499,540,541,542,551,555,556,595],[426,481,498,499,547,596,607,608],[347,422,426,481,498,499,556],[347,422,426,481,498,499],[426,481,498,499,539,540,541,542,545,547],[426,481,498,499,544],[426,481,498,499,546,547],[422,426,481,498,499,539,540,541,542,545,546],[426,481,498,499,582,583],[322,426,481,498,499,551,556,558,570],[426,481,498,499,593],[305,426,481,498,499],[286,322,426,481,498,499,610,611],[426,481,498,499,612],[322,426,481,498,499,558],[322,426,481,498,499,551,558],[299,322,422,426,481,498,499,544,551,552,553,555,556],[298,322,422,426,481,498,499,538,551,558,596,614],[299,300,422,426,481,498,499,537,616],[426,481,498,499,586,587,588],[422,426,481,498,499,585],[426,481,498,499,618],[422,426,481,498,499,510],[426,481,498,499,621,623,624],[426,481,498,499,620],[426,481,498,499,622],[422,426,481,498,499,550,555,621],[426,481,498,499,568],[322,347,422,426,481,498,499,551,555,556,558,593,594,596,597],[426,481,498,499,626],[426,481,498,499,665,667,671,674,676,678,680,682,684,688,692,696,698,700,702,704,706,708,710,712,714,716,724,729,731,733,735,737,740,742,747,751,755,757,759,761,764,766,768,771,773,777,779,781,783,785,787,789,791,793,795,798,801,803,805,809,811,814,816,818,820,824,830,834,836,838,845,847,849,851,854],[426,481,498,499,665,798],[426,481,498,499,666],[426,481,498,499,804],[426,481,498,499,665,781,785,798],[426,481,498,499,786],[426,481,498,499,665,781,798],[426,481,498,499,670],[426,481,498,499,686,692,696,702,733,785,798],[426,481,498,499,741],[426,481,498,499,715],[426,481,498,499,709],[426,481,498,499,799,800],[426,481,498,499,798],[426,481,498,499,688,692,729,735,747,783,785,798],[426,481,498,499,815],[426,481,498,499,664,798],[426,481,498,499,685],[426,481,498,499,667,674,680,684,688,704,716,757,759,761,783,785,789,791,793,798],[426,481,498,499,817],[426,481,498,499,678,688,704,798],[426,481,498,499,819],[426,481,498,499,665,674,676,740,781,785,798],[426,481,498,499,677],[426,481,498,499,802],[426,481,498,499,796],[426,481,498,499,788],[426,481,498,499,665,680,798],[426,481,498,499,681],[426,481,498,499,705],[426,481,498,499,737,783,798,822],[426,481,498,499,724,798,822],[426,481,498,499,688,696,724,737,781,785,798,821,823],[426,481,498,499,821,822,823],[426,481,498,499,706,798],[426,481,498,499,680,737,783,785,798,827],[426,481,498,499,737,783,798,827],[426,481,498,499,696,737,781,785,798,826,828],[426,481,498,499,825,826,827,828,829],[426,481,498,499,737,783,798,832],[426,481,498,499,724,798,832],[426,481,498,499,688,696,724,737,781,785,798,831,833],[426,481,498,499,831,832,833],[426,481,498,499,683],[426,481,498,499,806,807,808],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,706,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,688,783,798],[426,481,498,499,784],[426,481,498,499,725,726,727,728],[426,481,498,499,727,737,783,785,798],[426,481,498,499,725,729,737,783,798],[426,481,498,499,680,696,712,714,724,798],[426,481,498,499,686,688,692,696,698,702,704,725,726,728,737,783,785,787,798],[426,481,498,499,835],[426,481,498,499,678,688,798],[426,481,498,499,837],[426,481,498,499,671,674,676,678,684,692,696,704,731,733,740,768,783,787,793,798,805],[426,481,498,499,713],[426,481,498,499,689,690,691],[426,481,498,499,674,688,689,740,798],[426,481,498,499,688,689,798],[426,481,498,499,798,840],[426,481,498,499,839,840,841,842,843,844],[426,481,498,499,680,737,783,785,798,840],[426,481,498,499,680,696,724,737,798,839],[426,481,498,499,730],[426,481,498,499,743,744,745,746],[426,481,498,499,737,744,783,785,798],[426,481,498,499,692,696,698,704,735,783,785,787,798],[426,481,498,499,680,686,696,702,712,737,743,745,785,798],[426,481,498,499,679],[426,481,498,499,668,669,736],[426,481,498,499,665,783,798],[426,481,498,499,668,669,671,674,678,680,682,684,692,696,704,729,731,733,735,740,783,785,787,798],[426,481,498,499,671,674,678,682,684,686,688,692,696,702,704,729,731,740,742,747,751,755,764,768,771,773,783,785,787,798],[426,481,498,499,776],[426,481,498,499,671,674,678,682,684,692,696,698,702,704,731,740,768,781,783,785,787,798],[426,481,498,499,665,774,775,781,783,798],[426,481,498,499,687],[426,481,498,499,778],[426,481,498,499,756],[426,481,498,499,711],[426,481,498,499,782],[426,481,498,499,665,674,740,781,785,798],[426,481,498,499,748,749,750],[426,481,498,499,737,749,783,798],[426,481,498,499,737,749,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,748,750,783,785,798],[426,481,498,499,738,739],[426,481,498,499,737,738,783],[426,481,498,499,665,737,739,785,798],[426,481,498,499,846],[426,481,498,499,684,688,704,798],[426,481,498,499,762,763],[426,481,498,499,737,762,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,763,783,785,798],[426,481,498,499,810],[426,481,498,499,752,753,754],[426,481,498,499,737,753,783,798],[426,481,498,499,737,753,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,752,754,783,785,798],[426,481,498,499,732],[426,481,498,499,675],[426,481,498,499,674,740,798],[426,481,498,499,672,673],[426,481,498,499,672,737,783],[426,481,498,499,665,673,737,785,798],[426,481,498,499,767],[426,481,498,499,665,667,680,682,688,696,708,710,712,714,724,766,781,783,785,798],[426,481,498,499,697],[426,481,498,499,701],[426,481,498,499,665,700,781,798],[426,481,498,499,765],[426,481,498,499,812,813],[426,481,498,499,769,770],[426,481,498,499,737,769,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,770,783,785,798],[426,481,498,499,848],[426,481,498,499,692,696,704,798],[426,481,498,499,850],[426,481,498,499,684,688,798],[426,481,498,499,667,671,678,680,682,684,692,696,698,702,704,708,710,712,714,716,724,731,733,757,759,761,766,768,779,783,787,789,791,793,795,796],[426,481,498,499,796,797],[426,481,498,499,665],[426,481,498,499,734],[426,481,498,499,780],[426,481,498,499,671,674,678,682,684,688,692,696,698,700,702,704,731,733,740,768,773,777,779,783,785,787,798],[426,481,498,499,707],[426,481,498,499,758],[426,481,498,499,664],[426,481,498,499,680,696,706,708,710,712,714,716,717,724],[426,481,498,499,680,696,706,710,717,718,724,785],[426,481,498,499,717,718,719,720,721,722,723],[426,481,498,499,706],[426,481,498,499,706,724],[426,481,498,499,680,696,708,710,712,716,724,785],[426,481,498,499,665,680,688,696,708,710,712,714,716,720,781,785,798],[426,481,498,499,680,696,722,781,785],[426,481,498,499,772],[426,481,498,499,703],[426,481,498,499,852,853],[426,481,498,499,671,678,684,716,731,733,742,759,761,766,789,791,795,798,805,820,836,838,847,851,852],[426,481,498,499,667,674,676,680,682,688,692,696,698,700,702,704,708,710,712,714,724,729,737,740,747,751,755,757,764,768,771,773,777,779,783,787,793,798,816,818,824,830,834,845,849],[426,481,498,499,790],[426,481,498,499,760],[426,481,498,499,693,694,695],[426,481,498,499,674,688,693,740,798],[426,481,498,499,688,693,798],[426,481,498,499,792],[426,481,498,499,699],[426,481,498,499,794],[426,481,498,499,635,636,637,638,639],[426,481,498,499,635,637],[426,481,495,498,499,531,641],[426,481,495,498,499,531],[426,481,498,499,644,650],[426,481,498,499,644,645,646],[426,481,498,499,647],[426,481,492,495,498,499,531,652,653,654],[426,481,498,499,642,655,657],[426,481,498,499,659],[426,481,498,499,660],[426,481,498,499,857,861],[426,478,479,481,498,499],[426,480,481,498,499],[481,498,499],[426,481,486,498,499,516],[426,481,482,487,492,498,499,501,513,524],[426,481,482,483,492,498,499,501],[426,481,484,498,499,525],[426,481,485,486,493,498,499,502],[426,481,486,498,499,513,521],[426,481,487,489,492,498,499,501],[426,480,481,488,498,499],[426,481,489,490,498,499],[426,481,491,492,498,499],[426,480,481,492,498,499],[426,481,492,493,494,498,499,513,524],[426,481,492,493,494,498,499,508,513,516],[426,473,481,489,492,495,498,499,501,513,524],[426,481,492,493,495,496,498,499,501,513,521,524],[426,481,495,497,498,499,513,521,524],[424,425,426,427,428,429,430,431,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,492,498,499],[426,481,498,499,500,524],[426,481,489,492,498,499,501,513],[426,481,498,499,502],[426,481,498,499,503],[426,480,481,498,499,504],[426,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,498,499,506],[426,481,498,499,507],[426,481,492,498,499,508,509],[426,481,498,499,508,510,525,527],[426,481,493,498,499],[426,481,492,498,499,513,514,516],[426,481,498,499,515,516],[426,481,498,499,513,514],[426,481,498,499,516],[426,481,498,499,517],[426,478,481,498,499,513,518,524],[426,481,492,498,499,519,520],[426,481,498,499,519,520],[426,481,486,498,499,501,513,521],[426,481,498,499,522],[426,481,498,499,501,523],[426,481,495,498,499,507,524],[426,481,486,498,499,525],[426,481,498,499,513,526],[426,481,498,499,500,527],[426,481,498,499,528],[426,481,486,498,499],[426,473,481,498,499],[426,481,498,499,529],[426,473,481,492,494,498,499,504,513,516,524,526,527,529],[426,481,498,499,513,530],[426,481,493,498,499,513,531],[426,481,495,498,499,531,656],[426,481,498,499,872],[426,481,498,499,643,863,865,867,873],[426,481,496,498,499,501,513,521,531],[426,481,493,495,496,497,498,499,501,513,863,866,867,868,869,870,871],[426,481,495,498,499,513,872],[426,481,493,498,499,866,867],[426,481,498,499,524,866],[426,481,498,499,873,874,875,876,877],[426,481,498,499,873,874,878],[426,481,498,499,873,874],[426,481,495,496,498,499,501,863,873],[426,481,498,499,879],[426,481,498,499,644,648,649],[426,481,498,499,650],[426,481,498,499,662,859,860],[426,481,495,498,499,513,531],[426,481,498,499,857],[426,481,498,499,663,858],[426,481,498,499,501,521,531],[426,481,498,499,856],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,426,481,498,499],[122,426,481,498,499],[78,81,426,481,498,499],[80,426,481,498,499],[80,81,426,481,498,499],[77,78,79,81,426,481,498,499],[78,80,81,238,426,481,498,499],[81,426,481,498,499],[77,80,122,426,481,498,499],[80,81,238,426,481,498,499],[80,246,426,481,498,499],[78,80,81,426,481,498,499],[90,426,481,498,499],[113,426,481,498,499],[134,426,481,498,499],[80,81,122,426,481,498,499],[81,129,426,481,498,499],[80,81,122,140,426,481,498,499],[80,81,140,426,481,498,499],[81,181,426,481,498,499],[81,122,426,481,498,499],[77,81,199,426,481,498,499],[77,81,200,426,481,498,499],[222,426,481,498,499],[206,208,426,481,498,499],[217,426,481,498,499],[206,426,481,498,499],[77,81,199,206,207,426,481,498,499],[199,200,208,426,481,498,499],[220,426,481,498,499],[77,81,206,207,208,426,481,498,499],[79,80,81,426,481,498,499],[77,81,426,481,498,499],[78,80,200,201,202,203,426,481,498,499],[122,200,201,202,203,426,481,498,499],[200,202,426,481,498,499],[80,201,202,204,205,209,426,481,498,499],[77,80,426,481,498,499],[81,224,426,481,498,499],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,426,481,498,499],[210,426,481,498,499],[426,439,442,445,446,481,498,499,524],[426,442,481,498,499,513,524],[426,442,446,481,498,499,524],[426,481,498,499,513],[426,436,481,498,499],[426,440,481,498,499],[426,438,439,442,481,498,499,524],[426,481,498,499,501,521],[426,481,498,499,531],[426,436,481,498,499,531],[426,438,442,481,498,499,501,524],[426,433,434,435,437,441,481,492,498,499,513,524],[426,442,450,458,481,498,499],[426,434,440,481,498,499],[426,442,467,468,481,498,499],[426,434,437,442,481,498,499,516,524,531],[426,442,481,498,499],[426,438,442,481,498,499,524],[426,433,481,498,499],[426,436,437,438,440,441,442,443,444,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,468,469,470,471,472,481,498,499],[426,442,460,463,481,489,498,499],[426,442,450,451,452,481,498,499],[426,440,442,451,453,481,498,499],[426,441,481,498,499],[426,434,436,442,481,498,499],[426,442,446,451,453,481,498,499],[426,446,481,498,499],[426,440,442,445,481,498,499,524],[426,434,438,442,450,481,498,499],[426,442,460,481,498,499],[426,453,481,498,499],[426,436,442,467,481,498,499,516,529,531],[422,423,426,481,498,499,533,534,535],[422,423,426,481,498,499,536,631],[426,481,498,499,533,534,535,631],[422,426,481,498,499,532,535,628,629],[422,426,481,498,499,532],[422,426,481,498,499,532,533],[422,426,481,498,499,532,534,628,629,630],[426,481,498,499,628,632]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"5d4242d50092a353e5ab1f06663a89dbc714c7d9d70072ea03c83c5b14750f05","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"c724034e22cbbde98550aca4ee32006f7f4c566885328949ac16ff9ff2f76e89","impliedFormat":1},{"version":"983d890a7ed6e4c856bdba8ec32c36b5904ba4c53a610041dcbd568faa7aca32","impliedFormat":1},{"version":"3d02d26a579f63218675f46f42ef9279e4254cd053667384e93bf4a078feb002","impliedFormat":1},{"version":"51e7382cb5b63c92ebf346cc88e9af83cbea8f7d9ead2d7973ef997273bcd9ef","impliedFormat":1},{"version":"6196a583ad833817c500fc3a6d1ec6a2ec2caf914723e13c97063322ecba4ee8","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"59ff7d8f6d9c68b2db8bbddf8773c763fbe7b250947e4d45ca64d54f6f3c7d96","impliedFormat":1},{"version":"280ecc3a39bc591e63acefd807485398f38b0f87d5516fc03d0a27719c39c2b4","impliedFormat":1},{"version":"a8b7cdb71b4e0166e78ba82a8a682f9407e2d286ae582fe25a7a668767bc27ae","impliedFormat":1},{"version":"730e20aedd9f265450adbd07b6bd3310560f8f148ccb062b8c86659a27c786dc","impliedFormat":1},{"version":"0a9c0f3730c701bdf8ebca077c067fbf365194cb5ff7584f2e7e4ca93371262c","impliedFormat":1},{"version":"dd120398ca28ddfd2a6af2bc417276fe5e908ed4c325370d6925430b013cffd4","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,[533,536],[629,634]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[637,1],[635,2],[648,3],[662,2],[856,4],[347,2],[334,2],[71,2],[323,5],[324,5],[325,2],[326,6],[336,7],[327,5],[328,8],[329,2],[330,2],[331,5],[332,5],[333,5],[335,9],[343,10],[345,2],[342,2],[349,11],[346,2],[344,2],[340,12],[341,13],[348,14],[350,15],[337,2],[339,16],[338,17],[277,2],[280,18],[276,2],[585,2],[278,2],[279,2],[353,19],[354,19],[355,19],[356,19],[357,19],[358,19],[359,19],[352,20],[360,19],[374,21],[361,19],[351,2],[362,19],[363,19],[364,19],[365,19],[366,19],[367,19],[368,19],[369,19],[370,19],[371,19],[372,19],[373,19],[382,22],[380,23],[379,2],[378,2],[381,24],[422,25],[72,2],[73,2],[74,2],[567,26],[76,27],[573,28],[572,29],[266,30],[267,27],[402,2],[296,2],[297,2],[403,31],[268,2],[404,2],[405,32],[75,2],[270,33],[271,34],[269,35],[272,33],[273,2],[275,36],[287,37],[288,2],[293,38],[289,2],[290,2],[291,2],[292,2],[294,2],[295,39],[301,40],[304,41],[302,2],[303,2],[322,42],[305,2],[306,2],[616,43],[286,44],[284,45],[282,46],[283,47],[285,2],[313,48],[307,2],[316,49],[309,50],[314,51],[312,52],[315,53],[310,54],[311,55],[299,56],[318,57],[300,58],[320,59],[321,60],[308,2],[317,2],[274,2],[281,61],[319,62],[388,63],[383,2],[389,64],[384,65],[385,66],[386,67],[387,68],[390,69],[395,70],[393,71],[394,71],[401,72],[391,2],[392,73],[396,70],[398,74],[400,75],[399,76],[414,77],[407,78],[408,79],[409,79],[410,80],[411,80],[412,79],[413,79],[406,81],[416,82],[415,83],[418,84],[417,85],[419,86],[375,87],[377,88],[298,2],[376,56],[420,89],[397,90],[421,91],[537,92],[538,93],[558,94],[559,95],[560,2],[561,96],[562,97],[571,98],[564,99],[568,100],[576,101],[574,6],[575,102],[565,103],[577,2],[579,104],[580,105],[581,106],[570,107],[566,108],[590,109],[578,110],[605,111],[563,112],[606,113],[603,114],[604,6],[628,115],[553,116],[549,117],[551,118],[602,119],[544,120],[592,121],[591,2],[552,122],[599,123],[556,124],[600,2],[601,125],[554,126],[555,127],[550,128],[548,129],[543,2],[596,130],[609,131],[607,6],[539,6],[595,132],[540,13],[541,95],[542,133],[546,134],[545,135],[608,136],[547,137],[584,138],[582,104],[583,139],[593,13],[594,140],[597,141],[612,142],[613,143],[610,144],[611,145],[614,146],[615,147],[617,148],[589,149],[586,150],[587,5],[588,139],[619,151],[618,152],[625,153],[557,6],[621,154],[620,6],[623,155],[622,2],[624,156],[569,157],[598,158],[627,159],[626,6],[855,160],[666,161],[667,162],[804,161],[805,163],[786,164],[787,165],[670,166],[671,167],[741,168],[742,169],[715,161],[716,170],[709,161],[710,171],[801,172],[799,173],[800,2],[815,174],[816,175],[685,176],[686,177],[817,178],[818,179],[819,180],[820,181],[677,182],[678,183],[803,184],[802,185],[788,161],[789,186],[681,187],[682,188],[705,2],[706,189],[823,190],[821,191],[822,192],[824,193],[825,194],[828,195],[826,196],[829,173],[827,197],[830,198],[833,199],[831,200],[832,201],[834,202],[683,182],[684,203],[809,204],[806,205],[807,206],[808,2],[784,207],[785,208],[729,209],[728,210],[726,211],[725,212],[727,213],[836,214],[835,215],[838,216],[837,217],[714,218],[713,161],[692,219],[690,220],[689,166],[691,221],[841,222],[845,223],[839,224],[840,225],[842,222],[843,222],[844,222],[731,226],[730,166],[747,227],[745,228],[746,173],[743,229],[744,230],[680,231],[679,161],[737,232],[668,161],[669,233],[736,234],[774,235],[777,236],[775,237],[776,238],[688,239],[687,161],[779,240],[778,166],[757,241],[756,161],[712,242],[711,161],[783,243],[782,244],[751,245],[750,246],[748,247],[749,248],[740,249],[739,250],[738,251],[847,252],[846,253],[764,254],[763,255],[762,256],[811,257],[810,2],[755,258],[754,259],[752,260],[753,261],[733,262],[732,166],[676,263],[675,264],[674,265],[673,266],[672,267],[768,268],[767,269],[698,270],[697,166],[702,271],[701,272],[766,273],[765,161],[812,2],[814,274],[813,2],[771,275],[770,276],[769,277],[849,278],[848,279],[851,280],[850,281],[797,282],[798,283],[796,284],[735,285],[734,2],[781,286],[780,287],[708,288],[707,161],[759,289],[758,161],[665,290],[664,2],[718,291],[719,292],[724,293],[717,294],[721,295],[720,296],[722,297],[723,298],[773,299],[772,166],[704,300],[703,166],[854,301],[853,302],[852,303],[791,304],[790,161],[761,305],[760,161],[696,306],[694,307],[693,166],[695,308],[793,309],[792,161],[700,310],[699,161],[795,311],[794,161],[640,312],[636,1],[638,313],[639,1],[642,314],[641,315],[643,2],[651,316],[647,317],[646,318],[644,2],[655,319],[658,320],[656,2],[659,2],[660,321],[661,322],[862,323],[645,2],[863,2],[478,324],[479,324],[480,325],[426,326],[481,327],[482,328],[483,329],[424,2],[484,330],[485,331],[486,332],[487,333],[488,334],[489,335],[490,335],[491,336],[492,337],[493,338],[494,339],[427,2],[425,2],[495,340],[496,341],[497,342],[531,343],[498,344],[499,2],[500,345],[501,346],[502,347],[503,348],[504,349],[505,350],[506,351],[507,352],[508,353],[509,353],[510,354],[511,2],[512,355],[513,356],[515,357],[514,358],[516,359],[517,360],[518,361],[519,362],[520,363],[521,364],[522,365],[523,366],[524,367],[525,368],[526,369],[527,370],[528,371],[428,2],[429,372],[430,2],[431,2],[474,373],[475,374],[476,2],[477,359],[529,375],[530,376],[653,2],[654,2],[652,377],[657,378],[864,2],[873,379],[865,2],[868,380],[871,381],[872,382],[866,383],[869,384],[867,385],[878,386],[875,387],[877,2],[876,388],[874,389],[879,2],[880,390],[432,2],[663,2],[650,391],[649,392],[861,393],[870,394],[858,395],[859,396],[860,2],[532,397],[857,398],[70,2],[265,399],[238,2],[216,400],[214,400],[264,401],[229,402],[228,402],[129,403],[80,404],[236,403],[237,403],[239,405],[240,403],[241,406],[140,407],[242,403],[213,403],[243,403],[244,408],[245,403],[246,402],[247,409],[248,403],[249,403],[250,403],[251,403],[252,402],[253,403],[254,403],[255,403],[256,403],[257,410],[258,403],[259,403],[260,403],[261,403],[262,403],[79,401],[82,406],[83,406],[84,406],[85,406],[86,406],[87,406],[88,406],[89,403],[91,411],[92,406],[90,406],[93,406],[94,406],[95,406],[96,406],[97,406],[98,406],[99,403],[100,406],[101,406],[102,406],[103,406],[104,406],[105,403],[106,406],[107,406],[108,406],[109,406],[110,406],[111,406],[112,403],[114,412],[113,406],[115,406],[116,406],[117,406],[118,406],[119,410],[120,403],[121,403],[135,413],[123,414],[124,406],[125,406],[126,403],[127,406],[128,406],[130,415],[131,406],[132,406],[133,406],[134,406],[136,406],[137,406],[138,406],[139,406],[141,416],[142,406],[143,406],[144,406],[145,403],[146,406],[147,417],[148,417],[149,417],[150,403],[151,406],[152,406],[153,406],[158,406],[154,406],[155,403],[156,406],[157,403],[159,406],[160,406],[161,406],[162,406],[163,406],[164,406],[165,403],[166,406],[167,406],[168,406],[169,406],[170,406],[171,406],[172,406],[173,406],[174,406],[175,406],[176,406],[177,406],[178,406],[179,406],[180,406],[181,406],[182,418],[183,406],[184,406],[185,406],[186,406],[187,406],[188,406],[189,403],[190,403],[191,403],[192,403],[193,403],[194,406],[195,406],[196,406],[197,406],[215,419],[263,403],[200,420],[199,421],[223,422],[222,423],[218,424],[217,423],[219,425],[208,426],[206,427],[221,428],[220,425],[207,2],[209,429],[122,430],[78,431],[77,406],[212,2],[204,432],[205,433],[202,2],[203,434],[201,406],[210,435],[81,436],[230,2],[231,2],[224,2],[227,402],[226,2],[232,2],[233,2],[225,437],[234,2],[235,2],[198,438],[211,439],[67,2],[68,2],[13,2],[11,2],[12,2],[17,2],[16,2],[2,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[3,2],[26,2],[27,2],[4,2],[28,2],[32,2],[29,2],[30,2],[31,2],[33,2],[34,2],[35,2],[5,2],[36,2],[37,2],[38,2],[39,2],[6,2],[43,2],[40,2],[41,2],[42,2],[44,2],[7,2],[45,2],[50,2],[51,2],[46,2],[47,2],[48,2],[49,2],[8,2],[55,2],[52,2],[53,2],[54,2],[56,2],[9,2],[57,2],[58,2],[59,2],[61,2],[60,2],[62,2],[63,2],[10,2],[69,2],[64,2],[1,2],[65,2],[66,2],[15,2],[14,2],[450,440],[462,441],[448,442],[463,443],[472,444],[439,445],[440,446],[438,447],[471,448],[466,449],[470,450],[442,451],[459,452],[441,453],[469,454],[436,455],[437,449],[443,456],[444,2],[449,457],[447,456],[434,458],[473,459],[464,460],[453,461],[452,456],[454,462],[457,463],[451,464],[455,465],[467,448],[445,466],[446,467],[458,468],[435,443],[461,469],[460,456],[456,470],[465,2],[433,2],[468,471],[536,472],[632,473],[423,6],[535,2],[633,474],[630,475],[629,476],[534,477],[631,478],[634,479],[533,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880],"version":"5.9.3"} \ No newline at end of file diff --git a/challenge-3/src/app.controller.ts b/challenge-3/src/app.controller.ts index c73c30e3..28ae4d11 100644 --- a/challenge-3/src/app.controller.ts +++ b/challenge-3/src/app.controller.ts @@ -15,14 +15,14 @@ type PaymentCreatedPayload = { @Controller() export class AppController { private readonly logger = new Logger(AppController.name); - + // Demonstrating how instance variables can be read by our Explorer (maxRetries) public readonly maxRetries = 2; constructor( private readonly appService: AppService, private readonly producer: KafkaTypedProducer, - ) {} + ) { } @Get() getHello(): string { @@ -53,7 +53,7 @@ export class AppController { @KafkaEvent('payment.created.v1') async handlePaymentCreated(event: EventContract): Promise { this.logger.log(`Received Kafka Event in Squad Consumer: ${JSON.stringify(event.data)}`); - + // Provocar fallo condicional para probar DLT if (event.data.amount > 1000) { this.logger.error('Amount too high! Simulating crash to trigger DLT handler...'); diff --git a/challenge-3/src/kafka-consumer.explorer.ts b/challenge-3/src/kafka-consumer.explorer.ts index 3b2728f1..10820c0f 100644 --- a/challenge-3/src/kafka-consumer.explorer.ts +++ b/challenge-3/src/kafka-consumer.explorer.ts @@ -29,9 +29,12 @@ export class KafkaConsumerExplorer implements OnModuleInit, OnModuleDestroy { } const providers = this.discoveryService.getProviders(); + const controllers = this.discoveryService.getControllers(); + const allInstances = [...providers, ...controllers]; + const handlers: Array<{ topic: string; handler: Function; instance: unknown }> = []; - providers.forEach((wrapper) => { + allInstances.forEach((wrapper) => { const { instance } = wrapper; if (!instance || typeof instance !== 'object' || !Object.getPrototypeOf(instance)) { return; diff --git a/challenge-3/src/kafka.module.ts b/challenge-3/src/kafka.module.ts index ab7b190a..224bc7e2 100644 --- a/challenge-3/src/kafka.module.ts +++ b/challenge-3/src/kafka.module.ts @@ -16,6 +16,8 @@ export interface KafkaFeatureOptions { imports: [DiscoveryModule], }) export class KafkaModule { + constructor(private readonly explorer: KafkaConsumerExplorer) {} + static forFeature(options: KafkaFeatureOptions): DynamicModule { const brokers = options.brokers || process.env.KAFKA_BROKERS?.split(',') || ['localhost:9092']; diff --git a/challenge-3/src/main.ts b/challenge-3/src/main.ts index f76bc8d9..68de2a9e 100644 --- a/challenge-3/src/main.ts +++ b/challenge-3/src/main.ts @@ -3,6 +3,6 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); - await app.listen(process.env.PORT ?? 3000); + await app.listen(process.env.PORT ?? 3002); } bootstrap(); From 05b815608d53bc03dc0300d52821afdd4b744feb Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Thu, 2 Apr 2026 14:17:45 -0500 Subject: [PATCH 07/18] Agregando mejoras al challenge 2 --- challenge-2/README.md | 223 +++++++++++------- challenge-2/docker-compose.yml | 2 +- challenge-2/src/app.module.ts | 2 +- challenge-2/src/main.ts | 2 +- .../src/read-model/read-model.entity.ts | 2 +- .../transfer-read-model.projector.ts | 15 +- .../src/shared/events/transfer.events.ts | 8 + challenge-2/src/transfer/transfer.entity.ts | 4 +- .../src/transfer/transfer.orchestrator.ts | 14 +- challenge-2/src/wallet/wallet.controller.ts | 37 +++ challenge-2/src/wallet/wallet.entity.ts | 10 +- challenge-2/src/wallet/wallet.module.ts | 2 + challenge-2/src/wallet/wallet.service.ts | 4 +- 13 files changed, 218 insertions(+), 107 deletions(-) create mode 100644 challenge-2/src/wallet/wallet.controller.ts diff --git a/challenge-2/README.md b/challenge-2/README.md index 72fae68f..44c4d803 100644 --- a/challenge-2/README.md +++ b/challenge-2/README.md @@ -12,44 +12,76 @@ El siguiente diagrama ilustra cómo el Orquestador y la State Machine manejan el sequenceDiagram participant C as Cliente (API) participant O as TransferOrchestrator - participant S as SagaRepository (State) - participant W as WalletService - participant F as FxService - participant CQ as CQRS Projector (< 500ms) - - Note over O,S: 1. Idempotency & Lifecycle Init - C->>O: POST /transfers/:id - O->>S: create {step: STARTED} + versioning - O-->>C: 202 Accepted (Saga Iniciada) - - Note over W: 2. Coreografía Protegida (Pessimistic Lock) - O->>W: debit(fromWallet) - W-->>O: OK - O->>S: update step DEBIT_COMPLETED - O->>W: credit(toWallet) + participant S as SagaRepository (Tablas) + participant W as WalletService (Aislado) + participant F as FxService (API Externa) + participant CQ as CQRS Projector (Lectura Rapida) + + Note over O,S: FASE 1: Recepción rápida y registro en la máquina de estados. + C->>O: Pide transferir dinero (POST /transfers/:id) + O->>S: Guarda en BD el intento con estado (step: STARTED) + O->>CQ: Notifica asíncronamente (TransferStartedEvent) + O-->>C: Responde al cliente de inmediato (202 Accepted) - sin bloquear + + Note over W: FASE 2: Movimiento de capital bloqueado y aislado. + O->>W: Paso: DebitWallet + Note right of W: Usa "Pessimistic Lock" para evitar sobregiros concurrentes. + W-->>O: Todo bien + O->>S: Actualiza (step: DEBIT_COMPLETED) - alt Falla en CreditWallet - W--xO: Error - O->>S: step COMPENSATING - O->>W: reverseDebit(fromWallet) - O->>S: step FAILED - O->>CQ: emit('TransferFailedEvent') - else Éxito en CreditWallet - W-->>O: OK - O->>S: update step CREDIT_COMPLETED + O->>W: Paso: CreditWallet + alt Situación Falla (Ej: cuenta destino bloqueada) + W--xO: Se produce un Error + O->>S: Anota que empezó a revertir (step: COMPENSATING) + Note right of W: Si la segunda parte falla, debe DEVOLVER el dinero del paso anterior. + O->>W: Devuelve saldo a la cuenta origen (reverseDebit) + O->>S: Marca como fallo definitivo (step: FAILED) + O->>CQ: Avisa asíncronamente al sistema de lectura de fallos. + else Situación de Éxito + W-->>O: Transferencia exitosa + O->>S: Actualiza (step: CREDIT_COMPLETED) + O->>CQ: Notifica progreso (TransferStepEvent: CREDIT_COMPLETED) end - Note over F: 3. Timed Integrations (FX Ambiguo) - O->>F: settle(FX) - alt Timeout - F--xO: TimeoutError - O->>S: step FX_AMBIGUOUS (Manual Review) - else Éxito - O->>S: update step COMPLETED - O->>CQ: emit('TransferCompletedEvent') + Note over F: FASE 3: Interacciones Externas y Tipo de Cambio. + O->>F: Paso: SettleFX + alt Demora mucho (API caída) + F--xO: Dispara Error de Timeout + Note left of S: ¡PELIGRO! No compensamos ni deshacemos el dinero porque el FX dictado podría estar ejecutándose sin que sepamos. + O->>S: Pausa y escala a Error para humanos: (step: FX_AMBIGUOUS) + else Éxito Total + O->>S: Marca toda la transacción (step: COMPLETED) + O->>CQ: Avisa a las pantallas de lectura que triunfó (< 500ms). + O->>O: Paso: EmitReceipt end ``` +## Explicación Paso a Paso del Diagrama: + +**¿Por qué está este flujo diseñado así?** +El Reto 2 prohíbe empujar todas estas acciones dentro de un mismo "bloque mágico de base de datos" llamado *transacciones distribuidas*. Por ende, usamos el patrón "Orquestador" (un gran director de orquesta) para ir paso por paso almacenando en memoria qué ha ocurrido. + +* **Fase 1 (Inicio):** El usuario pide lanzar la transferencia. Para tener gran velocidad, no procesamos la petición bloqueándolo a la espera (imagina si mandaran un millón). En cambio, la recibimos, la anotamos en nuestra libreta de "Sagas" (`SagaRepository`) con estado `STARTED` y le devolvemos al usuario que el trámite "ya empezó". Todo lo subsiguiente corre de fondo. +* **Fase 2 (Sacar/Meter Dinero):** Aquí empieza lo crítico. El orquestador le dice al servicio de billetera "resta dinero al origen" y anota que lo hizo. Luego dice "suma el dinero al destino". + * Si da un error, interviene la directriz **Compensación**: El orquestador nota el tropiezo y dice *"Oye, ya le saqué el dinero al origen pero el destino cayó. Tienes que devolver el dinero prestado"*. Por lo que ordena ejecutar una reversión de dinero al primer cliente. Así el sistema no se roba la plata de nadie. + * *¿Y si cien personas piden sacar plata a la vez?* Le colocamos a la billetera un `Lock` ("Candado"). Hasta que el Orquestador no termine de restar tu plata, cualquier otra persona haciendo click esperará en fila milisegundos, impidiendo que quedes en números negativos. +* **Fase 3 (Bonus: Estado Ambiguo de Red):** Por último, pedimos convertir divisas. Este servicio viaja por todo internet e interactúa con un banco. Si nos demoramos mucho, se lanza un `Timeout`. Frente a no saber si el otro prestamista hizo nuestra orden o no, no podemos deshacer todos los pasos, nos obligamos a pasar a un estado "limbo" para conciliación humana (`FX_AMBIGUOUS`). Si tiene éxito, todo se firma como `COMPLETED`. Mando mis avisos asíncronos y mi módulo `CQRS` reacciona casi sin impacto en RAM entregándole actualizaciones limpias al panel de usuarios finales en menos de 500ms. + +#### Anatomía Interna de la Solución (Tablas, Servicios y Patrones) + +Para materializar este diagrama sin violar las normas de Microservicios, se estructuró de la siguiente forma: + +1. **Gestión de Tablas Físicas Separadas:** + Se crearon estrictamente **5 tablas separadas** simulando fronteras de dominio. No se cruzan datos ni transacciones entre ellas: + * **Core de Saga:** `transfer_sagas` (manejada exclusivamente por su Data Layer: el `SagaRepository`). + * **Core Finanzas:** `wallets` (registra saldo y versiones), `debit_records` (asegura idempotencia de cobros), `reversal_records` (asegura idempotencia en el flujo inverso de fallos). Estas son dominadas por el **`WalletService`**, que es el cerebro de negocios y dueño exclusivo de los candados, no es una tabla en sí. + * **Core Lectura:** `transfer_read_model`. +2. **Implementación Asíncrona Externa (`FxService`):** + No utiliza tablas sino que simula la latencia de una red inestable o de terceros usando promesas internas. Contiene un inyector de error intencional: si lee la palabra `"timeout"` en un Request, tumba la conexión forzando la evaluación del estado **Ambiguo** de la Fase 3 del diagrama. +3. **CQRS y su Projector (`transfer-read-model.projector.ts`):** + CQRS dicta que la tabla donde las Sagas anotan sea intocable por los clientes visuales. + Por ello se implementó el **Patrón "Projector" (Periodista Pasivo)**: usando EventEmitter de NestJS, el `TransferOrchestrator` lanza un "grito" al aire (Eventos como *Started* o *Failed*) cada vez que concluye. El Projector intercepta esos ecos en segundo plano y aplana/copia un resumen inofensivo a nuestra 5ta tabla llamada `transfer_read_model`. Cuando el cliente pregunta a la API su estatus (GET), consumimos solo esa tabla optimizada permitiéndonos despachar datos consistentemente en un margen sub-500ms sin tocar zonas de riesgo mutacional. + --- ## Cómo poner en marcha mi solución @@ -57,91 +89,101 @@ sequenceDiagram He configurado la aplicación para inicializar tanto la base de datos PostgreSQL como la API NestJS automáticamente. ```bash -# 1. Ingresar a la carpeta del reto -cd challenge-2 - -# 2. Instalar dependencias -npm install - -# 3. Levantar Infraestructura PostgreSQL +# 1. Levantar la infraestructura docker-compose up -d -# 4. Iniciar la aplicación y el Orquestador +# 2. Instalar y arrancar +npm install npm run start + +# 3. Sembrar billeteras de prueba (ID: W-A y W-B) +curl -X POST http://localhost:3003/wallets/seed ``` *(TypeORM se encarga vía `synchronize: true` de crear el schema ideal para revisión local)* --- -## Escenarios de Validación (Mi Solución en Acción) +## Escenarios de Validación + +A continuación se detallan las pruebas para validar los requerimientos técnicos del desafío: -### A) Orquestación Feliz y CQRS en < 500ms -1. Inserta fondos de prueba directamente en DB (o confía en la auto-creación y haz un UPDATE). - Pero para evitarlo, puedes enviar un Débito con fondos e iniciar transferencia: +### 1. Orquestador de transferencias y CQRS +> **Requerimiento:** Implementar un `TransferOrchestrator` con el flujo `DebitWallet` → `CreditWallet` → `SettleFX` → `EmitReceipt` y un modelo de lectura `TransferReadModel` (< 500ms). + +1. **Inicia la transferencia** de 100 USD: ```bash - curl -X POST http://localhost:3000/transfers/T-001 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 100, "fromCurrency":"USD", "toCurrency":"USD"}' + curl -X POST http://localhost:3003/transfers/T-001 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 100, "fromCurrency":"USD", "toCurrency":"USD"}' ``` -2. **Verifica estado en CQRS Read Model:** +2. **Consulta el modelo de lectura** (CQRS) de inmediato: ```bash - curl http://localhost:3000/transfers/T-001 + curl http://localhost:3003/transfers/T-001 ``` - **Respuesta esperada:** - ```json - { - "data": { "transferId": "T-001", "status": "completed", "lastEventVersion": 4 }, - "meta": { - "consistencyModel": "eventual", - "stalenessWindowMs": 500, - "note": "Read model is updated via projected events. Status reflects last known state." - } - } + **Resultado:** El estado debe ser `completed` y la respuesta debe ser inmediata (< 500ms). +3. **Valida los saldos finales** (W-A: 900, W-B: 100): + ```bash + curl http://localhost:3003/wallets ``` -> [!IMPORTANT] -> **Bloqueo Pesimista en Acción:** -> Dentro de `WalletService.debit()`, se ha utilizado `lock: { mode: 'pessimistic_write' }` (`SELECT ... FOR UPDATE`). Si se envían 10 requests concurrentes hacia `W-A`, el lock encolará las transacciones secundarias en DB garantizando que el saldo **jamás** baje de 0. +--- ->>>> +### 2. Compensación en caso de fallo (ReverseDebit) +> **Requerimiento:** Si `CreditWallet` falla después de que `DebitWallet` tenga éxito, el orquestador debe emitir un evento de compensación `ReverseDebit`. -### B) Compensación Segura (ReversalDebit) -Para forzar el error, simula que `Credit` lanza un error dentro de `transfer.orchestrator.ts`. -1. Observarás en la consola de despliegue: - ```text - WARN [TransferOrchestrator] Compensating saga T-ERR1 that failed at CREDIT_COMPLETED: Credit error... - WARN [WalletService] Reversed debit for transfer T-ERR1 +1. **Fuerza un fallo** intentando transferir a una billetera inexistente (`W-Z`): + ```bash + curl -X POST http://localhost:3003/transfers/T-fail-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-Z", "amount": 50, "fromCurrency":"USD", "toCurrency":"USD"}' + ``` +2. **Verifica la reversión** en el modelo de lectura: + ```bash + curl http://localhost:3003/transfers/T-fail-1 + ``` + **Resultado:** `status: "failed"` y `failureReason: "Wallet not found"`. +3. **Confirma la integridad** del saldo (W-A recupera sus 50 USD): + ```bash + curl http://localhost:3003/wallets ``` -2. ¿Por qué es seguro? `WalletService.reverseDebit(id)` contiene una validación de Reversión Idempotente en su propia tabla `reversal_records`. Si la compensación reintenta y falla, no multiplicará el saldo. ->>>> +--- -### C) Escalation: FX State Ambiguo 💥 -> [!WARNING] -> La liquidación FX llama a una pasarela impredecible que en 5 segundos puede o no dejarnos a medias. NO podemos deshacer un FX ciegamente. +### 3. Seguridad ante concurrencia (Pessimistic Locking) +> **Requerimiento:** Si dos transferencias intentan debitar la misma wallet simultáneamente, el sistema debe encolar o fallar de forma segura. Un saldo negativo nunca es aceptable. -1. Dispara un timeout usando `timeout` en el `id`: +1. **Lanza 10 peticiones paralelas** (Bash) que exceden el saldo disponible: ```bash - curl -X POST http://localhost:3000/transfers/T-timeout-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 150}' - ``` -2. **Resultado en Logs:** - ```text - WARN [FxService] FX provider timeout for transfer T-timeout-1 - ERROR [TransferOrchestrator] Transfer T-timeout-1 is in FX_AMBIGUOUS state. Needs manual intervention. + for i in {1..10}; do + curl -X POST http://localhost:3003/transfers/T-CONC-$i \ + -H "Content-Type: application/json" \ + -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 150, "fromCurrency":"USD", "toCurrency":"USD"}' & + done ``` - El read model permanecerá desactualizado o en pending notificándolo correctamente. +2. **Resultado esperado:** Debido al `SELECT FOR UPDATE` en `WalletService`, las peticiones se procesan en orden. Las primeras 6 agotan el saldo y la 7ma falla con `Insufficient funds`. **W-A** jamás bajará de 0. --- -## Por qué esta es una solución de nivel Plataforma +### 4. Ampliación opcional: FX State Ambiguo (Timeout) +> **Requerimiento:** Manejar un timeout en la API de FX que deje el estado ambiguo (ni confirmado ni rechazado) para evitar compensaciones erróneas. + +1. **Simula un Timeout** de red (usando la palabra `timeout` en el ID): + ```bash + curl -X POST http://localhost:3003/transfers/T-timeout-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 10, "fromCurrency":"USD", "toCurrency":"PEN"}' + ``` +2. **Verifica el estado de excepción:** + ```bash + curl http://localhost:3003/transfers/T-timeout-1 + ``` + **Resultado:** `status: "in_progress (FX_AMBIGUOUS)"`. Los fondos quedan reservados hasta intervención manual. + +--- He diseñado esta orquestación tomando decisiones que priorizan control y mitigación de fallos sobre un simple MVP: -### 💡 Orquestación vs Coreografía (ADR) +### Orquestación vs Coreografía (ADR) Elegí **Orquestación (State Machine Manual + Repo)** por sobre Coreografía Purificada. 1. **Estado centralizado (Explícito):** En finanzas, Coreografía significa tener a Servicios "A", "B" y "C" escupiendo eventos sin nadie al volante. En caso de disputa, Support tiene que rastrear 4 tópicos Kafka. En mi solución, consultar la tabla `transfer_sagas` otorga trazabilidad milimétrica (`"FAILED in CREDIT_COMPLETED"`). 2. **Ciclo de vida central:** Me permite inyectar compensaciones de manera asíncrona pero coordinada y determinista. 3. Lo negativo (SPOF) se mitiga con alta disponibilidad en la DB y reinicios asíncronos en los workers que puedan seguir iterando Sagas incompletas. -### 💡 CQRS Asíncrono +### CQRS Asíncrono 1. Nunca consulto la DB de Sagas para servir el endpoint GET Client-facing. Este obtiene data de la tabla `transfer_read_model` actualizada pasivamente en milisegundos usando eventos (NestJS Event Emitter, que en un ambiente mayor sería Kafka consumers). ### Prácticas Evitadas @@ -151,10 +193,11 @@ Elegí **Orquestación (State Machine Manual + Repo)** por sobre Coreografía Pu ## Cumplimiento de Entregables -| Entregable | Estado | Ubicación | -| :--- | :---: | :--- | -| **TransferOrchestrator** | ✅ | `transfer.orchestrator.ts` coordina la máquina de estado. | -| **Compensación por fallo** | ✅ | Emisión estructurada usando compensaciones en cascada y reversiones idempotentes. | -| **CQRS Read Model** | ✅ | EventEmitter en `transfer-read-model.projector.ts` separando lecturas. | -| **Concurrencia Segura** | ✅ | `SELECT FOR UPDATE` y `version` columns para rechazar saldos negativos. | -| **Escalation FX Ambiguo** | ✅ | Condicionales timeout encapsuladas y estados controlados. | +| Entregable | Estado | Ubicación | Justificación | +| :--- | :---: | :--- | :--- | +| **1. Orquestador de transferencias**
Implementa un `TransferOrchestrator` que ejecute los siguientes pasos en orden:
`DebitWallet` → `CreditWallet` → `SettleFX` → `EmitReceipt`
*(Justificación técnica incluida en la sección ADR abajo)* | ✅ | `transfer.orchestrator.ts` coordina la máquina de estado. | Se optó por una máquina de estados almacenada en base de datos (Orquestación artesanal) para garantizar trazabilidad exacta, permitiendo reintentos granulares y control total sobre fallos externos. | +| **2. Compensación en caso de fallo** | ✅ | Emisión estructurada (en `transfer.orchestrator.ts` llamando a `reverseDebit()`). | Evita saldos fantasmas asegurando que la reversión sea idempotente y explícita frente a un fallo del sistema remoto (CreditWallet). | +| **3. Modelo de lectura CQRS** | ✅ | EventEmitter en `transfer-read-model.projector.ts` para separar lecturas. | Garantiza tiempos de respuesta de consulta menores a 500ms al no tener que interrogar las tablas transaccionales bloqueadas. | +| **4. Seguridad ante concurrencia** | ✅ | `SELECT FOR UPDATE` (`pessimistic_write`) y versionado en `wallet.service.ts`. | Previene que dos peticiones simultáneas consuman el mismo saldo evitando los clásicos descuidos que provocan cuentas en negativo. | +| **5. Evasión de Antipatrón Descalificador** | ✅ | Todo el código. Reversiones asíncronas entre métodos aislados. | **NO existe** una sola transacción distribuida en BD que abarque débitos y créditos a la vez. Cada operación tiene su propio `QueryRunner` aislado, confiando el éxito a las Sagas y a la consistencia eventual. | +| **6. Ampliación Opcional (FX Timeout)** | ✅ | Simulación en `fx.service.ts` y pausa en `transfer.orchestrator.ts`. | Se intercepta un timeout simulado pausando la saga en estado `FX_AMBIGUOUS`, obligando a revisión manual y probando que un timeout sin confirmar no dispara compensaciones. | diff --git a/challenge-2/docker-compose.yml b/challenge-2/docker-compose.yml index 36e7c03b..3cea8cc1 100644 --- a/challenge-2/docker-compose.yml +++ b/challenge-2/docker-compose.yml @@ -10,7 +10,7 @@ services: # Let DB creation be automatic for default db POSTGRES_DB: yape_transfer ports: - - "5432:5432" + - "5433:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: diff --git a/challenge-2/src/app.module.ts b/challenge-2/src/app.module.ts index d5296a63..378f20e0 100644 --- a/challenge-2/src/app.module.ts +++ b/challenge-2/src/app.module.ts @@ -19,7 +19,7 @@ import { TransferReadModel } from './read-model/read-model.entity'; TypeOrmModule.forRoot({ type: 'postgres', host: process.env.POSTGRES_HOST || 'localhost', - port: 5432, + port: process.env.POSTGRES_PORT ? parseInt(process.env.POSTGRES_PORT, 10) : 5433, username: process.env.POSTGRES_USER || 'postgres', password: process.env.POSTGRES_PASSWORD || 'password', database: process.env.POSTGRES_DB || 'yape_transfer', diff --git a/challenge-2/src/main.ts b/challenge-2/src/main.ts index f76bc8d9..91adf18d 100644 --- a/challenge-2/src/main.ts +++ b/challenge-2/src/main.ts @@ -3,6 +3,6 @@ import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); - await app.listen(process.env.PORT ?? 3000); + await app.listen(process.env.PORT ?? 3003); } bootstrap(); diff --git a/challenge-2/src/read-model/read-model.entity.ts b/challenge-2/src/read-model/read-model.entity.ts index 8f4d49e3..771abd8d 100644 --- a/challenge-2/src/read-model/read-model.entity.ts +++ b/challenge-2/src/read-model/read-model.entity.ts @@ -2,7 +2,7 @@ import { Entity, Column, PrimaryColumn, CreateDateColumn, UpdateDateColumn } fro @Entity('transfer_read_model') export class TransferReadModel { - @PrimaryColumn('uuid') + @PrimaryColumn() transferId: string; @Column() diff --git a/challenge-2/src/read-model/transfer-read-model.projector.ts b/challenge-2/src/read-model/transfer-read-model.projector.ts index aae2026e..5d65dfae 100644 --- a/challenge-2/src/read-model/transfer-read-model.projector.ts +++ b/challenge-2/src/read-model/transfer-read-model.projector.ts @@ -3,7 +3,7 @@ import { OnEvent } from '@nestjs/event-emitter'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { TransferReadModel } from './read-model.entity'; -import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent } from '../shared/events/transfer.events'; +import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent, TransferStepEvent } from '../shared/events/transfer.events'; @Injectable() export class TransferReadModelProjector { @@ -58,4 +58,17 @@ export class TransferReadModelProjector { lastEventVersion: event.version, }); } + + @OnEvent('TransferStepEvent') + async onStepUpdated(event: TransferStepEvent): Promise { + this.logger.debug(`Projecting TransferStepEvent for ${event.transferId}: ${event.step}`); + const existing = await this.repo.findOne({ where: { transferId: event.transferId } }); + if (existing && existing.lastEventVersion >= event.version) return; + + await this.repo.save({ + transferId: event.transferId, + status: `in_progress (${event.step})`, + lastEventVersion: event.version, + }); + } } diff --git a/challenge-2/src/shared/events/transfer.events.ts b/challenge-2/src/shared/events/transfer.events.ts index 5dfe1aa5..1f52a1ca 100644 --- a/challenge-2/src/shared/events/transfer.events.ts +++ b/challenge-2/src/shared/events/transfer.events.ts @@ -22,3 +22,11 @@ export class TransferFailedEvent { public readonly version: number, ) {} } + +export class TransferStepEvent { + constructor( + public readonly transferId: string, + public readonly step: string, + public readonly version: number, + ) {} +} diff --git a/challenge-2/src/transfer/transfer.entity.ts b/challenge-2/src/transfer/transfer.entity.ts index 6626b21d..71aa4fbc 100644 --- a/challenge-2/src/transfer/transfer.entity.ts +++ b/challenge-2/src/transfer/transfer.entity.ts @@ -11,7 +11,7 @@ export enum SagaStep { FAILED = 'FAILED', } -export interface TransferDto { +export class TransferDto { fromWalletId: string; toWalletId: string; amount: number; @@ -21,7 +21,7 @@ export interface TransferDto { @Entity('transfer_sagas') export class TransferSaga { - @PrimaryColumn('uuid') + @PrimaryColumn() transferId: string; @Column({ type: 'varchar', length: 30, default: SagaStep.STARTED }) diff --git a/challenge-2/src/transfer/transfer.orchestrator.ts b/challenge-2/src/transfer/transfer.orchestrator.ts index de6900fa..d3c4ffea 100644 --- a/challenge-2/src/transfer/transfer.orchestrator.ts +++ b/challenge-2/src/transfer/transfer.orchestrator.ts @@ -4,7 +4,7 @@ import { SagaRepository } from './saga.repository'; import { SagaStep, TransferDto } from './transfer.entity'; import { WalletService } from '../wallet/wallet.service'; import { FxService, TimeoutError } from '../fx/fx.service'; -import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent } from '../shared/events/transfer.events'; +import { TransferStartedEvent, TransferCompletedEvent, TransferFailedEvent, TransferStepEvent } from '../shared/events/transfer.events'; @Injectable() export class TransferOrchestrator { @@ -45,31 +45,39 @@ export class TransferOrchestrator { await this.walletService.debit(transferId, saga.dto.fromWalletId, saga.dto.amount); await this.sagaRepo.updateStep(transferId, SagaStep.DEBIT_COMPLETED); saga.step = SagaStep.DEBIT_COMPLETED; + this.eventEmitter.emit('TransferStepEvent', new TransferStepEvent(transferId, saga.step, saga.version + 1)); } if (saga.step === SagaStep.DEBIT_COMPLETED) { await this.walletService.credit(transferId, saga.dto.toWalletId, saga.dto.amount); await this.sagaRepo.updateStep(transferId, SagaStep.CREDIT_COMPLETED); saga.step = SagaStep.CREDIT_COMPLETED; + this.eventEmitter.emit('TransferStepEvent', new TransferStepEvent(transferId, saga.step, saga.version + 2)); } if (saga.step === SagaStep.CREDIT_COMPLETED) { await this.fxService.settle(transferId, saga.dto.fromCurrency, saga.dto.toCurrency, saga.dto.amount); + this.logger.log(`[SettleFX] Settled for transfer ${transferId}`); await this.sagaRepo.updateStep(transferId, SagaStep.FX_SETTLED); saga.step = SagaStep.FX_SETTLED; } if (saga.step === SagaStep.FX_SETTLED) { - // Receipt service emit o just completion + // EmitReceipt step + this.logger.log(`[EmitReceipt] Receipt Emitted for ${transferId}`); + await this.sagaRepo.updateStep(transferId, SagaStep.COMPLETED); saga.step = SagaStep.COMPLETED; - this.eventEmitter.emit('TransferCompletedEvent', new TransferCompletedEvent(transferId, saga.version + 4)); // +4 para simular incremento de version por steps + this.eventEmitter.emit('TransferCompletedEvent', new TransferCompletedEvent(transferId, saga.version + 4)); this.logger.log(`Transfer ${transferId} COMPLETED successfully.`); } } catch (error) { if (error instanceof TimeoutError) { // Escalation: FX state is ambiguous, manual review needed, DO NOT compensate. await this.sagaRepo.updateStep(transferId, SagaStep.FX_AMBIGUOUS); + const updatedSaga = await this.sagaRepo.findById(transferId); + this.eventEmitter.emit('TransferStepEvent', new TransferStepEvent(transferId, SagaStep.FX_AMBIGUOUS, updatedSaga?.version || 0)); + this.logger.error(`Transfer ${transferId} is in FX_AMBIGUOUS state. Needs manual intervention.`); return; } diff --git a/challenge-2/src/wallet/wallet.controller.ts b/challenge-2/src/wallet/wallet.controller.ts new file mode 100644 index 00000000..230e07a3 --- /dev/null +++ b/challenge-2/src/wallet/wallet.controller.ts @@ -0,0 +1,37 @@ +import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Wallet } from './wallet.entity'; + +@Controller('wallets') +export class WalletController { + constructor( + @InjectRepository(Wallet) + private readonly repo: Repository, + ) {} + + @Post() + async create(@Body() data: { id: string; balance: number; currency: string }) { + const wallet = this.repo.create(data); + return this.repo.save(wallet); + } + + @Post('seed') + async seed() { + await this.repo.save([ + { id: 'W-A', balance: 1000, currency: 'USD', version: 1 }, + { id: 'W-B', balance: 0, currency: 'USD', version: 1 }, + ]); + return { message: 'Wallets W-A and W-B seeded' }; + } + + @Get() + async findAll() { + return this.repo.find(); + } + + @Get(':id') + async findOne(@Param('id') id: string) { + return this.repo.findOne({ where: { id } }); + } +} diff --git a/challenge-2/src/wallet/wallet.entity.ts b/challenge-2/src/wallet/wallet.entity.ts index 026c8eec..bd95eae6 100644 --- a/challenge-2/src/wallet/wallet.entity.ts +++ b/challenge-2/src/wallet/wallet.entity.ts @@ -1,8 +1,8 @@ -import { Entity, Column, PrimaryGeneratedColumn, VersionColumn } from 'typeorm'; +import { Entity, Column, PrimaryGeneratedColumn, VersionColumn, PrimaryColumn } from 'typeorm'; @Entity('wallets') export class Wallet { - @PrimaryGeneratedColumn('uuid') + @PrimaryColumn() id: string; @Column({ type: 'decimal', precision: 12, scale: 2, default: 0 }) @@ -22,10 +22,10 @@ export class DebitRecord { @PrimaryGeneratedColumn('uuid') id: string; - @Column('uuid') + @Column() transferId: string; - @Column('uuid') + @Column() walletId: string; @Column('decimal', { precision: 12, scale: 2 }) @@ -40,7 +40,7 @@ export class ReversalRecord { @PrimaryGeneratedColumn('uuid') id: string; - @Column('uuid', { unique: true }) + @Column({ unique: true }) transferId: string; @Column('timestamp', { default: () => 'CURRENT_TIMESTAMP' }) diff --git a/challenge-2/src/wallet/wallet.module.ts b/challenge-2/src/wallet/wallet.module.ts index 60ef6f4f..4b2d794c 100644 --- a/challenge-2/src/wallet/wallet.module.ts +++ b/challenge-2/src/wallet/wallet.module.ts @@ -2,9 +2,11 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Wallet, DebitRecord, ReversalRecord } from './wallet.entity'; import { WalletService } from './wallet.service'; +import { WalletController } from './wallet.controller'; @Module({ imports: [TypeOrmModule.forFeature([Wallet, DebitRecord, ReversalRecord])], + controllers: [WalletController], providers: [WalletService], exports: [WalletService], }) diff --git a/challenge-2/src/wallet/wallet.service.ts b/challenge-2/src/wallet/wallet.service.ts index d04475db..46bc04ed 100644 --- a/challenge-2/src/wallet/wallet.service.ts +++ b/challenge-2/src/wallet/wallet.service.ts @@ -67,7 +67,7 @@ export class WalletService { }); await queryRunner.commitTransaction(); - this.logger.log(`Debited ${amount} from wallet ${walletId} for transfer ${transferId}`); + this.logger.log(`[DebitWallet] Debited ${amount} from wallet ${walletId} for transfer ${transferId}`); } catch (e) { await queryRunner.rollbackTransaction(); throw e; @@ -104,7 +104,7 @@ export class WalletService { .execute(); await queryRunner.commitTransaction(); - this.logger.log(`Credited ${amount} to wallet ${walletId} for transfer ${transferId}`); + this.logger.log(`[CreditWallet] Credited ${amount} to wallet ${walletId} for transfer ${transferId}`); } catch (e) { await queryRunner.rollbackTransaction(); throw e; From e719c1e89115e17b2f0b811b524bbcc1be4a5baf Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Thu, 2 Apr 2026 15:58:53 -0500 Subject: [PATCH 08/18] subiendo mejoras --- challenge-2/README.md | 243 ++++++++++++++++- challenge-2/all_scenarios.log | 495 ++++++++++++++++++++++++++++++++++ challenge-2/scenario_1.log | 12 + challenge-2/scenario_2.log | 22 ++ challenge-2/scenario_3.log | 131 +++++++++ challenge-2/scenario_4.log | 12 + challenge-2/server.log | 297 ++++++++++++++++++++ 7 files changed, 1210 insertions(+), 2 deletions(-) create mode 100644 challenge-2/all_scenarios.log create mode 100644 challenge-2/scenario_1.log create mode 100644 challenge-2/scenario_2.log create mode 100644 challenge-2/scenario_3.log create mode 100644 challenge-2/scenario_4.log create mode 100644 challenge-2/server.log diff --git a/challenge-2/README.md b/challenge-2/README.md index 44c4d803..1c12f315 100644 --- a/challenge-2/README.md +++ b/challenge-2/README.md @@ -94,6 +94,7 @@ docker-compose up -d # 2. Instalar y arrancar npm install +npm run build npm run start # 3. Sembrar billeteras de prueba (ID: W-A y W-B) @@ -114,15 +115,80 @@ A continuación se detallan las pruebas para validar los requerimientos técnico ```bash curl -X POST http://localhost:3003/transfers/T-001 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 100, "fromCurrency":"USD", "toCurrency":"USD"}' ``` + 2. **Consulta el modelo de lectura** (CQRS) de inmediato: ```bash curl http://localhost:3003/transfers/T-001 ``` - **Resultado:** El estado debe ser `completed` y la respuesta debe ser inmediata (< 500ms). 3. **Valida los saldos finales** (W-A: 900, W-B: 100): ```bash curl http://localhost:3003/wallets ``` +**Ejecución del Comando:** +```bash +curl -i -X POST http://localhost:3003/transfers/T-001 \ + -H "Content-Type: application/json" \ + -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 100, "fromCurrency":"USD", "toCurrency":"USD"}' +``` + +**Respuesta de la API:** +```json +{ + "message": "Transfer saga initiated", + "transferId": "T-001" +} +``` + +**Logs del Sistema (Orquestación):** +```text +[Nest] LOG [TransferOrchestrator] Resuming saga T-001 from step STARTED +[Nest] LOG [WalletService] [DebitWallet] Debited 100 from wallet W-A for transfer T-001 +[Nest] LOG [WalletService] [CreditWallet] Credited 100 to wallet W-B for transfer T-001 +[Nest] LOG [FxService] FX Settled successfully for transfer T-001 +[Nest] LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-001 +[Nest] LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-001 +[Nest] LOG [TransferOrchestrator] Transfer T-001 COMPLETED successfully. +``` + +**Validación CQRS (GET /transfers/T-001):** +```json +{ + "data":{ + "transferId":"T-001", + "status":"completed", + "fromWallet":"W-A", + "toWallet":"W-B", + "amount":"100.00", + "failureReason":null, + "lastEventVersion":5, + "createdAt":"2026-04-02T20:15:24.339Z", + "updatedAt":"2026-04-02T20:15:24.596Z" + }, + "meta":{ + "consistencyModel":"eventual", + "stalenessWindowMs":500, + "note":"Read model is updated via projected events. Status reflects last known state." + } +} +``` + +**Validacion de Wallets:** +```json +[ + { + "id":"W-A", + "balance":"900.00", + "currency":"USD", + "version":2 + }, + { + "id":"W-B", + "balance":"100.00", + "currency":"USD", + "version":2 + } +] +``` --- @@ -138,11 +204,68 @@ A continuación se detallan las pruebas para validar los requerimientos técnico curl http://localhost:3003/transfers/T-fail-1 ``` **Resultado:** `status: "failed"` y `failureReason: "Wallet not found"`. + 3. **Confirma la integridad** del saldo (W-A recupera sus 50 USD): ```bash curl http://localhost:3003/wallets ``` +#### Resultados de Ejecución Real (T-fail-1) + +**Comando:** +```bash +curl -i -X POST http://localhost:3003/transfers/T-fail-1 \ + -H "Content-Type: application/json" \ + -d '{"fromWalletId": "W-A", "toWalletId": "W-Z", "amount": 50, "fromCurrency":"USD", "toCurrency":"USD"}' +``` + +**Logs de Compensación:** +```text +[Nest] LOG [WalletService] [DebitWallet] Debited 50 from wallet W-A for transfer T-fail-1 +[Nest] WARN [TransferOrchestrator] Compensating saga T-fail-1 that failed at DEBIT_COMPLETED: Wallet not found +[Nest] WARN [WalletService] Reversed debit for transfer T-fail-1 +[Nest] DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-fail-1 +``` + +**Estado Final (CQRS):** +```json +{ + "data":{ + "transferId":"T-fail-1", + "status":"failed", + "fromWallet":"W-A", + "toWallet":"W-Z", + "amount":"50.00", + "failureReason":"Wallet not found", + "lastEventVersion":4, + "createdAt":"2026-04-02T20:28:02.746Z", + "updatedAt":"2026-04-02T20:28:02.862Z" + }, + "meta":{ + "consistencyModel":"eventual", + "stalenessWindowMs":500, + "note":"Read model is updated via projected events. Status reflects last known state." + } +} +``` + +**Validacion de Wallets:** +```json +[ + { + "id":"W-B", + "balance":"100.00", + "currency":"USD", + "version":2 + }, + { + "id":"W-A", + "balance":"900.00", + "currency":"USD", + "version":4 + } +] +``` --- ### 3. Seguridad ante concurrencia (Pessimistic Locking) @@ -158,6 +281,66 @@ A continuación se detallan las pruebas para validar los requerimientos técnico ``` 2. **Resultado esperado:** Debido al `SELECT FOR UPDATE` en `WalletService`, las peticiones se procesan en orden. Las primeras 6 agotan el saldo y la 7ma falla con `Insufficient funds`. **W-A** jamás bajará de 0. +3. **Confirma saldo final**: Donde W-A debe de ser 0 y W-B debe de ser 1000 + ```bash + curl http://localhost:3003/wallets + ``` + +#### Resultados de Ejecución Real (10 concurrent requests) + +**Prueba de Carga (10 requests x 150 USD c/u):** +```bash +for i in {1..10}; do + curl -X POST http://localhost:3003/transfers/T-CONC-$i \ + -H "Content-Type: application/json" \ + -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 150, "fromCurrency":"USD", "toCurrency":"USD"}' & +done +``` + +**Evidencia de Bloqueo Pesimista y Control de Saldo (Logs):** +```text +# Las primeras transacciones (6 x 150 = 900) se procesan secuencialmente gracias al lock +[Nest] LOG [TransferOrchestrator] Transfer T-CONC-5 COMPLETED successfully. +[Nest] LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-5 +query: UPDATE "transfer_read_model" SET "status" = 'completed' ... WHERE "transferId" = 'T-CONC-5' + +# Las transacciones excedentes fallan inmediatamente al detectar saldo 0.00 +# IDs Fallidos: T-CONC-6, T-CONC-7, T-CONC-8, T-CONC-9 +query: UPDATE "transfer_read_model" SET "status" = 'failed', + "failureReason" = 'Wallet W-A has insufficient funds. Balance: 0.00, Required: 150' + WHERE "transferId" = 'T-CONC-8' + +query: UPDATE "transfer_read_model" SET "status" = 'failed', + "failureReason" = 'Wallet W-A has insufficient funds. Balance: 0.00, Required: 150' + WHERE "transferId" = 'T-CONC-7' + +# ... (Repetido para T-CONC-6 y T-CONC-9) +``` + +**Balance Final Coherente:** +El sistema garantiza que el balance nunca sea negativo. Tras intentar debitar 1500 USD (10x150) de un saldo de 900 USD: +- **Éxito (6):** T-CONC-1, T-CONC-2, T-CONC-3, T-CONC-4, T-CONC-5, T-CONC-10. +- **Fallido (4):** T-CONC-6, T-CONC-7, T-CONC-8, T-CONC-9 (Saldo 0.00). + +El balance de **W-A** quedó exactamente en **0.00**, rechazando las peticiones excedentes sin sobregiros. +**Validacion de Wallets:** +```json +[ + { + "id":"W-B", + "balance":"1000.00", + "currency":"USD", + "version":8 + }, + { + "id":"W-A", + "balance":"0.00", + "currency":"USD", + "version":10 + } +] +``` + --- ### 4. Ampliación opcional: FX State Ambiguo (Timeout) @@ -165,7 +348,7 @@ A continuación se detallan las pruebas para validar los requerimientos técnico 1. **Simula un Timeout** de red (usando la palabra `timeout` en el ID): ```bash - curl -X POST http://localhost:3003/transfers/T-timeout-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-A", "toWalletId": "W-B", "amount": 10, "fromCurrency":"USD", "toCurrency":"PEN"}' + curl -X POST http://localhost:3003/transfers/T-timeout-1 -H "Content-Type: application/json" -d '{"fromWalletId": "W-B", "toWalletId": "W-A", "amount": 10, "fromCurrency":"USD", "toCurrency":"PEN"}' ``` 2. **Verifica el estado de excepción:** ```bash @@ -173,6 +356,62 @@ A continuación se detallan las pruebas para validar los requerimientos técnico ``` **Resultado:** `status: "in_progress (FX_AMBIGUOUS)"`. Los fondos quedan reservados hasta intervención manual. +3. **Confirma la integridad** del saldo (W-B debe de tener 990 y W-A debe de tener 10) + ```bash + curl http://localhost:3003/wallets + ``` + +#### Resultados de Ejecución Real (T-timeout-1) + +**Logs de Escalamiento:** +```text +[Nest] LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-timeout-1 +[Nest] LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-timeout-1 +[Nest] WARN [FxService] FX provider timeout for transfer T-timeout-1 +[Nest] ERROR [TransferOrchestrator] Transfer T-timeout-1 is in FX_AMBIGUOUS state. Needs manual intervention. +query: UPDATE "transfer_sagas" SET "step" = 'FX_AMBIGUOUS' ... +``` + +**Estado Final de la transferencia:** +```json +{ + "data":{ + "transferId":"T-timeout-1", + "status":"in_progress (FX_AMBIGUOUS)", + "fromWallet":"W-B", + "toWallet":"W-A", + "amount":"10.00", + "failureReason":null, + "lastEventVersion":4, + "createdAt":"2026-04-02T20:50:26.074Z", + "updatedAt":"2026-04-02T20:50:26.691Z" + }, + "meta":{ + "consistencyModel":"eventual", + "stalenessWindowMs":500, + "note":"Read model is updated via projected events. Status reflects last known state." + } +} +``` + +**Validacion de Wallets:** +```json +[ + { + "id":"W-B", + "balance":"990.00", + "currency":"USD", + "version":9 + }, + { + "id":"W-A", + "balance":"10.00", + "currency":"USD", + "version":11 + } +] +``` + --- He diseñado esta orquestación tomando decisiones que priorizan control y mitigación de fallos sobre un simple MVP: diff --git a/challenge-2/all_scenarios.log b/challenge-2/all_scenarios.log new file mode 100644 index 00000000..89578cac --- /dev/null +++ b/challenge-2/all_scenarios.log @@ -0,0 +1,495 @@ + +> challenge-2@0.0.1 start:dev +> nest start --watch + +[15:01:58] Starting compilation in watch mode... + +[15:02:03] Found 0 errors. Watching for file changes. + +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [NestFactory] Starting Nest application... +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +73ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] FxModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] AppModule dependencies initialized +1ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms +query: SELECT version() +query: SELECT * FROM current_schema() +query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" +query: START TRANSACTION +query: SELECT * FROM current_schema() +query: SELECT * FROM current_database() +query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' +query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" +(node:3588) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. +(Use `node --trace-deprecation ...` to show where the warning was created) +query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +142ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] WalletModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TransferModule dependencies initialized +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] AppController {/}: +4ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/, GET} route +2ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] TransferController {/transfers}: +1ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] WalletController {/wallets}: +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets, POST} route +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets, GET} route +1ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +0ms +[Nest] 3588 - 02/04/2026, 15:02:05  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] +query: START TRANSACTION +query: INSERT INTO "wallets"("id", "balance", "currency", "version") VALUES ($1, $2, $3, $4), ($5, $6, $7, $8) RETURNING "balance", "version" -- PARAMETERS: ["W-A",1000,"USD",1,"W-B",0,"USD",1] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-001"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-001","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":100,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-001 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] +query: START TRANSACTION +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-001","pending","W-A","W-B",100,1] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: UPDATE "wallets" SET "balance" = "balance" - 100, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",1,100] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-001","W-A",100] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:50  LOG [WalletService] [DebitWallet] Debited 100 from wallet W-A for transfer T-001 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-001"] +[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-001: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] +query: UPDATE "wallets" SET "balance" = "balance" + 100, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-001"] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:50  LOG [WalletService] [CreditWallet] Credited 100 to wallet W-B for transfer T-001 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-001"] +[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-001: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-001 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] +[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-001 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-001"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-001"] +[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-001 +[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] Transfer T-001 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-001"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-fail-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-Z\",\"amount\":50,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-fail-1 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] +query: START TRANSACTION +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-fail-1","pending","W-A","W-Z",50,1] +query: UPDATE "wallets" SET "balance" = "balance" - 50, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,50] +query: COMMIT +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-fail-1","W-A",50] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:52  LOG [WalletService] [DebitWallet] Debited 50 from wallet W-A for transfer T-fail-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-fail-1"] +[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-fail-1: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-Z"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] +query: ROLLBACK +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:52  WARN [TransferOrchestrator] Compensating saga T-fail-1 that failed at DEBIT_COMPLETED: Wallet not found +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-fail-1"] +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-fail-1"] +query: START TRANSACTION +query: COMMIT +query: SELECT "ReversalRecord"."id" AS "ReversalRecord_id", "ReversalRecord"."transferId" AS "ReversalRecord_transferId", "ReversalRecord"."createdAt" AS "ReversalRecord_createdAt" FROM "reversal_records" "ReversalRecord" WHERE (("ReversalRecord"."transferId" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["T-fail-1"] +query: SELECT "DebitRecord"."id" AS "DebitRecord_id", "DebitRecord"."transferId" AS "DebitRecord_transferId", "DebitRecord"."walletId" AS "DebitRecord_walletId", "DebitRecord"."amount" AS "DebitRecord_amount", "DebitRecord"."createdAt" AS "DebitRecord_createdAt" FROM "debit_records" "DebitRecord" WHERE (("DebitRecord"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: UPDATE "wallets" SET "balance" = "balance" + 50.00, "version" = "version" + 1 WHERE "id" = $1 -- PARAMETERS: ["W-A"] +query: INSERT INTO "reversal_records"("id", "transferId", "createdAt") VALUES (DEFAULT, $1, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-fail-1"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:52  WARN [WalletService] Reversed debit for transfer T-fail-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet not found","T-fail-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-fail-1 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet not found",4,"T-fail-1"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-1 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",4,200] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-1","pending","W-A","W-B",200,1] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-1","W-A",200] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-1"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-1: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] +query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] +query: START TRANSACTION +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-1"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-1: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-1 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-1"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-2","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-3","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +query: START TRANSACTION +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-1"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-1"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-3 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-2 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-1 +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-1 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: START TRANSACTION +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-3","pending","W-A","W-B",200,1] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-2","pending","W-A","W-B",200,1] +query: START TRANSACTION +query: COMMIT +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-1"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: START TRANSACTION +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-4","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",5,200] +query: COMMIT +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-3","W-A",200] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-4 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-3 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-3"] +query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",6,200] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-2","W-A",200] +query: START TRANSACTION +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-4","pending","W-A","W-B",200,1] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-3: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] +query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",3] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-3"] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-2 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-2"] +query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",7,200] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-4","W-A",200] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-5","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-3 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-3"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-2: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-4 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-4"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-5 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",4] +query: START TRANSACTION +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-3: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-3 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-3"] +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-2"] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-5","pending","W-A","W-B",200,1] +query: ROLLBACK +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-5 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-5"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-4: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-3 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-3"] +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-3"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-2 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-2"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] +query: COMMIT +query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-5"] +query: START TRANSACTION +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-4"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] +query: COMMIT +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-7","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-2: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-2 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-2"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-3 +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-3 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-7 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-5 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-2 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-2"] +query: START TRANSACTION +query: START TRANSACTION +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",5] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-2"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-2 +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-2 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-3"] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-7","pending","W-A","W-B",200,1] +query: ROLLBACK +query: COMMIT +query: START TRANSACTION +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] +query: START TRANSACTION +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-7 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-7"] +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-6","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-4 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-4"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-5"] +query: START TRANSACTION +query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-7"] +query: COMMIT +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-8","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-4: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-4 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-4"] +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-6 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-4 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-4"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-7 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-8 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] +query: START TRANSACTION +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-4 +[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-4 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-4"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: START TRANSACTION +query: ROLLBACK +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-6","pending","W-A","W-B",200,1] +query: COMMIT +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-7"] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-8","pending","W-A","W-B",200,1] +[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-6 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-6"] +query: ROLLBACK +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-4"] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-8 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-8"] +query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-6"] +query: COMMIT +query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-8"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-6 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-8 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] +query: START TRANSACTION +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-6"] +query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-8"] +query: COMMIT +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-timeout-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-timeout-1 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",8,10] +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-timeout-1","pending","W-A","W-B",10,1] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-timeout-1","W-A",10] +query: COMMIT +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:03:00  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-timeout-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-timeout-1"] +[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] +query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",6] +query: START TRANSACTION +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-timeout-1"] +[Nest] 3588 - 02/04/2026, 15:03:00  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-timeout-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-timeout-1"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: CREDIT_COMPLETED +[Nest] 3588 - 02/04/2026, 15:03:00  LOG [FxService] Settling FX for transfer T-timeout-1 - 10 USD to PEN +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-timeout-1"] +query: COMMIT +[Nest] 3588 - 02/04/2026, 15:03:00  WARN [FxService] FX provider timeout for transfer T-timeout-1 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_AMBIGUOUS","T-timeout-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: FX_AMBIGUOUS +[Nest] 3588 - 02/04/2026, 15:03:00  ERROR [TransferOrchestrator] Transfer T-timeout-1 is in FX_AMBIGUOUS state. Needs manual intervention. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (FX_AMBIGUOUS)",4,"T-timeout-1"] +query: COMMIT +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" diff --git a/challenge-2/scenario_1.log b/challenge-2/scenario_1.log new file mode 100644 index 00000000..4edfa796 --- /dev/null +++ b/challenge-2/scenario_1.log @@ -0,0 +1,12 @@ +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] diff --git a/challenge-2/scenario_2.log b/challenge-2/scenario_2.log new file mode 100644 index 00000000..b07c5bc9 --- /dev/null +++ b/challenge-2/scenario_2.log @@ -0,0 +1,22 @@ +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] diff --git a/challenge-2/scenario_3.log b/challenge-2/scenario_3.log new file mode 100644 index 00000000..e18b5937 --- /dev/null +++ b/challenge-2/scenario_3.log @@ -0,0 +1,131 @@ +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/, GET} route +4ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferController {/transfers}: +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] +query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-9","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-9 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: START TRANSACTION +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-9","pending","W-A","W-B",10,1] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",1,10] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] +query: COMMIT +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-9","W-A",10] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-10 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-9"] +query: START TRANSACTION +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","pending","W-A","W-B",10,1] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-9"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,10] +query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-10","W-A",10] +query: COMMIT +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-10"] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: CREDIT_COMPLETED +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-9 - 10 USD to PEN +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-9"] +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: CREDIT_COMPLETED +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-10 - 10 USD to PEN +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-9 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-9 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-9 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-10 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] +query: COMMIT +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] diff --git a/challenge-2/scenario_4.log b/challenge-2/scenario_4.log new file mode 100644 index 00000000..946004cb --- /dev/null +++ b/challenge-2/scenario_4.log @@ -0,0 +1,12 @@ +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] +query: COMMIT +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] diff --git a/challenge-2/server.log b/challenge-2/server.log new file mode 100644 index 00000000..37e7d928 --- /dev/null +++ b/challenge-2/server.log @@ -0,0 +1,297 @@ + +> challenge-2@0.0.1 start:dev +> nest start --watch + +[15:04:16] Starting compilation in watch mode... + +[15:04:23] Found 0 errors. Watching for file changes. + +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [NestFactory] Starting Nest application... +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] TypeOrmModule dependencies initialized +93ms +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] FxModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] AppModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms +query: SELECT version() +query: SELECT * FROM current_schema() +query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" +query: START TRANSACTION +query: SELECT * FROM current_schema() +query: SELECT * FROM current_database() +query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' +query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records')) +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records')) +query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" +(node:21276) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. +(Use `node --trace-deprecation ...` to show where the warning was created) +query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' +query: COMMIT +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +168ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] WalletModule dependencies initialized +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TransferModule dependencies initialized +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] AppController {/}: +8ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/, GET} route +4ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferController {/transfers}: +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] +query: SELECT "TransferSaga"."transferId" A[15:53:40] File change detected. Starting incremental compilation... + +[15:53:41] Found 0 errors. Watching for file changes. + +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +91ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms +query: SELECT version() +query: SELECT * FROM current_schema() +query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" +query: START TRANSACTION +query: SELECT * FROM current_schema() +query: SELECT * FROM current_database() +query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' +query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" +(node:22232) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. +(Use `node --trace-deprecation ...` to show where the warning was created) +query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' +query: COMMIT +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +188ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +5ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 22232 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" +" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] +query: COMMIT +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-9","W-A",10] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-10 +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-9"] +query: START TRANSACTION +query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","pending","W-A","W-B",10,1] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: COMMIT +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-9"] +query: COMMIT +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: START TRANSACTION +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] +query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,10] +query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] +query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-10","W-A",10] +query: COMMIT +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-10"] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: CREDIT_COMPLETED +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-9 - 10 USD to PEN +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: DEBIT_COMPLETED +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-9"] +query: COMMIT +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: CREDIT_COMPLETED +[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-10 - 10 USD to PEN +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-9 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-9 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-9 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-9 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-10 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-9"] +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-10 +query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] +query: COMMIT +[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 +[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] +query: START TRANSACTION +query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] +query: COMMIT +query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] +query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] +[15:53:40] File change detected. Starting incremental compilation... + +[15:53:41] Found 0 errors. Watching for file changes. + +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +130ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms +query: SELECT version() +query: SELECT * FROM current_schema() +query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" +query: START TRANSACTION +query: SELECT * FROM current_schema() +query: SELECT * FROM current_database() +query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' +query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" +(node:21832) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. +(Use `node --trace-deprecation ...` to show where the warning was created) +query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' +query: COMMIT +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +172ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +3ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +1ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +0ms +[Nest] 21832 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms +[Nest] 21832 - 02/04/2026, 15:53:43  ERROR [NestApplication] Error: listen EADDRINUSE: address already in use :::3003 +3ms +node:net:1940 + const ex = new UVExceptionWithHostPort(err, 'listen', address, port); + ^ + +Error: listen EADDRINUSE: address already in use :::3003 + at Server.setupListenHandle [as _listen2] (node:net:1940:16) + at listenInCluster (node:net:1997:12) + at Server.listen (node:net:2102:7) + at ExpressAdapter.listen (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\platform-express\adapters\express-adapter.js:127:32) + at c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\core\nest-application.js:188:30 + at new Promise () + at NestApplication.listen (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\core\nest-application.js:178:16) + at process.processTicksAndRejections (node:internal/process/task_queues:105:5) + at async bootstrap (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\src\main.ts:6:3) { + code: 'EADDRINUSE', + errno: -4091, + syscall: 'listen', + address: '::', + port: 3003 +} + +Node.js v22.20.0 +[15:53:40] File change detected. Starting incremental compilation... + +[15:53:41] Found 0 errors. Watching for file changes. + +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +91ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms +query: SELECT version() +query: SELECT * FROM current_schema() +query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" +query: START TRANSACTION +query: SELECT * FROM current_schema() +query: SELECT * FROM current_database() +query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' +query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) +query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" +(node:20420) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. +(Use `node --trace-deprecation ...` to show where the warning was created) +query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' +query: COMMIT +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +182ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +4ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms +[Nest] 20420 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms From 01503dbace330be9f8eb620e931084be526f7f2d Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Thu, 2 Apr 2026 16:03:50 -0500 Subject: [PATCH 09/18] =?UTF-8?q?Aclaraci=C3=B3n=20del=20failure=20reason?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- challenge-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/challenge-2/README.md b/challenge-2/README.md index 1c12f315..2c0a7cea 100644 --- a/challenge-2/README.md +++ b/challenge-2/README.md @@ -372,7 +372,7 @@ El balance de **W-A** quedó exactamente en **0.00**, rechazando las peticiones query: UPDATE "transfer_sagas" SET "step" = 'FX_AMBIGUOUS' ... ``` -**Estado Final de la transferencia:** +**Estado Final de la transferencia: failureReason es null debido a que no se tiene certeza si acabó bien la transacción** ```json { "data":{ From 6225fa631ef41185c15b89c59f352f43639c2cf5 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Thu, 2 Apr 2026 23:40:54 -0500 Subject: [PATCH 10/18] Agregando mejoras al challenge 1 --- challenge-1/README.md | 480 +++++++++++++++++++++++++++------ challenge-2/all_scenarios.log | 495 ---------------------------------- challenge-2/scenario_1.log | 12 - challenge-2/scenario_2.log | 22 -- challenge-2/scenario_3.log | 131 --------- challenge-2/scenario_4.log | 12 - challenge-2/server.log | 297 -------------------- challenge-3/README.md | 2 +- 8 files changed, 392 insertions(+), 1059 deletions(-) delete mode 100644 challenge-2/all_scenarios.log delete mode 100644 challenge-2/scenario_1.log delete mode 100644 challenge-2/scenario_2.log delete mode 100644 challenge-2/scenario_3.log delete mode 100644 challenge-2/scenario_4.log delete mode 100644 challenge-2/server.log diff --git a/challenge-1/README.md b/challenge-1/README.md index 98b109ec..7e866c61 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -125,6 +125,7 @@ docker-compose up -d **Aseguro** tener Node.js (v18+) y estar ubicado en la carpeta del challenge. ```bash npm install +npm run build ``` 3. **Ejecutar módulos en diferentes terminales** @@ -183,121 +184,422 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec ## Cómo probar y validar cada escenario paso a paso -### 1. Preparar el Entorno y Levantar Microservicios -Antes de realizar pruebas, **me aseguro** de tener la infraestructura (Docker) y los 3 microservicios corriendo para observar el flujo en tiempo real. - -**Paso A: Infraestructura (Terminal 1)** -```bash -docker-compose up -d -``` - -**Paso B: Levantar Microservicios (Terminales 2, 3 y 4)** -**Inicio** los 3 procesos **antes** de enviar la petición para observar el procesamiento asíncrono inmediato: -- **API:** `npm run start api` (Puerto 3001) -- **Relay:** `npm run start relay` (Escanea Outbox cada 10s) -- **Consumers:** `npm run start consumers` (Escucha Kafka) +### 1. Transactional Outbox (Garantía de Entrega Atómica) +**Meta:** Validar que `PaymentService` escribe simultáneamente el pago y su evento en una transacción local, y que el broker Kafka **nunca** es invocado dentro de dicha transacción. + +* **Paso A (Aislamiento del Relay):** Apaga el servicio de Relay si está corriendo para ver el estado intermedio. + + Proceso detenido: + ```bash + [Nest] 15772 - 02/04/2026, 22:21:20 DEBUG [RelayService] Running Outbox Relay... + [Nest] 15772 - 02/04/2026, 22:21:25 DEBUG [RelayService] Running Outbox Relay... + Franklin@DESKTOP-HJPALP7 MINGW64 ~/Documents/GitHub/code-challenge-tl/challenge-1 (challenge/franklinbarrios) + ``` +* **Paso B (Crear Pago):** Envía un pago nuevo. + ```bash + curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 500, \"currency\": \"USD\", \"country\": \"PE\"}" + ``` + + Respuesta del API: + ```json + { + "id":"cbe445b6-e866-4140-aeac-9a210a60cedb", + "amount":500, + "currency":"USD", + "country":"PE", + "status":"PENDING", + "createdAt":"2026-04-03T08:23:17.022Z", + "updatedAt":"2026-04-03T08:23:17.022Z" + } + ``` +* **Paso C (Validar DB):** Verifica que el pago está `PENDING` y el outbox tiene el evento listo pero no enviado. + ```bash + docker exec -it challenge_db psql -U user -d payments_db -c "SELECT status, id FROM payments; SELECT status, \"aggregateId\" FROM outbox_events WHERE status = 'PENDING';" + ``` + + Respuesta: + ``` + status | id + ---------+-------------------------------------- + PENDING | cbe445b6-e866-4140-aeac-9a210a60cedb + (1 row) + + status | aggregateId + ---------+-------------------------------------- + PENDING | cbe445b6-e866-4140-aeac-9a210a60cedb + (1 row) + ``` +* **Paso D (Encender Relay):** Al iniciar `npm run start relay`, observa cómo captura el evento, lo publica y marca como `SENT`. + + Proceso iniciado: + ```bash + [Nest] 14540 - 02/04/2026, 22:35:05 DEBUG [RelayService] Running Outbox Relay... + [Nest] 14540 - 02/04/2026, 22:35:05 LOG [RelayService] Found 1 pending events to relay + [Nest] 14540 - 02/04/2026, 22:35:05 LOG [RelayService] Publishing to namespaced topic: pe.payment.created.v1 + [Nest] 14540 - 02/04/2026, 22:35:05 LOG [RelayService] Relayed event fdedbf7c-73c8-4f28-adcf-64d5137fce31 successfully + [Nest] 14540 - 02/04/2026, 22:35:10 DEBUG [RelayService] Running Outbox Relay... + ``` + + Validacion en base de datos que se cambó a SENT: + ```bash + docker exec -it challenge_db psql -U user -d payments_db -c "SELECT status, id FROM payments; SELECT status, \"aggregateId\" FROM outbox_events;" + ``` + + Respuesta: + ``` + status | id + ---------+-------------------------------------- + SETTLED | cbe445b6-e866-4140-aeac-9a210a60cedb + (1 row) + + status | aggregateId + --------+-------------------------------------- + SENT | cbe445b6-e866-4140-aeac-9a210a60cedb + (1 row) + ``` +* **Aclaración de Solidez:** El relay es un **proceso independiente** (Worker), no un `setInterval` en la API. Si el relay falla entre la publicación y la actualización del estado en DB, el sistema simplemente reintentará el envío (garantía *at-least-once*), la cual es mitigada por la idempotencia del consumidor. --- -### 2. Crear un Pago y Verificar Outbox (Garantía Atómica) -**Envío** un pago a la API. En este punto, la API guarda el Pago y el Evento en una misma transacción de BD. - -**Ejecutar Petición:** -```bash -curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500, \"currency\": \"USD\", \"country\": \"PE\"}" -``` - -**Validar Inserción en Outbox:** -Para comprobar que el registro se creó con estado `PENDING` antes de ser procesado por el Relay, **ejecuto**: -```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", \"aggregateId\", status, \"eventType\" FROM outbox_events;" -``` -*Si el Relay ya lo procesó, verás el estado como `SENT`.* +### 2. Consumidores Idempotentes +**Meta:** Validar que los módulos `FraudConsumer` y `LedgerConsumer` no producen efectos secundarios ante mensajes duplicados. + +* **Paso A (Verificar registro inicial):** Tras procesar un pago, consulta la tabla de eventos procesados. + ```bash + docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", consumer FROM processed_events;" + ``` + + Respuesta: + ``` + eventId | consumer + --------------------------------------+---------------- + cbe445b6-e866-4140-aeac-9a210a60cedb | FraudConsumer + cbe445b6-e866-4140-aeac-9a210a60cedb | LedgerConsumer + (2 rows) + ``` +* **Paso B (Simular Duplicado):** Puedes forzar el re-procesamiento (por configuración de Kafka o re-enviando el mismo `eventId` manualmente al tópico). + + **Comando manual (vía Kafka CLI):** + ```bash + # Sustituye cbe445b6-e866-4140-aeac-9a210a60cedb por el ID obtenido en el Paso A + echo 'cbe445b6-e866-4140-aeac-9a210a60cedb:{"id":"cbe445b6-e866-4140-aeac-9a210a60cedb", "amount":500, "currency":"USD", "country":"PE"}' | docker exec -i kafka kafka-console-producer --bootstrap-server localhost:9092 --topic pe.payment.created.v1 --property "parse.key=true" --property "key.separator=:" + ``` +* **Resultado esperado:** En los logs de `apps/consumers`, verás: `[FraudConsumer] Event already processed. ...`. No habrá nuevos registros en `processed_events` ni actualizaciones duplicadas en la Saga. + + Respuesta Consumers: + ``` + [Nest] 13264 - 02/04/2026, 22:49:28 LOG [DispatcherController] Payment created event received by Dispatcher + [Nest] 13264 - 02/04/2026, 22:49:28 LOG [FraudConsumer] Event cbe445b6-e866-4140-aeac-9a210a60cedb already processed by FraudConsumer + [Nest] 13264 - 02/04/2026, 22:49:28 LOG [LedgerConsumer] Event cbe445b6-e866-4140-aeac-9a210a60cedb already processed by LedgerConsum er + ``` + + **Validar en DB (No hay duplicados):** + ```bash + docker exec -it challenge_db psql -U user -d payments_db -c "SELECT \"eventId\", consumer FROM processed_events WHERE \"eventId\" = 'cbe445b6-e866-4140-aeac-9a210a60cedb';" + ``` + + Respuesta: + ``` + eventId | consumer + --------------------------------------+---------------- + cbe445b6-e866-4140-aeac-9a210a60cedb | FraudConsumer + cbe445b6-e866-4140-aeac-9a210a60cedb | LedgerConsumer + (2 rows) + ``` +* **Aclaración de Solidez:** Las claves de idempotencia residen en el **lado del consumidor** (clave compuesta: `eventId` + `consumer_name`), asegurando que cada lógica de negocio sea "self-contained" y resiliente. --- -### 3. Verificar el flujo Relay -> Kafka -> Consumers -**Observo** los logs en las terminales donde levantaste los servicios en el Paso 1: - -1. **Relay Terminal**: Verás `[RelayService] Relayed event successfully` indicando que el registro cambió a `SENT` y se publicó en Kafka. -2. **Consumers Terminal**: El `DispatcherController` recibirá el mensaje y verás la coordinación de la Saga: - - `[FraudConsumer] Fraud scoring passed...` - - `[LedgerConsumer] Ledger entry written...` - - `[SagaConsumer] Both consumers processed... Settling payment.` +### 3. Manejador de DLT (Dead Letter Topic) +**Meta:** Validar que un fallo crítico (ej. fraude rechazado por monto) deriva en una compensación y no se pierde silenciosamente. + +* **Paso A (Disparar Fallo):** Envía un pago con monto superior a 1,000,000. + ```bash + curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" + ``` + + Respuesta: + ```json + { + "id":"28de18ea-7124-46a4-acde-d06625c71f0f", + "amount":1500000, + "currency":"USD", + "country":"PE", + "status":"PENDING", + "createdAt":"2026-04-03T09:00:20.455Z", + "updatedAt":"2026-04-03T09:00:20.455Z" + } + ``` +* **Paso B (Observar logs):** Verás que el `FraudConsumer` agota sus reintentos locales y emite un evento al DLT. + + Respuesta: + ``` + [Nest] 13264 - 02/04/2026, 23:00:25 LOG [DispatcherController] Payment created event received by Dispatcher + [Nest] 13264 - 02/04/2026, 23:00:25 LOG [FraudConsumer] Processing fraud scoring for payment 28de18ea-7124-46a4-acde-d06625c71f0f + [Nest] 13264 - 02/04/2026, 23:00:25 ERROR [FraudConsumer] Error processing 28de18ea-7124-46a4-acde-d06625c71f0f in Fraud: Fraud check failed: amount too high. + [Nest] 13264 - 02/04/2026, 23:00:25 WARN [FraudConsumer] Sending to DLT -> pe.payment.created.v1.dlt + [Nest] 13264 - 02/04/2026, 23:00:25 LOG [LedgerConsumer] Processing ledger entry (double-entry write) for payment 28de18ea-7124-46a4-acde-d06625c71f0f + [Nest] 13264 - 02/04/2026, 23:00:25 LOG [LedgerConsumer] Ledger entry written for payment 28de18ea-7124-46a4-acde-d06625c71f0f + [Nest] 13264 - 02/04/2026, 23:00:25 LOG [DispatcherController] Fraud and Ledger evaluations initiated + [Nest] 13264 - 02/04/2026, 23:00:25 WARN [SagaConsumer] Saga reacting to failure for payment 28de18ea-7124-46a4-acde-d06625c71f0f + ``` +* **Paso C (Validar Compensación):** El `SagaConsumer` detecta la señal de fallo y actualiza el pago a `FAILED`. + ```bash + docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments WHERE amount > 1000000;" + ``` + + Respuesta: + ``` + id | status | amount + --------------------------------------+--------+------------ + 28de18ea-7124-46a4-acde-d06625c71f0f | FAILED | 1500000.00 + (1 row) + ``` --- -### 4. Validación de Consistencia Eventual (API y DB) - -**Consultar Estado Final vía API:** -```bash -curl -X GET http://localhost:3001/payments/{TU-PAYMENT-ID} -``` -**Resultado esperado:** `"status": "SETTLED"`. - -**Verificar Idempotencia en DB:** -**Compruebo** que los consumidores marcaron el procesamiento. Mis consumidores usan el **ID del pago** como clave de idempotencia: - -```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT pe.\"eventId\" as \"paymentId\", pe.consumer, pe.\"processedAt\" FROM processed_events pe WHERE pe.\"eventId\" = '{TU-PAYMENT-ID}';" -``` - -```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount, country FROM payments;" -``` +### 4. Endpoint de Consulta de Estado +**Meta:** Validar que el API refleja honestamente la consistencia eventual. + +* **Paso A (Aislamiento):** Detén el servicio de Relay (`apps/relay`) antes de realizar la prueba. +* **Paso B (Consulta Inicial - Consistencia Eventual):** Crea un pago y realiza un `GET` inmediatamente. + ```bash + curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 150, \"currency\": \"USD\", \"country\": \"PE\"}" + ``` + + Respuesta pago: + ```json + { + "id":"ef407a6d-ffb5-42ce-a739-2f2d44230e79", + "amount":150, + "currency":"USD", + "country":"PE", + "status":"PENDING", + "createdAt":"2026-04-03T09:12:45.975Z", + "updatedAt":"2026-04-03T09:12:45.975Z" + } + ``` + + Llamando a la consulta del pago: + ```bash + curl -X GET http://localhost:3001/payments/ef407a6d-ffb5-42ce-a739-2f2d44230e79 + ``` + **Respuesta (Estado Pendiente):** + ```json + { + "data":{ + "paymentId":"ef407a6d-ffb5-42ce-a739-2f2d44230e79", + "status":"PENDING", + "amount":"150.00", + "currency":"USD" + }, + "meta":{ + "consistencyModel":"eventual", + "note":"Status may be pending while downstream consumers are processing." + } + } + ``` +* **Paso C (Activación y Procesamiento):** Inicia el Relay `npm run start relay`. Observa en los logs cómo el evento viaja de Outbox -> Kafka -> Consumers -> Saga. + + Salida Outbox a Kafka: + ``` + Outbox Relay Worker started + [Nest] 18000 - 02/04/2026, 23:15:55 DEBUG [RelayService] Running Outbox Relay... + [Nest] 18000 - 02/04/2026, 23:15:55 LOG [RelayService] Found 1 pending events to relay + [Nest] 18000 - 02/04/2026, 23:15:55 LOG [RelayService] Publishing to namespaced topic: pe.payment.created.v1 + [Nest] 18000 - 02/04/2026, 23:15:55 LOG [RelayService] Relayed event fa528efc-a61e-4de7-b253-385fd1ed5b1f successfully + [Nest] 18000 - 02/04/2026, 23:16:00 DEBUG [RelayService] Running Outbox Relay... + ``` + + Salida Consumer Kafka a Saga: + ``` + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [DispatcherController] Payment created event received by Dispatcher + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [FraudConsumer] Processing fraud scoring for payment ef407a6d-ffb5-42ce-a739-2f2d44230e79 + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [LedgerConsumer] Processing ledger entry (double-entry write) for payment ef407a6d-ffb5-42ce-a739-2f2d44230e79 + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [FraudConsumer] Fraud scoring passed for payment ef407a6d-ffb5-42ce-a739-2f2d44230e79 + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [LedgerConsumer] Ledger entry written for payment ef407a6d-ffb5-42ce-a739-2f2d44230e79 + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [DispatcherController] Fraud and Ledger evaluations initiated + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [SagaConsumer] Both consumers processed for ef407a6d-ffb5-42ce-a739-2f2d44230e79. Settling payment. + [Nest] 13264 - 02/04/2026, 23:15:55 LOG [SagaConsumer] Both consumers processed for ef407a6d-ffb5-42ce-a739-2f2d44230e79. Settling payment. + ``` +* **Paso D (Consulta Final - Consistencia Alcanzada):** Consulta el estado una vez que la Saga haya terminado. + ```bash + curl -X GET http://localhost:3001/payments/ef407a6d-ffb5-42ce-a739-2f2d44230e79 + ``` + **Respuesta (Estado Final):** + ```json + { + "data":{ + "paymentId":"ef407a6d-ffb5-42ce-a739-2f2d44230e79", + "status":"SETTLED", + "amount":"150.00", + "currency":"USD" + }, + "meta":{ + "consistencyModel":"eventual", + "note":"Status may be pending while downstream consumers are processing." + } + } + ``` --- -### 5. Escenario Negativo (DLT y Reintentos) -Para forzar un fallo de fraude y ver el flujo hacia la **Dead Letter Queue (DLT)**, envío un pago con un monto mayor a 1,000,000: +### Ampliación Opcional implementada: Namespacing por País +He implementado un sistema de tópicos particionados lógicamente por país: +`{pais}.payments.payment.created.v1` (ej: `pe.payments...`, `mx.payments...`). -```bash -curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 1500000, \"currency\": \"USD\", \"country\": \"PE\"}" -``` -**Resultado en Logs:** - `[FraudConsumer] Sending to DLT -> payment.created.v1.dlt` y eventualmente el estado del pago cambiará a `FAILED`. +**Implicaciones en la Estrategia de Grupos:** +- **Aislamiento de Carga:** Permite configurar Consumer Groups específicos por región (`entidad-fraud-group-pe`). Si el volumen en México es 10x mayor que en Perú, escalamos solo los consumidores de `mx.*`. +- **Aislamiento de Fallos:** Un error de configuración en los consumidores de Perú no detiene el pipeline de México. +- **Data Residency:** Facilita el cumplimiento de normativas donde los datos de un país no deben ser procesados por infraestructura de otra jurisdicción. -**Validar Estado en DB:** +#### Ejemplo y Validación de Namespacing +**1. Listar tópicos regionales:** ```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments;" +docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list | grep '.payment.' ``` -```bash -docker exec -it challenge_db psql -U user -d payments_db -c "SELECT id, status, amount FROM payments WHERE id = '{TU-PAYMENT-ID}';" +Resultado: ``` - ---- - -### Monitoreo de Kafka (Inspección de Tópicos) - -Como ahora usamos nombres de tópico por país, **ejecuto** estos comandos para validar que los mensajes fluyen correctamente por los canales regionales: - -**1. Listar tópicos existentes:** -```bash -docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list +co.payment.ledger.written.v1 +gen.payment.created.v1 +gen.payment.failed.v1 +gen.payment.fraud.approved.v1 +gen.payment.ledger.written.v1 +mx.payment.created.v1 +mx.payment.failed.v1 +mx.payment.fraud.approved.v1 +mx.payment.ledger.written.v1 +pe.payment.created.v1 +pe.payment.created.v1.dlt +pe.payment.failed.v1 +pe.payment.fraud.approved.v1 +pe.payment.ledger.written.v1 ``` -**2. Listar solo tópicos de Perú (PE):** -```bash -docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list | grep pe. -``` +**2. Prueba de flujo segregado (PE vs MX):** +* **Petición para Perú (PE):** + ```bash + curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 100, \"currency\": \"PEN\", \"country\": \"PE\"}" + ``` + + Resultado: + ```json + { + "id":"83210874-2c5c-4432-ba0d-bc256fc6a6dd", + "amount":100, + "currency":"PEN", + "country":"PE", + "status":"PENDING", + "createdAt":"2026-04-03T09:22:08.322Z", + "updatedAt":"2026-04-03T09:22:08.322Z" + } + ``` + + Validación del estado luego de procesar el pago: + + ```bash + curl -X GET http://localhost:3001/payments/83210874-2c5c-4432-ba0d-bc256fc6a6dd + ``` + + Resultado: + ```json + { + "data":{ + "paymentId":"83210874-2c5c-4432-ba0d-bc256fc6a6dd", + "status":"SETTLED", + "amount":"100.00", + "currency":"PEN" + }, + "meta":{ + "consistencyModel":"eventual", + "note":"Status may be pending while downstream consumers are processing." + } + } + ``` + +* **Petición para México (MX):** + ```bash + curl -X POST http://localhost:3001/payments -H "Content-Type: application/json" -d "{\"amount\": 200, \"currency\": \"MXN\", \"country\": \"MX\"}" + ``` + + Resultado: + ```json + { + "id":"b28c7f5b-3639-419c-940b-c2201a1f9f61", + "amount":200, + "currency":"MXN", + "country":"MX", + "status":"PENDING", + "createdAt":"2026-04-03T09:22:22.138Z", + "updatedAt":"2026-04-03T09:22:22.138Z" + } + ``` + + Validación del estado luego de procesar el pago: + + ```bash + curl -X GET http://localhost:3001/payments/b28c7f5b-3639-419c-940b-c2201a1f9f61 + ``` + + Resultado: + ```json + { + "data":{ + "paymentId":"b28c7f5b-3639-419c-940b-c2201a1f9f61", + "status":"SETTLED", + "amount":"200.00", + "currency":"MXN" + }, + "meta":{ + "consistencyModel":"eventual", + "note":"Status may be pending while downstream consumers are processing." + } + } + ``` + +**3. Inspeccionar el contenido de cada tópico:** +* **Consumidor PE:** + ```bash + docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.created.v1 --from-beginning --max-messages 10 + ``` + + Resultado (es el último item): + ```json + {"id":"cbe445b6-e866-4140-aeac-9a210a60cedb","amount":500,"country":"PE","currency":"USD"} + {"id":"cbe445b6-e866-4140-aeac-9a210a60cedb", "amount":500, "currency":"USD", "country":"PE"} + {"id":"17d3468f-97b9-46d9-b6f4-d6d507d198f2","amount":1500000,"country":"PE","currency":"USD"} + {"id":"28de18ea-7124-46a4-acde-d06625c71f0f","amount":1500000,"country":"PE","currency":"USD"} + {"id":"539e48d8-09ba-4d7d-bc01-b27399c6ab05","amount":150,"country":"PE","currency":"USD"} + {"id":"ef407a6d-ffb5-42ce-a739-2f2d44230e79","amount":150,"country":"PE","currency":"USD"} + {"id":"83210874-2c5c-4432-ba0d-bc256fc6a6dd","amount":100,"country":"PE","currency":"PEN"} + ``` +* **Consumidor MX:** + ```bash + docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic mx.payment.created.v1 --from-beginning --max-messages 10 + ``` + + Resultado: + ```json + {"id":"b28c7f5b-3639-419c-940b-c2201a1f9f61","amount":200,"country":"MX","currency":"MXN"} + ``` + +Esto valida que el **Outbox Relay** enruta dinámicamente los mensajes basándose en el prefijo geográfico, permitiendo estrategias de consumo independientes por país. -**3. Ver contenido de un tópico (ej. Perú):** -```bash -docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.created.v1 --from-beginning -``` +--- -**4. Ver la "Cola de Errores" (DLT) de México:** -```bash -docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic mx.payment.created.v1.dlt --from-beginning -``` +## Estrategia de Solución ---- +- [x] **Relay Externo:** Proceso `apps/relay` desacoplado del lifecycle de la API. +- [x] **Atomicidad DB:** Garantizada mediante el patrón Outbox en una transacción PostgreSQL única. +- [x] **Idempotencia Consumidor:** Clave por `eventId` en la base de datos del consumidor. +- [x] **Transparencia de Consistencia:** El endpoint de estado informa explícitamente sus garantías al cliente. +- [x] **Resiliencia Geográfica:** Namespacing implementado para aislamiento regional y escalado granular. -## Cumplimiento de Entregables (Checklist) +## Cumplimiento de Entregables -He diseñado la solución alineada con el 100% de los requerimientos técnicos: +He diseñado la solución alineada con los requerimientos técnicos: | Punto | Entregable Requerido | Estado | Ubicación / Implementación | | :--- | :--- | :---: | :--- | diff --git a/challenge-2/all_scenarios.log b/challenge-2/all_scenarios.log deleted file mode 100644 index 89578cac..00000000 --- a/challenge-2/all_scenarios.log +++ /dev/null @@ -1,495 +0,0 @@ - -> challenge-2@0.0.1 start:dev -> nest start --watch - -[15:01:58] Starting compilation in watch mode... - -[15:02:03] Found 0 errors. Watching for file changes. - -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [NestFactory] Starting Nest application... -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +73ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] FxModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] AppModule dependencies initialized +1ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms -query: SELECT version() -query: SELECT * FROM current_schema() -query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" -query: START TRANSACTION -query: SELECT * FROM current_schema() -query: SELECT * FROM current_database() -query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' -query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" -(node:3588) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. -(Use `node --trace-deprecation ...` to show where the warning was created) -query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +142ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] WalletModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [InstanceLoader] TransferModule dependencies initialized +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] AppController {/}: +4ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/, GET} route +2ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] TransferController {/transfers}: +1ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] WalletController {/wallets}: +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets, POST} route +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets, GET} route +1ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +0ms -[Nest] 3588 - 02/04/2026, 15:02:05  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] -query: START TRANSACTION -query: INSERT INTO "wallets"("id", "balance", "currency", "version") VALUES ($1, $2, $3, $4), ($5, $6, $7, $8) RETURNING "balance", "version" -- PARAMETERS: ["W-A",1000,"USD",1,"W-B",0,"USD",1] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-001"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-001","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":100,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-001 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] -query: START TRANSACTION -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-001","pending","W-A","W-B",100,1] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: UPDATE "wallets" SET "balance" = "balance" - 100, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",1,100] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-001","W-A",100] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:50  LOG [WalletService] [DebitWallet] Debited 100 from wallet W-A for transfer T-001 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-001"] -[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-001: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] -query: UPDATE "wallets" SET "balance" = "balance" + 100, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-001"] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:50  LOG [WalletService] [CreditWallet] Credited 100 to wallet W-B for transfer T-001 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-001"] -[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-001: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-001 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] -[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-001 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-001"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-001"] -[Nest] 3588 - 02/04/2026, 15:02:50  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-001 -[Nest] 3588 - 02/04/2026, 15:02:50  LOG [TransferOrchestrator] Transfer T-001 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-001"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-001"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-fail-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-Z\",\"amount\":50,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-fail-1 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] -query: START TRANSACTION -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-fail-1","pending","W-A","W-Z",50,1] -query: UPDATE "wallets" SET "balance" = "balance" - 50, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,50] -query: COMMIT -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-fail-1","W-A",50] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:52  LOG [WalletService] [DebitWallet] Debited 50 from wallet W-A for transfer T-fail-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-fail-1"] -[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-fail-1: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-Z"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] -query: ROLLBACK -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:52  WARN [TransferOrchestrator] Compensating saga T-fail-1 that failed at DEBIT_COMPLETED: Wallet not found -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-fail-1"] -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-fail-1"] -query: START TRANSACTION -query: COMMIT -query: SELECT "ReversalRecord"."id" AS "ReversalRecord_id", "ReversalRecord"."transferId" AS "ReversalRecord_transferId", "ReversalRecord"."createdAt" AS "ReversalRecord_createdAt" FROM "reversal_records" "ReversalRecord" WHERE (("ReversalRecord"."transferId" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["T-fail-1"] -query: SELECT "DebitRecord"."id" AS "DebitRecord_id", "DebitRecord"."transferId" AS "DebitRecord_transferId", "DebitRecord"."walletId" AS "DebitRecord_walletId", "DebitRecord"."amount" AS "DebitRecord_amount", "DebitRecord"."createdAt" AS "DebitRecord_createdAt" FROM "debit_records" "DebitRecord" WHERE (("DebitRecord"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: UPDATE "wallets" SET "balance" = "balance" + 50.00, "version" = "version" + 1 WHERE "id" = $1 -- PARAMETERS: ["W-A"] -query: INSERT INTO "reversal_records"("id", "transferId", "createdAt") VALUES (DEFAULT, $1, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-fail-1"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:52  WARN [WalletService] Reversed debit for transfer T-fail-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet not found","T-fail-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -[Nest] 3588 - 02/04/2026, 15:02:52  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-fail-1 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-fail-1"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet not found",4,"T-fail-1"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-1 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",4,200] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-1","pending","W-A","W-B",200,1] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-1","W-A",200] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-1"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-1: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] -query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] -query: START TRANSACTION -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-1"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-1: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-1 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-1"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-2","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-3","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -query: START TRANSACTION -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-1"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-1"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-3 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-2 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-1 -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-1 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: START TRANSACTION -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-1"] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-3","pending","W-A","W-B",200,1] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-2","pending","W-A","W-B",200,1] -query: START TRANSACTION -query: COMMIT -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-1"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: START TRANSACTION -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-4","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",5,200] -query: COMMIT -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-3","W-A",200] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-4 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-3 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-3"] -query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",6,200] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-2","W-A",200] -query: START TRANSACTION -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-4","pending","W-A","W-B",200,1] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-3: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] -query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",3] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-3"] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-2 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-2"] -query: UPDATE "wallets" SET "balance" = "balance" - 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",7,200] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-4","W-A",200] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-5","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-3 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-3"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-2: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [DebitWallet] Debited 200 from wallet W-A for transfer T-CONC-4 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-4"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-5 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",4] -query: START TRANSACTION -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-3: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-3 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-3"] -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-2"] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-5","pending","W-A","W-B",200,1] -query: ROLLBACK -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-5 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-5"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-4: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-3 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-3"] -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-3"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-2 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-2"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] -query: COMMIT -query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-5"] -query: START TRANSACTION -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-4"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] -query: COMMIT -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-7","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-2: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-2 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-2"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-3 -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-3 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-7 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-3"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-5 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-2 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-2"] -query: START TRANSACTION -query: START TRANSACTION -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: UPDATE "wallets" SET "balance" = "balance" + 200, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",5] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-5"] -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-2"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-2 -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-2 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-3"] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-7","pending","W-A","W-B",200,1] -query: ROLLBACK -query: COMMIT -query: START TRANSACTION -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] -query: START TRANSACTION -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-2"] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-7 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-7"] -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-6","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [WalletService] [CreditWallet] Credited 200 to wallet W-B for transfer T-CONC-4 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-4"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-5"] -query: START TRANSACTION -query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-7"] -query: COMMIT -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-8","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":200,\"fromCurrency\":\"USD\",\"toCurrency\":\"USD\"}"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-4: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-4 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-4"] -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-6 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-4 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-4"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-7 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-8 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] -query: START TRANSACTION -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-4 -[Nest] 3588 - 02/04/2026, 15:02:54  LOG [TransferOrchestrator] Transfer T-CONC-4 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-7"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-4"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-4"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: START TRANSACTION -query: ROLLBACK -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-6","pending","W-A","W-B",200,1] -query: COMMIT -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-7"] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-8","pending","W-A","W-B",200,1] -[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-6 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-6"] -query: ROLLBACK -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-4"] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:02:54  WARN [TransferOrchestrator] Compensating saga T-CONC-8 that failed at STARTED: Wallet W-A has insufficient funds. Balance: 100.00, Required: 200 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPENSATING","T-CONC-8"] -query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-6"] -query: COMMIT -query: UPDATE "transfer_sagas" SET "step" = $1, "errorMessage" = $2, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $3 -- PARAMETERS: ["FAILED","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200","T-CONC-8"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-6 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -[Nest] 3588 - 02/04/2026, 15:02:54  DEBUG [TransferReadModelProjector] Projecting TransferFailedEvent for T-CONC-8 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-8"] -query: START TRANSACTION -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-6"] -query: UPDATE "transfer_read_model" SET "status" = $1, "failureReason" = $2, "lastEventVersion" = $3, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($4) RETURNING "updatedAt" -- PARAMETERS: ["failed","Wallet W-A has insufficient funds. Balance: 100.00, Required: 200",3,"T-CONC-8"] -query: COMMIT -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-timeout-1","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-timeout-1 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",8,10] -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-timeout-1","pending","W-A","W-B",10,1] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-timeout-1","W-A",10] -query: COMMIT -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:03:00  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-timeout-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-timeout-1"] -[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] -query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",6] -query: START TRANSACTION -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-timeout-1"] -[Nest] 3588 - 02/04/2026, 15:03:00  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-timeout-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-timeout-1"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: CREDIT_COMPLETED -[Nest] 3588 - 02/04/2026, 15:03:00  LOG [FxService] Settling FX for transfer T-timeout-1 - 10 USD to PEN -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-timeout-1"] -query: COMMIT -[Nest] 3588 - 02/04/2026, 15:03:00  WARN [FxService] FX provider timeout for transfer T-timeout-1 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_AMBIGUOUS","T-timeout-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -[Nest] 3588 - 02/04/2026, 15:03:00  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-timeout-1: FX_AMBIGUOUS -[Nest] 3588 - 02/04/2026, 15:03:00  ERROR [TransferOrchestrator] Transfer T-timeout-1 is in FX_AMBIGUOUS state. Needs manual intervention. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-timeout-1"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (FX_AMBIGUOUS)",4,"T-timeout-1"] -query: COMMIT -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" diff --git a/challenge-2/scenario_1.log b/challenge-2/scenario_1.log deleted file mode 100644 index 4edfa796..00000000 --- a/challenge-2/scenario_1.log +++ /dev/null @@ -1,12 +0,0 @@ -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] diff --git a/challenge-2/scenario_2.log b/challenge-2/scenario_2.log deleted file mode 100644 index b07c5bc9..00000000 --- a/challenge-2/scenario_2.log +++ /dev/null @@ -1,22 +0,0 @@ -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] diff --git a/challenge-2/scenario_3.log b/challenge-2/scenario_3.log deleted file mode 100644 index e18b5937..00000000 --- a/challenge-2/scenario_3.log +++ /dev/null @@ -1,131 +0,0 @@ -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/, GET} route +4ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferController {/transfers}: +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-fail-1"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE "Wallet"."id" IN ($1, $2) -- PARAMETERS: ["W-A","W-B"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [1000,1,"W-A"] -query: UPDATE "wallets" SET "balance" = $1, "version" = $2 WHERE "id" IN ($3) RETURNING "version" -- PARAMETERS: [0,1,"W-B"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-1"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-2"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-3"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-4"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-5"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-6"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-7"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-8"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-9","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-9 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: START TRANSACTION -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-9","pending","W-A","W-B",10,1] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",1,10] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] -query: COMMIT -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-9","W-A",10] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-10 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-9"] -query: START TRANSACTION -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","pending","W-A","W-B",10,1] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-9"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,10] -query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-10","W-A",10] -query: COMMIT -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-10"] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: CREDIT_COMPLETED -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-9 - 10 USD to PEN -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-9"] -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: CREDIT_COMPLETED -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-10 - 10 USD to PEN -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-9 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-9 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-9 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-10 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] -query: COMMIT -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] diff --git a/challenge-2/scenario_4.log b/challenge-2/scenario_4.log deleted file mode 100644 index 946004cb..00000000 --- a/challenge-2/scenario_4.log +++ /dev/null @@ -1,12 +0,0 @@ -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] -query: COMMIT -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] diff --git a/challenge-2/server.log b/challenge-2/server.log deleted file mode 100644 index 37e7d928..00000000 --- a/challenge-2/server.log +++ /dev/null @@ -1,297 +0,0 @@ - -> challenge-2@0.0.1 start:dev -> nest start --watch - -[15:04:16] Starting compilation in watch mode... - -[15:04:23] Found 0 errors. Watching for file changes. - -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [NestFactory] Starting Nest application... -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] TypeOrmModule dependencies initialized +93ms -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] FxModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] AppModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:24  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms -query: SELECT version() -query: SELECT * FROM current_schema() -query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" -query: START TRANSACTION -query: SELECT * FROM current_schema() -query: SELECT * FROM current_database() -query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' -query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records')) -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records')) -query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" -(node:21276) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. -(Use `node --trace-deprecation ...` to show where the warning was created) -query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' -query: COMMIT -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +168ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] WalletModule dependencies initialized +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [InstanceLoader] TransferModule dependencies initialized +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] AppController {/}: +8ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/, GET} route +4ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferController {/transfers}: +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] WalletController {/wallets}: +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RoutesResolver] TransferReadController {/transfers}: +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 21276 - 02/04/2026, 15:04:25  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-001"] -query: SELECT "TransferSaga"."transferId" A[15:53:40] File change detected. Starting incremental compilation... - -[15:53:41] Found 0 errors. Watching for file changes. - -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +91ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms -query: SELECT version() -query: SELECT * FROM current_schema() -query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" -query: START TRANSACTION -query: SELECT * FROM current_schema() -query: SELECT * FROM current_database() -query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' -query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" -(node:22232) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. -(Use `node --trace-deprecation ...` to show where the warning was created) -query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' -query: COMMIT -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +188ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +5ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 22232 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" -" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE "TransferSaga"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: INSERT INTO "transfer_sagas"("transferId", "step", "dto", "errorMessage", "version", "createdAt", "updatedAt") VALUES ($1, $2, $3, DEFAULT, 1, DEFAULT, DEFAULT) RETURNING "step", "version", "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","STARTED","{\"fromWalletId\":\"W-A\",\"toWalletId\":\"W-B\",\"amount\":10,\"fromCurrency\":\"USD\",\"toCurrency\":\"PEN\"}"] -query: COMMIT -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-9","W-A",10] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStartedEvent for T-CONC-10 -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-9"] -query: START TRANSACTION -query: INSERT INTO "transfer_read_model"("transferId", "status", "fromWallet", "toWallet", "amount", "failureReason", "lastEventVersion", "createdAt", "updatedAt") VALUES ($1, $2, $3, $4, $5, DEFAULT, $6, DEFAULT, DEFAULT) RETURNING "createdAt", "updatedAt" -- PARAMETERS: ["T-CONC-10","pending","W-A","W-B",10,1] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: COMMIT -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-9"] -query: COMMIT -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: START TRANSACTION -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-A"] -query: UPDATE "wallets" SET "balance" = "balance" - 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 AND "balance" >= $3 -- PARAMETERS: ["W-A",2,10] -query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",1] -query: INSERT INTO "debit_records"("id", "transferId", "walletId", "amount", "createdAt") VALUES (DEFAULT, $1, $2, $3, DEFAULT) RETURNING "id", "createdAt" -- PARAMETERS: ["T-CONC-10","W-A",10] -query: COMMIT -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [DebitWallet] Debited 10 from wallet W-A for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["DEBIT_COMPLETED","T-CONC-10"] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-9: CREDIT_COMPLETED -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-9 - 10 USD to PEN -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: DEBIT_COMPLETED -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 FOR UPDATE -- PARAMETERS: ["W-B"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "wallets" SET "balance" = "balance" + 10, "version" = "version" + 1 WHERE "id" = $1 AND "version" = $2 -- PARAMETERS: ["W-B",2] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-9"] -query: COMMIT -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (DEBIT_COMPLETED)",2,"T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [WalletService] [CreditWallet] Credited 10 to wallet W-B for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["CREDIT_COMPLETED","T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:26  DEBUG [TransferReadModelProjector] Projecting TransferStepEvent for T-CONC-10: CREDIT_COMPLETED -[Nest] 15256 - 02/04/2026, 15:05:26  LOG [FxService] Settling FX for transfer T-CONC-10 - 10 USD to PEN -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["in_progress (CREDIT_COMPLETED)",3,"T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-9 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-9 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-9 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-9 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-9"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [FxService] FX Settled successfully for transfer T-CONC-10 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [SettleFX] Settled for transfer T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["FX_SETTLED","T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-9"] -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] [EmitReceipt] Receipt Emitted for T-CONC-10 -query: UPDATE "transfer_sagas" SET "step" = $1, "version" = "version" + 1, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" = $2 -- PARAMETERS: ["COMPLETED","T-CONC-10"] -query: COMMIT -[Nest] 15256 - 02/04/2026, 15:05:27  DEBUG [TransferReadModelProjector] Projecting TransferCompletedEvent for T-CONC-10 -[Nest] 15256 - 02/04/2026, 15:05:27  LOG [TransferOrchestrator] Transfer T-CONC-10 COMPLETED successfully. -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-CONC-10"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE "TransferReadModel"."transferId" IN ($1) -- PARAMETERS: ["T-CONC-10"] -query: START TRANSACTION -query: UPDATE "transfer_read_model" SET "status" = $1, "lastEventVersion" = $2, "updatedAt" = CURRENT_TIMESTAMP WHERE "transferId" IN ($3) RETURNING "updatedAt" -- PARAMETERS: ["completed",5,"T-CONC-10"] -query: COMMIT -query: SELECT "Wallet"."id" AS "Wallet_id", "Wallet"."balance" AS "Wallet_balance", "Wallet"."currency" AS "Wallet_currency", "Wallet"."version" AS "Wallet_version" FROM "wallets" "Wallet" WHERE (("Wallet"."id" = $1)) LIMIT 1 -- PARAMETERS: ["W-A"] -query: SELECT "TransferSaga"."transferId" AS "TransferSaga_transferId", "TransferSaga"."step" AS "TransferSaga_step", "TransferSaga"."dto" AS "TransferSaga_dto", "TransferSaga"."errorMessage" AS "TransferSaga_errorMessage", "TransferSaga"."version" AS "TransferSaga_version", "TransferSaga"."createdAt" AS "TransferSaga_createdAt", "TransferSaga"."updatedAt" AS "TransferSaga_updatedAt" FROM "transfer_sagas" "TransferSaga" WHERE (("TransferSaga"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -query: SELECT "TransferReadModel"."transferId" AS "TransferReadModel_transferId", "TransferReadModel"."status" AS "TransferReadModel_status", "TransferReadModel"."fromWallet" AS "TransferReadModel_fromWallet", "TransferReadModel"."toWallet" AS "TransferReadModel_toWallet", "TransferReadModel"."amount" AS "TransferReadModel_amount", "TransferReadModel"."failureReason" AS "TransferReadModel_failureReason", "TransferReadModel"."lastEventVersion" AS "TransferReadModel_lastEventVersion", "TransferReadModel"."createdAt" AS "TransferReadModel_createdAt", "TransferReadModel"."updatedAt" AS "TransferReadModel_updatedAt" FROM "transfer_read_model" "TransferReadModel" WHERE (("TransferReadModel"."transferId" = $1)) LIMIT 1 -- PARAMETERS: ["T-timeout-1"] -[15:53:40] File change detected. Starting incremental compilation... - -[15:53:41] Found 0 errors. Watching for file changes. - -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +130ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms -query: SELECT version() -query: SELECT * FROM current_schema() -query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" -query: START TRANSACTION -query: SELECT * FROM current_schema() -query: SELECT * FROM current_database() -query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' -query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" -(node:21832) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. -(Use `node --trace-deprecation ...` to show where the warning was created) -query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' -query: COMMIT -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +172ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +3ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +2ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +1ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +0ms -[Nest] 21832 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms -[Nest] 21832 - 02/04/2026, 15:53:43  ERROR [NestApplication] Error: listen EADDRINUSE: address already in use :::3003 +3ms -node:net:1940 - const ex = new UVExceptionWithHostPort(err, 'listen', address, port); - ^ - -Error: listen EADDRINUSE: address already in use :::3003 - at Server.setupListenHandle [as _listen2] (node:net:1940:16) - at listenInCluster (node:net:1997:12) - at Server.listen (node:net:2102:7) - at ExpressAdapter.listen (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\platform-express\adapters\express-adapter.js:127:32) - at c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\core\nest-application.js:188:30 - at new Promise () - at NestApplication.listen (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\node_modules\@nestjs\core\nest-application.js:178:16) - at process.processTicksAndRejections (node:internal/process/task_queues:105:5) - at async bootstrap (c:\Users\Franklin\Documents\GitHub\code-challenge-tl\challenge-2\src\main.ts:6:3) { - code: 'EADDRINUSE', - errno: -4091, - syscall: 'listen', - address: '::', - port: 3003 -} - -Node.js v22.20.0 -[15:53:40] File change detected. Starting incremental compilation... - -[15:53:41] Found 0 errors. Watching for file changes. - -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [NestFactory] Starting Nest application... -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +91ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] FxModule dependencies initialized +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] AppModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] EventEmitterModule dependencies initialized +0ms -query: SELECT version() -query: SELECT * FROM current_schema() -query: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" -query: START TRANSACTION -query: SELECT * FROM current_schema() -query: SELECT * FROM current_database() -query: SELECT "table_schema", "table_name", obj_description(('"' || "table_schema" || '"."' || "table_name" || '"')::regclass, 'pg_class') AS table_comment FROM "information_schema"."tables" WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT TRUE FROM information_schema.columns WHERE table_name = 'pg_class' and column_name = 'relispartition' -query: SELECT columns.*, pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) AS description, ('"' || "udt_schema" || '"."' || "udt_name" || '"')::"regtype"::text AS "regtype", pg_catalog.format_type("col_attr"."atttypid", "col_attr"."atttypmod") AS "format_type" FROM "information_schema"."columns" LEFT JOIN "pg_catalog"."pg_attribute" AS "col_attr" ON "col_attr"."attname" = "columns"."column_name" AND "col_attr"."attrelid" = ( SELECT "cls"."oid" FROM "pg_catalog"."pg_class" AS "cls" LEFT JOIN "pg_catalog"."pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" WHERE "cls"."relname" = "columns"."table_name" AND "ns"."nspname" = "columns"."table_schema" ) WHERE ("table_schema" = 'public' AND "table_name" = 'transfer_sagas') OR ("table_schema" = 'public' AND "table_name" = 'wallets') OR ("table_schema" = 'public' AND "table_name" = 'debit_records') OR ("table_schema" = 'public' AND "table_name" = 'reversal_records') OR ("table_schema" = 'public' AND "table_name" = 'transfer_read_model') -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "cnst"."conname" AS "constraint_name", pg_get_constraintdef("cnst"."oid") AS "expression", CASE "cnst"."contype" WHEN 'p' THEN 'PRIMARY' WHEN 'u' THEN 'UNIQUE' WHEN 'c' THEN 'CHECK' WHEN 'x' THEN 'EXCLUDE' END AS "constraint_type", "a"."attname" AS "column_name" FROM "pg_constraint" "cnst" INNER JOIN "pg_class" "t" ON "t"."oid" = "cnst"."conrelid" INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "cnst"."connamespace" LEFT JOIN "pg_attribute" "a" ON "a"."attrelid" = "cnst"."conrelid" AND "a"."attnum" = ANY ("cnst"."conkey") WHERE "t"."relkind" IN ('r', 'p') AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "ns"."nspname" AS "table_schema", "t"."relname" AS "table_name", "i"."relname" AS "constraint_name", "a"."attname" AS "column_name", CASE "ix"."indisunique" WHEN 't' THEN 'TRUE' ELSE'FALSE' END AS "is_unique", pg_get_expr("ix"."indpred", "ix"."indrelid") AS "condition", "types"."typname" AS "type_name", "am"."amname" AS "index_type" FROM "pg_class" "t" INNER JOIN "pg_index" "ix" ON "ix"."indrelid" = "t"."oid" INNER JOIN "pg_attribute" "a" ON "a"."attrelid" = "t"."oid" AND "a"."attnum" = ANY ("ix"."indkey") INNER JOIN "pg_namespace" "ns" ON "ns"."oid" = "t"."relnamespace" INNER JOIN "pg_class" "i" ON "i"."oid" = "ix"."indexrelid" INNER JOIN "pg_type" "types" ON "types"."oid" = "a"."atttypid" INNER JOIN "pg_am" "am" ON "i"."relam" = "am"."oid" LEFT JOIN "pg_constraint" "cnst" ON "cnst"."conname" = "i"."relname" WHERE "t"."relkind" IN ('r', 'p') AND "cnst"."contype" IS NULL AND (("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "t"."relname" = 'transfer_read_model')) -query: SELECT "con"."conname" AS "constraint_name", "con"."nspname" AS "table_schema", "con"."relname" AS "table_name", "att2"."attname" AS "column_name", "ns"."nspname" AS "referenced_table_schema", "cl"."relname" AS "referenced_table_name", "att"."attname" AS "referenced_column_name", "con"."confdeltype" AS "on_delete", "con"."confupdtype" AS "on_update", "con"."condeferrable" AS "deferrable", "con"."condeferred" AS "deferred" FROM ( SELECT UNNEST ("con1"."conkey") AS "parent", UNNEST ("con1"."confkey") AS "child", "con1"."confrelid", "con1"."conrelid", "con1"."conname", "con1"."contype", "ns"."nspname", "cl"."relname", "con1"."condeferrable", CASE WHEN "con1"."condeferred" THEN 'INITIALLY DEFERRED' ELSE 'INITIALLY IMMEDIATE' END as condeferred, CASE "con1"."confdeltype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confdeltype", CASE "con1"."confupdtype" WHEN 'a' THEN 'NO ACTION' WHEN 'r' THEN 'RESTRICT' WHEN 'c' THEN 'CASCADE' WHEN 'n' THEN 'SET NULL' WHEN 'd' THEN 'SET DEFAULT' END as "confupdtype" FROM "pg_class" "cl" INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_constraint" "con1" ON "con1"."conrelid" = "cl"."oid" WHERE "con1"."contype" = 'f' AND (("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_sagas') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'wallets') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'debit_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'reversal_records') OR ("ns"."nspname" = 'public' AND "cl"."relname" = 'transfer_read_model')) ) "con" INNER JOIN "pg_attribute" "att" ON "att"."attrelid" = "con"."confrelid" AND "att"."attnum" = "con"."child" INNER JOIN "pg_class" "cl" ON "cl"."oid" = "con"."confrelid" AND "cl"."relispartition" = 'f'INNER JOIN "pg_namespace" "ns" ON "cl"."relnamespace" = "ns"."oid" INNER JOIN "pg_attribute" "att2" ON "att2"."attrelid" = "con"."conrelid" AND "att2"."attnum" = "con"."parent" -(node:20420) DeprecationWarning: Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead. -(Use `node --trace-deprecation ...` to show where the warning was created) -query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = 'public' AND "table_name" = 'typeorm_metadata' -query: COMMIT -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +182ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] WalletModule dependencies initialized +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] ReadModelModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [InstanceLoader] TransferModule dependencies initialized +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] AppController {/}: +4ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/, GET} route +3ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferController {/transfers}: +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, POST} route +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] WalletController {/wallets}: +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, POST} route +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/seed, POST} route +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets, GET} route +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/wallets/:id, GET} route +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RoutesResolver] TransferReadController {/transfers}: +0ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [RouterExplorer] Mapped {/transfers/:id, GET} route +1ms -[Nest] 20420 - 02/04/2026, 15:53:43  LOG [NestApplication] Nest application successfully started +7ms diff --git a/challenge-3/README.md b/challenge-3/README.md index 106d8e7f..0026600f 100644 --- a/challenge-3/README.md +++ b/challenge-3/README.md @@ -71,7 +71,7 @@ cd challenge-3 # 2. Instalar dependencias npm install - +npm run build # 3. Levantar Infraestructura # (Asegúrate de que Kafka esté corriendo, puedes usar el docker-compose del Challenge 1) # docker-compose up -d From bbb291a402fb32b22e4aced78ef33333b424053a Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 01:52:11 -0500 Subject: [PATCH 11/18] Refactor: Move Brevo API Key to environment and cleanup architecture (Clean) --- .gitignore | 3 +- challenge-1/README.md | 40 +- .../apps/consumers/src/consumers.module.ts | 2 + .../apps/consumers/src/fraud.consumer.ts | 1 + .../apps/consumers/src/ledger.consumer.ts | 1 + .../apps/consumers/src/notify.consumer.ts | 110 +++ .../apps/consumers/src/saga.consumer.ts | 51 +- challenge-1/assets/pago-ok.png | Bin 0 -> 52207 bytes challenge-1/dist/apps/api/main.js | 612 ------------ challenge-1/dist/apps/consumers/main.js | 898 ------------------ challenge-1/dist/apps/relay/main.js | 574 ----------- challenge-1/templates/error.html | 100 ++ challenge-1/templates/ok.html | 100 ++ 13 files changed, 389 insertions(+), 2103 deletions(-) create mode 100644 challenge-1/apps/consumers/src/notify.consumer.ts create mode 100644 challenge-1/assets/pago-ok.png delete mode 100644 challenge-1/dist/apps/api/main.js delete mode 100644 challenge-1/dist/apps/consumers/main.js delete mode 100644 challenge-1/dist/apps/relay/main.js create mode 100644 challenge-1/templates/error.html create mode 100644 challenge-1/templates/ok.html diff --git a/.gitignore b/.gitignore index 386c8019..21391b6c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ challenge-1/dist challenge-2/node_modules challenge-2/dist challenge-3/node_modules -challenge-3/dist \ No newline at end of file +challenge-3/dist +challenge-1/.env diff --git a/challenge-1/README.md b/challenge-1/README.md index 7e866c61..7420342f 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -16,6 +16,7 @@ sequenceDiagram participant R as Outbox Relay (Worker) participant K as Kafka Broker (Topic) participant D as Dispatcher / Consumers + participant N as NotifyConsumer (Brevo) participant S as Saga Consumer Note over C,API: 1. Creación Atómica @@ -27,7 +28,7 @@ sequenceDiagram API-->>C: 201 Created (paymentId) Note over R,DB: 2. Publicación Asíncrona (Relay) - loop Cada 10 segundos (@Cron) + loop Cada 5 segundos (@Cron) R->>DB: SELECT PENDING events R->>K: Publish {pais}.payment.created.v1 R->>DB: UPDATE OutboxEvent (SENT) @@ -36,11 +37,14 @@ sequenceDiagram Note over K,D: 3. Procesamiento Paralelo e Idempotencia K->>D: Consume {pais}.payment.created.v1 par Fraud Check - D->>DB: Check & Save Idempotency (processed_events) + D->>DB: Check & Save Idempotency D->>K: Emit {pais}.payment.fraud.approved.v1 and Ledger Write - D->>DB: Check & Save Idempotency (processed_events) + D->>DB: Check & Save Idempotency D->>K: Emit {pais}.payment.ledger.written.v1 + and Notify (Brevo) + D->>N: Consume {pais}.payment.created.v1 + N-->>C: Email (Confirmación de Recepción) end Note over K,S: 4. Consistencia Final (Saga) @@ -48,7 +52,10 @@ sequenceDiagram S->>DB: Verify processed_events (fraud & ledger) alt Ambas condiciones cumplidas S->>DB: UPDATE Payment (SETTLED) - Note right of S: El pago ahora es SETTLED + S->>K: Emit {pais}.payment.settled.v1 + else Fallo en validación + S->>DB: UPDATE Payment (FAILED) + S->>K: Emit {pais}.payment.failed.v1 end ``` @@ -65,15 +72,16 @@ sequenceDiagram 3. **Dispatcher (Consumers Entry Point):** * Centraliza la recepción del evento `payment.created.v1` y dispara en paralelo las evaluaciones de **Fraude** y **Libro Contable (Ledger)**. -4. **Consumidores Especializados (Fraud & Ledger):** +4. **Consumidores Especializados (Fraud, Ledger & Notify):** * **Fraud Check:** Realiza el scoring de riesgo. Si es exitoso, emite `payment.fraud.approved.v1`. * **Ledger Write:** Registra el movimiento financiero (débito/crédito) y emite `payment.ledger.written.v1`. - * **Idempotencia:** Ambos usan la tabla `processed_events` para asegurar que un mismo `eventId` nunca sea procesado dos veces por el mismo consumidor. + * **Notify (Brevo):** Escucha el evento inicial de creación (`payment.created.v1`) y envía una confirmación de recepción inmediata al usuario (`barfrank2020@gmail.com`) utilizando plantillas HTML personalizadas. + * **Idempotencia:** Todos usan la tabla `processed_events` para asegurar que un mismo `eventId` nunca sea procesado dos veces. 5. **Saga Consumer (Orquestador de Consistencia Final):** * Recoge los eventos de aprobación de Fraude y Ledger. - * **Función:** Verifica en la BD (`processed_events`) si ambos procesos han terminado para ese pago. - * **Cierre:** Solo cuando ambas condiciones se cumplen, la Saga actualiza el registro original en la tabla `payments` a estado **`SETTLED`**, alcanzando la **consistencia eventual**. + * **Cierre Exitoso:** Cuando ambas condiciones se cumplen, actualiza el pago a **`SETTLED`** y emite el evento final de negocio **`payment.settled.v1`**. + * **Cierre Fallido:** Si recibe un evento de fallo (ej. de DLT), actualiza el pago a **`FAILED`** y emite **`payment.failed.v1`**. --- @@ -587,6 +595,22 @@ pe.payment.ledger.written.v1 Esto valida que el **Outbox Relay** enruta dinámicamente los mensajes basándose en el prefijo geográfico, permitiendo estrategias de consumo independientes por país. +### Notificación de pagos por correo + +El sistema incluye un servicio de notificaciones reactivo que informa al usuario final sobre el estado de su transacción mediante correos electrónicos diseñados. + +* **Servicio de Envío:** Integración con la API de **Brevo** (SMTP Relay). +* **Configuración (POC):** El servicio y las credenciales se encuentran configurados en `apps/consumers/src/notify.consumer.ts`. +* **Destinatario:** Por ser una Prueba de Concepto (POC), el correo se envía a `barfrank2020@gmail.com`. + +#### Escenario de Notificación: + +1. **Pago Recibido (Created):** + * **Asunto:** `Hemos recibido tu pago: {id}` + * **Plantilla:** `templates/ok.html` (Rediseñada como "En Proceso") + * ![Pago OK](./assets/pago-ok.png) + + --- ## Estrategia de Solución diff --git a/challenge-1/apps/consumers/src/consumers.module.ts b/challenge-1/apps/consumers/src/consumers.module.ts index 29a06568..b1b61daf 100644 --- a/challenge-1/apps/consumers/src/consumers.module.ts +++ b/challenge-1/apps/consumers/src/consumers.module.ts @@ -5,6 +5,7 @@ import { DispatcherController } from './dispatcher.controller'; import { FraudConsumer } from './fraud.consumer'; import { LedgerConsumer } from './ledger.consumer'; import { SagaConsumer } from './saga.consumer'; +import { NotifyConsumer } from './notify.consumer'; import { ProcessedEventsRepository } from './processed-events.repository'; @Module({ @@ -29,6 +30,7 @@ import { ProcessedEventsRepository } from './processed-events.repository'; controllers: [ DispatcherController, SagaConsumer, + NotifyConsumer, ], providers: [ FraudConsumer, diff --git a/challenge-1/apps/consumers/src/fraud.consumer.ts b/challenge-1/apps/consumers/src/fraud.consumer.ts index c00ae24f..4daecf78 100644 --- a/challenge-1/apps/consumers/src/fraud.consumer.ts +++ b/challenge-1/apps/consumers/src/fraud.consumer.ts @@ -75,6 +75,7 @@ export class FraudConsumer { }, }); + this.logger.warn(`Emitting failure event to ${countryPrefix}.payment.failed.v1`); this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, diff --git a/challenge-1/apps/consumers/src/ledger.consumer.ts b/challenge-1/apps/consumers/src/ledger.consumer.ts index 580bcb19..bfb84481 100644 --- a/challenge-1/apps/consumers/src/ledger.consumer.ts +++ b/challenge-1/apps/consumers/src/ledger.consumer.ts @@ -70,6 +70,7 @@ export class LedgerConsumer { }, }); + this.logger.warn(`Emitting failure event to ${countryPrefix}.payment.failed.v1`); this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, value: { aggregateId, reason: error.message }, diff --git a/challenge-1/apps/consumers/src/notify.consumer.ts b/challenge-1/apps/consumers/src/notify.consumer.ts new file mode 100644 index 00000000..ec13bb29 --- /dev/null +++ b/challenge-1/apps/consumers/src/notify.consumer.ts @@ -0,0 +1,110 @@ +import { Controller, Logger, Inject } from '@nestjs/common'; +import { EventPattern, Payload } from '@nestjs/microservices'; +import { ProcessedEventsRepository } from './processed-events.repository'; +import * as fs from 'fs'; +import * as path from 'path'; + +@Controller() +export class NotifyConsumer { + private readonly logger = new Logger(NotifyConsumer.name); + private readonly brevoApiKey = process.env.BREVO_API_KEY; + private readonly targetEmail = process.env.NOTIFY_TARGET_EMAIL || 'franklin.barrios@icloud.com'; + private readonly senderEmail = process.env.SENDER_EMAIL || 'bestfrank2020@gmail.com'; + private readonly consumerName = 'NotifyConsumer'; + + constructor( + private readonly processedRepo: ProcessedEventsRepository, + ) {} + + private getTemplate(templateName: string, data: any): string { + const templatePath = path.join(process.cwd(), 'templates', `${templateName}.html`); + + try { + let content = fs.readFileSync(templatePath, 'utf8'); + + // Map variables + Object.keys(data).forEach(key => { + const placeholder = new RegExp(`{{${key}}}`, 'g'); + content = content.replace(placeholder, data[key]); + }); + + return content; + } catch (error) { + this.logger.error(`Error loading template ${templateName}: ${error.message}`); + return `Error loading template: ${templateName}`; + } + } + + @EventPattern([ + 'pe.payment.created.v1', + 'mx.payment.created.v1', + 'co.payment.created.v1', + 'gen.payment.created.v1' + ]) + async handlePaymentCreated(@Payload() message: any): Promise { + const eventId = message.eventId || message.id; // Using id as fallback if eventId not present + const aggregateId = message.aggregateId || message.id; + const amount = message.amount || '---'; + const currency = message.currency || ''; + + if (!eventId) { + this.logger.warn('Received message without eventId/id, skipping'); + return; + } + + const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); + if (alreadyProcessed) { + this.logger.log(`Event ${eventId} already processed by ${this.consumerName}, skipping email.`); + return; + } + + this.logger.log(`Sending process notification for payment ${aggregateId}`); + + // Mark as processed BEFORE sending to ensure atomicity (at-least-once with DB record) + await this.processedRepo.markProcessed(eventId, this.consumerName); + + const html = this.getTemplate('ok', { + id: aggregateId, + amount: amount, + currency: currency === 'USD' ? '$' : currency, + status: 'PENDING' + }); + + await this.sendEmail(`Hemos recibido tu pago: ${aggregateId}`, html); + } + + private async sendEmail(subject: string, htmlContent: string): Promise { + try { + if (!this.brevoApiKey) { + this.logger.error('BREVO_API_KEY is not defined in environment variables'); + return; + } + + const response = await fetch('https://api.brevo.com/v3/smtp/email', { + method: 'POST', + headers: { + 'accept': 'application/json', + 'api-key': this.brevoApiKey, + 'content-type': 'application/json', + } as any, + body: JSON.stringify({ + sender: { name: 'Yape Payment Pipeline', email: this.senderEmail }, + to: [{ email: this.targetEmail, name: 'Franklin Barrios' }], + subject, + htmlContent, + }), + }); + + const responseData = await response.json(); + this.logger.log(`Brevo API Response [${response.status}]: ${JSON.stringify(responseData)}`); + + if (!response.ok) { + this.logger.error(`Failed to send email via Brevo: ${JSON.stringify(responseData)}`); + } else { + this.logger.log(`Notification email sent. MessageId: ${responseData.messageId}`); + } + } catch (error) { + this.logger.error(`Error sending email to Brevo: ${error.message}`); + } + } +} diff --git a/challenge-1/apps/consumers/src/saga.consumer.ts b/challenge-1/apps/consumers/src/saga.consumer.ts index 9ef4f63a..448b0396 100644 --- a/challenge-1/apps/consumers/src/saga.consumer.ts +++ b/challenge-1/apps/consumers/src/saga.consumer.ts @@ -1,5 +1,5 @@ -import { Controller, Logger } from '@nestjs/common'; -import { EventPattern, Payload } from '@nestjs/microservices'; +import { Controller, Logger, Inject } from '@nestjs/common'; +import { EventPattern, Payload, ClientKafka } from '@nestjs/microservices'; import { DataSource } from 'typeorm'; import { ProcessedEventsRepository } from './processed-events.repository'; import { Payment, PaymentStatus } from '@app/shared'; @@ -11,6 +11,7 @@ export class SagaConsumer { constructor( private readonly dataSource: DataSource, private readonly processedRepo: ProcessedEventsRepository, + @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, ) {} @EventPattern([ @@ -43,8 +44,14 @@ export class SagaConsumer { ]) async handlePaymentFailed(@Payload() message: any): Promise { const aggregateId = message.aggregateId || message.id; - this.logger.warn(`Saga reacting to failure for payment ${aggregateId}`); - await this.dataSource.manager.update(Payment, { id: aggregateId }, { status: PaymentStatus.FAILED }); + this.logger.warn(`Saga picking up failure for payment ${aggregateId}`); + + // Atomically update DB to FAILED. If already updated, it won't trigger again. + await this.dataSource.manager.update( + Payment, + { id: aggregateId, status: PaymentStatus.PENDING }, + { status: PaymentStatus.FAILED } + ); } private async trySettlePayment(eventId: string, aggregateId: string): Promise { @@ -55,12 +62,36 @@ export class SagaConsumer { const ledgerProcessed = await this.processedRepo.exists(eventId, 'LedgerConsumer'); if (fraudProcessed && ledgerProcessed) { - this.logger.log(`Both consumers processed for ${aggregateId}. Settling payment.`); - - // Update Payment status to SETTLED - await this.dataSource.manager.update(Payment, { id: aggregateId }, { status: PaymentStatus.SETTLED }); - - // Optionally emit payment.settled.v1 here + // Use a conditional update to ensure only one process settles the payment + const result = await this.dataSource.manager.update( + Payment, + { id: aggregateId, status: PaymentStatus.PENDING }, + { status: PaymentStatus.SETTLED } + ); + + // Only proceed if we actually updated the status (first one to arrive) + if (result.affected && result.affected > 0) { + this.logger.log(`Both consumers processed for ${aggregateId}. Settling payment.`); + + const payment = await this.dataSource.manager.findOne(Payment, { where: { id: aggregateId } }); + if (payment) { + const countryPrefix = (payment.country || 'gen').toLowerCase(); + this.logger.log(`Emitting success event for ${aggregateId} to ${countryPrefix}.payment.settled.v1`); + + this.kafkaClient.emit(`${countryPrefix}.payment.settled.v1`, { + key: aggregateId, + value: { + aggregateId, + eventId, + status: 'SETTLED', + amount: payment.amount, + currency: payment.currency + } + }); + } + } else { + this.logger.debug(`Payment ${aggregateId} already settled or not in PENDING state.`); + } } } } diff --git a/challenge-1/assets/pago-ok.png b/challenge-1/assets/pago-ok.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbb561ebe53d83c55be2aefde195ea32b1783a1 GIT binary patch literal 52207 zcmd43c|6o>|39ueE!rarmF&%ADMQLy$TBn5nMql4$~p?!cUq*7G{ex0>}Hq|B9i^I z$d+x8!cZYwjBI0@@x4Z8yFd52@9+2b{r&#<^?3AfkoR(3uh;YSTrMZl)L4JlcH!+j zJUqJ$4Rp*CP7`tQj%4YC6 z?+t@XUOYUz-*EqKsB_P;=izAzH`G0c_P;!ty!G+nVIR({$&;78b8Zg?`P4kF)z!N#QPM1ZuURnMj zJ?K8SDQ(xs$gun1%c`f1Lgnw6mM9x>_Uz^1IUDKx)k`>>mUlyd`r|bCej5%;pA`XL zaK0M7m50aFlQey3Yr4x0(zK{B56?~M%!U@9y|j#1CfeM42$DvhY)yxfq$~4x^6;b? zVl%vsgwqU2PdUGUZo7;?T><%{- zIM2Uow-I~`N&0+f8~3}5b=*rlR(f@2uQq1C(OhOG`1I_3>C;=abHIP`@QnYW&0TpO zQ<=R`?#G*|w@kVB;pyZJ=WZlVn(<$^<6fF4hku&@Pg=7-v$=GXA*VK$Yy|$ssHq;4 zOI@KPPhI;`U>KInb8}`>`bM7pjTKe{8Ko-U)A9%aDkM^rZ@^ciEw}eja9{2fe z?|9kBXTdFIdt&>8c2l2O9Pef-D}9cry0>}mlheU@hM#}92Mw%&=-3g#_NH4jhYCa{ogru~e{xKj%K23}jVOiJ0ohvrp(Jz-N? zcedQE^%mjNZ3WcM9fHvp3J#{vkfZKGW6*^Lk)~3S`w{W62@qRavFXxI_8h}|tw6ft z_Bn<2Z|6lA4(HhH4LtFixZ5FiL*jWzS5mQaA7A;%ef=i}J_A)+HWe#8<-V~SZW%0v z?QTM!&+$fKV$p@jrB3k+mK0ekU3)mXOXr?RW-UuLbMp9rWRD;_bOVp-DNqV$rz$Ia zWL$%>RlPCgKT`GElq=?UY|El;t|8OSyRNmq`Zin>m<5j(uwCY#c|<#x`rtsW*;;^> z1|#H%Yw(q-Ua5`&6`r$on?ZTi3nW1L2_(-S*UP_jywO%1Mi9C#ESU>f&+N##kFGMu zTti@@(Phar6KO=(v_e1Pxk5mrp+Knk-kUQ#po)gJ*nS&yjB*$+XKyhrwQ-NBk5|B` z=c-`xc1%=R4N)&sXZ&cz$l6E@l&achg*L&{!pahlRLx;~R%i4K1bC!2aGxS(GWP}D zP9r6KV$CBb4pQgVU{1aZ7tS5U2a?I~<%Swda-)0B5Z;!NxTZ_v3x|_vW!@4(|aAee}R$_R{4erQyrLR}T6xh7-*W<*p3#fkTJ?F8xV-p+$4`{A*QTne`C+lSKu@*{mR4+i zHwjv{nwU>54;{GDIheN3ySAoZFEP}0zs+>sN$>Wx2bAO0N>PEFL4)xM+Zj!aBNcys z9;$}fb67L^lzPo>t);DJw{8V*n42uCZ!kAkPm!gZFPA$;TRz6)$_d43|F$`^)XHpiPXx`-vd?n7QG&!DM?5%}i zOFyB;YF5;B^^bTd_^hnDc6M7`NVI{LgsMqY86y!vTO>_lyQ`;>rW{uxw zX3xD&Rxo3Qten@SU8Y9$X44nVeZ~^?>3b9o>jxoI`S#^V`UYHwhOE)H<}@YhcNobf zZn%TExzd}+d8`yYPQOrVvpkqEUW-$xuq}F8Q^Rxf;RevXrUxob*=<6oQCjT4P@6cW z06mtvu~Sh%HkYaVST)4smynV1m9aZs+4|v-U2D&7Yze7Y@h|^2`$cNr#RwxzrTH$o zj}v3tcUMQ3|IpaNQyc~`^=A3ULknezc1Y3j4|-gJ5R5{tey zwMiQFdZ6aSozSIjkIvbSJTXE^OmUhQZv?jGuqpRFyN$V81*G8x7y%UT<9!p<9Aphhh*!d6!} zmy;KTtDXzhoE5tHa2t5#M?}BU?^z@6RtM|jO;XHh;*eiK^^xoc2Y}Z=- zuGDj_(Y`0-1KQ8fL`&vT4%jpHY<9c6ULLq=8gyZZ(w+gwqG{Uw}&z*jgehb?Bj9-7Anj*f8mg>Q^+-Yd-ris!S`ul zM}C|*9N5S3?%d~Bmb$#cz_Qw8n5hP9?uLum98D!BRrb{T!nsdsGHnA@Xk7lD=H#g< zjE@~cXV{mzn6SOyrgOrD_8=*&rQ*tls`)M9+y8jWQkAK+F$)c28_gaSaddzRW+!5Q zDMlP6Yr$9$GSENbyOrH+Uf^M=8m$@9{fp|POy<~q31(K95NBIR3Gr0{urt{^i-Z;Tt{OTcg?rQon{kMB#bcL9-RO{0pY?gxt zqG6*l2Of|+Le)u{UUlK0%YxoN)(%^0n4F7?t}D9$mtQ(rb9&_Rc*w8A-5n=_ms;Jk zgVSjk+Qzb(ta0k`Z*;5NcGC@Q`?x)$n0c3WjQZ6V{&qYn?2z`F4}0;x>7=s5cJ`N- z6{8QBu^9!dz?+(!MRbqfYsuyJhhy9HQ-~J=`tiiMLBzXu+ZyF4O|Oyg`dw#hKCw59 z2efTtRjlde%rQB$ccIVGCDxof;9ef<_d@NX=~HL*SI~*HCkktuwdcpg=2BHO_6tI* zcPwWRr@p0VRbD@o{Nqi#_Xn0<$6B&hf^X^>Dd+TsFlWBxrNNVPdDleK_DoL-R{BOQ zF)t5NN3x;XQsx5XtBJG50^B{_!L3{&+Z=O4OcVv$tbi8mld3V|Fjb%xb^8b_UOxeYcgNV4yiskvS&Pt?}9In~;S{|5 zTBP;TRWN$bBpKOP7@|m9=&f_3Cph>21grB zcBLQRBmDJSSE?{vOT%53-RiTaZOOJKhLc_AzucRcsaP9aHR4~s@Y@ydH~nwK6$NB4 zoXdo?yHG#+ZtuAhpxV*xcT*}Jv`4_wRPhq_T|h6Fci(cddoLfhxl zy#jYH>Q_XVQ<%>|_Mi>F#O-*J)bml1Zq2g{O&c8KmIKX^N=J-CvbJk){+;JMP(X`g zlCQpPOoSqy>eBFUX(Y7GOxd})=4(^2QRaMz<5~iXw??u%SQULH7NKsZ=lieSf0GEU zp+@oN)|0im&)76o4OqJN|)|k-n1(M zm4zEUJ|FfkkD@w8gKVZU_y~fa$u1@y^HLk;R0a(nfIh#-n_#** zacv`2SeP$2X>IJ3Fef=^?1d;pe^ZU;*7;9i{unBLfL%8uxnsieZ}q#V-F1TMf~Ah* zpfQ2~)dLTo2oDrJ9UeHv2;@DnmlhI1|6IU0k1FtgayjIxK-G_#KoZPbjIl7dLTwFg zFe1!%fH7C;;KO~#1Aici9L6%sg+QAMn)9=+&_AEG9PE2~*HVj(cT-JFM*qsLbTh4* z)OV?8VvcCKOEW?iB|2AbisdD)EgaI;sqxw)_tNQP)$BsW26xx6qy(h@T{rgYoX*6x z+r1EfKg>MbTY5mjeb*L=w*hnc^F

$qes=>p7tYnsR)3^$@p2egb37VDq?OZ1d zCgJ?*aP$-1$-ZSlxun9|{r(v|GF7-P<~qDHGUAwm4#AxPxhh^omf( z@`*l0x9aVu@Q$>48+ARuBiPofHju8;?UtE$t>0Tws+m8U{#_&`y+1Xl7>!cX(qn!P z?$&U6#fWxpQ(kv)vO)VanEN=>0axI z%2OJu@N1V_Q;NELu;OjiK*l}W^dzkyD~c6#QH#A5wDjOQHoSAs5thPqA3pKuU5Ywx z%i46lDavQwO{JqPwQo?qrf{^9vuY{4)a0S`*{ZYyF_?HptY_())!g`Zj8fQpam!Ns z%%JPDjd|V!kT~jqg}zz<{?vGFP=e`NL7y>uZP2&pnfLRcU^YIcbHwY-*pF(jf9ddSan~|oJ{hiKM~t8_CevnDJBY&i`M8F!*W}1|9b0Hn<~R; z?^2X-zSl#Wcw44Z86w-de75eoG5M&%x^&VtaB3mZ`8PjiT8V<|jY&ElQb11=?HiNd zwR?$Uhl41@O7r*z8L;Ongtd=F8MK zVJtu4KNy=!tr2Rn2`i_j{i>zr5OXLI&0S-S@ar^{81OE05JDRsJK42=AU!`K<)eciPpe z=8hgG_(`0sAdUCH`wZ6!-BJrxLbzi=K`T zoYassdrF7@#rue-(;IbYsv*UDVwMIMKNt1!m%jJWu63VS`gHEqWquVsM0Pd&O=w_2 zoP^u+Zw~`+<@b^4#*7()nUcFd*&%T7?!5O(`ruf?T4ju&Mp0iwHyvAGwzlTRW`rs9 z*J+hml)Y7%u3={RC|D$XBBpD-yqC{-KC{BJWIV1@9i-CyoukB9m|f|c!aOl06QJC6 z`w8r_XnwWUtl5DuSKXZP1X?VMyqP7Rk?dY=F}jY3YUJ&ss&mX%AHqgfe;%_NNU*@>e) zu40V-HquU~kE8d|)X7n03uzms6h)hwKd8JgW0}nPY5Ua5tI%Hu9oH(XbMIYUPVyeX z?P>qWFI~olRNHnw?QcDu{xvChMoLvsF_eR1r)FMGJ%Z#{NEyByCtAS_H}sxNA=sv@ zqH9JNCR5FqQhXECL_y((@b1y>|lxUeBBjw6-gDQ`7M7 z_b&HjC5@)oN&ix6_POe~;E{g!?U9dILCd<7A&bWP!C7W7(QWx_{pV~>;Gq-uDK*#-PmN80w>_Hnhn^`XkH4v67%9(_UmUjT-#&EzuFLQf?rG4TiN$@BNsv7r!|QIiGyC3IFh`WDs$zbdwvxIUu13_-!3dZ7%`n?)Y~F?MT8FU^7(3iBDL zsaau%JrB|t6fPKkZb5&xR&g(X_2Tft_Er8{RcjviSCo}mYXQ*am){_PZttUu?divh zXFe%UZOObQnC~Z>RDF9(7&AXDxkwm_pas@$BNzw>|4DCXyciAhE^MNv(&r$*wk(7w zxlqP9V`44j7-RZwx^cwIwmdojVCbh zx7k-A6hIK~CNx`r36EqVN*0D=ipNUwrm|U!^GiiXqeX08hS-o>?nhN;%d>5g1d1_` zEO;r#lID1M3!pQZzxyELIAhpoUrmj)xOsp<7g==7DA~8{)g=0d$=VNg%8=*4JBt@> zgo^%y_xBI%oSWHW%N!abRjst&bY~dvNr5$&Adjb9HkwFu^Y*hDx$9FJ&iPO=^?~=+ zu@YIz3SvTVwU5yHG<~1e!4dgQMM$54y!j&AC)N%4z=H6mFqlHnMj++3u3Od*l+a=9 zm21M%7*F2mnb?7|A_*6!EL+6qdg2N?1S%HDA~ou_-zBTIGlIqmbr;H$Zp|p@e-n)K z%fB4~A)h!|`MyP~ne`f!@1l{{ST#zfBS&;VpIxIGu^j60vf_EUZ2og~4}{d$x7xtr zp!F?!nSTG9he0e=am&`1Pn`;fLDp>Y>rFV76Y)hN#ewSN` z^aCc=#<2sZ>v%ibm<*keHHXvli=Ai3tKGxKU-ag60@L6S!?#MgC~fM^E&&ALJ|-B^ zrFw~WF(deI9Q=*;{Io;I==Yk5o)grsHnhmZ=8X9!XwA+tK|t}&H96&_)h)NA2kl8c z>$NQBz409@{;REp*KnQN_5^xC&#)t_DPFnD9x8bO1B`RvgU13*^q1OS)UJJI8j1eV zsW|+`+#!+>N8Q89IKEJYleYbF(DmYrGoD0a-!yAP2{wC$aAFm86Omn`*HNKqC=sfe z5V+Q{w>)qliD9zl^Yw6U>_Yn1)}*P0oW(@Q0HBd>W^8x@HFjYCJ}PkVmCzrfdi`RucGXWF@e>S(vcktif@emYzX6D(xfrVY}JKKPe% z4J#IPu{8m`r1mdZoZO*!o&pq|d=QIVm~E1^tLb>&{x_xak5b>;rT3K0yO#g3)i=$K z9oV~kw{hcIajGCBrcdvcj4KL^=HRmJBw9j3BOZhTbpX$PH)#sP;aRi~6x!^O5bSb^ zNx6fEpp0AgVv1>SsaLg0d@&}t;8?X}PFQ-;Z#7$=knDcC7V{&^L!SYnl=3UFLfOQ(J(-(7!T=;dMW@NxvEE;&! z;DSylDK*U0j4eV3bh8+hcE9UE(-E%3{K@+V-ICJ60fQ|6e5bqp{+&Ad_|mmaM3P@! zbmy$?){a`yDZ{~5B3!Msa=8DUp91p*GY=Pp_Sr_A(S`3IC}BFdIC}99tLVGBgg9D^ z8faUpOD+HQobBA7tWa(Xc~dzztvLR}ebd(VMI@L!3lYn!_1A7L`><+UO>kTIqAz~l@8EWl?K=&$aLeNc@M;R_gbB4;2?SaoLb3^KJoI= zI}6QPBESI1P{NWM8RqHdvu>aFF#&e5&ylK<-2j>Nxmj)f`ylt~^99Wp&y9qQ_S`oB z)7S0ka zbv!p0_N)gf?s)^ob`JxOikk|ipPy&>Wa93{WGX8>_4`_E-;?XzD#Y*HQ)2ScR^m;b+_I;C<3%~IH0I%$3Os3c+>EfZw!+Gn-uGp8 zta6Wc?6&y3H94V!Dtc{2LIoI7j;njeyY3e+n}Wqr3J-1JDxB_Z<)1gT+nRN>gUpW> zIH~pc+b)s`^LpRDCC)}3)h%4<&v=@=wq>53`ek20lur0Koe|jaw&gjtR3f%rqG{|C;ES)KDP{!Fe5cx}(`^e4$20 zK?$^6-?C5X4p3uSzLxX0=E@nvo}%lhp_OesqyAh{@+YyH<(`KzQMcalde65 z%SM6hvFFuhUB@DqF2zlmo;u_dslp(P83#@XOHM_Ds>Ws3= z?xgzpogGQ?%^++{>*Frk-B&6+!vhwjuEQ5BOMjJ<3-uS$2$+4YG)((6*LEI-U0sUX zMe%>Gx<~N#xc=rM_pa*X!%Z zfbcBSQbvms8@pKHb*GMPr?S@am>HeA`lRj0N()(HfYtrk!*7)p<{HwcWqeZZ;qtv% zXc*_-v9och3}64ozOC!fx*>5KIbt&CXuFDKpY^IKM)X6YEK>VM0)N%SW*h4JdW`f3 z7#VUM8EQQG@pJ3SWy0wJ#`1-szKhaF(VNAzhb4;M-i|+Jge@G3TI;*bpD8$3s9=;n z_=|4Fs@*w6yn+#y*S;Yx_a^K7FjbghT~cpuK%&1km-6S6IxXgMPW0ZhEa(PA{u5bV zIeNSxj`sO6dGt<%61f(CJoM@CkF%s=-P(3>v-Gij25~BzL%t*86f6ucdO8@QEOlwO z?Q}9+UjN&_#M2TW;gWD?Kuh!S&xRWDl;S5v6=D`aANdH|ak+xJ3BSnb%8d^06-RLj zKO4sH#X$t6QV&K(=}1CP3u0%6plN{Zos%4&3$cn7LmxfxL~`sMWU^SY37`G)5}8Pc zNm`sag~E+BnMdeB#Vtj8*<581$4-8O2&J?tc0A9uNzmghU|r%S)w1Li z@k??rNt4aWsBgvgjm}y2dRdL`S#wIH9G4Dl6*CWh?aiKIoyH|f<}q#*JS9@Wj91sb zF=-#Rk&YDdB#?32ov~S-t`u(_2Sapb5~K##*oMT)1~i6CStO`q-r#BR&GCkfdhqpS zdU|mtp4T>C77I-yZoguP-Y#2Klm$7SpxYIWKVE~2N{U=GC!E!#j9;gOOO`d#4R|dx z{I~CgKH6cN;60m_Z9vd;(}fKi#t$G3`N^?z0iGS;kuA*yDqw^wmZuHrGx45Ll3i7> zVNnZgmOUIMaNLBhK4xb^nJer8)=j8phX(hSrlBs-ZJp@f?Mj;yVZH$Wdsu)ajMKO%C` zv+I5`*hir{X&)uj^2bC_O2N7ra~@elz6UQLkwxE;OLf`?8LJWSwz@6cABrbj#KIB% zYN!h^ax4bCy~Ip>1`+DQy`g{X_FV$?yJU>Y!5SvmUz$O?S~ka@lrYCQ!5kVe_7;sV zpCEYC4hVpiA@YA;R%c zL<$|bO`!fR8nhfD|7lZ@M{|6asTAmg@5u8c$a7p{1<_?h4JFn9@6g4{QsJMF#J5W3 z9_xLVC)t3J?z!Ovcie`cnEwj4!01xp5LNoBFJ;vcT8N{+RWc*pM|OQeVzp!94N$k$ zF*=C20VMV)x0BSdRC)(q7LoFmB8Af99~MRYQ79SqQOM18;)o9|@nU9Ol)G_~awb?O zi7A+alKJxEY$fx;8G9vDj}H9PKoUgE`?}2sgqj_RdTM~^qR_m53Pw0B*T8p)UWcXZ zRc$FG@?n8fg3XvKlrnP@j)_MiXg$3x@d>ir_twS2qoph^fd~ErsL&M0#z(m~ckUuU zEap$4Cb3T75SdF_PBNq>ozGku^JfwKjwkV;kW#_^_cXMiE2>)2<}eI>1<6|kBi{n` zc7u;BLX`v?264N9rOfSYz&vb5+bpOb~O~m zzN-sKjets;oS8zNAA;l)|J+O=9Ho-P-5N3!RO@|vp_zCG?VPhykJq<8Ev;vzr8AYa!xo%Dxn*7doXEEk3tku$?QP8k$wn5#m65_vZZZX|>FFcn`YvW{KXoEm!w=6u7FKWB)HyQ*PS z(#e?k_h(ZcfW2L4`*Yuyn&VTzq)IPMCX2M~(^MXit18 z_^d{Jb}{U2=ojAfjb(dXQfOBi2tEM{`QXWDzlbZ|O{N;a98Q^+6K9;Zi+gsp_))a+ z1WF|RqB)_6s2GXO`nnGImWKFTWbv1l`1gAgkmTR+#}TBWs|_flw*cOn(KJ0Mm8b}m zb#imObf}aH%%gw3kSMh4T9Msf)i|fjn9<@i0`pc9NaQZ3W|a`)ML&@L^Q_d1}0I}eJSRr zQ2VHK0E0T1P3I?(OS=e+I(Hcz7*BY5Xu99l4fU= zQQ!x4WQB>-}5>}yd#mkGX||&v@@VlX-5xn+_@QjB98%Dk%-4w zz{tY1N9w~bVFI}9myUmKnxigh#)a|>CP3islsMj@9+f~PH;}ky%~^Tfo}B&7Xu8r5 zDd?^H$SY2b2|0QysL5a_8tos)apb8!qGF*WbiJnI1rQl7;*L(B9w#e_eE1|t0Cfm;d{hnP z`58O&03Mp-2SezcnU z8Me-w9A1M{ZU4{Pj`q;8@hv__c$>2MZ3E@Ct4F& zinynP(*Mn*yaXoYdp+oI3tE?=PKBQAn}Hw8e&M*^S;8sME|%c8!+g#hXs1B!6T2{0ZpD)c3>u^8qs35P^_ z;^TcS@eU1fD#?6~iuTMc~` zH&ysXPkl7SYp%fEm-!|mQwr*9*^K^=EZC?LY#78{Pkw~#oHd8ULuCwwoWN^iPnn-I zAO6O1&N=(=aU$z036h%*KPry;NQ_cKIZBX|AYsyban!72>i!s@40Qjgo1@l(-yg`Q zNXQ>Fyr-#1*xg_LXm{ucx#uJJ7~;SEaKI~9@9$bR0{HCzI%n@WLUkMUpbt$Yx?WAe zz@2w-7gWm3!zeyX)+k={#ZZG$W+Wb>C~zoR_L3SZLKl-HXpApbCnq0X)kKM-UKJ`J z07=yz{a6m9#5*OFYc&i*CaQjmvl)FRQb&K)s|eJMm0;TyjVa2YW{5);Zo6TE4;MMJ zXg5JEUL;W^e=@PZap<4*#hnfzhw9Bg`GJucB?F!;!VO5F9Do`8djaxqmNO%gAUgRQ z6_wBw>#knpa3Kt1#|3oD3>PdVs)q<*T?~W5=z~!af}I(L^2%A%P4*IZ*NpG><5dvX z4JiB)p!#)OZS>_P)qA}%I}rKXKLUEV7oX!>1nW{_aW4Sof)QXC^!V8pG>%2&n=7;n z1LTy~HpBZr&1)BLfFwSrP_K%8vq|<&8o7Sfrd+&L4H@^d>H{7y$N;{s zQ9$%0943(tkAGIf6LCWyCg^cJFs#``eVD)@k;GX%&>`E??XI<}PZkf+G`=IH`kcn= zVG-@G)GptzH@GY#xGKPQ_U^WAg=rF{~0E2*>oM0a*IX0*SNW;iSWTdQ= zGTKoBQ`Zvz9e#d@`T+2$!gg>wt_9!-bFk^>{|9aT2k6l5Z~>#?^eO5eylj{s=v*a~ ze#)5#yF+^)JvsHczGkO;)pv{O7Et!#l0bv~5(2mbS7Js20spHLRG^Ulw$8N}6cX2% zx#&NakIwY{N33x<3pO84a!L7+ACLd}YL^n!13C=N`yK%EVatp?QqIVuxidA?U*m9P z-mWA_^TL6?VJ#U1kjowA-|wv;OIrAtNNgm$!(faki8012wt#U0>r@}Z+AP3GkZVAM z0YV3neNQSycjw*m&$>G^!~x-3f(t^zy!KLJ6i zvNgWq$%vug4&!P62fAZ`U*|OiVx5q%u5W56-sVn^6+g;=*6c-H$DSQw{@+fjhNc<| z1kixsl2r}_ye+{IYM4U*cX|$30vH(aDWJH9p{Gy%+TNgg9zWhs1V6b{=QK5-ENQ_l zgmgWyZ+!ndU;yVY#0*`2Yl$B)<)xBne-0pE?)khW_~}YgsyuYN)x-h#ooZ-9@`^>e z$f%(Jw^hXHK}V9Q3*JCS7H(|qJ`YnJFqypu&uC#DD>*@+(mEj4vo=`@VI!0p5(^eWt>mjOe0-AiCf;2y6ep||7 zb>z+RgP3{*v_JF~=b4x0;c|As^5Bb+(Gzu*2UEOSzl?CMjBHdLn!Fy(yvM5S3qAYGXCl+R zC+;w?osXl(IJd$m`fi#y%DgIl2qzMoy|OjMI8)zNmwn`AM1J7aZONQQNg0dfdHzpD zHy^I7b{Rj4>i>`8{`ZlBQ$y*^W;xyaM4X9@actE3poU7103v2a94xgRAWwE;h8c9e zdUL?McVQ_rU>wBq11Spjd1o0d^6@{JbA@h{gMOP@g_&o3-j>Vctlji-*2}i-Kv}R) z@x#>CNLvOxw;V1B^c|Yd_2|6xCesxi0q!iQ%{Q!qzO8xcC-}aFqbwWCf7h4L3#7%D z$y4BoxVF(FU0`Zm@)Y<)P?Vn_Cj-PSYPk*C+`J3yk)m7x&B3z59G>w+k_(%cW`>Mp z3_V~J9A2nC?xX}AO$JLns)G`LZ65RHa;lMqb*SXL#*9cO^Rau!bX>K*o$;C&BWNKO z+xJO}@?(T8s^K5HnKS#+D->zh$|($LnU1S5VLxP_V)%EejMAcalO+x16iO)JJH5s=x!z1%42E^{Kc?mm?m1#<20U1l=A99txnFlM?Dfry5Ee z1ISPQVso7IztNtJzLfEQk}t|Axj1*ijp?Kkn<+caGavcnGZYaUpVzU}i7Nx?Zudfx z@|OlnM@c$0``XxTYaWZSHeRDD46mh-e9ft_v8P{bMp;QIF_od17jjwr3$#9MF$Bz^ z`9ByC>%>SJZr6Z0YQ#H(j-k=f$2U(QmlU}YEFvyj6)4nyS3hqaptO zVarIY)a@~Y3f&#G4R?(%LCU>qK?^@Svdjgepd_{7N1h6OETceq!@ z86VNO^Y9|c6=Jj4@v2lQ_`f40Sn(UzjS=||KxyT_fRVX$>9!j=_dM_+bKSK`qb4G@F_o9)4t<($xxr6%A^`bkh*tYVd>ul;7Y;$iO@xG@IPyd9RLI0Z zU`Qvclc@D`4iFuQb+M$_42oHpfjm!iqB!&&U_?Okn7gKSAjRheJenm>iBWZLho|+1bHzIpWmYsk>=kufn;NIf+IIs5U|ZyrN9mFImN#e z#doxzbx2%K44B)1hrIevwu>oP#QL7)FvfdPU-=Aq_ovw_A12eR%(rzB3-U5`N);k2 zjq?r_ah7iA0CCDG+>1X3yzsfgpQf?Y1rnVO_@B^yg0$vT8W4B8&jMDOk?_x+%oZgS zu!T_(SiBvKp!Bbb?{IVcd-d>fzsjSWZ=U7$wR+|DO9}VSEZ!WS&Xk81ncmPQ zCmmy$)++ss*Z!)m9-{ZB*1y%)2M4W8Vv%DGj+VYolcgm8r<~he1Wcl*N=EVTeuiHl zFu5mXVM)T*58_jAd`v=&J{=Yj=aYI;;mv=zj9h)*J9S`IO3N(=bTmm!miVV@p3Qa5 zXOgJs81(LD^!<456_0;M3ISsj#YNRDEJc@c+YToM)c7Ni*R4zcVty78{^a&ND#V!d zhac+cLV3)Mc^QZ?(g4$1S0?|`d8ewP6i&H)TyLUk(9#ywfO(hYHw))+Bi(nb;N3Im zK`udVM&o}nblLyO(7XDq@1zEv**zt#lb2}ji$!)`1 zO5j)UYJmv&CleJj7;AUr;eB}3p`uv_RgXz%w?T4+J%4iLH=kv;)l%bruaAdgf7yjG z2Qd^^ym5_Q0NyETD2MV^wDr1kwtYveTh>)@WG9Q{??h_{(TL?tJje&n(0qV!HRRGV zp$>zFokIcz7mjJbT9$^0Kwfdpak^(`>XxCRqb-L@uw@lBo#ZB!4u_^wZMV(&1DiQgBKwT$uKK)M6d@wi$ z6CF9j^_o-Jt1o1;n=GzpRdi3K5tClDf3KAoYtF9Lvywh!;5D@*Y_qZ|tLok$t?G0J z(RCcxokMipG4|HP+6+kSEZl!_gL^)K`g?zS(DCptf`K{X4;lD-iT$LbT(?`&5N)~f zQX|%hCf1BT0{)o?@ZMYs)KKvJtK@%Cf)acnF>Q|jwb;b)KKkT6O(iL)tn!V~h4bF8 zX!A5iXW;qc zvv+o6CFns7i(~_4C~;XY|0+h8U%_CKXgzef+o6X4Lw;8E@lyJG@PAH;G;*geZ_cJy zm;}G#?E=5>_V7c0>7FX}Z)eNrsl883e++Adin3KpZghTnV>R61oJIc|KYM@!QO;PA zEu$G6mw4xm->;I_6siX(k*Ng10#*`cvD~zQ0XkM|+y!vo#!ds?7-tap2|QPGxN68X zGslnqr>J(3t2pyB?hFK;6qlp=uSlu7FG&j*I*Mq#2vBqNAKVwnq=tDZ)>g6>wc5Yw zYo06Ud$FTRefezp*SnhuLFRJ32Sf6TE7{`7(@Xgc6{vp>iT>hf+$}cw(eN~SH&E!@ zBy`#VBn&Qt$q;vKeyjdXsbfXM2+oG-ow#z*|0|#}$NsBpl?-wqeC_SQ z8l#8Ti0i%x1`7<$f60V@0+P|croaCVhz`y){1Dur3*Gfccmd}c#w7YzCbG;<3R5TA zc6axslPcm0U4W|{2V5;iX?j?wc(`nUzr=cc_R|@5NAb)_44ZOYe!nJS7R1g^b z9Hw8I%*TZ~kW$U2fbIQtEMON25_Tkj{s`nPwm~;ya z{QxQE6f)@*vG=T?{h42zLJ@l4H{%ADY=l>S!+6gQT~hk;uBL5LqBYy@gQj3WNVJYq zOBO%NrR;k4KV)c|fdyfH%1juM@A--7B6fk~Lf!<-GeAqr_Tj^Ob^D%0#|q#FW~Ij8a~Q``DKw+4PTA zdF2{gj%@ODS#B;kC?E{^rv&|Xk&Jnph$Mr zUD3Py7qoRSzU(gE0( z;`sflZXlbq=9l_N+q^zf4F~q^mU3;n?vG}bIGmCazN9r(J^&vkMcDawsy`xW>#p;+SzbsM9RP8 zB}Q*g7-v6^@Jo-Q?97r#H1a4A2ndPQIt)8OHz0#RhkJwzL{W=E65tRE-JzyD31a)R zX)F`jTqc>W2Q6@fUU7n(aIHLs-V!*SM8)w51AvKuI{I<*zu$v=35Qc=B;ZW%<|Z&S zf@B%I$;@dtV*VO-_ooGQ_LbQ~s@`l=e%bOMsm^9%uC6QgOkXMy9KRl!2BLdzLigi~ zM-Mr(C;FV=$|$NZ^$n=eL{H3(Ka&IQBES(EYAERx>%%LxZgcmtJJ^z!kE~v48Jsd6rR$Z{B}2f2 z3nB7>J4%S;0|F~H6SOpr{I|n5;I!P&L9abTrC`^o9xx%4%oR5UC<1ir(fJwfmmu9J zbLye7O=CIHdhKG@M7l5hxF#C#$ywEd*@F8AuKB^?f3f%G;ZX1Y-}pH#r#ez0oFuYm z%gK_RvXq?|g%*`96j>tcoJ6)Xb`ho#gQ? z^Zi}-{kyK;@BaRCuIm`4nfGgZJ|EkQ=0 zXJJ2ZqNd8;$mhD_DB;GpBy)WHDa(O29L6Z;a+zc7?Yk`F7!G_}9QVKhF}hdTd5$EI zJ~(Hq0U(OVT?~cwR}`m8AOf)$&&SDb&-a0SgI`s@smIK^1;t_#uNE0^=M{wl(gJ?I zA_t57tQ)kP1hg3`&jtQkLn2gXmmW~h|0*TmsgSGJ69VO6i2UJ)GXcJM&E>aTDp`}q zy4%?9pI%sgDAsQm9upXQ?VS(z@_1R<^9@Vh9>u~7=THHCsqF|9 zcuy`V;;H$&-&8H~eekPRdfd>kgNmR-161P$LQU%tc%H9dCfo4(X$K5U-y7xJ0Hp;y z1=X5nbX{NR1(il~Xz??HIbedVs6&5jUuDW12{(Z|UfB@{*D}P_5o!Z=kevT)J7|J_ zB2j^(DBD2ckjKBF5I#X2NzJVwmUD;~w)R*lgcr_$An&`@REtg3!e7NX>W1HxQE7^! z#Ap!S+|-bOk{cb_RglW=N5NPiByu|<*90YI^3!+?6S=VG9@h}%fVnn^j;78!HKnXb zNL;w!+;8}yE9kl}Cz3)7Y(%6S5qcKiNqAhKm;lM}CxOAfG+B8|;1Yq8&>0`*`NB?r zR{r*Mv?l6b`4QbB9G@}*39j&wJuQi#{S@~;i%65O0;h!~u7OGgygg6Xa_#Kb(-m%x z%{96YWy#kvN`QjuxC3Za=RSmpZgS5W`fdyOXMK;R9WujrFFEuiwZ|ttH&Rw6?6uen zk^+T8{x$#tn9B;8Ck?l54gFO% zzzVmI`QUBtfynYsb8xcSIN+iBmQeT;Kn)i!EGdmF5h*Q@{Q+aIgD^6Hsl#5oB!_X7 zQ2J;uuCy1ytF-`gH%TV6RQuo!{IOtcTH#p#UV`_10dYyn!8wltbcfw7c;g%p?Ii0| zIK$VI&L=p*`StdW=`pYp&=T@-E;`>zhcpi-gL}Itx2+6EV~Qky+^!&AXZ)I5=M1u7 zK>iL;3dzXV(Mbjw@03x!J}Tk;C(Wo;1awO)l1Ty3p8=@{Pwcv=Gmp4>kzA77za##E z$j9!XB>IRR|LDryf?`#*kkyVsooGP;gA#gw(;fMh-rwdXyR*&;``a(hVVK1ZEQ8#% zk)N@pPL?-E&VR0z`_=~SR<-c!cWOc;CGZYK_K4IAsDlmq@kx+_^E3?f;h=YEw&;mO zWN^6t_eRz+Flj-}=<`j}d_e(WyM|y3wg1~K)G%2OmYxC&GB7{%G!w5<dC}p zMB!}lJ$y{)pEfF`>tK_2A-}j)<&(B-%N};lgCOk+v|0g`hDO9Ypq2gx>O`n@ffqZq zcsCUmmGVe2Q+MdaTz>tFXn6ic!iqHw<*CySIt zmcZtMwhZvpJN_SX5MkZ^k;Z?O?aZD5aL+V3#16p_#7mlC-$sb6l@a7Ei*|%U$RIuW zZ|L)`Rs@^fms~85S_=xKPZG*qiZK92iCBUVeSBP4zu(C~(cFK9U$)6VpkVQZLkE@_ z*C5Ew*^Q#LfW)2WKVDL6r$9TZmHkB$xH4?8)00W-9`I=cQlq3F<(x_QfzE3B-MC%e z-2b$bM1M(IJ}=079Sum(X?~GOAo}G`O2?I*(5Ui#Hye=RS9tQPL6!~YCt^;(y;-3J zd~y-JF=%UAs=*^+$p)I`Y`P;D8va8a>JMw{+<7c$)Z3x7LKs01r^X6f&)*bjYFXW8 zc8RyKSWYAc1(*~Z1c(j5iLV6_rj8(dcsj^tw5kSD4bEiK8#09bJRMdJvBSszPC)+M z9vCkYpN+9-IUsM*uD1>7Ld(B7)8d7j6LZV`cEXzDsFfP+`CbLH!tShXPsHWRjuL=g z56{Toa#$z_!@45LmUe(1|FhWTGhTYI7X&UI>*FLoYs9o4gL>y&k(>z9oC?Y&xq#Gh zh3A&`Yx-Rp#CK_Hr;Qq~KDA7k{s-}RJ?S@)_rL;7^~ou*AAJSW;l3*8cg;It#}p!L zVHKbvTGr&h^z2YoS>^zh`7l0j>krzv7T!g94@mpi)IS&`F;5@e((|E5l=|{xi|U!@ zjlPz`O*h91ZLn38Fa__Zr}1q@ExaGE2Jkt(DG~8*;%gHn@PNDIuYl+%h<-vuOcih= zfDsQl3f7{)n~)DwpMZYxgn&sVT^uQ0l>FL_6Vv`h@PaVi+Y#9r?iOreUdPHB$=M|9 zqVpGYl zx(^n2sHf;2R6L}nt))<^n|DvnGVT@^oPyhnpjKU1oS1_gd81QC(DKcFa~i-7+}_c6 zC)Moddh_YCn*$e?D3jTN2y!fRlT+0$6rk z`|P^Ot3oUc&mh-G1QEy(04k}*gW_5|E&nD?mS-3LR_EwJcI zeCjHFy;zCP=r(drx}AK$z~n=)ky0UN*8x*AU^psVcIjmB7WPW%xm%}I&EN58MYrjB;$zig>;j^0t!m)DHI_}GMTm%d1+5XhxTKD@`G&w31LY}RwG`&^k z8%hl46+5hsuV}`2s?{FUEwTC|@aI{6$hBO)u0TnBT}r2NSW~dKv0jTBcOkr_GvLe( zruwmpR4&aKm-A|_BlipT42^A4pC5ScrCg2O`<^uXt|aI^c+~#bCI>Bnj3AH>P~ zs7=2(qOSB{);R<%~aAq|zrk@6NS_}vA^ z+IvUMZHjKrdvNhGLt9%m6J-oLvKo?)@JL*!Ai3u$Npct9IDBtEO_ni``dP}9UQX}i zLuU>Lm~4*BOt{l8nX;T&KC9gA85U}wfZ`qS9iooU-^Sq@Xd~_lD0*Pz`nUkw!lL*q zP0ZRzds+%b35Pc@W-c|hph`t0C<`YVSveK8wM~f)kts|i^l>S9x&~vkW+qdu=J%k; zgbYrWquUF(@zNd-&7E;Jy76Hy@0{;qX2z%|N#g~hJpMf|Zx#_=psZ7tWv2|B8=LN@ zBDOM4mu#p4RGzjb>LqHfbgokt?0f#T*OB*hA{c;m4RnsqKH1gH!HZLLD|6NQQ?D+* zuFS_72Cp_Lf3zX#!iKoDdOC)}&F;DM7g2A@mI`sbo4K+%d}0O>6{y&${@lX@4<;Q- zo^xnO(v@qJyqwQJ<8K~JiXSIlbIrTcD_Zj2D2%(A`v?!-SX!&}v|PX6_@hfoGmYpE z`M&E?=I1sg4Vn~P^{5g_nWz5}HCo?ztqm0x8s(e!QI?OIwrkRZn9!9iK zR6Oui!Tf9u!}k$HW#;G?Q^FL_yc@q8|9IN#QJqjoP+nLE9WyJ{!ZUOBIlOJ;PRq<* ziTplu<;FcD`G-LVxQxT&cS(>=pE6?`&dxj@1C?UTQf;HsCDrq7_!(1M~hui9$8AuyK7YgbudScPfq1%1fTIqy0{V zG_xZ52Rk07Y^FS_;JA6A*j)<=oC{67HX?DVXR#xQ!K%>j${L_jg!?tL=}exL_nawp zk0-bHwPRcx?FnJ>tV#5(gAc{;vj3Sv*JABz@_BAnN|(oW>C7`)ezzH%}ds-5`394R7U#kMP+uYn5Qp|R7FY@K~Xva7@Lwfu*n~z z23r*;?Ujedn%kAa>!Yc-1?6bI;{(OoqlWDrKyzxO&Mu)w@+meZsDcbG=RE&q|2)?r zI#vAwrZsNV%Qd`dFeyr{)~Os$?4*E!2&WLyDC$e$>axcen$}jAyw1B@0&$+~b5(58 zQ-?2dN6pwqQ`6`GC#1yf7bnyG<>L38G-*u{Ypqk;a{- zClp+xC)%pBa%vu)%B9;MF(@-fiq^-j>Cqu)%}!IKcFT;poAh+^43r z{2XsdDV;uHYiWx#tc&ZiIPpbu@ZtC#@hj8utdBrd?{F_^reT=NGjG}055s^!$D z+%|pi6xECv-t+SR0RlV-or&C;n_%p6PM`C52+yg&k&pwpM?TkzY!$T)h#R9u@aKL8 zm7wAM(j~9pP2WMiquGGx8=N74-_6dKR*-`$4wWcZ2x-$9&&P7d=SZo+8m%W}N&3t*0$%PfC1?S5Oh5+Xa(Q+&BNC^7^#I79 zcapfy7c3-#fK!0zY19><)(yb7Vj}`Fd4dC6Cq*mH`$w&b%-^6H-)<5Q@|zp^5{Lom zzlR_02y`+?%YS|q;I)n5p#U)>A~!4Sm$x_o1cQbD0ceB(XoXq0vaeZ?4aQgWcu9KS zsWZNAX{{}&_oyElp7{K)y)+_e2GyrQm)_`eqcA;yv7{=R9GnQDfFgmv)&hYzVh?1R z$Cbnu_~e3P?iln=c5)(=?9V=rXemDsJ8+1Bb^iGwfPpi?SthiCd4gWP(9r-Oy2fGz z22MtCLa+kAAz}ty$xbl*l$`*H7J`QQtVyr*XbszZ@n9O6+IR-PWVFo~1$SQn(7St9 zME|f}8lmMEz^D*4yjk}@_5j!J$%%A6H%t1?CVvq0U%vxB{>|js)#igoifw)HKCGlE zgeJD25Yw4Bf^rOHi#vd^2Qmv>zT@g5GxELf*FkmZx8i!|?9dC#mT)|fEnWyLw#AIx z0iZ1>i*518#igzN_FDKmI^#PXYFy+5EqB<1!spNnhnjL{c?&20P|y!Yh#y+<03Ol> z>)&zm?dSt!XeYDnuiO&`$QCsYx$gpd6)SdpLg=bS%`)LNjKwHlKK_3B%6 zR`x4boAwb$)|HbZIk#j1u%-m)BoXPI7CXQ^ukOEw+UN2w;IVFk$3E=gL-zuq7uMv*D z@1O;dUO;3I*R&+MSD<5-;%CV1a1z^i!65j1j^W$*sr+zYQRP zjysRQ7&W!n_~f{pK}?~?_G}mL2jK`{CJM8yiQOn&M58C+^WvqRGkBjl0M0<#iGQ-p ze8qP^^Ic!okDGp?TXwahfhbaccOfvqaP^H94LL*?rz=Gg_J&;p3=vsb+nn(eeW{+s z_RA=&fN9Z+b`v1of7M$8q#L-BVUX_#o8I1X5 zeO$4y#LtL+={b86c{W_%yUnp*so^R(P(+YOP1faVuo;M_~c+~11-r7$1f#y2;7l6MPcNp(*p?dc&C z{KCt|ctjw*d&!#8DT}QhQ%-yCo2;6Az@>G8TTnJy$3UjV#$>f=_3e4t%ugT1;qx+&l~A|Xi=>A@F#s-y6mM%8H^(#h zR^@j#ib%mpIrG`IvqH4T^nrItZ`^SL|H%Cox1$uUK=VC!a^4y@jnjz%ST{{VwJGRd zLUbS}C)egAj=jPl5r4I1D@&J<6iRvuMa6Es`ZO^zK6hUp;bbF(1{=zyw3RXycg5oG zSbg&F*`(3){U$QGaPhww7$Pn|#L5GD*!EVa-}OVmc)w&czvvKcmT{hY*$-{{06fMO zpkLNWh9wZ{LzHvSPZlu+LzGwzP-x0)5?oa>%AL9Hn-i0 zBdzhAAL%Dm>@~EH6bZW_^wtdY(F}{(8F4j zXJ`p0@XEv7SNM;Z*H2efj=H{X_U%Wj{o$tWe>LFhAm->jS^`&vrd;2a{tK^!O2|p9 zwttq^J&?R}o)a&^#BEZVLht4jaCsqkO~EY2Wu#ox@I-FOSXGEn})41xfkU z9i^M;)qJaSmRs9-;IfQ4$#&BP(i@*Mb&2&Rs0F*i6D6(c)Fi*#d1Er+&;J;n z&hD;hSg4@*%aBfxA4l;Yy?-%7mArf#R}#1zjd@T$rY7gMf9F9#OAdGct9uJvf|mZ^ zAbVpunp+;<7(I9N%$vmexd}DDyVCOG$qjkb!te?-OW-qpuji4z9W}>A+nVnuuOnr6 zPuh_$&`5 zYUyRt@t?veR&eU88RGqBVWAVZxH~v}NnTo`ie`eR`pot;kKH*>Vo@;SuX$XBzxo#_0%DoqLZZwlFnGI6sip$2X3fg;T)aUudjxA z=vH6DD2Gxshh{53Hca1U7ekJikrRcnF1LEIu&4WgpQ=T>S)}|1DGjoDrf&rXqn$$a zsj3!4rKk_BiPRm-?w7>e*PF4U@7cyBpmBmSa$A1rjtBX1Cbc7_<@yu8&!$Q|>v+UWrF1Ff z@)q=p+1`bsDjDoP7Eu`=k_X8(PV^G?QE`1CDeEC+uBp$mb9n6XQQ@X|5!^JY!njBemNHq5scK&C?+d8UzL^ToZt3@k z?YYU#{`B8iILpj%WmDX4c~-}`jI2jaOkZ6t%nGP7!iQOKcf6DoRjuF&7`3OWF#@gf ztj;dXrUo|KUD~;ayo{IHV6TUek6^Lp0Wv(o=)%2~GyZYB#9Cw$?6lZ}s0YB+_8G9) z3-qg^MHi0*bP%kZ(btID^|FtrNyS3$P8IQQBXnI}rcx`%R0S5TM$P-u*Ks|Fc+qsz z1D=T;F=mLg-~O5U^l(afL&ooZ;N8ZtAENl?mczGkpbXP}2K;`_Y$)`w&JjpRKFG5R za&T{2{jpFXWmvb#(vYJbo50i%BfqGW6S>Q-X}f#2h0oeK&#HuuIpTcFQT31q>kGFO zRoa^eE}p~&=b3~;6#;nP@QDFQQI$hOcCS*0x*ZNtxSw&CRO5M7+p5YaYHT9GtW+Cm z&-!T+Dd1ym7}>+^rcT}>e{avgdV0F}GWL87M|0e<0lQc6FB(gaW=Mv-1(Z$|)qZRb zU9BRt!MvU{tBH3_bMx=i-$EoiFCE*j9<1?rgFeQ#WW8mxgJzse@HKghTdjB3Tas+U zwi5y>jW%jHF}+TC3^hzwoX$!RG|aQQS>Cnnd|$@gM4x4W$LVcDW0c;73a1j@`}<}l zJ#TbQ9(kmtRbMFJUd8Bs)ZgpRbg{apt?*$XN=n~ulqb*c_L-hP#hl-CikSG9#|({a zR>}8_Jm21eIUG9iM*-Pu!@zV!cYnirXsG0Q^2@h9O}c;utFnR-OI&W6<91L3LI<uJ|});E}B?sj!fzj|DpQGMAk_?AsrQ|S?D)})=roGk3NtzKFeCWj01PuHCmh~Gho zH7hMSRBP5~C+O_C?K!)ITXwqA4zGacTDqYGhl5S(zSqR8C*VrQ^onO0@A)fECA(UW zwD;5Xqc1;ccF(pCkCNG7ASrULb9~_L7OT94Df)Gy4CmAKfg?(Bp0J^z4Dv>l%SzWL zx#cbR8Djlg6tw);MagWYIH=W*G#C!im0fYCX+SO%W*ilC&eo~5%A@z^1*n>OW<4>6 zDH+;SbJuXPm!30svuyo7NVyO_M-NjfhVADhIL-o3$_;9keE#lekb4hE(o z#<>=kj!LNkZYXF$req`#E)^)h$&eu8JVVByb1{oFY8=&M69EjbdrKpQyLHqrSi63x zMy>7r3GqZOn&4uX6N9d;JKV##`00rq;#Qi6zE>oQA! z@K)QN;lqX}FgcG(O{MnHZM-B?=sG0}9?4?;W;4AZ{Swo;G_B&f*}DDOqk~ROXY&|~ zKS}#h6uR}`!;i-v6>)oQ6>Ksn21=!5iHbSL4V=wzpTcgMzFj?9vCpmIi9x?p6kM$G zil)^iVHs%cw&(a@yHb%^(fb+V&lTxnnx(#`+`$=KI0_G>M=u2Zmdq1;bvt3H(inGS ztcE-iz4oA@sehCXt-%svE#B&zeyh^ow4(BGAW*B$%K;eWuToS)xvoE;ansi7YB!iE zk_wyMgjm?=yw(QP?Gk9`3>hj|OQiPt|C|wK!e>`Bd_aH1KqhB)V{-dZpSxD(I$0wZ z7R)pB00K3+cJ)eA&9uYjbu4c;M#optN2CK_yCbHNR zBV57@SXr4q9kSz5YSzIc6@h{mG)Ji&`^iClAw|dbCN>8R1mPDHD&E95AAyM{z$Is! zXO%@a^rNUTJ**A7QWZ_tqAXP72%@Cpj?K zK4p=H%rDuIT3?7*IhV9_z1pcuIq(%Gtyy++Zcqub5x|$3k!Xw@|_#r_>32K*?XFU@EegR6hu}5g5K?3q)PtG<@IjS{rn-4NPq_*@Z!?oi>rRpPK5~Aq0Us40BfaFc4yKsx1!tG+{XH z=^G6T0jYeK25KsS^Am1B4+Z#7G(*VJp_cwTVMg;Hc)4#nq?ruu2wR0&WQ)&$r-AeW4r? z306Tv-0&|U<)c|dw2Je+TlsvQud00 zSAb7iu%jOimz3p1pO`bG;3gIr)eGF$>dDC`nt6 zQ_ukgGZ=Mf~NDN>Z63)N20Ipd8MKZUr7{58Z4vF*vMgr#=ksTVxIF5nzyhLh`sM}&^AiXNb5dO(ft4wH)67B}GE093IO=nh z9(@TsP)yIv_&n5i+LRxFJsyxzAIKW|G?1EWArvbS8V_Lwi)*GJIZ}?x`3xnklqQWU z`G(->b#6kEP5-+{A3y+zFc*ec40OE!Q-~aY5q$%)ksv`A3=oJjH*`ge@*OTeH#aK2 zKWivY!nm{@NPSTV_WFky4(Q!M-6?Ga@hk=f^aB!ZklwQr-6CiRP@+C06#QlF3d&wE zD_OB3=Ya6*J2mcCC_evVrCiRJRoj}V`AwJhSH%6ZxLR|Qy}02DovH&I#_z(C!p2>W z8vr+LBq5%==Pij}oxDGcoe~EG=loO5o{qh^cOQaC{;&iA>IE?E2aY|ZVIYx^|P0H&-N{)3gl257+pq~@wi-Gth0L`uj-wU?@xIHPI-StKA90Hg{DUtB@l!@3`bi1dS34dy9=eOfeKh`Ez||*pG#HY;>N(^L z<#KjUTHd&{0)9J#BG)uq{4a|LiJ`V>>8!w3!gUrDA^pF{&c~ZALUiim4yTz94?gRN z|B{#Y|7cl35Y+(%6wo@~ABwQBV!F+=ma z9m2+79)~?qFkS@GormFYUnoxWhe3l0^8)CQ$Nx%6!L|g;Xvs*|5h9`GAk9$jK`LcT z^K>{+9$b0Ch`s%9&N5I;FN$l_x!^z79TG^8!rx^)|K(f*w-vA>NOUZFTuuoh_myfa z76$!t%vrqsi}fpzQZjtldqyG(77jgdJP{yU2KdDlj_JSBw{LGVf?}!dRVY9~E1>oe zm~Yk;ha$}Dml8w^Vn+v^2+}}?3Ll!XM?7c-PvUQ1dmsnFg&c+iB#Q-NexPm#FKSL* zPpUa3k&tRoAvbEepZ}=rsNe^j!?kKmkq)(P%AM&jRAb~BL1 zQ?_;^6!TwGqYzR9YDJ?ebDLtyS^V6ycBA}e|1QU!mi`EB2*z0!eHhHoko1c-qtuRg z5Jtpr>oo$(b)^qK15w^d9^jAtPHVeH&^#ws#&iRS>}{M4jH4XEFM@u1ljcX9L z{_=YAv93x;Ns*vWY>VX!G`Qlr^k5!_{#!C?^-7q}l@ORW z;_vJX@qI=+Es-U;8WK^^eeNq9-%JkV`TljO!8wK~2>+WL@8`-7N?b+J%7{IOi1H{915d{jqa>$j%ntpc7Kt zwh*%RZCSHF*72H#O!CI{mWPm+^yCg=xeb2_CG3Kiwq&Q?B1Ma=*0S6RFRgEX);3lj z|1(bFS9ocS^V@f`r{R_z&b9DTh`iUFUy=R3yr@<1(*88%#cC_rohaQ)|MSoNzw|Km z66^;$X7gs1Gx86P@s)TiKY4Dq>_2~NN3ZW1QpUocI@I#u?WP*Fiw|!*(}qUtyhata zG45Bp_ce52CKpH?2R8Fe4ZPI|A6O1)pba0z$T7wm-KPhu(4$4VNexPL<+=Cmau;{3 zajyJ2?DG0n=2j4?HSvb=jLid7ubEsO`=( z@gXc~P_%f2$j=hFo|AaxX`ILbxX9hJlj2cw(z;E{p)p>@%7gUgsjK?=?$vH?gAdd% zYJ~pkJn`K})wyc53)q5k_p(}V>eDJA)(hbz^@UJ2ogP3gd3UiuUc-mk-HrD=Sf&c^I)8#1M2gDO96h>Vj#0nrg$wVsV=VuK@;;fe>u zjI~E?$sJXYaG5>+b?vkZ&(ueVgyv}Nenra~*2D}e8rqaERM1tNLk*f^8Rdsd%sc`w z!Nnc^S8c;J8(1gzqE6VIA5~Z==7(>w_}#Y%JQSZCO-kM$Mh~ZlDKi4fVuB7Lmt6Zv8Q&si$#?Ga_u+$G&a0vSaU~bZZ<}K8 zpg0JeGI#LXF+6O3!R+e6auIv)^xd(Q*lVe&xSlfvmGyPg?o3yNyG8Ra^XJNGo@+MP zDZNMQLPwjB5XtzFHMS<|h1Bs}+uez;y`tFwNDA92{q5g0cbFe4?PNaQGdE`H6Zur1 z*N=s>V<}c(?qjR3R^gaNS%M3_ZzpQKdF0pABVNK36OhSRU}l|;*AWVxc(*y@U^Mm^ zpT9bzZ`190ughivdLmz^pdO)w8+TfCKuvP4a*M>8e4+1Nk=M%G&2TaG_kMQ2#A81B zb?(C6+S=4bUJW&hjfS=fkp(`hpYGR#N}p32b&$TSEML$oJTYHY$7a1DTjW3&QI4dw$T8#gaf`g?C8$y0CWcKH5#xFXNSKszbjx<*XcB7M-5` zq2|^CpLu$Av#*DirF3uE`D^X8^;3%@2 zVW@P0X)?DsRJz#zY+v3MVcoCiYMR>SxpW@3e9+A^6!tu7tyQF`XxQ!MGo7xvLDm&O zt&jh%VuL=z11L?)zWo4a&!?z5QZD z00j<|td33ZdHvA*$@%jN^xc}9;2WCje0kW}k+;Gmpx3m(n9a!i&Nmpqv*V+$)4_pm zr^m{6&SN*+$9)UIMIVwK@nv4|)^$(jx1{W&=-SLKd?<$;D?AEVC?>vO6 z+H5(HLcds1O?vZ4h;$oF+#w^seLK)h;>~iLbCpWhTbA1Trz2na`&X~kK0ab7Cz7w5 zhs<>bWn5D5uWzyCu`XA8$H4CW=Fw*7tSTZI^u`g@tXyQ}Dj)bVKx;gZsh05V|Np0q z`~Q8Bs=M8xBWfPGS#jTuZ`LrSp z9L5b{MA+-^Ly1bZ6NKM2{<3+Txh1@TQ_RHM>Sp%wAu2bHeZz3W()wVMKNXl!Qk z8CFj7Oyk0ZkzqXTqVskIq;=czWe4cl)fH->0|mLXwV={sMf?*ic&h zl^_2mC(X>d-8}mB`JvFJcz$N-=xqMzuytW1@>_p=duRQ;Y>)N;{Y6T8iC!@&8*3YF zHsjj3H0#<_G(U5`aWi~yozGip)ZQpA318j^hacZ1pJue>yOW(h5Xxp`swk9Cx@3c z1=j4RM14LvOAZN&ZTx8;%mn#epNpfm18rg~KkbwK>yJ)7l5`z^Q^lVhaA08cBBQ8+ zJfmQExNUXW;6aWCjiF2-(qQ%J)yIRzE$0SpY3?d>is+jnBx%_}^d!Mpe)f&C_u#vt zl0b$z^(7(Y#I2=(|Cs3h}|CgVsvIuThQha*W+bpS&e^N zI{$7do@;q|7-G_*$EruJ(WaxB19Yn2g*s1aIlU%33@gKb5N(_C?5GZ!K7}I>?kj7q zx-x*#JdAZMFr}Y3I?a4&F{@2FUUgO>!*6I?!QIp>T1^efE{3pEYM#&==4M{ipBaKb)fe%%vC0-$RlgqT3 z8--PImA_ z@1sKslQbDvQ>6?tF^E@Pd9Zdr0B3-<%6`EZq`-O}FlHx0`B-;~V^PEB1tcyJ(`4HvZpkBT&?8XN?-`7S+T zCcCf^!b~-$8T5BTa+fjn{LHHyOy0#4GJ&4KdU@9vj}DQohy{P_)Vus;v7Fl)RJ>&& zv|ent#-;HxnmgKVe6oa+bHw>!&E}3*xtXJUW5W(4NPuQWaoge&uBo(@3I(!jyonfg zej0PRuMuM!xM;UtYAxNSk837!;lm)`0U~YO{oS1eCi@a?Pq2l+hYj=T79{+k)d$k} z?=xAK`^JPx0kl+ZK~m9cuBoW#%ICUH$F~F;P1>n@lC(P~34A!JL)$5j*M%`e--aDN zXWus*|M1vru9>+U=IRm5c!aIsBB52ASEG$=84F7-gT4&LES2(*n2y~QzKXfy`1!ZA zxg}dZE#l&gj1d21-GoSjN&+zdxPDZ*JVY2%;;Y;?IbQX7QPc3TrP6; z9EsmX+|1InnK*y>roa%#F2kR(_Jx%TO^-z{nLd@;L0A4T+ZRcDvLF9=rk5t%Liuy3 z4m-&VVv3Q2m}8oZhM*H3DLZHZ7bc2w%f}7V=Zh95mx)cC4rFFkFz_nYcOW^DEcYPbVvtuWTV7F56cl{#}^Zu?u1HZ6Qa2lWP-T5FJh zlNF^@u4-=oQ)9Uwn>(PXJhyy$=Jhl;%dbrJKPSrb(kC9YtqU48C1?5^XNXBX5K>oLKg43pt5{v(F(;*Ed-hq2=m zp`kK`YtZolJ8HKI$D|GFe27f3#puQjhMNxc{W&vso@OhPqdzQK{$e!I z&cug*vP^SXx~BMK>QbOJpVh+!1wYNPii2Zm{L#b{Tmp=X?bS65%CEi^iME$zls&dT z9^_}JEKI(^)Z6kCH>0bG>E5C{=(Cr{mj)Mt-z_x=UU(sn_OK0SEYjk;t6zEbQLCw4 z>ixsPUiG%y(Y%i52QQJQQn2XMrQhf^Z>N=sd&@%Ud$~5(t{Fq~GL9|Gk6w3Jm}$gR zYEBYenE}#O#*51pm*|T}YRNhgGM6e1gIFZYcc;)7g4`xG1sAG@8Uk@c88zE0=Y8Ty z{NXv*!&;apWHOhE0}2uz3rP-cW=^)lf%~nr(8Wqgm1n#*)C|<}l)cay8CO3kjEkp^ zaqvaIq&JLJbPpM-1?o4TcVl_ya|HZ|756he#7vU6F7JtdZKx`>m4oc}GQ((_bLU0P zCiHHWpQ0a0vLyeKA{K;eFKh{^6La-D9&GG(o3GNVnpQ-AaUj&C&W=>^QFkO}GOd9!(?=ORr$;Y{*olgZWC|JL|=o`6m?fD+tyt$=!n9)Z=9-Y$|@0fIE zIhPcmidOsO9ff<{%=ZNyPs{!tLdTFaV( zp$%jEhzH}uuP~n#K05aj?oE6pJw7{jq1D-G-Jol-PF$lfVCZI_yZfw|EK{ykWkS{E zf$vW>lpD$g77ua!ZY#Q2Mq(a)?igWz2Eauu|Cph2p!n2N?Q7>*f5C30**9v{u{@MA z3N#-PjgT3iX-trbVVzL@Gvg=Pa)rX120!k%Fqd>Re6I{*WjJSM7if#^H<>hw>%H?I za)fJj7M{)J_6dT`sw_m`YH{2WuSP%Q87kvBXu8f z@1sF?M(~Fr`7*caldYKMp;EMUyvUW&t2fk=w=|Jdr{$nMy}layS~eN3kLJB@hWs1UrhB; z&8rCI)Agk)KesjcW@>`tM7Z`gboT-(Yb{O-o|WtulBs7`vRMqDe2>CmH8G9f+m=(0 zN(C2G8(;H1JGdX%3oi_7jq{nEC`#}~<~C>zlAi_mXD+!ne>~TFxnY6%a(=oWyZ27- z7XJcHn&!pn8fs>6Lclr3bo~5-a^afH*6Ve4Axy>$TCSrS!^yb*$c>L{k#8jFK&{Ug z@=AAmJ#nOgIb&1fQVLmPR*?CyPG2-!jM;D*+nnGK9oGOKw;i^TS6L2qc5-4QZ%nBZ zE=@kzyrnQhWb?rCNy4;t__vDv&Xp*poe=9*Xt(;+W|o>}M>Lfd6_&@~p=57h`o6nV z#kXGg3X}9|p{k+Ej%x$M-JG;r{qnMD@Kx+1*5twKvrEMz-Wp}|exPIT?L&8vH%FVb zPhL<$iv5R%$*x3zcDcx z*al|YKJBobdM`epO@E_JW9W(vI|_S$lOLfRBktiIXA?igHry~m^o2y6KNg6VbSK-` zp%a*10p`5U!-e^gbHVg(59W@VyMkd-p;G3av>1_t8b|!p8R>Jwybz;=8Ak`vd+0vS z&*-E&^f_C`TXl;7uN2p>d*MUo>O{j}wJ}oaG=o1z-i$Ys{vZX|n)il{y)<+ph0d4Z ze_a(t;a3OxvV;xyYh+htjENMz@eOm+jK?v%f%&Y0IyA;AN@sTnQ~TA>=0N>6_m1V^ z>~6#Ot*v(&?}v29;m^%Cb=7$-Q-?`0wuA0P@X^>LCTC|x^%-{xw=NV)$80AuLzl$% zQ16f_Tn>n$V0e7D9j>i# zEZkPROpP&FPRd0r?@@O85T?Vw1Wpa7prBea+TiwUfzML7s<&2a@(`Y^`b4S; zaEI^|tM&Hb2Ejbf(MCL8$*a+(Q8Goehq%GFV&n7KZEe%T(}wzXkFht@L{*Jzb!aIc zM}|EtgopC@Q%L)HBpEhzQUkjL)9Zt8o{rV%tgd#K(*GGQR=29DN@x05btBaC#K*Fjh~Dkr{-Y0XGYi;lZYw1HvxDdo0+qw`0?U`dovzaRrg$7;$V z2do{|8>|Z>axv174fPt^m&rPrsE-fzJ<)9|g0%c6zHTn5zBE~^fUv_K#JvdQvHW#g zk(jROs)J00qB|4?=$}gx`aFlF=kk{|b=OV##t!2(6h|pbvwP3=>Evc!lu%ckR$j&v zUR7R@T%LKY*)FtMJ-&G?Ui?ebeb~?UvVg#;%p0$66sRzQelDZZ_DsE0OZmlzMt!}9 zF`G8Jxov*z{n*PAe|&&#@NQxZW_e65VOmN0;xaim=;{e;CD8>ddN6%&ux7Bj-)_xt z>?C^k;%v;Hwn6|-sBU2C!Vy&yADn%QHENZ)ZEI_+xipAv>r;MX`!Zd03*pIXoJ7=v zCRNw0Rj1b{t>5gmti05orF=PKCrwL;GTa=`CE-^a!C`8cH}aBOB2L_Is`Ep41UxB| ztS}dVsJx%WHJDKg`ZJ!L?YkEjynNrb<7L2;cKX=cj?Khn?QZ)W^xK!6>s=+!Jbc9Q z4o##Iy*v3ap2plHT^Z>t_u#1;xEGUeYZW_QIi*jX=-|dX7^bw5&=fCfbz$I)r2M%i z`JQ42mQX?+2mrF~Qa-vK`uR|&1WM7Cp8A^Rp(Vn~&F_jE(wuF0T~>Hv@#Id_M$ISF zw>2B=55Ftqfq`qulA#qnzRJ5-HujDfA37xX!xX<#s>(#G49*;oV%K8nQ*ZaTDJ9ViW!jM|vu}oIcomnKQpKo4BNRDzE3{pH1Y_XR%Dz zp`kzC*u^IEsw%!4KJC}{uCJhy1IE#{i<)ycu*@qj?wrtezvFi~c<~mtJ>rzmyQ#9H zBo2M8`CHSB2*;M|quCL*(_~HpbS`s|%FHs{T^%|QR7MHVcOs=v?WWDlYIwbNI@8nX>?YpNPAD7jkKSFi zAWQ98b|a6u-8%pNP($S~tl{=XE|!it=Z^6~4W|2CJt-)zRekc~&42b@My*Ui@o{rGd|5L``z?L=RzkR_ZA8cX{s7ed%$nZTpS;&sa zU<$v!)EeNP^8U#44>`3yAA)p|y5VbeY1kLe`mNb>7Baim-m`@k1Ig2~`g(~Al!r}v^p zk{{WrFy}TgK(gPzbIN;3cXQiSoN32|uIs!e#~N|bul)U5hq_K(?~X%4<8!9oxJOJf zub7E!P$WUZLV68*&Z+#u@RBw+_*vmpo0)rA+;JrlK z+?K33(8;XcB24^3aD>S3yfOIFAcNS|9ocaT9pHn)|F8DWJ)X(_|KmC+ht7p=M2X~- zGKUmas2rBbC{gykze3|ikyB=qNEAY7!cvSWNjGH<+ucEnWEom)=s*sOF|niV_gTL? z_x=6;{`>v&`~LCs@YuEO+O_Mt-q+{)eBQgR_v`uc0A@8nMZ<#iHbA@(kUW4l!UDKO zx}$s~<^I_91*6$3Lm79htU?*mj&-{D#cvue0yqRZs7diU7iS9igFrWRxT-R+>JR{= zwzF_%SIs@NueIOIq8NEGI&V_;%P4)Bz*QR3x}jieoIo%Vo!LZ=y7Ow^uE#A(?&WY76^<(UOg`OS~2m!-G3Gm4}%h3 zb>b>uk9DljX*-xx6%_=iIotpjAEGKQB2ubK?3V^N&QmY5C>G1xOcq;-^>9nf(7iC| z_~=W;{fKA>;7g&z0?PrXuj7#3H2`-D(KCzsx+E{|P4?67CQkEx=`T7?PyUMCIIILn79|0&cqp3;;QDm(O+c_3M#0(=7Err(ire1t!5(-{|^vH&NwzrA!pm-`lA9x zU$1Ij ztg)*V*;w)<^i?@jH+6A?dT?E8ETk`_*A1k=7KjXB&hb?QEAPWaY^cXJ6mKA^$MkNx zxYk6)BmB?&eCff7*CDgWihIylzyHyQdY1rCi!`C*(|0z!Zbnz*3Cl5TzJiDEU&~$% zsi=bi(<>1FyM?mqQ!=hSF36A$D+h4|)~kkJ$@d9&%k3wA4zF9CwpjC!51m;u(@{|L z{{Wl>I9kC@B;nS5N_W=ast;FM(U+bN(Ont__-`?!fe_JiW? zee6F%SVix6$5{4D+O&QSxi_wl&r&}DB5Dz=6}SwTBc5tO`UeUxk>);h9fVkfPH&u= z^{)Mg#lpD5_-zAeg+LYNQ${iNq5N}Wl(aAL9K>rhfiT6kOaaL2%#b;^{yDRYq0fS2 z&{7M;_{)L2W-1Jr1=kMY0B^kM3KXuWd+WQef$8(_KusSgq910Q* zM00~m2Y{i;h{EE5FmDnrY;SBV8UoB#Jg)%Fh&plEO<0^qFOT>1VC9W(e`YjF%iC^I z&_cr|oXoSk?pTdU>_8gb0y+g}Bbmcz2t&30!C{2us7k`xIJ1UktAuI9RINNhwd=h0 zwQ$0UqH`-lhdfc8D~e)|RAwvHx`sHk+PALGGxfaWs3+^FQ92nnw|P0gz4;AR?cH$Y zNqFD*nRMvW8QY3(lt>p4uYky;pfYipZ@J5uutl=Y@LysF*S3S!0+aO7&P}cxuPFl> zi8k+E?Fo3*DffvhrC)YT!WeYGr5gl)t zULnK9j*z+w-r;%G<_IHXC7LV=slGU~THk3(z*!%9`l(4QGt*>0ivNqh#uJFjsVUK! z0Kf08ga5YUFKu@bf#Sg2!>iChJ9~S6g&-FhjbCPULI>elB3 zd!plL7I5QmBg?K^%G9Ru;R&_NMds%lTGV5o7pJWT4$BN!x#;1Hdey*ldy7c#Lj>=; z7bU?8p=VKpeubnS+fK9XO95>%+aSLZ!TYA^wCS1}MLX#I)u6MliM+kP{&SmpgwXaA z{wwpEDbGtceZ*E_M1&WBhQLqO*rU?H}Bge)+LcQAm6lkWzy3SRvi)bocaR#)@u6Y z`zz@wE|~%W%gLn3XZ?ME505sTf`R<b*eh3nS{QkNpYQ4n1*I(}31L9Jp|0EM)cyt%Pi z|MSa&dA_xdCpS0F*a3jRd(wJ}Rw6GfZPj*7o)8YL0R;I7tU+HlH-@0)nbX?jl{ab} zMdkXeohw}5I84pxQ8qDqmDHL8_(vCIjuz7$RjU;SH8Cwhqc?afUF4A=7kCV)P( z!g`EwOHNJYTBb7%pgJeEm6`#yyh5I~s!rJb@9UnWv-&f^rz`r%*kvr;LsnM>|XKeh}-{FjM<_G;u5O=S4DwoIOT<-jjuuAU_hk z^?WaajTaNEVh+@NikWRQSszOvFT1D#^r%BPrLgxnFeXXXc%4HM^L@8pbti2x%&)vv zOmv3?0I4V#*Vh>U5}qd*Vtp298xPX|N_aEHbJqsm{%|j#;JAtdzA}b0kmJLooulW$ zxIKpdtnBQ?0w{s-{=Qe>4Ko#|JTm3xc|7rk`=mCR*7G1c4?huq{&0XnOMWr24gdv0 z2)Dw9sP_9jf)>ZWiPu+uryh5#0wzgsg-wFsV1g2V0IlQM3@PWJcdhoi2NZ(?K#>)p z*;72l*_Zbb;dFX&Xd-TxRpo*dhui}3`jS8ZMyWn$+Jgz=E8rmsU;%!lxc~jDgV+Ed zZ1)NcD5Wmlu(${n(y~TVLiKy|{lJZVkg=X7FupD3 zw|W5F0Jx37xp&}~fnWjvSBwPGIbU7Rul#NU_@*%gZvvkdbBeFfZ%`)rTl$t!6HfSI z7o9!eZt)1Gq-#jP1^39jb^+ZQjPq&c9w%=T!N`E82C7bfW|2~=k>w>+S3aT@#1uP76w*5-fyvba#Id`F~||G zJ43^d6@(9Y1L4?Yg`flQ3}j&dSm7a9FF@RGMeL}zL|6l@cN2odft5GYJm10U--%AV z7_XiTAIDx%$oX4#onlHU;+cZR0lfS`ZhjHu7#9nP>d^$vP+)VXXLu_VC@d{JfwnRv zs47zgbB0899%RtHhNh1A`i2#zZzcVe2~wLuc6Xs)Qp_y-5fTV!lXTcf9WWY5koBw`v{Yk#vnJ&$Dg%M5cS`F02(%>x44-YJOQY@<}ep6xeKDJ5-l zT3Bo>r~}btf$C}O^gHptWV9o|;Uomo`#jMf7&Tl}px;;r+T;?v!jHIYmU zgvB?RB(>fGaflT(LC10&vN8&fa9Zw5qqaF^{>Mw7DE*^0C zk@AzSC`;bQdxNtmX7{il6!L&3IJXMsNw#PJ!OA zxFdB3OGx2%tM`6d6T_)eru1Cyv>B^uS!(*wl^DrHl-iRJe4vZ=fNy8pPZ=+}FrwyU%$bwDLfQ%>( zj?C4*L?q1@HRw+}JeaSF8A|ilPO~Xd6ZaR>#x?)In_>qc+9gv2494Q{+Ra`J#%(om z+-t^}1nGpphPvuHxkh0uo_Uu>R5^F>x6V-w0X(Nyu=_-H#r@W&)i z9#A*ukhir*YkIN9@blm0vne&Ew1jPZb^e##Sw{;;v~p<~(&meO?eBPTFWRkGOd)SV zO(^|&fm;-$P#&?&5~WcItrm*(K`XOy-Hhu`w` z&kf$2(NIP`=I3nE7G=$N?5CJg^1pdmJTCoAgL8rf5oZ*aNv$*7Pu5IgtK%?7Q7JAG zW8_9kOHe^cDd%_TX0XRK(%39FTNWs+fm(UKpMB@Pix}f3YjaQW|H>l;i!)|sa?Ts< z{Ll%zDbT)IqUk-*&YBll?5tvW!L6m(ht4%`!@p#i;*maFezPF{9Pd$+PFB#b;3U36 z=51Lm@N0fLS^b(RCwB~VSar+ldUm7D-g~str-yr}1Nf2TNqmDqfbO8J@7rMQoFgv{ zwOOETH+?mP!5TUzx!11+OZBWsR!WSP!=p!*f3tGZIV==#?Zjf-TKL-KPWYDz)}Kb_ z#(K6t(fd4Vdrp)vr91J|k4u_nbD1Q;Kl%PXlir#-o)Xb(_B3-Ogu|?_$#uo-!rC_0 z=FY#xB44Q)QdDv|sm=LAoqHssFSJi2yGTz@i)NXES>Kl50*2XN8RJ9u=k{RiD5?~S z=#-i#8OhaT?_qN?p=+R>cn44$;y}}YJfa`x&JHqFB}G;b(A)V%qEiE@hgmiN`}zPq zz*|MR=2s%JALHD@BL$~~DP%Qc&-c8@jz78vsaGy60X%>^TmE=F`}uce)_3hu>Vqe* z3szE&(d}EYU#WarL=FS1%D3=t_)g7bd^FJ6F`068E0m_TUwJ(!A-Ktyp=e=XWv$^= z!|dy#yTEs zsY^Rm+JR>pnHsOQJF;Uua*&L1ot{}3RpeUE#@9xeWN7VeZ&`tLGxm5!9Rz#0Xb$kGi*6!pb-C{^oZ=(ow?%)g-m}-_fCxp_V#W2kQtvW5LgR z2#(2ksODw&q;0n-(?oWi5pkgY^60)h{Ttbmtf?x&-hr+RIB9a)~tyJ>XtB-&M za;ieAbf3ieHU$GZ9Zl68s)i*xn}m_`t%)-!E`F}AiuW{jvDrDaH&SsmCrui?eluGj z;lV*L(F2;}wA0uH$*iM`z#2VH6KZb8B*YzMv(rR=)4cBR%3*q`H2g5uPtIHe^dtR> z^k)9*%a}EImiTKjo`ULad~LTDK5&O$6W;O!8*$T;ipAP>ad)lJ_J#hsGYeI_?!gvA zEZ*5JNFsDB17ecMX}Cm~@C(v%#F|SI)tDAcig~#;d8Tpc!()tT`IkcV&3)%{IG0on zG0?t(oWt!4#eSZG{d1IXpGq-fH0y1F<(yld)H?DDxV5dD7E>Z-9Z>e zKWZv~3W_ZpN9|?cjlxUCBhZ!hpj1IovPYKr>^OREO)@AL*eLdwtq=C+=XW$`rUkYqG4P&qX99SIN^0K-<|uUOj@l`Bb$z63%Vw6Qb;g1F`=||wm0)J!NQCyX z(qQGSUf@N$TW&FXt7qt;+yw`)3GW=uKUuG_@69*wst*9OkJ{&!Fv0Aj8+~lRH|5Y@ zj+!fY#otMjE&&^~Q}HNf*Jby5HNO6~!nz$G^LlsbQ{;(_3+718byf2#H0)l2e*Zvx zD$Q$u2KDwPuw?6kL&C}=@X0#~iL)L$pgDlQ#C?L>F@r2;*>kzA`?0?Vd^!FjzH)s6 i4Ov+p_@8K(u3R~&c5n^-mpIwSoDaD { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((module) => { - -module.exports = require("@nestjs/core"); - -/***/ }), -/* 2 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.AppModule = void 0; -const common_1 = __webpack_require__(3); -const app_controller_1 = __webpack_require__(4); -const app_service_1 = __webpack_require__(5); -const shared_1 = __webpack_require__(7); -let AppModule = class AppModule { -}; -exports.AppModule = AppModule; -exports.AppModule = AppModule = __decorate([ - (0, common_1.Module)({ - imports: [shared_1.DatabaseModule], - controllers: [app_controller_1.AppController], - providers: [app_service_1.AppService], - }) -], AppModule); - - -/***/ }), -/* 3 */ -/***/ ((module) => { - -module.exports = require("@nestjs/common"); - -/***/ }), -/* 4 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.AppController = void 0; -const common_1 = __webpack_require__(3); -const app_service_1 = __webpack_require__(5); -const shared_1 = __webpack_require__(7); -let AppController = class AppController { - appService; - constructor(appService) { - this.appService = appService; - } - async createPayment(createPaymentDto) { - const payment = await this.appService.createPayment(createPaymentDto); - return payment; - } - async getPayment(id) { - const payment = await this.appService.getPayment(id); - return { - data: { - paymentId: payment.id, - status: payment.status, - amount: payment.amount, - currency: payment.currency, - }, - meta: { - consistencyModel: 'eventual', - note: 'Status may be pending while downstream consumers are processing.', - }, - }; - } -}; -exports.AppController = AppController; -__decorate([ - (0, common_1.Post)(), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [typeof (_b = typeof shared_1.CreatePaymentDto !== "undefined" && shared_1.CreatePaymentDto) === "function" ? _b : Object]), - __metadata("design:returntype", Promise) -], AppController.prototype, "createPayment", null); -__decorate([ - (0, common_1.Get)(':id'), - __param(0, (0, common_1.Param)('id')), - __metadata("design:type", Function), - __metadata("design:paramtypes", [String]), - __metadata("design:returntype", Promise) -], AppController.prototype, "getPayment", null); -exports.AppController = AppController = __decorate([ - (0, common_1.Controller)('payments'), - __metadata("design:paramtypes", [typeof (_a = typeof app_service_1.AppService !== "undefined" && app_service_1.AppService) === "function" ? _a : Object]) -], AppController); - - -/***/ }), -/* 5 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.AppService = void 0; -const common_1 = __webpack_require__(3); -const typeorm_1 = __webpack_require__(6); -const shared_1 = __webpack_require__(7); -const uuid_1 = __webpack_require__(17); -let AppService = class AppService { - dataSource; - constructor(dataSource) { - this.dataSource = dataSource; - } - async createPayment(dto) { - const paymentId = (0, uuid_1.v4)(); - const eventId = (0, uuid_1.v4)(); - const queryRunner = this.dataSource.createQueryRunner(); - await queryRunner.connect(); - await queryRunner.startTransaction(); - let payment; - try { - payment = queryRunner.manager.create(shared_1.Payment, { - id: paymentId, - amount: dto.amount, - currency: dto.currency, - country: dto.country, - status: shared_1.PaymentStatus.PENDING, - }); - await queryRunner.manager.save(payment); - const outboxEvent = queryRunner.manager.create(shared_1.OutboxEvent, { - eventId, - aggregateId: paymentId, - eventType: 'payment.created.v1', - payload: { - id: paymentId, - amount: dto.amount, - currency: dto.currency, - country: dto.country, - }, - status: shared_1.OutboxStatus.PENDING, - }); - await queryRunner.manager.save(outboxEvent); - await queryRunner.commitTransaction(); - } - catch (err) { - await queryRunner.rollbackTransaction(); - throw err; - } - finally { - await queryRunner.release(); - } - return payment; - } - async getPayment(id) { - const payment = await this.dataSource.manager.findOne(shared_1.Payment, { where: { id } }); - if (!payment) - throw new common_1.NotFoundException('Payment not found'); - return payment; - } -}; -exports.AppService = AppService; -exports.AppService = AppService = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object]) -], AppService); - - -/***/ }), -/* 6 */ -/***/ ((module) => { - -module.exports = require("typeorm"); - -/***/ }), -/* 7 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__webpack_require__(8), exports); -__exportStar(__webpack_require__(9), exports); -__exportStar(__webpack_require__(10), exports); -__exportStar(__webpack_require__(11), exports); -__exportStar(__webpack_require__(12), exports); -__exportStar(__webpack_require__(13), exports); -__exportStar(__webpack_require__(15), exports); - - -/***/ }), -/* 8 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedModule = void 0; -const common_1 = __webpack_require__(3); -const shared_service_1 = __webpack_require__(9); -let SharedModule = class SharedModule { -}; -exports.SharedModule = SharedModule; -exports.SharedModule = SharedModule = __decorate([ - (0, common_1.Module)({ - providers: [shared_service_1.SharedService], - exports: [shared_service_1.SharedService], - }) -], SharedModule); - - -/***/ }), -/* 9 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedService = void 0; -const common_1 = __webpack_require__(3); -let SharedService = class SharedService { -}; -exports.SharedService = SharedService; -exports.SharedService = SharedService = __decorate([ - (0, common_1.Injectable)() -], SharedService); - - -/***/ }), -/* 10 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Payment = exports.PaymentStatus = void 0; -const typeorm_1 = __webpack_require__(6); -var PaymentStatus; -(function (PaymentStatus) { - PaymentStatus["PENDING"] = "PENDING"; - PaymentStatus["SETTLED"] = "SETTLED"; - PaymentStatus["FAILED"] = "FAILED"; -})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); -let Payment = class Payment { - id; - amount; - currency; - country; - status; - createdAt; - updatedAt; -}; -exports.Payment = Payment; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], Payment.prototype, "id", void 0); -__decorate([ - (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), - __metadata("design:type", Number) -], Payment.prototype, "amount", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "currency", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "country", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: PaymentStatus, - default: PaymentStatus.PENDING, - }), - __metadata("design:type", String) -], Payment.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)(), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], Payment.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.UpdateDateColumn)(), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], Payment.prototype, "updatedAt", void 0); -exports.Payment = Payment = __decorate([ - (0, typeorm_1.Entity)('payments') -], Payment); - - -/***/ }), -/* 11 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b, _c; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OutboxEvent = exports.OutboxStatus = void 0; -const typeorm_1 = __webpack_require__(6); -var OutboxStatus; -(function (OutboxStatus) { - OutboxStatus["PENDING"] = "PENDING"; - OutboxStatus["SENT"] = "SENT"; - OutboxStatus["FAILED"] = "FAILED"; -})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); -let OutboxEvent = class OutboxEvent { - eventId; - aggregateId; - eventType; - payload; - status; - retryCount; - createdAt; - sentAt; -}; -exports.OutboxEvent = OutboxEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.Column)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "aggregateId", void 0); -__decorate([ - (0, typeorm_1.Column)({ length: 100 }), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventType", void 0); -__decorate([ - (0, typeorm_1.Column)('jsonb'), - __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) -], OutboxEvent.prototype, "payload", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: OutboxStatus, - default: OutboxStatus.PENDING, - }), - __metadata("design:type", String) -], OutboxEvent.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.Column)({ default: 0 }), - __metadata("design:type", Number) -], OutboxEvent.prototype, "retryCount", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], OutboxEvent.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), - __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) -], OutboxEvent.prototype, "sentAt", void 0); -exports.OutboxEvent = OutboxEvent = __decorate([ - (0, typeorm_1.Entity)('outbox_events'), - (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) -], OutboxEvent); - - -/***/ }), -/* 12 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ProcessedEvent = void 0; -const typeorm_1 = __webpack_require__(6); -let ProcessedEvent = class ProcessedEvent { - eventId; - consumer; - processedAt; -}; -exports.ProcessedEvent = ProcessedEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], ProcessedEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.PrimaryColumn)({ length: 50 }), - __metadata("design:type", String) -], ProcessedEvent.prototype, "consumer", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], ProcessedEvent.prototype, "processedAt", void 0); -exports.ProcessedEvent = ProcessedEvent = __decorate([ - (0, typeorm_1.Entity)('processed_events') -], ProcessedEvent); - - -/***/ }), -/* 13 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DatabaseModule = void 0; -const common_1 = __webpack_require__(3); -const typeorm_1 = __webpack_require__(14); -const payment_entity_1 = __webpack_require__(10); -const outbox_event_entity_1 = __webpack_require__(11); -const processed_event_entity_1 = __webpack_require__(12); -let DatabaseModule = class DatabaseModule { -}; -exports.DatabaseModule = DatabaseModule; -exports.DatabaseModule = DatabaseModule = __decorate([ - (0, common_1.Module)({ - imports: [ - typeorm_1.TypeOrmModule.forRoot({ - type: 'postgres', - host: process.env.DB_HOST || 'localhost', - port: parseInt(process.env.DB_PORT || '5432', 10), - username: process.env.DB_USER || 'user', - password: process.env.DB_PASSWORD || 'password', - database: process.env.DB_NAME || 'payments_db', - entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], - synchronize: true, - }), - typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), - ], - exports: [typeorm_1.TypeOrmModule], - }) -], DatabaseModule); - - -/***/ }), -/* 14 */ -/***/ ((module) => { - -module.exports = require("@nestjs/typeorm"); - -/***/ }), -/* 15 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CreatePaymentDto = void 0; -const class_validator_1 = __webpack_require__(16); -class CreatePaymentDto { - amount; - currency; - country; -} -exports.CreatePaymentDto = CreatePaymentDto; -__decorate([ - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata("design:type", Number) -], CreatePaymentDto.prototype, "amount", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "currency", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "country", void 0); - - -/***/ }), -/* 16 */ -/***/ ((module) => { - -module.exports = require("class-validator"); - -/***/ }), -/* 17 */ -/***/ ((module) => { - -module.exports = require("uuid"); - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core_1 = __webpack_require__(1); -const app_module_1 = __webpack_require__(2); -const common_1 = __webpack_require__(3); -async function bootstrap() { - const app = await core_1.NestFactory.create(app_module_1.AppModule); - app.useGlobalPipes(new common_1.ValidationPipe({ whitelist: true, transform: true })); - await app.listen(process.env.PORT ?? 3001); -} -bootstrap(); - -})(); - -/******/ })() -; \ No newline at end of file diff --git a/challenge-1/dist/apps/consumers/main.js b/challenge-1/dist/apps/consumers/main.js deleted file mode 100644 index 50cd0b06..00000000 --- a/challenge-1/dist/apps/consumers/main.js +++ /dev/null @@ -1,898 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((module) => { - -module.exports = require("@nestjs/core"); - -/***/ }), -/* 2 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ConsumersModule = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(4); -const shared_1 = __webpack_require__(5); -const dispatcher_controller_1 = __webpack_require__(16); -const fraud_consumer_1 = __webpack_require__(17); -const ledger_consumer_1 = __webpack_require__(19); -const saga_consumer_1 = __webpack_require__(20); -const processed_events_repository_1 = __webpack_require__(18); -let ConsumersModule = class ConsumersModule { -}; -exports.ConsumersModule = ConsumersModule; -exports.ConsumersModule = ConsumersModule = __decorate([ - (0, common_1.Module)({ - imports: [ - shared_1.DatabaseModule, - microservices_1.ClientsModule.register([ - { - name: 'KAFKA_CLIENT', - transport: microservices_1.Transport.KAFKA, - options: { - client: { - clientId: 'payment-consumers', - brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], - }, - consumer: { - groupId: 'consumers-group', - }, - }, - }, - ]), - ], - controllers: [ - dispatcher_controller_1.DispatcherController, - saga_consumer_1.SagaConsumer, - ], - providers: [ - fraud_consumer_1.FraudConsumer, - ledger_consumer_1.LedgerConsumer, - processed_events_repository_1.ProcessedEventsRepository - ], - }) -], ConsumersModule); - - -/***/ }), -/* 3 */ -/***/ ((module) => { - -module.exports = require("@nestjs/common"); - -/***/ }), -/* 4 */ -/***/ ((module) => { - -module.exports = require("@nestjs/microservices"); - -/***/ }), -/* 5 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__webpack_require__(6), exports); -__exportStar(__webpack_require__(7), exports); -__exportStar(__webpack_require__(8), exports); -__exportStar(__webpack_require__(10), exports); -__exportStar(__webpack_require__(11), exports); -__exportStar(__webpack_require__(12), exports); -__exportStar(__webpack_require__(14), exports); - - -/***/ }), -/* 6 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedModule = void 0; -const common_1 = __webpack_require__(3); -const shared_service_1 = __webpack_require__(7); -let SharedModule = class SharedModule { -}; -exports.SharedModule = SharedModule; -exports.SharedModule = SharedModule = __decorate([ - (0, common_1.Module)({ - providers: [shared_service_1.SharedService], - exports: [shared_service_1.SharedService], - }) -], SharedModule); - - -/***/ }), -/* 7 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedService = void 0; -const common_1 = __webpack_require__(3); -let SharedService = class SharedService { -}; -exports.SharedService = SharedService; -exports.SharedService = SharedService = __decorate([ - (0, common_1.Injectable)() -], SharedService); - - -/***/ }), -/* 8 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Payment = exports.PaymentStatus = void 0; -const typeorm_1 = __webpack_require__(9); -var PaymentStatus; -(function (PaymentStatus) { - PaymentStatus["PENDING"] = "PENDING"; - PaymentStatus["SETTLED"] = "SETTLED"; - PaymentStatus["FAILED"] = "FAILED"; -})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); -let Payment = class Payment { - id; - amount; - currency; - country; - status; - createdAt; - updatedAt; -}; -exports.Payment = Payment; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], Payment.prototype, "id", void 0); -__decorate([ - (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), - __metadata("design:type", Number) -], Payment.prototype, "amount", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "currency", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "country", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: PaymentStatus, - default: PaymentStatus.PENDING, - }), - __metadata("design:type", String) -], Payment.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)(), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], Payment.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.UpdateDateColumn)(), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], Payment.prototype, "updatedAt", void 0); -exports.Payment = Payment = __decorate([ - (0, typeorm_1.Entity)('payments') -], Payment); - - -/***/ }), -/* 9 */ -/***/ ((module) => { - -module.exports = require("typeorm"); - -/***/ }), -/* 10 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b, _c; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OutboxEvent = exports.OutboxStatus = void 0; -const typeorm_1 = __webpack_require__(9); -var OutboxStatus; -(function (OutboxStatus) { - OutboxStatus["PENDING"] = "PENDING"; - OutboxStatus["SENT"] = "SENT"; - OutboxStatus["FAILED"] = "FAILED"; -})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); -let OutboxEvent = class OutboxEvent { - eventId; - aggregateId; - eventType; - payload; - status; - retryCount; - createdAt; - sentAt; -}; -exports.OutboxEvent = OutboxEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.Column)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "aggregateId", void 0); -__decorate([ - (0, typeorm_1.Column)({ length: 100 }), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventType", void 0); -__decorate([ - (0, typeorm_1.Column)('jsonb'), - __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) -], OutboxEvent.prototype, "payload", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: OutboxStatus, - default: OutboxStatus.PENDING, - }), - __metadata("design:type", String) -], OutboxEvent.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.Column)({ default: 0 }), - __metadata("design:type", Number) -], OutboxEvent.prototype, "retryCount", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], OutboxEvent.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), - __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) -], OutboxEvent.prototype, "sentAt", void 0); -exports.OutboxEvent = OutboxEvent = __decorate([ - (0, typeorm_1.Entity)('outbox_events'), - (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) -], OutboxEvent); - - -/***/ }), -/* 11 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ProcessedEvent = void 0; -const typeorm_1 = __webpack_require__(9); -let ProcessedEvent = class ProcessedEvent { - eventId; - consumer; - processedAt; -}; -exports.ProcessedEvent = ProcessedEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], ProcessedEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.PrimaryColumn)({ length: 50 }), - __metadata("design:type", String) -], ProcessedEvent.prototype, "consumer", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], ProcessedEvent.prototype, "processedAt", void 0); -exports.ProcessedEvent = ProcessedEvent = __decorate([ - (0, typeorm_1.Entity)('processed_events') -], ProcessedEvent); - - -/***/ }), -/* 12 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DatabaseModule = void 0; -const common_1 = __webpack_require__(3); -const typeorm_1 = __webpack_require__(13); -const payment_entity_1 = __webpack_require__(8); -const outbox_event_entity_1 = __webpack_require__(10); -const processed_event_entity_1 = __webpack_require__(11); -let DatabaseModule = class DatabaseModule { -}; -exports.DatabaseModule = DatabaseModule; -exports.DatabaseModule = DatabaseModule = __decorate([ - (0, common_1.Module)({ - imports: [ - typeorm_1.TypeOrmModule.forRoot({ - type: 'postgres', - host: process.env.DB_HOST || 'localhost', - port: parseInt(process.env.DB_PORT || '5432', 10), - username: process.env.DB_USER || 'user', - password: process.env.DB_PASSWORD || 'password', - database: process.env.DB_NAME || 'payments_db', - entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], - synchronize: true, - }), - typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), - ], - exports: [typeorm_1.TypeOrmModule], - }) -], DatabaseModule); - - -/***/ }), -/* 13 */ -/***/ ((module) => { - -module.exports = require("@nestjs/typeorm"); - -/***/ }), -/* 14 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CreatePaymentDto = void 0; -const class_validator_1 = __webpack_require__(15); -class CreatePaymentDto { - amount; - currency; - country; -} -exports.CreatePaymentDto = CreatePaymentDto; -__decorate([ - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata("design:type", Number) -], CreatePaymentDto.prototype, "amount", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "currency", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "country", void 0); - - -/***/ }), -/* 15 */ -/***/ ((module) => { - -module.exports = require("class-validator"); - -/***/ }), -/* 16 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var DispatcherController_1; -var _a, _b, _c; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DispatcherController = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(4); -const fraud_consumer_1 = __webpack_require__(17); -const ledger_consumer_1 = __webpack_require__(19); -let DispatcherController = DispatcherController_1 = class DispatcherController { - fraud; - ledger; - logger = new common_1.Logger(DispatcherController_1.name); - constructor(fraud, ledger) { - this.fraud = fraud; - this.ledger = ledger; - } - async handlePaymentCreated(message, context) { - this.logger.log('Payment created event received by Dispatcher'); - Promise.allSettled([ - this.fraud.handlePaymentCreated(message, context), - this.ledger.handlePaymentCreated(message, context), - ]).then(() => { - this.logger.log('Fraud and Ledger evaluations initiated'); - }); - } -}; -exports.DispatcherController = DispatcherController; -__decorate([ - (0, microservices_1.EventPattern)([ - 'pe.payment.created.v1', - 'mx.payment.created.v1', - 'co.payment.created.v1', - 'gen.payment.created.v1' - ]), - __param(0, (0, microservices_1.Payload)()), - __param(1, (0, microservices_1.Ctx)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object, typeof (_c = typeof microservices_1.KafkaContext !== "undefined" && microservices_1.KafkaContext) === "function" ? _c : Object]), - __metadata("design:returntype", Promise) -], DispatcherController.prototype, "handlePaymentCreated", null); -exports.DispatcherController = DispatcherController = DispatcherController_1 = __decorate([ - (0, common_1.Controller)(), - __metadata("design:paramtypes", [typeof (_a = typeof fraud_consumer_1.FraudConsumer !== "undefined" && fraud_consumer_1.FraudConsumer) === "function" ? _a : Object, typeof (_b = typeof ledger_consumer_1.LedgerConsumer !== "undefined" && ledger_consumer_1.LedgerConsumer) === "function" ? _b : Object]) -], DispatcherController); - - -/***/ }), -/* 17 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var FraudConsumer_1; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.FraudConsumer = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(4); -const processed_events_repository_1 = __webpack_require__(18); -let FraudConsumer = FraudConsumer_1 = class FraudConsumer { - processedRepo; - kafkaClient; - logger = new common_1.Logger(FraudConsumer_1.name); - consumerName = 'FraudConsumer'; - maxRetries = 3; - constructor(processedRepo, kafkaClient) { - this.processedRepo = processedRepo; - this.kafkaClient = kafkaClient; - } - async handlePaymentCreated(message, context) { - const value = message; - const eventId = value.eventId || context.getMessage().key?.toString(); - const aggregateId = value.aggregateId || value.id; - if (!eventId) { - this.logger.warn('Received message without eventId, skipping'); - return; - } - try { - const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); - if (alreadyProcessed) { - this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); - return; - } - this.logger.log(`Processing fraud scoring for payment ${aggregateId}`); - if (value.amount > 1000000) { - throw new Error('Fraud check failed: amount too high.'); - } - await this.processedRepo.markProcessed(eventId, this.consumerName); - this.logger.log(`Fraud scoring passed for payment ${aggregateId}`); - const countryPrefix = (value.country || 'gen').toLowerCase(); - this.kafkaClient.emit(`${countryPrefix}.payment.fraud.approved.v1`, { - key: aggregateId, - value: { aggregateId, eventId, status: 'APPROVED' }, - }); - } - catch (error) { - this.logger.error(`Error processing ${eventId} in Fraud: ${error.message}`); - const countryPrefix = (value.country || 'gen').toLowerCase(); - await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); - } - } - async sendToDlt(originalTopic, message, error) { - const dltTopic = `${originalTopic}.dlt`; - const aggregateId = message.aggregateId || message.id; - const countryPrefix = (message.country || 'gen').toLowerCase(); - this.logger.warn(`Sending to DLT -> ${dltTopic}`); - this.kafkaClient.emit(dltTopic, { - key: aggregateId, - value: { - originalTopic, - originalMessage: message, - error: error.message, - failedAt: new Date().toISOString(), - }, - }); - this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { - key: aggregateId, - value: { aggregateId, reason: error.message }, - }); - } -}; -exports.FraudConsumer = FraudConsumer; -exports.FraudConsumer = FraudConsumer = FraudConsumer_1 = __decorate([ - (0, common_1.Injectable)(), - __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), - __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) -], FraudConsumer); - - -/***/ }), -/* 18 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ProcessedEventsRepository = void 0; -const common_1 = __webpack_require__(3); -const typeorm_1 = __webpack_require__(9); -const shared_1 = __webpack_require__(5); -let ProcessedEventsRepository = class ProcessedEventsRepository { - dataSource; - constructor(dataSource) { - this.dataSource = dataSource; - } - async exists(eventId, consumer) { - const record = await this.dataSource.manager.findOne(shared_1.ProcessedEvent, { - where: { eventId, consumer }, - }); - return !!record; - } - async markProcessed(eventId, consumer) { - const record = this.dataSource.manager.create(shared_1.ProcessedEvent, { - eventId, - consumer, - }); - await this.dataSource.manager.save(record); - } -}; -exports.ProcessedEventsRepository = ProcessedEventsRepository; -exports.ProcessedEventsRepository = ProcessedEventsRepository = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object]) -], ProcessedEventsRepository); - - -/***/ }), -/* 19 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var LedgerConsumer_1; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.LedgerConsumer = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(4); -const processed_events_repository_1 = __webpack_require__(18); -let LedgerConsumer = LedgerConsumer_1 = class LedgerConsumer { - processedRepo; - kafkaClient; - logger = new common_1.Logger(LedgerConsumer_1.name); - consumerName = 'LedgerConsumer'; - constructor(processedRepo, kafkaClient) { - this.processedRepo = processedRepo; - this.kafkaClient = kafkaClient; - } - async handlePaymentCreated(message, context) { - const value = message; - const eventId = value.eventId || context.getMessage().key?.toString(); - const aggregateId = value.aggregateId || value.id; - if (!eventId) { - this.logger.warn('Received message without eventId, skipping'); - return; - } - try { - const alreadyProcessed = await this.processedRepo.exists(eventId, this.consumerName); - if (alreadyProcessed) { - this.logger.log(`Event ${eventId} already processed by ${this.consumerName}`); - return; - } - this.logger.log(`Processing ledger entry (double-entry write) for payment ${aggregateId}`); - await this.processedRepo.markProcessed(eventId, this.consumerName); - this.logger.log(`Ledger entry written for payment ${aggregateId}`); - const countryPrefix = (value.country || 'gen').toLowerCase(); - this.kafkaClient.emit(`${countryPrefix}.payment.ledger.written.v1`, { - key: aggregateId, - value: { aggregateId, eventId, status: 'WRITTEN' }, - }); - } - catch (error) { - this.logger.error(`Error processing ${eventId} in Ledger: ${error.message}`); - const countryPrefix = (value.country || 'gen').toLowerCase(); - await this.sendToDlt(`${countryPrefix}.payment.created.v1`, value, error); - } - } - async sendToDlt(originalTopic, message, error) { - const dltTopic = `${originalTopic}.dlt`; - const aggregateId = message.aggregateId || message.id; - const countryPrefix = (message.country || 'gen').toLowerCase(); - this.logger.warn(`Sending to DLT -> ${dltTopic}`); - this.kafkaClient.emit(dltTopic, { - key: aggregateId, - value: { - originalTopic, - originalMessage: message, - error: error.message, - failedAt: new Date().toISOString(), - }, - }); - this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { - key: aggregateId, - value: { aggregateId, reason: error.message }, - }); - } -}; -exports.LedgerConsumer = LedgerConsumer; -exports.LedgerConsumer = LedgerConsumer = LedgerConsumer_1 = __decorate([ - (0, common_1.Injectable)(), - __param(1, (0, common_1.Inject)('KAFKA_CLIENT')), - __metadata("design:paramtypes", [typeof (_a = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _a : Object, typeof (_b = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _b : Object]) -], LedgerConsumer); - - -/***/ }), -/* 20 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var SagaConsumer_1; -var _a, _b, _c, _d, _e; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SagaConsumer = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(4); -const typeorm_1 = __webpack_require__(9); -const processed_events_repository_1 = __webpack_require__(18); -const shared_1 = __webpack_require__(5); -let SagaConsumer = SagaConsumer_1 = class SagaConsumer { - dataSource; - processedRepo; - logger = new common_1.Logger(SagaConsumer_1.name); - constructor(dataSource, processedRepo) { - this.dataSource = dataSource; - this.processedRepo = processedRepo; - } - async handleFraudApproved(message) { - const aggregateId = message.aggregateId || message.id; - await this.trySettlePayment(message.eventId, aggregateId); - } - async handleLedgerWritten(message) { - const aggregateId = message.aggregateId || message.id; - await this.trySettlePayment(message.eventId, aggregateId); - } - async handlePaymentFailed(message) { - const aggregateId = message.aggregateId || message.id; - this.logger.warn(`Saga reacting to failure for payment ${aggregateId}`); - await this.dataSource.manager.update(shared_1.Payment, { id: aggregateId }, { status: shared_1.PaymentStatus.FAILED }); - } - async trySettlePayment(eventId, aggregateId) { - if (!eventId || !aggregateId) - return; - const fraudProcessed = await this.processedRepo.exists(eventId, 'FraudConsumer'); - const ledgerProcessed = await this.processedRepo.exists(eventId, 'LedgerConsumer'); - if (fraudProcessed && ledgerProcessed) { - this.logger.log(`Both consumers processed for ${aggregateId}. Settling payment.`); - await this.dataSource.manager.update(shared_1.Payment, { id: aggregateId }, { status: shared_1.PaymentStatus.SETTLED }); - } - } -}; -exports.SagaConsumer = SagaConsumer; -__decorate([ - (0, microservices_1.EventPattern)([ - 'pe.payment.fraud.approved.v1', - 'mx.payment.fraud.approved.v1', - 'co.payment.fraud.approved.v1', - 'gen.payment.fraud.approved.v1' - ]), - __param(0, (0, microservices_1.Payload)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", typeof (_c = typeof Promise !== "undefined" && Promise) === "function" ? _c : Object) -], SagaConsumer.prototype, "handleFraudApproved", null); -__decorate([ - (0, microservices_1.EventPattern)([ - 'pe.payment.ledger.written.v1', - 'mx.payment.ledger.written.v1', - 'co.payment.ledger.written.v1', - 'gen.payment.ledger.written.v1' - ]), - __param(0, (0, microservices_1.Payload)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", typeof (_d = typeof Promise !== "undefined" && Promise) === "function" ? _d : Object) -], SagaConsumer.prototype, "handleLedgerWritten", null); -__decorate([ - (0, microservices_1.EventPattern)([ - 'pe.payment.failed.v1', - 'mx.payment.failed.v1', - 'co.payment.failed.v1', - 'gen.payment.failed.v1' - ]), - __param(0, (0, microservices_1.Payload)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", typeof (_e = typeof Promise !== "undefined" && Promise) === "function" ? _e : Object) -], SagaConsumer.prototype, "handlePaymentFailed", null); -exports.SagaConsumer = SagaConsumer = SagaConsumer_1 = __decorate([ - (0, common_1.Controller)(), - __metadata("design:paramtypes", [typeof (_a = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _a : Object, typeof (_b = typeof processed_events_repository_1.ProcessedEventsRepository !== "undefined" && processed_events_repository_1.ProcessedEventsRepository) === "function" ? _b : Object]) -], SagaConsumer); - - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core_1 = __webpack_require__(1); -const consumers_module_1 = __webpack_require__(2); -const microservices_1 = __webpack_require__(4); -async function bootstrap() { - const app = await core_1.NestFactory.createMicroservice(consumers_module_1.ConsumersModule, { - transport: microservices_1.Transport.KAFKA, - options: { - client: { - brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], - }, - consumer: { - groupId: 'consumers-main-group', - }, - subscribe: { - fromBeginning: true, - } - }, - }); - await app.listen(); - console.log('Payment Consumers microservice is listening for Kafka events.'); -} -bootstrap(); - -})(); - -/******/ })() -; \ No newline at end of file diff --git a/challenge-1/dist/apps/relay/main.js b/challenge-1/dist/apps/relay/main.js deleted file mode 100644 index 1c764be1..00000000 --- a/challenge-1/dist/apps/relay/main.js +++ /dev/null @@ -1,574 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ([ -/* 0 */, -/* 1 */ -/***/ ((module) => { - -module.exports = require("@nestjs/core"); - -/***/ }), -/* 2 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RelayModule = void 0; -const common_1 = __webpack_require__(3); -const schedule_1 = __webpack_require__(4); -const relay_service_1 = __webpack_require__(5); -const shared_1 = __webpack_require__(8); -const microservices_1 = __webpack_require__(6); -let RelayModule = class RelayModule { -}; -exports.RelayModule = RelayModule; -exports.RelayModule = RelayModule = __decorate([ - (0, common_1.Module)({ - imports: [ - shared_1.DatabaseModule, - schedule_1.ScheduleModule.forRoot(), - microservices_1.ClientsModule.register([ - { - name: 'KAFKA_CLIENT', - transport: microservices_1.Transport.KAFKA, - options: { - client: { - clientId: 'outbox-relay', - brokers: [process.env.KAFKA_BROKERS || 'localhost:9092'], - }, - producerOnlyMode: true, - }, - }, - ]), - ], - providers: [relay_service_1.RelayService], - }) -], RelayModule); - - -/***/ }), -/* 3 */ -/***/ ((module) => { - -module.exports = require("@nestjs/common"); - -/***/ }), -/* 4 */ -/***/ ((module) => { - -module.exports = require("@nestjs/schedule"); - -/***/ }), -/* 5 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var RelayService_1; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RelayService = void 0; -const common_1 = __webpack_require__(3); -const microservices_1 = __webpack_require__(6); -const schedule_1 = __webpack_require__(4); -const typeorm_1 = __webpack_require__(7); -const shared_1 = __webpack_require__(8); -let RelayService = RelayService_1 = class RelayService { - kafkaClient; - dataSource; - logger = new common_1.Logger(RelayService_1.name); - constructor(kafkaClient, dataSource) { - this.kafkaClient = kafkaClient; - this.dataSource = dataSource; - } - async onApplicationBootstrap() { - await this.kafkaClient.connect(); - } - async relayOutboxEvents() { - this.logger.debug('Running Outbox Relay...'); - const events = await this.dataSource.manager.find(shared_1.OutboxEvent, { - where: { status: shared_1.OutboxStatus.PENDING }, - take: 100, - order: { createdAt: 'ASC' }, - }); - if (events.length === 0) - return; - this.logger.log(`Found ${events.length} pending events to relay`); - for (const event of events) { - try { - const countryPrefix = (event.payload?.country || 'gen').toLowerCase(); - const topic = `${countryPrefix}.${event.eventType}`; - this.logger.log(`Publishing to namespaced topic: ${topic}`); - await new Promise((resolve, reject) => { - this.kafkaClient.emit(topic, { - key: event.aggregateId, - value: event.payload - }).subscribe({ - next: (val) => resolve(val), - error: (err) => reject(err), - }); - }); - event.status = shared_1.OutboxStatus.SENT; - event.sentAt = new Date(); - await this.dataSource.manager.save(event); - this.logger.log(`Relayed event ${event.eventId} successfully`); - } - catch (error) { - this.logger.error(`Failed to relay event ${event.eventId}`, error.stack); - event.retryCount += 1; - await this.dataSource.manager.save(event); - } - } - } - getHello() { - return 'Outbox Relay Service is running.'; - } -}; -exports.RelayService = RelayService; -__decorate([ - (0, schedule_1.Cron)(schedule_1.CronExpression.EVERY_5_SECONDS), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", Promise) -], RelayService.prototype, "relayOutboxEvents", null); -exports.RelayService = RelayService = RelayService_1 = __decorate([ - (0, common_1.Injectable)(), - __param(0, (0, common_1.Inject)('KAFKA_CLIENT')), - __metadata("design:paramtypes", [typeof (_a = typeof microservices_1.ClientKafka !== "undefined" && microservices_1.ClientKafka) === "function" ? _a : Object, typeof (_b = typeof typeorm_1.DataSource !== "undefined" && typeorm_1.DataSource) === "function" ? _b : Object]) -], RelayService); - - -/***/ }), -/* 6 */ -/***/ ((module) => { - -module.exports = require("@nestjs/microservices"); - -/***/ }), -/* 7 */ -/***/ ((module) => { - -module.exports = require("typeorm"); - -/***/ }), -/* 8 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -__exportStar(__webpack_require__(9), exports); -__exportStar(__webpack_require__(10), exports); -__exportStar(__webpack_require__(11), exports); -__exportStar(__webpack_require__(12), exports); -__exportStar(__webpack_require__(13), exports); -__exportStar(__webpack_require__(14), exports); -__exportStar(__webpack_require__(16), exports); - - -/***/ }), -/* 9 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedModule = void 0; -const common_1 = __webpack_require__(3); -const shared_service_1 = __webpack_require__(10); -let SharedModule = class SharedModule { -}; -exports.SharedModule = SharedModule; -exports.SharedModule = SharedModule = __decorate([ - (0, common_1.Module)({ - providers: [shared_service_1.SharedService], - exports: [shared_service_1.SharedService], - }) -], SharedModule); - - -/***/ }), -/* 10 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.SharedService = void 0; -const common_1 = __webpack_require__(3); -let SharedService = class SharedService { -}; -exports.SharedService = SharedService; -exports.SharedService = SharedService = __decorate([ - (0, common_1.Injectable)() -], SharedService); - - -/***/ }), -/* 11 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.Payment = exports.PaymentStatus = void 0; -const typeorm_1 = __webpack_require__(7); -var PaymentStatus; -(function (PaymentStatus) { - PaymentStatus["PENDING"] = "PENDING"; - PaymentStatus["SETTLED"] = "SETTLED"; - PaymentStatus["FAILED"] = "FAILED"; -})(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {})); -let Payment = class Payment { - id; - amount; - currency; - country; - status; - createdAt; - updatedAt; -}; -exports.Payment = Payment; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], Payment.prototype, "id", void 0); -__decorate([ - (0, typeorm_1.Column)('decimal', { precision: 10, scale: 2 }), - __metadata("design:type", Number) -], Payment.prototype, "amount", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "currency", void 0); -__decorate([ - (0, typeorm_1.Column)(), - __metadata("design:type", String) -], Payment.prototype, "country", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: PaymentStatus, - default: PaymentStatus.PENDING, - }), - __metadata("design:type", String) -], Payment.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)(), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], Payment.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.UpdateDateColumn)(), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], Payment.prototype, "updatedAt", void 0); -exports.Payment = Payment = __decorate([ - (0, typeorm_1.Entity)('payments') -], Payment); - - -/***/ }), -/* 12 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a, _b, _c; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OutboxEvent = exports.OutboxStatus = void 0; -const typeorm_1 = __webpack_require__(7); -var OutboxStatus; -(function (OutboxStatus) { - OutboxStatus["PENDING"] = "PENDING"; - OutboxStatus["SENT"] = "SENT"; - OutboxStatus["FAILED"] = "FAILED"; -})(OutboxStatus || (exports.OutboxStatus = OutboxStatus = {})); -let OutboxEvent = class OutboxEvent { - eventId; - aggregateId; - eventType; - payload; - status; - retryCount; - createdAt; - sentAt; -}; -exports.OutboxEvent = OutboxEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.Column)('uuid'), - __metadata("design:type", String) -], OutboxEvent.prototype, "aggregateId", void 0); -__decorate([ - (0, typeorm_1.Column)({ length: 100 }), - __metadata("design:type", String) -], OutboxEvent.prototype, "eventType", void 0); -__decorate([ - (0, typeorm_1.Column)('jsonb'), - __metadata("design:type", typeof (_a = typeof Record !== "undefined" && Record) === "function" ? _a : Object) -], OutboxEvent.prototype, "payload", void 0); -__decorate([ - (0, typeorm_1.Column)({ - type: 'enum', - enum: OutboxStatus, - default: OutboxStatus.PENDING, - }), - __metadata("design:type", String) -], OutboxEvent.prototype, "status", void 0); -__decorate([ - (0, typeorm_1.Column)({ default: 0 }), - __metadata("design:type", Number) -], OutboxEvent.prototype, "retryCount", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_b = typeof Date !== "undefined" && Date) === "function" ? _b : Object) -], OutboxEvent.prototype, "createdAt", void 0); -__decorate([ - (0, typeorm_1.Column)({ type: 'timestamptz', nullable: true }), - __metadata("design:type", typeof (_c = typeof Date !== "undefined" && Date) === "function" ? _c : Object) -], OutboxEvent.prototype, "sentAt", void 0); -exports.OutboxEvent = OutboxEvent = __decorate([ - (0, typeorm_1.Entity)('outbox_events'), - (0, typeorm_1.Index)('idx_outbox_status', ['status', 'createdAt']) -], OutboxEvent); - - -/***/ }), -/* 13 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.ProcessedEvent = void 0; -const typeorm_1 = __webpack_require__(7); -let ProcessedEvent = class ProcessedEvent { - eventId; - consumer; - processedAt; -}; -exports.ProcessedEvent = ProcessedEvent; -__decorate([ - (0, typeorm_1.PrimaryColumn)('uuid'), - __metadata("design:type", String) -], ProcessedEvent.prototype, "eventId", void 0); -__decorate([ - (0, typeorm_1.PrimaryColumn)({ length: 50 }), - __metadata("design:type", String) -], ProcessedEvent.prototype, "consumer", void 0); -__decorate([ - (0, typeorm_1.CreateDateColumn)({ type: 'timestamptz' }), - __metadata("design:type", typeof (_a = typeof Date !== "undefined" && Date) === "function" ? _a : Object) -], ProcessedEvent.prototype, "processedAt", void 0); -exports.ProcessedEvent = ProcessedEvent = __decorate([ - (0, typeorm_1.Entity)('processed_events') -], ProcessedEvent); - - -/***/ }), -/* 14 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.DatabaseModule = void 0; -const common_1 = __webpack_require__(3); -const typeorm_1 = __webpack_require__(15); -const payment_entity_1 = __webpack_require__(11); -const outbox_event_entity_1 = __webpack_require__(12); -const processed_event_entity_1 = __webpack_require__(13); -let DatabaseModule = class DatabaseModule { -}; -exports.DatabaseModule = DatabaseModule; -exports.DatabaseModule = DatabaseModule = __decorate([ - (0, common_1.Module)({ - imports: [ - typeorm_1.TypeOrmModule.forRoot({ - type: 'postgres', - host: process.env.DB_HOST || 'localhost', - port: parseInt(process.env.DB_PORT || '5432', 10), - username: process.env.DB_USER || 'user', - password: process.env.DB_PASSWORD || 'password', - database: process.env.DB_NAME || 'payments_db', - entities: [payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent], - synchronize: true, - }), - typeorm_1.TypeOrmModule.forFeature([payment_entity_1.Payment, outbox_event_entity_1.OutboxEvent, processed_event_entity_1.ProcessedEvent]), - ], - exports: [typeorm_1.TypeOrmModule], - }) -], DatabaseModule); - - -/***/ }), -/* 15 */ -/***/ ((module) => { - -module.exports = require("@nestjs/typeorm"); - -/***/ }), -/* 16 */ -/***/ (function(__unused_webpack_module, exports, __webpack_require__) { - - -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.CreatePaymentDto = void 0; -const class_validator_1 = __webpack_require__(17); -class CreatePaymentDto { - amount; - currency; - country; -} -exports.CreatePaymentDto = CreatePaymentDto; -__decorate([ - (0, class_validator_1.IsNumber)(), - (0, class_validator_1.IsPositive)(), - __metadata("design:type", Number) -], CreatePaymentDto.prototype, "amount", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "currency", void 0); -__decorate([ - (0, class_validator_1.IsString)(), - (0, class_validator_1.IsNotEmpty)(), - __metadata("design:type", String) -], CreatePaymentDto.prototype, "country", void 0); - - -/***/ }), -/* 17 */ -/***/ ((module) => { - -module.exports = require("class-validator"); - -/***/ }) -/******/ ]); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. -(() => { -var exports = __webpack_exports__; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core_1 = __webpack_require__(1); -const relay_module_1 = __webpack_require__(2); -async function bootstrap() { - const app = await core_1.NestFactory.createApplicationContext(relay_module_1.RelayModule); - console.log('Outbox Relay Worker started'); -} -bootstrap(); - -})(); - -/******/ })() -; \ No newline at end of file diff --git a/challenge-1/templates/error.html b/challenge-1/templates/error.html new file mode 100644 index 00000000..7f17df1f --- /dev/null +++ b/challenge-1/templates/error.html @@ -0,0 +1,100 @@ + + + + + + Error en la Liquidación del Pago + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Yape Logo +
+
+ +
+

Error en la Liquidación del Pago

+

No pudimos procesar tu transacción en este momento.

+
+ + + + + + + +
+ MONTO DE INTENTO +
+ {{currency}}{{amount}} +
+
+ + + + + + + + + + + + + +
ID del Pago
+ {{id}} +
+ Razón del Fallo + {{status}} +
+ Fecha: {{date}} +
+
+
+ Reintentar Pago +
+

¿Necesitas ayuda? Contacta a soporte técnico o revisa el estado de nuestros servicios.

+
+ +

© 2026 Yape. Todos los derechos reservados.

+
+
+ + \ No newline at end of file diff --git a/challenge-1/templates/ok.html b/challenge-1/templates/ok.html new file mode 100644 index 00000000..13a9aac9 --- /dev/null +++ b/challenge-1/templates/ok.html @@ -0,0 +1,100 @@ + + + + + + Confirmación de Pago Liquidado + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Yape Logo +
+
+ +
+

Hemos recibido tu pago

+

Tu transacción está siendo procesada en nuestro sistema.

+
+ + + + + + + +
+ Monto Total +
+ {{currency}}{{amount}} +
+
+ + + + + + + + + + +
ID del Pago
+ {{id}} +
+ + + + + +
+ Estado + PENDING + + Modelo de Consistencia + Eventual +
+
+
+
+ Ver Detalles en App +
+ +

© 2026 Yape. Todos los derechos reservados.

+
+
+ + \ No newline at end of file From 797d69eb3a43e07970489599dff31c4e7da46eaf Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 11:50:38 -0500 Subject: [PATCH 12/18] Mejorando idempotencia --- challenge-1/.env_sample | 3 + challenge-1/README.md | 111 +++++-- challenge-1/apps/api/src/app.controller.ts | 16 +- challenge-1/apps/api/src/app.module.ts | 27 +- challenge-1/apps/api/src/app.service.ts | 27 +- .../common/filters/all-exceptions.filter.ts | 49 +++ challenge-1/apps/api/src/main.ts | 20 +- .../api/src/payments/payments.repository.ts | 44 +++ .../apps/consumers/src/consumers.module.ts | 18 +- .../apps/consumers/src/fraud.consumer.ts | 4 +- .../apps/consumers/src/ledger.consumer.ts | 4 +- .../apps/consumers/src/saga.consumer.ts | 67 +++- challenge-1/apps/relay/src/relay.module.ts | 2 + .../libs/shared/src/dto/create-payment.dto.ts | 21 +- .../libs/shared/src/dto/pagination.dto.ts | 10 + challenge-1/libs/shared/src/index.ts | 1 + challenge-1/package-lock.json | 298 ++++++++++++++---- challenge-1/package.json | 12 +- 18 files changed, 589 insertions(+), 145 deletions(-) create mode 100644 challenge-1/.env_sample create mode 100644 challenge-1/apps/api/src/common/filters/all-exceptions.filter.ts create mode 100644 challenge-1/apps/api/src/payments/payments.repository.ts create mode 100644 challenge-1/libs/shared/src/dto/pagination.dto.ts diff --git a/challenge-1/.env_sample b/challenge-1/.env_sample new file mode 100644 index 00000000..6292bcac --- /dev/null +++ b/challenge-1/.env_sample @@ -0,0 +1,3 @@ +BREVO_API_KEY=YOUR_BREVO_API_KEY_HERE_XKEYSIB... +NOTIFY_TARGET_EMAIL=barfrank2020@gmail.com +SENDER_EMAIL=barfrank2020@gmail.com diff --git a/challenge-1/README.md b/challenge-1/README.md index 7420342f..033560a9 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -48,12 +48,18 @@ sequenceDiagram end Note over K,S: 4. Consistencia Final (Saga) - K->>S: Consume {pais}.fraud.approved / {pais}.ledger.written - S->>DB: Verify processed_events (fraud & ledger) + rect rgba(124, 116, 116, 1) + Note right of S: Multi-Trigger Idempotency + K->>S: Consume {pais}.fraud.approved + S->>DB: Save SagaConsumer_Fraud + K->>S: Consume {pais}.ledger.written + S->>DB: Save SagaConsumer_Ledger + end + S->>DB: Verify both keys exist for eventId alt Ambas condiciones cumplidas S->>DB: UPDATE Payment (SETTLED) S->>K: Emit {pais}.payment.settled.v1 - else Fallo en validación + else Fallo detectado (DLT) S->>DB: UPDATE Payment (FAILED) S->>K: Emit {pais}.payment.failed.v1 end @@ -79,9 +85,11 @@ sequenceDiagram * **Idempotencia:** Todos usan la tabla `processed_events` para asegurar que un mismo `eventId` nunca sea procesado dos veces. 5. **Saga Consumer (Orquestador de Consistencia Final):** - * Recoge los eventos de aprobación de Fraude y Ledger. - * **Cierre Exitoso:** Cuando ambas condiciones se cumplen, actualiza el pago a **`SETTLED`** y emite el evento final de negocio **`payment.settled.v1`**. - * **Cierre Fallido:** Si recibe un evento de fallo (ej. de DLT), actualiza el pago a **`FAILED`** y emite **`payment.failed.v1`**. + * **Garantía Multi-Evento:** Recoge confirmaciones de Fraude y Ledger. Como son eventos distintos en Kafka, utiliza una arquitectura de **idempotencia granular**: + * `SagaConsumer_Fraud`: Registra que el mensaje de aprobación de fraude fue procesado por la Saga. + * `SagaConsumer_Ledger`: Registra que el mensaje de escritura en libro contable fue procesado por la Saga. + * **Cierre Exitoso:** Cuando ambas llaves existen para el mismo `eventId` original, actualiza el pago a **`SETTLED`** y emite **`payment.settled.v1`**. + * **Cierre Fallido:** Si recibe un evento de fallo (marcado como `SagaConsumer_Failed`), actualiza el pago a **`FAILED`** y emite **`payment.failed.v1`** de forma atómica. --- @@ -94,25 +102,64 @@ sequenceDiagram - **Coordino** el estado final mediante un `SagaConsumer` para alterar la consistencia final del pago a `SETTLED`. ### Modelo de Datos (PostgreSQL) +```mermaid +erDiagram + payments ||--o{ outbox_events : "id = aggregateId" + outbox_events ||--o{ processed_events : "eventId = eventId" + + payments { + uuid id PK + decimal amount + string currency + string country + enum status + timestamp createdAt + timestamp updatedAt + } + + outbox_events { + uuid eventId PK + uuid aggregateId FK + string eventType + jsonb payload + enum status + int retryCount + timestamp createdAt + timestamp sentAt + } + + processed_events { + uuid eventId PK, FK + string consumer PK + timestamp processedAt + } +``` + **Utilizo** tres tablas clave para garantizar la atomicidad y la idempotencia: 1. **`payments`**: Almacena el estado actual del pago. - - `id` (UUID, PK): Identificador único del pago. - - `amount` (Decimal): Monto de la transacción. - - `status` (Enum): PENDING, SETTLED, FAILED. - - `currency`, `country`: Metadatos de la transacción. + - `id` (UUID, PK): Identificador único del pago generado al momento de la creación. + - `amount` (Decimal): Monto numérico de la transacción. + - `currency` (String): Moneda del pago (ej. USD, PEN). + - `country` (String): Código del país para el ruteo de eventos (ej. PE, MX). + - `status` (Enum): Estado actual del ciclo de vida (`PENDING`, `SETTLED`, `FAILED`). + - `createdAt` (Timestamp): Fecha de creación del registro. + - `updatedAt` (Timestamp): Última vez que se actualizó el registro (útil para auditoría de cambios de estado). 2. **`outbox_events`**: Implemento el Outbox Pattern. - - `eventId` (UUID, PK): ID único del evento. - - `aggregateId` (UUID): Referencia al `payment.id`. - - `eventType` (String): Ejemplo `payment.created.v1`. - - `payload` (JSONB): Datos serializados del evento. - - `status` (Enum): PENDING, SENT. + - `eventId` (UUID, PK): Identificador único del evento para rastreo global. + - `aggregateId` (UUID): Referencia al ID del pago (`payment.id`) que originó el evento. + - `eventType` (String): El tipo de evento para despacho (ej. `payment.created.v1`). + - `payload` (JSONB): El cuerpo completo del mensaje serializado que será enviado a Kafka. + - `status` (Enum): Estado del envío por parte del Relay (`PENDING`, `SENT`, `FAILED`). + - `retryCount` (Int): Contador de intentos fallidos de publicación por el proceso Relay. + - `createdAt` (Timestamp): Momento en que el evento fue insertado en la tabla. + - `sentAt` (Timestamp): Momento exacto en que el Relay confirmó la publicación en el broker de Kafka. 3. **`processed_events`**: Garantizo la idempotencia de los consumidores. - - `eventId` (UUID, PK): ID del evento procesado. - - `consumer` (String, PK): Nombre del microservicio que procesó el evento (ej. `fraud`, `ledger`). - - `processedAt` (Timestamp): Fecha de procesamiento. + - `eventId` (UUID, PK): ID del evento capturado desde Kafka (proviene de `outbox_events.eventId`). + - `consumer` (String, PK): Nombre del microservicio o lógica que procesó el evento (ej. `FraudConsumer`). + - `processedAt` (Timestamp): Registro de tiempo para control y auditoría de la idempotencia. ## Tech Stack - **Framework:** NestJS @@ -120,6 +167,16 @@ sequenceDiagram - **Base de Datos:** PostgreSQL - **ORM:** TypeORM +## Mejoras en el API Rest (Robustez y Seguridad) + +Como parte de la evolución de la plataforma, **he implementado** una serie de capas de seguridad y optimización para asegurar que la API sea de grado producción: + +1. **Validación Estricta con Zod:** **He reemplazado** la validación tradicional por esquemas de **Zod**. Esto me permite garantizar que tanto el cuerpo de la creación de pagos como los parámetros de consulta sigan una estructura rígida, evitando inyecciones de datos o estados corruptos. +2. **Protección contra Abusos (Rate Limit):** **He configurado** un sistema de limitación de tasa (`@nestjs/throttler`) que restringe a un máximo de **100 peticiones por minuto** por IP. Con esto, **prevengo** ataques de fuerza bruta y denegación de servicio (DoS) a nivel de aplicación. +3. **Ofuscación de Errores e Infraestructura:** **He implementado** un filtro global de excepciones (`AllExceptionsFilter`). Ante cualquier fallo interno (500), el sistema **devuelve** un mensaje genérico al cliente para no revelar detalles técnicos de la base de datos o el código, mientras que **mantengo** un registro detallado en los logs internos para auditoría. +4. **Capa de Acceso a Datos (DAL):** **He abstraído** la interacción con la base de datos mediante un `PaymentsRepository`. Esto me permite desacoplar la lógica de negocio del ORM y asegurar que el acceso a datos sea controlado y reutilizable. +5. **Paginación de Alto Rendimiento:** **He añadido** soporte para paginación mediante **Cursor** (ideal para feeds infinitos) y **Offset** (para navegación por páginas tradicionales), permitiendo que la API maneje volúmenes masivos de datos de forma eficiente sin sobrecargar la memoria. +6. **Optimización de Respuesta (Cache):** **He integrado** una capa de caché en memoria para el endpoint de consulta de pagos. Esto **convierte** consultas que podrían ser costosas en respuestas instantáneas de pocos milisegundos para peticiones repetitivas. --- ## Cómo compilar y ejecutar @@ -132,6 +189,7 @@ docker-compose up -d 2. **Instalar dependencias** **Aseguro** tener Node.js (v18+) y estar ubicado en la carpeta del challenge. ```bash +mv .env_sample .env npm install npm run build ``` @@ -283,7 +341,10 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec --------------------------------------+---------------- cbe445b6-e866-4140-aeac-9a210a60cedb | FraudConsumer cbe445b6-e866-4140-aeac-9a210a60cedb | LedgerConsumer - (2 rows) + cbe445b6-e866-4140-aeac-9a210a60cedb | NotifyConsumer + cbe445b6-e866-4140-aeac-9a210a60cedb | SagaConsumer_Fraud + cbe445b6-e866-4140-aeac-9a210a60cedb | SagaConsumer_Ledger + (5 rows) ``` * **Paso B (Simular Duplicado):** Puedes forzar el re-procesamiento (por configuración de Kafka o re-enviando el mismo `eventId` manualmente al tópico). @@ -312,9 +373,13 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec --------------------------------------+---------------- cbe445b6-e866-4140-aeac-9a210a60cedb | FraudConsumer cbe445b6-e866-4140-aeac-9a210a60cedb | LedgerConsumer - (2 rows) + cbe445b6-e866-4140-aeac-9a210a60cedb | NotifyConsumer + cbe445b6-e866-4140-aeac-9a210a60cedb | SagaConsumer_Fraud + cbe445b6-e866-4140-aeac-9a210a60cedb | SagaConsumer_Ledger + (5 rows) ``` -* **Aclaración de Solidez:** Las claves de idempotencia residen en el **lado del consumidor** (clave compuesta: `eventId` + `consumer_name`), asegurando que cada lógica de negocio sea "self-contained" y resiliente. +* **Aclaración de Solidez:** Las claves de idempotencia residen en el **lado del consumidor** (clave compuesta: `eventId` + `consumer_name`), asegurando que cada lógica de negocio sea "self-contained" y resiliente. + * *Nota sobre la Saga:* El `SagaConsumer` utiliza dos claves separadas (`SagaConsumer_Fraud` y `SagaConsumer_Ledger`) porque escucha dos eventos distintos para el mismo pago. Esto garantiza que la Saga se active exactamente una vez por cada confirmación (Fraude y Ledger) sin que la primera bloquee la llegada de la segunda por colisión de clave. --- @@ -470,6 +535,9 @@ docker exec kafka kafka-topics --bootstrap-server localhost:9092 --list | grep ' Resultado: ``` +co.payment.created.v1 +co.payment.failed.v1 +co.payment.fraud.approved.v1 co.payment.ledger.written.v1 gen.payment.created.v1 gen.payment.failed.v1 @@ -484,6 +552,7 @@ pe.payment.created.v1.dlt pe.payment.failed.v1 pe.payment.fraud.approved.v1 pe.payment.ledger.written.v1 +pe.payment.settled.v1 ``` **2. Prueba de flujo segregado (PE vs MX):** diff --git a/challenge-1/apps/api/src/app.controller.ts b/challenge-1/apps/api/src/app.controller.ts index 1628deb2..dfa81b28 100644 --- a/challenge-1/apps/api/src/app.controller.ts +++ b/challenge-1/apps/api/src/app.controller.ts @@ -1,8 +1,10 @@ -import { Controller, Get, Post, Body, Param } from '@nestjs/common'; +import { Controller, Get, Post, Body, Param, Query, UseInterceptors } from '@nestjs/common'; import { AppService } from './app.service'; -import { CreatePaymentDto } from '@app/shared'; +import { CreatePaymentDto, PaginationDto } from '@app/shared'; +import { CacheInterceptor } from '@nestjs/cache-manager'; @Controller('payments') +@UseInterceptors(CacheInterceptor) export class AppController { constructor(private readonly appService: AppService) {} @@ -12,18 +14,20 @@ export class AppController { return payment; } + @Get() + async getPayments(@Query() paginationDto: PaginationDto) { + return this.appService.getPayments(paginationDto); + } + // GET /payments/:id // CONSISTENCY GUARANTEE: This endpoint reflects eventual consistency. - // A payment may return `pending` after creation. - // It transitions to `settled` only after BOTH FraudConsumer AND LedgerConsumer - // have acknowledged the event. There is no SLA on this window. @Get(':id') async getPayment(@Param('id') id: string) { const payment = await this.appService.getPayment(id); return { data: { paymentId: payment.id, - status: payment.status, // 'pending' | 'settled' | 'failed' + status: payment.status, amount: payment.amount, currency: payment.currency, }, diff --git a/challenge-1/apps/api/src/app.module.ts b/challenge-1/apps/api/src/app.module.ts index 00d3638c..b4f0d2a7 100644 --- a/challenge-1/apps/api/src/app.module.ts +++ b/challenge-1/apps/api/src/app.module.ts @@ -1,11 +1,34 @@ import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { DatabaseModule } from '@app/shared'; +import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler'; +import { APP_GUARD } from '@nestjs/core'; +import { CacheModule } from '@nestjs/cache-manager'; +import { PaymentsRepository } from './payments/payments.repository'; @Module({ - imports: [DatabaseModule], + imports: [ + ConfigModule.forRoot({ isGlobal: true }), + DatabaseModule, + ThrottlerModule.forRoot([{ + ttl: 60000, + limit: 100, + }]), + CacheModule.register({ + ttl: 5000, // 5 seconds default + max: 100, // Maximum items in cache + }), + ], controllers: [AppController], - providers: [AppService], + providers: [ + AppService, + PaymentsRepository, + { + provide: APP_GUARD, + useClass: ThrottlerGuard, + }, + ], }) export class AppModule {} diff --git a/challenge-1/apps/api/src/app.service.ts b/challenge-1/apps/api/src/app.service.ts index b61f0c9f..2daf3037 100644 --- a/challenge-1/apps/api/src/app.service.ts +++ b/challenge-1/apps/api/src/app.service.ts @@ -2,16 +2,20 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { DataSource } from 'typeorm'; import { Payment, PaymentStatus, OutboxEvent, OutboxStatus, CreatePaymentDto } from '@app/shared'; import { v4 as uuidv4 } from 'uuid'; +import { PaymentsRepository, PaginationOptions } from './payments/payments.repository'; @Injectable() export class AppService { - constructor(private dataSource: DataSource) {} + constructor( + private dataSource: DataSource, + private paymentsRepository: PaymentsRepository, + ) {} async createPayment(dto: CreatePaymentDto) { + const { amount, currency, country } = dto; const paymentId = uuidv4(); const eventId = uuidv4(); - // Outbox Pattern via explicit QueryRunner to handle transaction safely const queryRunner = this.dataSource.createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); @@ -21,9 +25,9 @@ export class AppService { try { payment = queryRunner.manager.create(Payment, { id: paymentId, - amount: dto.amount, - currency: dto.currency, - country: dto.country, + amount, + currency, + country, status: PaymentStatus.PENDING, }); @@ -35,16 +39,15 @@ export class AppService { eventType: 'payment.created.v1', payload: { id: paymentId, - amount: dto.amount, - currency: dto.currency, - country: dto.country, + amount, + currency, + country, }, status: OutboxStatus.PENDING, }); await queryRunner.manager.save(outboxEvent); - // NO Kafka emission here await queryRunner.commitTransaction(); } catch (err) { await queryRunner.rollbackTransaction(); @@ -57,8 +60,12 @@ export class AppService { } async getPayment(id: string) { - const payment = await this.dataSource.manager.findOne(Payment, { where: { id } }); + const payment = await this.paymentsRepository.findOne({ where: { id } }); if (!payment) throw new NotFoundException('Payment not found'); return payment; } + + async getPayments(options: PaginationOptions) { + return this.paymentsRepository.findPaginated(options); + } } diff --git a/challenge-1/apps/api/src/common/filters/all-exceptions.filter.ts b/challenge-1/apps/api/src/common/filters/all-exceptions.filter.ts new file mode 100644 index 00000000..ac95d2eb --- /dev/null +++ b/challenge-1/apps/api/src/common/filters/all-exceptions.filter.ts @@ -0,0 +1,49 @@ +import { + ExceptionFilter, + Catch, + ArgumentsHost, + HttpException, + HttpStatus, + Logger, +} from '@nestjs/common'; +import { HttpAdapterHost } from '@nestjs/core'; + +@Catch() +export class AllExceptionsFilter implements ExceptionFilter { + private readonly logger = new Logger(AllExceptionsFilter.name); + + constructor(private readonly httpAdapterHost: HttpAdapterHost) {} + + catch(exception: unknown, host: ArgumentsHost): void { + const { httpAdapter } = this.httpAdapterHost; + const ctx = host.switchToHttp(); + + const httpStatus = + exception instanceof HttpException + ? exception.getStatus() + : HttpStatus.INTERNAL_SERVER_ERROR; + + const message = + exception instanceof HttpException + ? exception.getResponse() + : 'Internal Server Error'; + + // Log the detailed error internally + this.logger.error( + `Exception: ${exception instanceof Error ? exception.message : JSON.stringify(exception)}`, + exception instanceof Error ? exception.stack : '', + ); + + const responseBody = { + statusCode: httpStatus, + timestamp: new Date().toISOString(), + path: httpAdapter.getRequestUrl(ctx.getRequest()), + // In production, we only reveal the message if it's an HttpException + message: httpStatus === HttpStatus.INTERNAL_SERVER_ERROR + ? 'Un fallo interno ha ocurrido. Por favor contacte al administrador.' + : message, + }; + + httpAdapter.reply(ctx.getResponse(), responseBody, httpStatus); + } +} diff --git a/challenge-1/apps/api/src/main.ts b/challenge-1/apps/api/src/main.ts index 3fc6af40..0659ec32 100644 --- a/challenge-1/apps/api/src/main.ts +++ b/challenge-1/apps/api/src/main.ts @@ -1,10 +1,22 @@ -import { NestFactory } from '@nestjs/core'; +import { NestFactory, HttpAdapterHost } from '@nestjs/core'; import { AppModule } from './app.module'; -import { ValidationPipe } from '@nestjs/common'; +import { ZodValidationPipe } from 'nestjs-zod'; +import { AllExceptionsFilter } from './common/filters/all-exceptions.filter'; +import { Logger } from '@nestjs/common'; async function bootstrap() { + const logger = new Logger('Bootstrap'); const app = await NestFactory.create(AppModule); - app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })); - await app.listen(process.env.PORT ?? 3001); + + // Use Zod for validation + app.useGlobalPipes(new ZodValidationPipe()); + + // Use Global Exception Filter + const httpAdapterHost = app.get(HttpAdapterHost); + app.useGlobalFilters(new AllExceptionsFilter(httpAdapterHost)); + + const port = process.env.PORT ?? 3001; + await app.listen(port); + logger.log(`API is running on: http://localhost:${port}`); } bootstrap(); diff --git a/challenge-1/apps/api/src/payments/payments.repository.ts b/challenge-1/apps/api/src/payments/payments.repository.ts new file mode 100644 index 00000000..910b207a --- /dev/null +++ b/challenge-1/apps/api/src/payments/payments.repository.ts @@ -0,0 +1,44 @@ +import { Injectable, Logger } from '@nestjs/common'; +import { DataSource, Repository, LessThan, MoreThan } from 'typeorm'; +import { Payment } from '@app/shared'; + +export interface PaginationOptions { + limit: number; + offset?: number; + cursor?: string; // payment ID +} + +@Injectable() +export class PaymentsRepository extends Repository { + private readonly logger = new Logger(PaymentsRepository.name); + + constructor(private dataSource: DataSource) { + super(Payment, dataSource.createEntityManager()); + } + + async findPaginated(options: PaginationOptions) { + const { limit, offset, cursor } = options; + const queryBuilder = this.createQueryBuilder('payment'); + + queryBuilder.take(limit); + + if (cursor) { + // Cursor-based pagination (using ID as simple cursor) + // For more complex feeds, use a composite key or a sortable field like createdAt + queryBuilder.where('payment.id > :cursor', { cursor }); + } else if (offset !== undefined) { + // Offset-based pagination + queryBuilder.skip(offset); + } + + queryBuilder.orderBy('payment.createdAt', 'DESC'); + + const [items, total] = await queryBuilder.getManyAndCount(); + + return { + items, + total, + nextCursor: items.length === limit ? items[items.length - 1].id : null, + }; + } +} diff --git a/challenge-1/apps/consumers/src/consumers.module.ts b/challenge-1/apps/consumers/src/consumers.module.ts index b1b61daf..8480dec2 100644 --- a/challenge-1/apps/consumers/src/consumers.module.ts +++ b/challenge-1/apps/consumers/src/consumers.module.ts @@ -1,5 +1,6 @@ -import { Module } from '@nestjs/common'; -import { ClientsModule, Transport } from '@nestjs/microservices'; +import { Module, OnModuleInit, Inject } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { ClientsModule, Transport, ClientKafka } from '@nestjs/microservices'; import { DatabaseModule } from '@app/shared'; import { DispatcherController } from './dispatcher.controller'; import { FraudConsumer } from './fraud.consumer'; @@ -10,6 +11,7 @@ import { ProcessedEventsRepository } from './processed-events.repository'; @Module({ imports: [ + ConfigModule.forRoot({ isGlobal: true }), DatabaseModule, ClientsModule.register([ { @@ -38,4 +40,14 @@ import { ProcessedEventsRepository } from './processed-events.repository'; ProcessedEventsRepository ], }) -export class ConsumersModule {} +export class ConsumersModule implements OnModuleInit { + constructor( + @Inject('KAFKA_CLIENT') private readonly kafkaClient: ClientKafka, + ) {} + + async onModuleInit() { + // Explicitly connect to Kafka to avoid "no leader" errors on the first emit + await this.kafkaClient.connect(); + console.log('Kafka Client connected in ConsumersModule'); + } +} diff --git a/challenge-1/apps/consumers/src/fraud.consumer.ts b/challenge-1/apps/consumers/src/fraud.consumer.ts index 4daecf78..8201b055 100644 --- a/challenge-1/apps/consumers/src/fraud.consumer.ts +++ b/challenge-1/apps/consumers/src/fraud.consumer.ts @@ -75,10 +75,12 @@ export class FraudConsumer { }, }); + const eventId = message.eventId || message.id; + this.logger.warn(`Emitting failure event to ${countryPrefix}.payment.failed.v1`); this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, - value: { aggregateId, reason: error.message }, + value: { aggregateId, eventId, reason: error.message }, }); } } diff --git a/challenge-1/apps/consumers/src/ledger.consumer.ts b/challenge-1/apps/consumers/src/ledger.consumer.ts index bfb84481..3ab3614b 100644 --- a/challenge-1/apps/consumers/src/ledger.consumer.ts +++ b/challenge-1/apps/consumers/src/ledger.consumer.ts @@ -70,10 +70,12 @@ export class LedgerConsumer { }, }); + const eventId = message.eventId || message.id; + this.logger.warn(`Emitting failure event to ${countryPrefix}.payment.failed.v1`); this.kafkaClient.emit(`${countryPrefix}.payment.failed.v1`, { key: aggregateId, - value: { aggregateId, reason: error.message }, + value: { aggregateId, eventId, reason: error.message }, }); } } diff --git a/challenge-1/apps/consumers/src/saga.consumer.ts b/challenge-1/apps/consumers/src/saga.consumer.ts index 448b0396..fc2e40bd 100644 --- a/challenge-1/apps/consumers/src/saga.consumer.ts +++ b/challenge-1/apps/consumers/src/saga.consumer.ts @@ -22,7 +22,14 @@ export class SagaConsumer { ]) async handleFraudApproved(@Payload() message: any): Promise { const aggregateId = message.aggregateId || message.id; - await this.trySettlePayment(message.eventId, aggregateId); + const eventId = message.eventId || message.id; + + // Idempotency check for SagaConsumer itself processing THIS specific message + const alreadyProcessed = await this.processedRepo.exists(eventId, 'SagaConsumer_Fraud'); + if (alreadyProcessed) return; + + await this.processedRepo.markProcessed(eventId, 'SagaConsumer_Fraud'); + await this.trySettlePayment(eventId, aggregateId); } @EventPattern([ @@ -33,7 +40,14 @@ export class SagaConsumer { ]) async handleLedgerWritten(@Payload() message: any): Promise { const aggregateId = message.aggregateId || message.id; - await this.trySettlePayment(message.eventId, aggregateId); + const eventId = message.eventId || message.id; + + // Idempotency check for SagaConsumer itself processing THIS specific message + const alreadyProcessed = await this.processedRepo.exists(eventId, 'SagaConsumer_Ledger'); + if (alreadyProcessed) return; + + await this.processedRepo.markProcessed(eventId, 'SagaConsumer_Ledger'); + await this.trySettlePayment(eventId, aggregateId); } @EventPattern([ @@ -44,9 +58,26 @@ export class SagaConsumer { ]) async handlePaymentFailed(@Payload() message: any): Promise { const aggregateId = message.aggregateId || message.id; + const eventId = message.eventId || message.id; + + if (!eventId) { + this.logger.error(`Saga received failure for payment ${aggregateId} but no eventId was found in the message! Cannot mark idempotency.`); + // Still update the payment status to FAILED for consistency, but skip idempotency registration + await this.dataSource.manager.update( + Payment, + { id: aggregateId, status: PaymentStatus.PENDING }, + { status: PaymentStatus.FAILED } + ); + return; + } + + const alreadyProcessed = await this.processedRepo.exists(eventId, 'SagaConsumer_Failed'); + if (alreadyProcessed) return; + this.logger.warn(`Saga picking up failure for payment ${aggregateId}`); + await this.processedRepo.markProcessed(eventId, 'SagaConsumer_Failed'); - // Atomically update DB to FAILED. If already updated, it won't trigger again. + // Atomically update DB to FAILED. await this.dataSource.manager.update( Payment, { id: aggregateId, status: PaymentStatus.PENDING }, @@ -57,7 +88,7 @@ export class SagaConsumer { private async trySettlePayment(eventId: string, aggregateId: string): Promise { if (!eventId || !aggregateId) return; - // Check if both Fraud and Ledger processed + // Check if both Fraud and Ledger processed for the ORIGINAL event const fraudProcessed = await this.processedRepo.exists(eventId, 'FraudConsumer'); const ledgerProcessed = await this.processedRepo.exists(eventId, 'LedgerConsumer'); @@ -78,19 +109,25 @@ export class SagaConsumer { const countryPrefix = (payment.country || 'gen').toLowerCase(); this.logger.log(`Emitting success event for ${aggregateId} to ${countryPrefix}.payment.settled.v1`); - this.kafkaClient.emit(`${countryPrefix}.payment.settled.v1`, { - key: aggregateId, - value: { - aggregateId, - eventId, - status: 'SETTLED', - amount: payment.amount, - currency: payment.currency - } - }); + try { + await this.kafkaClient.emit(`${countryPrefix}.payment.settled.v1`, { + key: aggregateId, + value: { + aggregateId, + eventId, + status: 'SETTLED', + amount: payment.amount, + currency: payment.currency + } + }).toPromise(); + } catch (error) { + this.logger.error(`Failed to emit settled event for ${aggregateId}: ${error.message}`); + // In a real production app, we would use an outbox here too or a retry mechanism + } } } else { - this.logger.debug(`Payment ${aggregateId} already settled or not in PENDING state.`); + // Silencing or reducing prominence of this log as it's an expected race condition + this.logger.debug(`Payment ${aggregateId} reached settlement condition but was already processed.`); } } } diff --git a/challenge-1/apps/relay/src/relay.module.ts b/challenge-1/apps/relay/src/relay.module.ts index a244ea61..688de7eb 100644 --- a/challenge-1/apps/relay/src/relay.module.ts +++ b/challenge-1/apps/relay/src/relay.module.ts @@ -1,4 +1,5 @@ import { Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; import { ScheduleModule } from '@nestjs/schedule'; import { RelayService } from './relay.service'; import { DatabaseModule } from '@app/shared'; @@ -6,6 +7,7 @@ import { ClientsModule, Transport } from '@nestjs/microservices'; @Module({ imports: [ + ConfigModule.forRoot({ isGlobal: true }), DatabaseModule, ScheduleModule.forRoot(), ClientsModule.register([ diff --git a/challenge-1/libs/shared/src/dto/create-payment.dto.ts b/challenge-1/libs/shared/src/dto/create-payment.dto.ts index 40d5fd37..3785e0b6 100644 --- a/challenge-1/libs/shared/src/dto/create-payment.dto.ts +++ b/challenge-1/libs/shared/src/dto/create-payment.dto.ts @@ -1,15 +1,10 @@ -import { IsNumber, IsString, IsNotEmpty, IsPositive } from 'class-validator'; +import { createZodDto } from 'nestjs-zod'; +import { z } from 'zod'; -export class CreatePaymentDto { - @IsNumber() - @IsPositive() - amount: number; +export const CreatePaymentSchema = z.object({ + amount: z.number().positive({ message: "Amount must be a positive number" }), + currency: z.string().length(3).toUpperCase(), + country: z.string().length(2).toUpperCase(), +}); - @IsString() - @IsNotEmpty() - currency: string; - - @IsString() - @IsNotEmpty() - country: string; -} +export class CreatePaymentDto extends createZodDto(CreatePaymentSchema) {} diff --git a/challenge-1/libs/shared/src/dto/pagination.dto.ts b/challenge-1/libs/shared/src/dto/pagination.dto.ts new file mode 100644 index 00000000..2ba9c406 --- /dev/null +++ b/challenge-1/libs/shared/src/dto/pagination.dto.ts @@ -0,0 +1,10 @@ +import { createZodDto } from 'nestjs-zod'; +import { z } from 'zod'; + +export const PaginationSchema = z.object({ + limit: z.coerce.number().min(1).max(100).default(10), + offset: z.coerce.number().min(0).optional(), + cursor: z.string().optional(), +}); + +export class PaginationDto extends createZodDto(PaginationSchema) {} diff --git a/challenge-1/libs/shared/src/index.ts b/challenge-1/libs/shared/src/index.ts index bdca192c..656bf41a 100644 --- a/challenge-1/libs/shared/src/index.ts +++ b/challenge-1/libs/shared/src/index.ts @@ -5,3 +5,4 @@ export * from './entities/outbox-event.entity'; export * from './entities/processed-event.entity'; export * from './database.module'; export * from './dto/create-payment.dto'; +export * from './dto/pagination.dto'; diff --git a/challenge-1/package-lock.json b/challenge-1/package-lock.json index 15a9b889..732d3751 100644 --- a/challenge-1/package-lock.json +++ b/challenge-1/package-lock.json @@ -9,20 +9,26 @@ "version": "0.0.1", "license": "UNLICENSED", "dependencies": { + "@nestjs/cache-manager": "^3.1.0", "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.3", "@nestjs/core": "^11.0.1", "@nestjs/microservices": "^11.1.17", "@nestjs/platform-express": "^11.0.1", "@nestjs/schedule": "^6.1.1", + "@nestjs/throttler": "^6.5.0", "@nestjs/typeorm": "^11.0.0", + "cache-manager": "^7.2.8", "class-transformer": "^0.5.1", "class-validator": "^0.15.1", "kafkajs": "^2.2.4", + "nestjs-zod": "^5.2.1", "pg": "^8.20.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "typeorm": "^0.3.28", - "uuid": "^13.0.0" + "uuid": "^13.0.0", + "zod": "^4.3.6" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", @@ -722,6 +728,16 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/@cacheable/utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.1.tgz", + "integrity": "sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==", + "license": "MIT", + "dependencies": { + "hashery": "^1.5.1", + "keyv": "^5.6.0" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -758,21 +774,21 @@ } }, "node_modules/@emnapi/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", - "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.0", + "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", - "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", "dev": true, "license": "MIT", "optional": true, @@ -781,9 +797,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", "optional": true, @@ -2036,6 +2052,12 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@keyv/serialize": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", + "license": "MIT" + }, "node_modules/@lukeed/csprng": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", @@ -2058,6 +2080,19 @@ "@tybys/wasm-util": "^0.10.0" } }, + "node_modules/@nestjs/cache-manager": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.1.0.tgz", + "integrity": "sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0", + "cache-manager": ">=6", + "keyv": ">=5", + "rxjs": "^7.8.1" + } + }, "node_modules/@nestjs/cli": { "version": "11.0.17", "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", @@ -2104,12 +2139,12 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", - "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", + "version": "11.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.18.tgz", + "integrity": "sha512-0sLq8Z+TIjLnz1Tqp0C/x9BpLbqpt1qEu0VcH4/fkE0y3F5JxhfK1AdKQ/SPbKhKgwqVDoY4gS8GQr2G6ujaWg==", "license": "MIT", "dependencies": { - "file-type": "21.3.2", + "file-type": "21.3.4", "iterare": "1.2.1", "load-esm": "1.0.3", "tslib": "2.8.1", @@ -2134,17 +2169,32 @@ } } }, + "node_modules/@nestjs/config": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.3.tgz", + "integrity": "sha512-FQ3M3Ohqfl+nHAn5tp7++wUQw0f2nAk+SFKe8EpNRnIifPqvfJP6JQxPKtFLMOHbyer4X646prFG4zSRYEssQQ==", + "license": "MIT", + "dependencies": { + "dotenv": "17.2.3", + "dotenv-expand": "12.0.3", + "lodash": "4.17.23" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "rxjs": "^7.1.0" + } + }, "node_modules/@nestjs/core": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", - "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", + "version": "11.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.18.tgz", + "integrity": "sha512-wR3DtGyk/LUAiPtbXDuWJJwVkWElKBY0sqnTzf9d4uM3+X18FRZhK7WFc47czsIGOdWuRsMeLYV+1Z9dO4zDEQ==", "hasInstallScript": true, "license": "MIT", "dependencies": { "@nuxt/opencollective": "0.4.1", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", - "path-to-regexp": "8.3.0", + "path-to-regexp": "8.4.2", "tslib": "2.8.1", "uid": "2.0.2" }, @@ -2176,9 +2226,9 @@ } }, "node_modules/@nestjs/microservices": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.17.tgz", - "integrity": "sha512-rubBPEEXS9PwA3LwdNN/ytjEUmON+d8+4fbiUCIFGW8i+rR/g36vrpwuvoAzcGpxlu45/TpZPfHTb0nJciG9Yw==", + "version": "11.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.18.tgz", + "integrity": "sha512-sodzBqqKAcOv5GctTbb0j3vzgx+X3/IxmJ8pBKL9hEmsarsYPkig6dcOcVFmM2Pknm+o6Cxaqv1YZZETISNi+w==", "license": "MIT", "dependencies": { "iterare": "1.2.1", @@ -2234,15 +2284,15 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", - "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", + "version": "11.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.18.tgz", + "integrity": "sha512-s6GdHMTa3qx0fJewR74Xa30ysPHfBEqxIwZ7BGSTLoAEQ1vTP24urNl+b6+s49NFLEIOyeNho5fN/9/I17QlOw==", "license": "MIT", "dependencies": { "cors": "2.8.6", "express": "5.2.1", "multer": "2.1.1", - "path-to-regexp": "8.3.0", + "path-to-regexp": "8.4.2", "tslib": "2.8.1" }, "funding": { @@ -2379,9 +2429,9 @@ } }, "node_modules/@nestjs/testing": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", - "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", + "version": "11.1.18", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.18.tgz", + "integrity": "sha512-frzwNlpBgtAzI3hp/qo57DZoRO4RMTH1wST3QUYEhRTHyfPkLpzkWz3jV/mhApXjD0yT56Ptlzn6zuYPLh87Lw==", "dev": true, "license": "MIT", "dependencies": { @@ -2406,17 +2456,28 @@ } } }, + "node_modules/@nestjs/throttler": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@nestjs/throttler/-/throttler-6.5.0.tgz", + "integrity": "sha512-9j0ZRfH0QE1qyrj9JjIRDz5gQLPqq9yVC2nHsrosDVAfI5HHw08/aUAWx9DZLSdQf4HDkmhTTEGLrRFHENvchQ==", + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", + "reflect-metadata": "^0.1.13 || ^0.2.0" + } + }, "node_modules/@nestjs/typeorm": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", - "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.1.tgz", + "integrity": "sha512-8rw/nKT0S+L+MkzgE9F2/mox7mAgsPlwfzmW9gsESN1lmQtIrVEfiiBwC2O8+guS1jBfQehJIdcdUj2OAp4VUQ==", "license": "MIT", "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", "@nestjs/core": "^10.0.0 || ^11.0.0", "reflect-metadata": "^0.1.13 || ^0.2.0", "rxjs": "^7.2.0", - "typeorm": "^0.3.0" + "typeorm": "^0.3.0 || ^1.0.0-dev" } }, "node_modules/@noble/hashes": { @@ -2499,9 +2560,9 @@ } }, "node_modules/@sinonjs/fake-timers": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.2.1.tgz", - "integrity": "sha512-QdfpQFIwYrTK8lFsII4bJ1AO1ZLbw7B+oxfP+/qSsiTrVerFp7aY2O+d2GNGrTxP58ezEbjbf7mTTLMsd7M7XQ==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz", + "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2780,9 +2841,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", "devOptional": true, "license": "MIT", "dependencies": { @@ -4026,9 +4087,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", + "version": "2.10.14", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.14.tgz", + "integrity": "sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4206,6 +4267,16 @@ "node": ">= 0.8" } }, + "node_modules/cache-manager": { + "version": "7.2.8", + "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-7.2.8.tgz", + "integrity": "sha512-0HDaDLBBY/maa/LmUVAr70XUOwsiQD+jyzCBjmUErYZUKdMS9dT59PqW59PpVqfGM7ve6H0J6307JTpkCYefHQ==", + "license": "MIT", + "dependencies": { + "@cacheable/utils": "^2.3.3", + "keyv": "^5.5.5" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -4785,7 +4856,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4872,6 +4942,33 @@ } }, "node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand": { + "version": "12.0.3", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", + "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", + "license": "BSD-2-Clause", + "dependencies": { + "dotenv": "^16.4.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-expand/node_modules/dotenv": { "version": "16.6.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", @@ -4910,9 +5007,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.330", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", - "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", + "version": "1.5.331", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", + "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", "dev": true, "license": "ISC" }, @@ -5478,9 +5575,9 @@ } }, "node_modules/file-type": { - "version": "21.3.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", + "version": "21.3.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", + "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", "license": "MIT", "dependencies": { "@tokenizer/inflate": "^0.4.1", @@ -5560,6 +5657,16 @@ "node": ">=16" } }, + "node_modules/flat-cache/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/flatted": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", @@ -6024,6 +6131,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hashery": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", + "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", + "license": "MIT", + "dependencies": { + "hookified": "^1.15.0" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -6036,6 +6155,12 @@ "node": ">= 0.4" } }, + "node_modules/hookified": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", + "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", + "license": "MIT" + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", @@ -7315,13 +7440,12 @@ } }, "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "@keyv/serialize": "^1.1.1" } }, "node_modules/leven": { @@ -7414,7 +7538,6 @@ "version": "4.17.23", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "dev": true, "license": "MIT" }, "node_modules/lodash.memoize": { @@ -7794,6 +7917,26 @@ "dev": true, "license": "MIT" }, + "node_modules/nestjs-zod": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/nestjs-zod/-/nestjs-zod-5.2.1.tgz", + "integrity": "sha512-pGfOsLVcXJKB6vdh59YMN9o3hvaOKFISo1EU9IUCMGl5yb0JsvY6A0ZnNnTmwb8zs7o1cWwC8GeVrawvnL8/rw==", + "license": "MIT", + "dependencies": { + "deepmerge": "^4.3.1" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0 || ^11.0.0", + "@nestjs/swagger": "^7.4.2 || ^8.0.0 || ^11.0.0", + "rxjs": "^7.0.0", + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "@nestjs/swagger": { + "optional": true + } + } + }, "node_modules/node-abort-controller": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", @@ -7819,9 +7962,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", "dev": true, "license": "MIT" }, @@ -8094,9 +8237,9 @@ } }, "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "license": "MIT", "funding": { "type": "opencollective", @@ -9597,9 +9740,9 @@ } }, "node_modules/ts-loader": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", - "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", + "version": "9.5.7", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", + "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", "dev": true, "license": "MIT", "dependencies": { @@ -9913,6 +10056,18 @@ "ieee754": "^1.2.1" } }, + "node_modules/typeorm/node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/typeorm/node_modules/glob": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", @@ -10204,9 +10359,9 @@ } }, "node_modules/validator": { - "version": "13.15.26", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", - "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", + "version": "13.15.35", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", + "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", "license": "MIT", "engines": { "node": ">= 0.10" @@ -10639,6 +10794,15 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/challenge-1/package.json b/challenge-1/package.json index 50ff7026..3c5dfbfc 100644 --- a/challenge-1/package.json +++ b/challenge-1/package.json @@ -7,6 +7,8 @@ "license": "UNLICENSED", "scripts": { "build": "nest build", + "clean": "rm -rf node_modules package-lock.json .next dist", + "reinstall": "npm run clean && npm cache clean --force && npm install", "format": "prettier --write \"apps/**/*.ts\" \"libs/**/*.ts\"", "start": "nest start", "start:dev": "nest start --watch", @@ -20,20 +22,26 @@ "test:e2e": "jest --config ./apps/challenge-1/test/jest-e2e.json" }, "dependencies": { + "@nestjs/cache-manager": "^3.1.0", "@nestjs/common": "^11.0.1", + "@nestjs/config": "^4.0.3", "@nestjs/core": "^11.0.1", "@nestjs/microservices": "^11.1.17", "@nestjs/platform-express": "^11.0.1", "@nestjs/schedule": "^6.1.1", + "@nestjs/throttler": "^6.5.0", "@nestjs/typeorm": "^11.0.0", + "cache-manager": "^7.2.8", "class-transformer": "^0.5.1", "class-validator": "^0.15.1", "kafkajs": "^2.2.4", + "nestjs-zod": "^5.2.1", "pg": "^8.20.0", "reflect-metadata": "^0.2.2", "rxjs": "^7.8.1", "typeorm": "^0.3.28", - "uuid": "^13.0.0" + "uuid": "^13.0.0", + "zod": "^4.3.6" }, "devDependencies": { "@eslint/eslintrc": "^3.2.0", @@ -86,4 +94,4 @@ "^@app/shared(|/.*)$": "/libs/shared/src/$1" } } -} +} \ No newline at end of file From 7fddb8124046d2af30bfb7344a9e12727acc2f7d Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 11:54:43 -0500 Subject: [PATCH 13/18] Mejorando readme --- challenge-1/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/challenge-1/README.md b/challenge-1/README.md index 033560a9..b409a898 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -190,6 +190,10 @@ docker-compose up -d **Aseguro** tener Node.js (v18+) y estar ubicado en la carpeta del challenge. ```bash mv .env_sample .env + +Colocar esta clave en el .env +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 + npm install npm run build ``` From a9239b30b0fdffe5dd1a61a4780c64edac3ad416 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 11:57:50 -0500 Subject: [PATCH 14/18] Subiendo env_sample --- challenge-1/.env_sample | 2 +- challenge-1/README.md | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/challenge-1/.env_sample b/challenge-1/.env_sample index 6292bcac..44460c44 100644 --- a/challenge-1/.env_sample +++ b/challenge-1/.env_sample @@ -1,3 +1,3 @@ -BREVO_API_KEY=YOUR_BREVO_API_KEY_HERE_XKEYSIB... +BREVO_API_KEY=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 NOTIFY_TARGET_EMAIL=barfrank2020@gmail.com SENDER_EMAIL=barfrank2020@gmail.com diff --git a/challenge-1/README.md b/challenge-1/README.md index b409a898..033560a9 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -190,10 +190,6 @@ docker-compose up -d **Aseguro** tener Node.js (v18+) y estar ubicado en la carpeta del challenge. ```bash mv .env_sample .env - -Colocar esta clave en el .env -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 - npm install npm run build ``` From e9ffa5384284395bbe2c25766782458bc8fc44d4 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 12:28:00 -0500 Subject: [PATCH 15/18] Mejorando readme --- challenge-1/README.md | 27 ++++++++++++++++++ .../apps/consumers/src/notify.consumer.ts | 19 +++++++++--- challenge-1/assets/pago-ok.png | Bin 52207 -> 79190 bytes 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/challenge-1/README.md b/challenge-1/README.md index 033560a9..315c2f79 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -323,6 +323,21 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec SENT | cbe445b6-e866-4140-aeac-9a210a60cedb (1 row) ``` + + Validación en Cola settled: + ```bash + docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.settled.v1 --from-beginning --max-messages 10 + ``` + Respuesta: + ```json + { + "aggregateId":"cbe445b6-e866-4140-aeac-9a210a60cedb", + "eventId":"cbe445b6-e866-4140-aeac-9a210a60cedb", + "status":"SETTLED", + "amount":"500.00", + "currency":"USD" + } + ``` * **Aclaración de Solidez:** El relay es un **proceso independiente** (Worker), no un `setInterval` en la API. Si el relay falla entre la publicación y la actualización del estado en DB, el sistema simplemente reintentará el envío (garantía *at-least-once*), la cual es mitigada por la idempotencia del consumidor. --- @@ -428,6 +443,18 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec 28de18ea-7124-46a4-acde-d06625c71f0f | FAILED | 1500000.00 (1 row) ``` +* **Paso D (Validar DLT failed):** En la cola de kafka revisamos si está el fallido. + ```bash + docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.failed.v1 --from-beginning --max-messages 10 + ``` + Respuesta: + ```json + { + "aggregateId":"28de18ea-7124-46a4-acde-d06625c71f0f", + "eventId":"28de18ea-7124-46a4-acde-d06625c71f0f", + "reason":"Fraud check failed: amount too high." + } + ``` --- diff --git a/challenge-1/apps/consumers/src/notify.consumer.ts b/challenge-1/apps/consumers/src/notify.consumer.ts index ec13bb29..c238c43a 100644 --- a/challenge-1/apps/consumers/src/notify.consumer.ts +++ b/challenge-1/apps/consumers/src/notify.consumer.ts @@ -1,5 +1,6 @@ -import { Controller, Logger, Inject } from '@nestjs/common'; +import { Controller, Logger } from '@nestjs/common'; import { EventPattern, Payload } from '@nestjs/microservices'; +import { ConfigService } from '@nestjs/config'; import { ProcessedEventsRepository } from './processed-events.repository'; import * as fs from 'fs'; import * as path from 'path'; @@ -7,15 +8,25 @@ import * as path from 'path'; @Controller() export class NotifyConsumer { private readonly logger = new Logger(NotifyConsumer.name); - private readonly brevoApiKey = process.env.BREVO_API_KEY; - private readonly targetEmail = process.env.NOTIFY_TARGET_EMAIL || 'franklin.barrios@icloud.com'; - private readonly senderEmail = process.env.SENDER_EMAIL || 'bestfrank2020@gmail.com'; private readonly consumerName = 'NotifyConsumer'; constructor( private readonly processedRepo: ProcessedEventsRepository, + private readonly configService: ConfigService, ) {} + private get brevoApiKey(): string | undefined { + return this.configService.get('BREVO_API_KEY'); + } + + private get targetEmail(): string { + return this.configService.get('NOTIFY_TARGET_EMAIL') || 'franklin.barrios@icloud.com'; + } + + private get senderEmail(): string { + return this.configService.get('SENDER_EMAIL') || 'bestfrank2020@gmail.com'; + } + private getTemplate(templateName: string, data: any): string { const templatePath = path.join(process.cwd(), 'templates', `${templateName}.html`); diff --git a/challenge-1/assets/pago-ok.png b/challenge-1/assets/pago-ok.png index 8fbb561ebe53d83c55be2aefde195ea32b1783a1..ccbc6932e2052b88b2a4cd503c4ae9485f5a5414 100644 GIT binary patch literal 79190 zcmeFZXH-*L+bGK3*cI8zMic~WfP#R6fYgX62vQUXNC{EtgczloK!|P&7LX<&U8N_G zC=fzOv(iG58c86r&;vvvA(9Ys<8JT!-Eqgbf6h4P&&e2&HCb~#bFQbC`EdW7tAoNO z)lG78ate-TPPxm;t%b?S{W`y4o$N2YpU2{4U%y1VJDilmcJH2+4c3I(y4cFey-eG@ za%rt>yz%N8pJ+L`t#5z+{L%`m3X+qPmOGxZ^}HT1OWFA3@n9Ym;HRB6+SC$xEN_i* zyQXoTt5mTT#!Xk6ela+<;h668gH0Fp z3N{~u)SGg}G`2@9x+k8x2t)xvse|t&{tP6gaE3|RrDNts6PTUcu=na1l^>>+C#svEXoKo&VitE#lE*<-} znro_H(uaGPL}La|4Y=IxhJ3?mEsE5&iY#IuWbhdWjta8MSeL$wrw3wF4nvwVou{v* z?7m#$k=)%ExX{ry`p(_V)AhJBsynCs%H)^3aJzExrD1V6!_^{IO&3=akNxm`z^UZz z)`zqmVs75lsh)ec3Xgp__d)XV(*$DQL>7)z5 zd6Ssg5j*WxSfNGiTi5irTe%VQ0EFT9RstC2Z*#ueQgmd}#H9R6A3Un_8KPiol+Pz_ z#$ipp%H2DtCFfKlMD&f_5MIp0Z}4E`N{+xIq2p-sM{aC-x5~6wjTS)fJ4n|l)^X4r z@(bZD%#&WaY8S`LUXIqPZb3htL~Ypjf$<#Y2v+->gT~IjZ)fGt#PwmDTWH6##_h(d;vCw~ja@paT3+Gc z5YE72oY9QvR8Im#$H8RruE`KT{m~rLk46r~8VNB>mey6fRL}TGow-L-djli5 zLCbFr_2DoNMjrK*YU}n^dU`u1caN4iq-ku^KAhrTyF8%qxD@j!-GD9O@4T=-kC%9B zpfJA56L0B-a0@s{=SBoOr|s{Io)I`@KC8}p)*3X{f8I_V?q}xtsJdeVYdDr3{P}TG z-)XJD-1YKb8lD_}ywRG%cot*XVU;@*zRT7e*K^5z5StY8|IoAhR*J8RNVIaJ9t5@W;(BE63i|BVCA{B>%0o=*;~Fs`^=#DH-{9x~wY4-;Pb8 zb*qaTF+OnCx#)m-YA6lEp{+(ekRe2+y`k2H(8#b{%5Sf`=rbX)u0uOn1S~lr4t@0Z zyjUD{!RunNUVj{sXIHdE9Gp-+^YOIEHDC{YCL%bpr?e~9Qt|t{v4O=h$=;&z&WGfZ zyp5Z;uL)YB3PM>VT=gVA*UqBkkO~}tQZ#6@Av9lFpf3UKKXxa@=fS0}#~Yl`%~l8X z>f#5ENUWA^6Og>(ZgPC!T!NW*T%JyYm6*A@2U&vh_8J;IgIcuNy%))8OH|}mDrOen zq^)n&@X`W0C}fnAyqvn87Wef_6Z*bhSgfC;VaI~l50`W!Ln(Un9j+OxI;$tp=+!-n zHDRlh;e#{4qsu;rrXc(OQgi8vw(LwRM;(|)r6&*Ng5P#QpITyC2&Zf{+5SS?y#bnj zXi&Xubep8iAbvP%7sAtW+W&zWrotD^6r|@L=&#>r_ZcHW`o9396Ta$Z~*5$uL(6G5&ngNVDgY({g8|*$4^zkS# zDr~a5@6aCD*EG&Sd@iPndtg+wlwO(=lgbWReo1V z!DF0khaS5}<%NI~N(Wr5+>%&<`HN)Z9t;wwxZlUGu*H|?&%zXSKc=dvYXO0S+u(kH z?`y)rgFbf;KcH4L+X8ZzfTLqC^<5Yso7u^})t$=u)5YGSFThS>yLtd?TRYMJu7ph4 zo#l{d>df0uvka~}9F3FFIh;eS-{OPrF%h!`h1!0Fyb|~$pi29qNL8)kY>ARv#xq_s zuGUo~Eu(mX_=#TM*7bdBDr8bAG4PA07Zwv%JY^8h>VA*tI|9N=Mh_VcSj87iN39Z= zXD45`^KNz3Ddw1L>{;6%^yRHm&>OoBPxv@R>*(J6PLC*o6tp+Zur}M)o2`eZKPMpT zdT?b7kB7nEjV4VENA+?!-fEPZ+y8?%oJt1_3-?IsQlGQ!AVEYw|Hzsw<{`X0ql(sI zVUH-_3bGC@IVmg#Il~fI%t-lOm(s&HbtNK-f(ug(`g}WS*xm!S%eUVDvUhvMORQJL zz>s6$*Qn}UOx8$6we9f1SQESYo|nn|f*0q$&`ufleIm0pB-(8!C!Ho%D-U;4AEl6i z-x*D0`@0hXp;OlR`!?@4q}uLqec4l9;{0K~<8^5P3Kgj;(-RMzr;#-c5QZbV)j8wP zFfUb%d{CD3Y!N|j;`mKkZ=}KIxzl?kEd%x(`7C>%;soiO@MXY`7Iwk!I3m@nC1s5sy5KrN7le;!=Jeup=G?4uI+phU5M=(EuKYqhR5-8Bn2kW$J#xNP=Ip#ZjWAb zbL!=bm!xlsG%~QBb9?Q1N5AOe2AqYLJuZc|WRd+f znV;#s@Uc1NT-TW)e^qW-$c2(f`Gykb3!gR$tg10xE7l$NT)f#K2WIwCeuXHiYUa+* z2|_QOo}Y|E^enjpt@V8n%}2Y2?aEsl%z~zR=fJThWgu}tzTw|(S{-EbEsYFUvs)soEW+oZ33E&zizyA7fzs}c?m9}%Q>uT&^;MsZ?UxWNz3xt+Gh&Sz>I32) z#{iFJP)Z&Rn*4IJ%5Cysc)TZ`|A7@VK)EG?EQqo#b|GrmZaUNMqjm_-_@fD7tXPei zh9hcajk&9;B&5v}e)nF=WbmmXqBL$W6TaSfp%D^`_j!0RppwFQ1Pc0t61b>Qy{929 zu;lC#vWs029g7#PR>DyuhjWjDEFE<~Dj%>#F-HbXjnIjl(Mvka<+;k>XBq+{;I zF%u)Lp63oQVJF^NO@~q)*a@uaK@?%dGQ;06uv5%%McgjqzDcS; znjiV0(UldDd>lG0+SvEr-%O8M=`6Fbf|sb>VO7(Y0%Q&(C^d1KNxbC~e-6~&5EK`H zvnxX*9z@oH51M%FzE-TGu!txykssAy&D?)#vFmzFcFe%Kh{mDsH?#9a9`+yGo ztoV9wbjbi{Ywbcww554m8>wBGrL$-N7#Kle@B8+9pzF39<)=KEt66AlBn*SlC;(ql zM>?51hs`K%-g+^{YYmAoloL7m>lk!&k9qUV2j_mq22Tf>L+yAyagvIJ7mR{f?JFa( zZS#h6`t=0~Hp8u08$x|JUnAkl1n=Q6Eb(2iktO76YN3tj3fwFPrMn07rR%f5>V#uS zDW(j~3Uo>BYra(R%P7`E#hl=vSUum@UbAnihBNu8=(bW8AvKMDNcX%>@_`77v(@Wt zeBNSjykVw3Z>YmlvW)XND0p2Wwb;dv)-yByV}%EYR6@u_TV3{2t)wq=poR`hpx<{?Oc3$8*fi{B)aa%!OQ7-I zSg+sA+W52?1J>5Q<*|oGQZpCfw>T^B;vP_I+Wa0HAeFVcVVa9Cw!7cvnoSUzwhuVq ztbpq%O&4;=$9xTJCY`5~CVZj>1EYiQCt1f0>lvYWVR@t)uX$n(VWf}b>k6pH#LzB1 zIPBkeDqvSMB_*G5Du-%! z5HvG4N%tA;PM^=+k~zut-FMdNsGqRguX|Y^j{N1H=*|6tt_R!q{x-XD*Q`&F!hxa$k!EZXrpUvSDua{u#;O(xX0XpyE-C zBLoptaw|Gp7QP4{Ulp51ms}(IF?buo8P9wxnp8rB&oz1tqbKtiYRGOP7|*k6Ayd=I zCeNA3G*xcUQ>ufPXTn0Iq%-DsALv zcBOio_!jE{`)!zqDmB8!?0~=rTBZCwBLU|75h2nfZ?+rZJbgsJA97h@MQeFA*vTSg( z{YlOI<>i?X#_~mDiHTI#ybMuS6Fu)1Kfd}ZQ88ZyWqK4&N_?_HmhA20W`9FEGZ>ea zs59QiCx?=*UubpBL*3{_#cag-AFsoaFI`bdC&bI!nd5TU9G zILjmeI@+cx{DOs&xCBpAhj|EmLjFVNdT#7vV@;QUu1_twgjSG+r$*s%TkRB{;UH?4 zF8*v~d+aFe@ve%S;+zyNJj3}qZ@Dd42}eF(ak!qlJz~7L-!U@2LPh!I0vp15E?A&z!Nn=E+h|1tWH!+rD$ zfVL7C!N?-SF1(o=9ZO+_wCz)-Al}*px>v%O}!j9xw=5y3s3!%Pv+(9AcHZ~d*ox50;yI;63yfBFQ1SI&Sjxar<_YJdn zGiVIFL>$kA*L=9byd$x2B)LjXp$;+00ea<1+cOD8qO~@|=tl4UguJC#hcZYpm&kKF zsFg!_)>^GuirMv?0Eui{X(omjnjY(T>`%8`4n5SL>GGX@Oqf5q6V5Wx0hWFrgCbM; z^HH~VTOJW(`1X53RKMz03M_Vg_gCixV|uEcO0sOul^!lUr(cvdwbvs`+pE0Zsno#e zQZTU+ZGM3q;yyaK8tqx~$XRv+ddQ1yMg72+`hG+JO zndBHecaK9%bq=}F3{0tTZglQ8Lnzg+2c^8%P0Ao+4WJu zyh==C6-9;xF>A!eXFrT&(dA?2xX_sN%(=+OUQ`qn(*T4NG@nK8C7u&$252Pg|USoE&EpDN+-bQJ%$8~gJ++akB(pXy{FDHJ^jQY}bU7q3^dd`|d;G|8-2eb*#Av-1^=IjqHQTU?3DnE-RF#7&(sgEjx4^NL)egEz;?#KKv zI!mRcx|@Zft!!#4SG)kf>%%Mwhiu`N^A_fq)`NK%jAB5uck}A}@6$<3K6m?Ft8=zx zt#5Dlw$XjKAG2+?c@31kHQkqV<m3v;c1!r!H^lBV(o6dkZ#7zzOpe03huFs=P3T6Y}gKwS2 zmB1-`Uvsq&z;5AQuUI54LBhcV@#-Y0Sh)Jm-5svhlp0dJzp^|)JGNh-8V9^3F^Lt| z=N#@iU2%+(tPk(HG9k#cTWO3l80JO)ct{MQ_T(vQ8vg-UGVVWh4n2`MOk`drdySL<|1wUmBu>u(a{bMzNACxlRf&umCP+ylit3l+DB=y2<@KAJ2`b@jaT)=)JW%2@~ zJ4H9A#5*O7)FtJ$O*RgfyEU>kWFN#^m)i7)bjm~!Pd<2h>2V8zF;7ZrgtE zVtqSyTOxEinlj#_3j>qAS4Tpfyw)+=-xW{N+sr09QhbK-8~Sm%#v&VD`{i+cI3MjX zUQ>&y22K5Y_byz%~keRvfn+tDu8ux8$4PJbzP zX>`pvl-*kAC`8yTn0{Q>MfIwOnay!cX>VX0sTE^072vulgW!>$MJPJpdAQrkK4h)^ zb*+=7&NCsXp#?GlJ9ecV5|;&i7q@ZFrAl*uYkq6JQQ7$!t~@KNXmE3$bw|KMtH&*f z@OzSjLGK{z>q%a?{++NmxAw$ujD}H?u_j`NlGRqC;wi`gX(3aYX1~y##ZLBeOm1_M z&uF2k=kyB zn4FwKws(9UiQWVXMHh0Y6i)z6Pe@j)C@}_uQ1fSlXXS@<=zHG>71LhWL>43i9%P2z( z-=Fk9>^&1qDM>$#CC|YtJWEi|{0C(|szt)R&LMFd*5$%N-;w3T@X2-{#qe=-55Uf# z$wAYwe(BTLLu`(op@m(yI$ED;Zp0t)C~p=HE->odGBCxyVg@XkFVrIKR)gh9?@iaMG1;nqNPS;+2p|T{E&Cz;1pesuD2!p- z=``3f?rt0$z_%E-F3(fk_fY#VEK3t}DIm3z9`NJ`Ld7*>bUMtzmRySNEa7vSts~D8IgDOWcKo)_})~c%zG8wdgIA9bxv3M^<>?pzC-TW&>IyUWcv6A^j3Fk{b#WS z^pn%5vU!?-VH%X_U99>&wrm(>sUP$8V!q8qgEvni%xlnDo@vF0>x)p%ZQ>tV*@V2& z#@>RDcqODUl-1H&o{%ugEdUYH=~l#*^}wjM;QIRKI4{x4Q>RCKoHqlUBwMq7C@q`Q z$N(yE$>NA~xCvW28mWB^j!_gS$uf38jm4#RLvB{KOm6bvuzJ0ya3A-#x}QmA80wzC zX?$*EEj=kcPgsv+UjjybB$fs*%*J=26&9b|q|_~nb{oto_9}1D3x0DyZ%~Ol!hJG< zak`LA5V23k_vAmB^wCnWE(uqfd{>+F!S@TnoFv+#lPljYgQ!;z-7Xv(>dKg=8>4Vh zno*6W%_l#9ucvCwSt`0FjYO_gMC{|yv|yByFLk?P7ltfjZ_*bN^{=8t&w^rC1yKye zk>vINxPSBjeV8CJ4i#6BE(XrDG;i#45&HVR_G%z^tsqFN2+20OD+rv8 zO``z{d9C?x2e4F1)`){QK*wVWpOvDKDfLQ&V>X|ZOofoe6sCnY#*;p zH=F@~N``1yE-ogegxgeP69h&R1fYBDY}hrxdi`Si>S=gbz;eD@vFQ;1u^q<3NziaT zknrh1jX|66M|lomf=5puuIsBgiOprMGAp3D%P$DCAbrgW&6yBf?((XFr7bGy`SXEU ze(lV`P@5mv8V*`2412)0a%V*Hv)2yiM7Z>5o&f?wr!5nLC*%d4fgylnS8V%mW35V= zgude-#Oeu6-oCt*dBiXpP%kTlWlY$O`ycf+RC4-vu&Aj(=Fk z8}*#7hHQA$_F!QAZKuX)oP+-XMc3lp*&X;;7t4Z4e*+Hi7i+x+n|(_A!xV|mA$L?i z47bWwk*_-lxu?d}?(hMG83J_x`P)9oGVUw9#$0qaGI;1gZ5{q)z{D2I-h1O&njkf$ zH%U3j7l*a2^wuJw|H;r1$R=F_&-w;gNLDrXb_IB^@J^&@^;j(%1%*wIye3I!99^^U z=Vw}Cx*VxnipsdRzZt&NY4=MdSu&zLdCYrjWPxp#P;hq)D!2{rb5kpI6slbx6=b1H zan&B)c}L!Z3ep`HWzmg-JIk-6GJrO{%BSwbNvqiImd}XzjSlUv@*Vs17m9!IXyWU` zlOId%wXXvpBDVc}rHA(}kI7jwUYPU6q=#Fsc_q7nVVd0VA4*I0bRRW`G}bKg$S+-6Wc9Bxc+Bxe963{{rj|~az_xT8 zN+zWZ+di7JG+THQtK^pbHuW%p$7wf0^zN7>nzhN2X8F%~ql;dT+yG!Eh8!E<-7mHkrvsy+_)^H(i@7Qo7UR#aSm=7AU%c?8S=-E;JI%>6wrSi>N?NR;Tka2b}h zs=Y*%MWlV!lNVIgzAy;9z}d|=PnAVKm`q=wc8P;T$ppf56=5X5uYI1Zhc?_{cLfyAj9hqCTE zr3J<+*g8~W9Y@&zbrRvs;{S3Z{NA+ z_n!sa{r}IOb@)HO11D{mTKqjS*w83Cqb&<}-}$;@5Wi-N61cQ1(?VE?*kwk z99nH9F)be@R ziG9Pw=*k)pX{hsZU3kB?4?ZHBNLlqcR5{DUpKXjB{sMO1aOjAFU%Xmh5WR7jog>->%Q4Z*$?S$8T*4@-T1}a=f^|=tYbVEY+y)R zsY4BB2EG1cZB)Bf?oMp;j4pg4FEnUzqHA@q!zeX1HLAy2I94ouYI|#pB4lTclH%z< zzJDzTk>VCs7JI~IXR~k0ukT1htpvg+i{i&rXg}^0UjK4m3kBvU_;w0oxkI%Rp+Rlw zd+RQ}T_>e?*_Ss`0at8Re+2F_4oR^R40ueeny?z7StjgreNN4o z&1RPH{j_ocb$bUT|4L-`lRw65S7B2s?E9NP<~+x!_=;#f;Kc8zr$0QqWwr9{t^L8G zIA-_)N-9LvYKM3Zp~qG}E20i2YbG^$0)g#ETXzTgR*rAibN9xkcohP#N@aJ`QLB@v z98JlTL*L6lheh9cnlz~zhs%8#*t$dCe=ZPv;pNF<CUDd&C zv>bJ=k<}>~8W?yYbUR&3MTr)l@yeYRmKP`0hzJ?QR9{y=Um{KxX9>6rx;|m#@*3Q8 z)DZm`jw(WD%pf?LNPdR%lOwO6y2marjQ3T#X%cx#91dER<#Hi{ZqKJtB}VuzH|bGa{n!K?H#0`v<* z=N}f=)n7~ZgSLyln7pg?PFUj=JdyLdCa|W@>lR0Vx3{X9c3RQevvkymRk+1Rmh(q4J!o;Gv5a;<7$rC< zgfBjd;D;?T`Jwijc04c)mj)THrSe3Q5>u$J>&i3(7&NonBBlzCRaHha`GY_OuTH9X zo@5l<@jHCFJhw9eQYx$l=!g{M6s`H`kt0p#HQ;00`YQ%Q8dg)Lp*aSi2sTVFv*h}h zjf;s;PYuZ8h>d0{HB=<&t2#KuYaNZ}Km#xV!s*Hq)1Dq17&4M|U>*%Xs$#9AG%c`RbaqaukejB&G}< zKuUo&+@6Lc5Db%6${;OI6m<2JiVFpJt8cI5CqiveIRc1C=m@S4sK7b&h>{>IFe-_E zlusF=6^M|7!gI9bRcTjPcn!Jehtq`kd0ySq^GPuhU7v=_m9rySMyuue_OnZgFKpQX z8R7AOC8ifKc1D}{eL6MDtt%uNfEePA8pV2C5xia*w;Wp$GYY(T#xT>CvYKK|6cn>8 zicNz(4p4-)wfkk)FkG1z=NIS03xfI^r&59J)h|PXM*KTnFI!__5JNNlua#yU4<8Z= z#Hjf$d-KpvggI|jAbZWZ46*jVLSVACou$Zle+Sd^VwzOOvGW^iDDZ0AhVnTKu#qBV za;|+P<5_?Fdn|A9(&o)qb+@EhEu87!H`iO5oRO*PEfs*JK#_nOdafGN*JT)puLa+jPXune6?_3A%NB{4`{Mf$jm`$<8L|j?4yrY=y{VcD|YEH8fcU{eTh^ zP+7&+392_mqr4

DEm5t>+$ejO5!}#nj&iywDF!vp?&et=+@mqR$P`8zkIDAK(de zV*eC!>g!a*FA{du!GS5RcY7t+dn5YSZfcJg8+{zL^1ZbS3gsJ79*K9VQc|fpUbiDW z8zbtyg3)>}YcCFp-JhWqK-uNGxdIyjwE+p?F*^Jt`PmrN1e)l$?mj`N^Xc+p0lX@5 zfB`AVwNX({6Xkn8CvkW3xw<6+YlYDvdzuj2Fm(G*mZpUY*$KEjggOO=G!PXEkf_<0 zt(`vas{=Rz4jeTJvA=bIg+2p(R?E8;;9%H4Sp(2(RH#YA0Kg*V2sb>MDML>394A&n z{6OmwCDxqt`i{8_0vAxFBIBpH^CguXkuuP@hWoW?wLE0?fh%X&Sa#Fdq`3YFI3HhY z6tT2pnd9em7CIWY-&U}Ytw0*Pt7Fyy0N0%~$oqIPh^L$unXbh1(_74e<|@sDAYMnw zjgiSKKkfpJn&TcigFc3>u8gg;w0#8}i^s%}5#?L1hh*_lh|(4MxZZfPj+yHDgpsHC zzOS#>MVFvd$zH2QS189()+uDk#CyH5lx^IgA2nSI{i~SH*v7fvrY&MXV~r}QupWbt#*t>WRmmFznAM=SKp%RXuE zqhflrqCC^yFK|@!O>>K4zHW+Em&O^0_J)Wq=(pcevzm3-_SL*WkCRI%X zyj)4Xq&XXnu!bt==>nk*APmk*jGh`OQII&uD~}^MqMafud`3h8(X{anrgyR`EtJD8 zW1-&-G9uSDxyY0a82>rug)50)gFTi~ zV(}x=FFSS#zwB84iiC{!-B-w1f)X;gQ7(SvqE*2}O4Qq1zUfuY(SeVfn!WF!fy9mThIApP+ZS&TP#d`jb@zHgQZ!{AD1}NC^1c^-EZ}L(mGgm#&S1Y(f3nEy)r_oM6sd_Mh=B9?DHN6v+`Y4L;>g(Mu`clcu?q9@KP5jNQ&%dAk%8dcD$3H*N6COqYdcW6>;^wn zf>70bY$4kmo-p$w)_fbLjz4XtI^I({L>FQ&95Qq1p2f~t1QliAa`Jel_$rf11#sw) z(S`7ccy>1&M%s;BjM!yiydS0v8hkPAQ}l^P9-OE#y~V+Cf`|4_&Ba3Bpx7^*R!ekX zU<8U3)7%&!i~hTh-J!*{Z~C{1Af2*LrvFSYBim=5r!u>9^;0+cY09c)Zm@@=?9-YU zt?%Qt9eLoDFDmv`Rbd{x!ex_P@f5V!4)|yoJkGG6MM)T_JW!49Uf>FI-81oV>@j@r z-KqyZ$`QKJ4bX_-noWJ2l?k(nYxp~u%yyLm#|6`A^W~nmvYa*(s6kuk(92NVv#8mh zY6!FAWl-&r>L>{p+=Z-Ov6?K5?z9;>IbPd%4}YjO^Q=}r)vysX<3Pg-F@4Sj*&=cb zt(vMR3gG(0znr07QcjU=&y}L73}cRT>A>bB(+Q;sF?e%ykB?tT^N_7tqplHNQq6ns zVm2Cd;Hk`0OlttvFo1ijjDRRDaKW1gPNyY#=c>cBUQ**lOumt%K2_{5Gr5t1Sg!EQ zX{<6<*8;fOthaS`uJ*=%MyxKN5eO(T<_n=vQ& zU6RCQ#GJmvwg;0Maf0SJH{2)@lRHf5SstrxybEOKI5C+`3tnqy-=xL0U6W^Y@a6;d z7pTS;ghZA&s-+BgeiyxE3uNbD0(0AHJxq5I(L_}Dj>TWXgk2vmkIm$}kjk$mKT&V! zXFuxjgU&|W^45gRO^hx)`~}m6H0;x$*Wx8%L_ zc|?Tb$@t5a;h(w@X7#Kkk&bE0Snd1_@MR4wbhM)=>LXsz_HXVd;k0`@OQdk^^^8$e zMO&<5WM+wf`baZ=Di*6s>K$pJX{sPQFMp-`DW@`LJvUar`H)Rew~(DFyd;1y+XlfB zFQ2kZJcNNIX8)>N8EHI-EKDZ@UsupXFz;!xDCk{NHJA^>9G6~UbPiYe5y&!3k3 z_@iFy{Ko2@_f7+ey{!UGzaHi{&%HGe70=(AaVEbbOA1J??tJUB;>69VQshF`1VuQG zr*zUl(P_b@(kIV2rRPop97LheQ7=5yW}Hz)*zj9N3{HbLFfF_I@Nl zU?+3i9^QXoj!YR!Prf~?KU@bT30#0s4VWdC>FUJfEZ4`DUK;k z{j99;ojdgvUD)_NetAY9h|?dv@A^;cQ$u-KCc%xSk&7|Vy^K?>w_WAFnHZnjhLUv> z2#)$$CI#a0rKz5y85n)ws4{a$T_tD#$qmCFoBRxR(gG|3@a`3~{=|p*|MYBC56Ivt z_N3B*DxjNB6C%@Qh^HRSWE{RKfFOzrbWB?2-#Td4<4d9EM?uxKBi7qMU%$=P_jDv{ zHhxnYUb?u%PdK$+4w8Km0yOHwa{NPL7M{q`Rjl0DSM zE|dX(bM_iB|J|!?{Xj~ZCq*q)}}Ql<}F7Ho|;s@udUM=(*EZ~e|ivSh}zj? zaI^}n{HE*kzDJpO!_9Xi=$$wjC?wmGHnP*kf&YSeJm zI&&`8Bxv$yQc8U({?^-iSQyEnf^rV~ z{LD-KC!fy{N7YtkML7LmQMy2oi?J*+~K;Yc4M=&<*Lb6lhTE zBlWtdai{$tv&fHoj6*upp{&OC=2&iLu%1^ zNJuAg28n9wMh)=K!^NL&Ddq!UBTcI zJq)k#d3XPZxSMKa5KOtI^G5rGOUaD3JMw@WP5{31>g!R>0y-apQ2%cn?Opb8|JNM+ zxmek;|K&ZX6?J2CL+bzOgH`@zVaLCtr(0~|Qxpq9o{B@&#xoZPJA z58igU6I=eo@hf&q5Wq}r_hvA&>R*7f@c+4! zJJNN(p1AWDS62P5DxWLk+*yThoD*_Y=l=I_=Zy!!!il*$$XC>e~Xak?<7-bt~ysWxW7(e;rv`{-PIAlg)cX}gX1{fTkuG5hBij+;^UE-qa2Fv79PCnh+}=h$SPIz0YO!ov5?wBY_s zg}P`^=`8zpn@l>Zg8qK-4->PPmyz3DQN^r>xk{O)7AtwrEnTJh>u7A>Re)7p=I`}ERi3L^}icr7dda25xz z9i5jjf9w__q2w*AB6*`RHN}>lqSTE>`~sz*k7ha(JK6JlcP;m%waF&~4)u5AOpM|s zevshS{MrfYZyXgFLc&;oYnZ1l^^muw!{1gBd4Q;ADPqCbD3+OhTbEcdyFhVgex8s2 zHB40}u-bBuExY+w?{TQ=O-$cV2P?79>rU-M!z-YhT)JOwhIHkH)hc%~=<}!evP-=d z^_O3xP_kv7&i$>eZkXOTbs;2?eb@ z_H2>DNX`a-WrD$-GydR_yKAt9FwlK5|GtU4*|nFE%NMiSCVq&2sz9jX-$ZRNkApI` zxg3z5;pkHSmYL&TB3^t6pJQg{`YGfZi$Hy)e)ZM2Pn+(@;DW!*h}N7vv}XQAT>JL; z5gK4`w75Grb~B?5n_6@JCuX?+V&>TwuXxswKTt0|Zf8+eqk-;KJAHrePZLAhV{K6z-VUXiwLc_KbmNmkA8#YvMJ{gk2eX;lS61XZjpqE~ktfft#j?nFh>|b) zSHbEpPM8`F@2S&T4UpNO6U+aCdyQ3KmCfIO9~Iwvv`I{viI93+d!%>f>JtM8%^XEt*SZhgGG;k>GlhrKJA>uFip>6?q*- zk~{2XAy~+tZMhvjrW_#V&edThuTYD0}!`?y+sJwGj`h{p{kZ*|Vj z`+-Mx9JosBCBH(hFnZe2L_rz(FF?h6@b%4shoVpUv(HYN2X&T0(x@2)S{+noxR#)1{ zL~EcNs!2q~>;?L~%t5))_?L;2lk3R;sW)d%_mAI2u5TBBRd;4J>MJ*0*=%;;YP4oh z+^4I=331?9D8puNNkXi>b9cpOO%B5L5qbI0v{-U&8=U1YZ!ZFh z*3~;kqO7$?rwueL*jRCg+rgUE zz4Ls{yqVF$kV?~j>GCBX3wYk_1+;b0KsU+0#Cjqla>I`y(C?tTkL!_R470QH=+QKL5UfeVcT3jU|>)HYtNZ31SnczSl_ z+>J_OJnrtjr0Y3}+>Fq%S+LC>ouXssEglu>CXWgl3a^cxRgk(#p zNMtG7SX#9($TEwy6=4u%nR_f*MjA#Dvj47I%c*ld-{<>%e$VsgbN=Xc$~1G&eP7r6 zdN0>~H+_1xm7mciVV*A1Kf$j^2x|>W?*w=|8l*MGYP$ES3s$-Te1EI_KJc$&;Jya> zyPXU|YT>=wRlF;qh^2FfLl32Ag19WMCQe5T-=LHtcX?T=blfa*Sd$Z7-aWXg_?US9 ztnaw2=KbL_eSZc#n!Mql zW)bE<2gfi|=9KM+=|r^vvteNWHz{9P;&112UdGXU|LSnzHvYwSEmhYK@Z-k3_NRq8 zzWQCgq5BI@sLE&8wHO(KPkn!$Hq>J`B67cS)#;b#vBdV&jk6vjUG>AIWv`^V?pL;J zQgA)GM4!J16OD%%+>X~!aV*-x_Ea()gH?yap$&7z&l3A4GB)5;hP)!I3oVS;98tQQ z&8^57+U$1yWu;wx&6jUXA8j>j8NBFB`m7$)T{OE^dDV`?$_0*j>~Q_3n^H`|YQXwDv(Jmw029PwiJb zHR;bVX~QaLZ+f6KnsdKvL8D>DWvr&}JdUB8?XkDlyrAQ1DrF&%h+(@RuMaM7tMhLEB zN{aA;LEI&{u*}_cKF<$biWide(9Jd@=j*Qdd_8FfS=cRMq2p*caDP?F`duSF`bwI9 z8P0D40^h70uX-(1VL|ZQr!&o2lAyjgrAT|2E&z1p_K@Y{p~mUux%<>kMa_NOk{=%@ z<%3%sgm|a=lIAtVQFW$A3oUBKTmFE%0?nC7!q9Wy)L2EWh}fFA-O;rrSc92QlvUlO zS%LaW+HM(uVeFP`6^vxb$VVo%oW>3Gsp&%1p33Ltuh!azS0Q&r7h850te`Cq3Pahx z6YdA9nMBj>EvLg!t+GlDm~2ys3kam2K6C8R6s6S{8cdj~%bliw9v?MkWV!@fHw6T< z>jLghJt{v*dSPx+X?v~6Hlpa0$@pdO&Q8nmYe;Hzz`(AmwF|?cM`VMzyr=mPex*Ly ziK?GG%nz^u4<%|nalZh2rR0fNqmH&yPy9)hkGr627`{Zu%J$OX^J_k{he>v`3f-ld zzWOZfnT)B1^Q(vYE~<7v>8q`Bv<(k5PQbT*`0FCFY@Hks-hI5OzXF1|nR`F>;H3nu z(bKvEnfFZ)+lN&meN9b&4JyBUIglboKjiNkzsBR!o!3H2iqW>VALH3yD6dJAK{DY* zZ%6SS^O}h5V!8Ui&*2jF2QHoH8Bn(^+MhWywRVepp~C#kOpEugov-^%K6OlNR9IO# zncH1X(~;BgbG#}{6BDJ)Ut&GWSG{l1zYa!`m^Hy3FzT?0S?_){NFthU*};jSGX>a+ zC8}ltXP^{+QfiH)!fjO_gtLi)0jtx*LPi zT}70puI(KPzn`LBKiaUwp+Y0&jOENo%Kf{~=?_VD!!Vlw?MiZ8?PdW0Ivi8t1|yQC z9j9jW`XF&kFxBLFtxCOposFNdEceRMqd# zNe_zhuip;h2A)gktim1YXtcRF*8!$KIv}(Hscl2wdN{~_R!2YLy@tu|4@2iZBf2G) z@6x6({bAxeJYyh3pVt&^f!-KdDC6$$!(GBwleD|^k7jz6VIGe;6smyq7T>xGwJ2td1UUYT~`a z{LI~j+nxr*Cn*05A~K7LJ9GK0c6B%)G>kA^r=-YpKJT~bx*TFeBu>c1>J9+1?dpxs zg?x?EMp9&|IDWF}Vw4->ciLm!%eQaz_Q#Yy@zi}$ow@f<>8A1Zs{d>fWg-sOF;P$5 z6Xe@9b3ssJAT^5W9pIaH^-G@tsaB}$6&{|3H6}Ss-|jhcI)U`b%;(G9honi3U0BMV zt;d4lWimO(P9*m?Q}=uEn(doQJTGq!ATXBlzMNz4?O0|lL;4DOVn0A{6Y;*!5cS}E z!VcD^QPQD~4_EkaEd_`s`b$>GNpm%-F*2wCROaCmnSZ2eos} z9E9Q(uBFZt`E8}ORWu*f@~$eIV5&?6O5VVgs#p`WkHxb`2DaoJo04vMP2W$&vy@C7 z{bkeJY!tM-`(tlpQDV2uPRF-gK-ib#FIoWv{u3Iv42>4Fka~KFVHL=U`I*Y@4U5?1 z671o!*%<+!FP|T(d{z+ptJHt+2Cf8qplqG0iA~Xn`jKs110QbaSa<#w;;RokxptGB zwL{ifEu>*RgYFwom)K3luFdfo5o5gSPQ6w6;CQWat*!IKZ@GT+G=_e6*gYxsPiShAe^69BrAmu6>nK=p z=pH^*xy?R%o`wRURL4+$EM6+T?TDhFq}%o0%p{D)+UMRd&yEuWj>+Rieu9VU(UNO zbE6MfzdRG8*(qU0Z(&zA^YRBfgflSIrdrk07Py+IQ*8$7cCodL``7Ef?8kK{3|sc# zUEzF|>Ks@%Fmv_lm(RNL(~S~2z`gdxqGfFvxs=X~M9W1WR6{qIBf&2kd2RwvH{Ideu^$JVW$X&1T2OSs1w(xes3d;9qYn-w}l zsQJ-fv1i^2FX>5RMp ziu;>O8u~Me38iLS>R`}VMFx)JU@703wsA4x8bNTK0Z%3isYU4^P{o<^7RM8i*Uj+7^x=&+W`d`6>=HDkXdhx;j20+j6*c zCzaSLm8JVJf}K69o#v_a{&H7${ySpAX#WTA##b+N&0~FqBox9@Y?2rQOC&4nWaPn= zYjx}%AYXg)ipoqd8VpI@E9Fxa`44>2f2QCFsipUJCslUdn5p+G36WJMU1bAlQd%DZ*G1{r7F1>IqtANB z0KO(0JpfwhBeSZKFYrvgHPzn#PSNRhF6nv6h3*Mu!Rwa`cE_r>w9<*@XDxV>ulZEo zU9+evALg3h@#2hRRjh3ncYZMtDYLHH?{Ld#GE|8tX>6>l;t{Pe5&3XZP}}c3o7C|q zW2EDq%7@--i9&`5os?U>wrB@oa-t%s$UGXD+`lMa6s@Tyx=P14%zCJgd}4@tI4GU{ zh7gkB=aJu{UFiH)jM0O8ZpIyDL6OfFS(Q+Au!L}!ab%s2=cDb71DY~E8d+_datHn1 zRv;y|CA-o-CnZcidF=CCtYToTQKf2J&2>RZN3RYYpHVf&xT3+;B7f&PE@$*?Yl23p zG%dhCe*B{fQsnPb$5ol3SyW!-+Qg2f+A1NQrM$}$_N=%0Djgl~NauFR7tjAE zGpIy*Gn3`w0!AHVh^BIaN0(OxX?@7)h@I0fG9n^ z{fMHsU*KIco~D798c*%^=-b!CO3%q<*CzwiY}$OL{5`Z~h?kYGU$#h=_S_$rII{R` zi^rj+#Ik`rR~KeipXZ2<(QM~lhWqT(9H*gZ_JBrK>n6$4lFI%U>ib}TCbR@*vL`Qm zN{e!B+<0b)`fq9D-ZSuW_RPsw{F#-AV`jV@IS11`-qjvkVq1J@BA{no?w!WUHv>2? z<5pGEo;2dJ*o|@3YD1O?ofYfP8A=!$@+Za%$u@8|adn$Fq_3jHlwHCzsv2RINR|}T zXXw@y)6X6;&sx zpUErsADE$eaF-A}ne{xv z+6|Og$sF~zv&7IlEt_QNaomNmt-}}G>jP)27sj^^jT~2@jDq5|iXF{QkP>9C z%JdVMn+2DCNUmsEB5w03U2k%c*DQ{~q1~+))W9uXoG7)SOE2 zsoLHWb=3dnc}v~q{x-?*8257Rjmn=>6|bcZ7Zs`W3$_$wzRoZ?)BV}8yDV#IEK;hf z&zqXrF#Nmy^q6ZjRfo3bCI-1h>I%4^+UYeb#n7D`!b+bKaT)Kv>oG#x^U{TK|1avgBj}whk{dp?jIL7g!$t=OxsAS35@)|!& zqv@f&41n2gmU1gbqhG_AFvU97hjNBt4#R=+EJstaD&AIGzG+Z(Pv&g>j=sqr-)`!t zjNO;obv_E?1>W8V2DC#C6 zrYT^Yz<75~k2DR?$x?2^zaPF>SY6cTYS7)|Ypdb_oXp%YuJ~av z9ca_>9oWqHqN?%oE*=t=8>yw{nJvA`a{0y{)wU|teol0LkzR?6RB8Ox&NukV1aZ{~ zylg$qK*Apk1lIYhe5qL2^Kgl4_lP^OYN5xWO4e9YRhcN+oZFajw7J9-$X|=BeQx?6 zY$3HJx0iH zXml-GR$KS2t~}mU>ePVv#q`qCmoseg8Z*rH^i8~D-yl5?y3m~|c{QqhX6kB@id)cT z%Jd#fWh(_iNrKA2;npa!Yfakq+$#ZfEd}<1Lp36URbdx6RU*B+W87y4-B z)`Vx?;&Yg z=R$V@RF_V+*{q+zInE2bVJB9Gi03}FGVP+W(-!PMr<4x9J7hstKoMzd#Hqe#!6 zUZ`G}c=V2zd+DkB+gnZ+FxrZQmoN)1x|W`%S>Nv*HRU^r%3;?;8f?Y`C7m~xHhr1j za)aHU^9~)_VAu37htv;s@qEWuEr0~Ve@ATf#2%`KL!<1MPRp^D%uJlCcz)OH$Gc0v zv@K%rZU&KUuHJQ5VEFEENCb)htqlEJXpSvrPX_t zN|AxuxaQTa+uelrpAc_V$$-lWdPXlf9W^u%)~Av1`KZ-?~s=&hUo zbb|GV8X>!spcjvonz~GsY>?1l*?A#6Q2ubDWtYe+MGN&(s`F1Zy`jXVk1-4~r~2`$ zw+H!-^bR^%c04K)6kzXDKjj~kKGe9#`hF;UoBV&9c97ZzrQgMO*f47GL!adu?5Bsq zjo2=Tm-E0bmCiuPsNdJ_GJd{GLe-bx-5>3km4uovUc<*7UM{v)BpS@4T?dDkuPI|s z1(xW6VTU|n8ngT2YNIHU_$$S=(9wHRe%L^;Kb4_CTp~)33*b1co-W+g(=|TAP!}MA zJ|IlKGiG!S^L2+VNr|IyCCs^ARRu~br#w|p zqJw1imaRb|}qOQ}DYxtU}3y z2Gut2hi|(beOfb@+s*qPs>LQtP+v{$UDA^^yE2v*zz0WFslJdcm37r-10vy_=qX@v zboGmu>!ZFrOZ4+lah1fQ(fO3XZ=Sl8U3jQXJlT}^lz$FzZ>*Wv%(__6vV0` zM#BG@@Tg0~X2eO9YP|?KV$0%)(6wi8rCyzCl^Ocvnjo~v_hhGZ->mY59#&SXT#Rq= zdaf?p&T^w0Qe=?A-LH7ae|#BQ2v!|DBv0pQB{CWCXQ z$6=C1QF-_I{=HsZP8_Ti9Q4sjt2&u;;;Bmu<0Nf!z&k#l&*vTQamwQCrgH?-!qX*> zQ9GV`qfry+hXz?f)sc?T=^V-xv;KBC_ZAgt{R%wK|g_f58Qq&nO`R?Q*ol$c} z|FA~69e&Z6K{apUlao&%OGU73bL)hbzckbF=_Py7%iWqK;v+dXf@lX0Z?+oBYKplIIF=2Nl3$N!6dONonV|1>OUof}&C z?SSx?Fp~J|y=QB$SCwvGFYi1YHMu-D@O_*J4R79IQ(C+Jf-)h7pEqz&#?B};?(Vzd zkqlEf0;fCQufRaI{pE}!^uOejbq^}d4pFw4kgpY+bhP<>T<-Is-#KSur48gb==oRi6TB|!%PnRjEJ2M!v!s`_10Sze8hIt|>y5K1H0W^jG1{%D>`1Z@(@$n58jbH#-d%>>PFBH_&0J zX@O(*NaMr3(HbApm_>PoT&jtJdyF`}BoE^VX!^w0zPVQ3cz~Hz@u=wox|{TP47Tom zV<~-OY)+GIEmGl%8dX<(6uWOoWmN??q{Pl#UK(qv6KC5UYt=D2QB7eS33)Q|60Z}4 zj6Lz~&WyOz^SB`;s_9b6aW4cswidOhlY?jl*%o|&>l6URKw4S>b>dA#OT`&83br;m65(?NK``&NwX^4}pwdhTl zeWNy_GVAw2_b5wkcH^lTvx$ea(CS+2P51pdIq#?3ejm<#olBbNJ=-(WpR%7>yYv3L z;g;cE)m~MdKp!4y%#G8_*Q>lWuCQ0xngIMi!IplzZ|Y)yOR}w*?g%z&{H5YuBrdah zx<&hbLTrUk>ihnZ+Jk+)I|CCc|ew$X??YhgH2l7#*~loB$F@k-5yTjo4A|0aO?1sw1;uyy&ghESf6!nVC zlVG>*H06Ng>10jv!`>{r`+>{M&=Yfm+g+4pojRGTDVe0Hz$|-9J~@l$|FK86iC>W@ zV>drjk%SS}Ba4aB#dg(MT@7Y-rpnxI)b5p%Cmej{@aZB&(WxO?BsZdhDPT32v_R3} zU>T>zvbo?qRzQ(3ovTP1sXcPyS!06mfo7|zTv1vO{84y(zTJGhRmKx$GT$@mdYx6; zxGk>AwE|YQ&GJ#A)Tq8=^C`X&$97Tzy&Tu+OKZqFHPjD;xkpK?%yWJ$tq~@g8=G`< zo(QfFF38J5*$!T7})@gudo%^{H$Z*{dCO%2)G;&AQ~ zT3UzoxT&qHrSzKRk6(oM-${tbpkw$I-O_~!+dvrKT=5mMq3i-5IcAuU&pPbPOt5L7 z-YlbNC11jqq*0RZIkDwyg5~k7)h|TzobM};Oj&f##C*bYtaBMZUQ>-w%)uMJ*>(au z@>!flb>?CT18V27&IN+Fz%(~DyyT%c?Z{s4m6kWdrmt78pc+-AB@2Wjeya7^BlnxK zM;v#*k!SMnC3_W^BT4aildeYBHu)>8yxash1{rvlOE2&@on0NxI^bDq58QDtmcG+) zi;)Ka-y}RY3wB&w?%cLOoF=Tt)o>v{7iHKqG^Xn5Kf?;a2BR9`fMY)CM!6Eih# z77M0rlafAdaGR>BKTpHH3mejujgN?g8epA!U~Z}tg7FNz5Wz)>2eX8oC}<> zb4eI}+vY@{Kbg4S9>9~9P_PtzW|De^S7feAiL@`rpSkp>e&ecq6Az1iI_9o3H^kak z>2euGjGq3h(j<1-#pP9nXRr`mzS?9drCxtHlz8c>EkZg2ZLGl!0_8Kz?Kdr9^>5QrQG74 z9ybnO>bx{9vJCH3PLVraPI;+Y9t^)|F|B6TxUyqUl~ZiQMDm;kLfP8cU5&}HA=#c} zn%L}`^|B;5GR)JpG~1<%Sb5ix2%MsuK{#&iC%Afg{yYuuWs8vWi$bjn;gZ6kEwW@6 z^zL}xs9UJ2e?Hq>nhJ-{+S5ff)FNQONV*yQy%y&WfOcy=Ax`U|c41{*!s4Ye9$;Jw z^flUDg73DNbv34DR)nj&O|N!plxObKAb8~7@Mf18;`hN%1k90;C+1Gy>dvbizon31 zphYlkrhAg9CTPu(Xd;^8Bj zu^I;a%cwuv7%{`VoGy%L1)mfZ2Q*B_} zeTg4`t6PMz^W7CFwh?l^NiaX5vJ4*?`GooPr;me!@q6j|(E8I3XrGgF+$Ch~8yZ)v zU`XlVHcK7HEtiUtSdqtsYtNxH(MLi<5iu+Qvn2{XDa?swo<8!oS<-73QitA+r0@3!csT0)%wG-wdC0d-=F+_~yRncLK0 zEkbJo*8^YfQlkcGw;<}T96SwR~5dI$S=s{_>6$l^0vjc6Ec(_Y>awZ<4`<5!e$jdHyr3lb%;6U%HZmKt zi0G+r`2Lb1-s5X^EzdfRtdWYsU0F*THze%MD~mvO3^%U$8=ivmZqKdW{0*ZnZB|lM z5y;1-$AdGJU1A(o_tVv-vFk|#Jw0{we8ZYsZx=Z`8h7M$VKp#O9>#TP$x>0=0eXHo zV1+PzU6?S5`8>v3Z?=^bdDk2Hn#N{#?h@-PI2rjRPx9j~2U8Nz-hu*ehB^#lD0s0` z#ttSz*}^~Yhf2Op{74Zdq!>!Xh7-o(EV{zh7pL7?ON$L&i-L|wo{u=q60qcO7ka%$ za^eBIjk|e4YiYbZ!(a-mlYi;`ZLU?E1$gx76FchC?yz^bCeWWC(PiLUGdy-Q ziy0bsv)0mV0FV}%IQ?2&uJd8i6kdjshQs>%qD65igms`FOQ$Ko( zOjOsecS{36h=1ZKPM1QG@iOuoh1V7PLee z1<5l{jJiZ=FEXEd&9kclEP%e>Zy~qW(kN_tK0G@S-q^T-dLSG}bLQ6Wcur-kes+a* z+rhXyKor>fjU{tp=BEB09|_k+dEtq=oc{)wFmCLLuhZ=>ba-V}2ntx09w8eVcfiD6 zARxg0Y4%-IJZ*5kkqGa*g1%9Lrne7^$IPAJmn&9K=L@5iiNLq8Fk@4*-CaXNt!eH! z!-mFatGYB)THN@0v)4_1cr20^TYh(yNvg{>2`M;1?;?;KH@3t776@6<&{CSwly#B$ zHsz`U$|(w7wX+`t6LcGj=Kr{bNb0Uj8*ir;VcJ7HBOX)W4kw!%h7M6(nU&4-Z~^Pm z|3f?iS_Hf+RGju0MHkAw5DrB&cPIKNb==rhIFP@--r}`KDn6OUq6_{vXcUCYMDasH zIA4y9PLDYXC7)rIZI07A`OM3LM;BCcAtys8q-3k>V+YKf*c>ucjjo6n!b%XyH&NAl zla_qztpLV_eU^zBLIqy3R9Fd}s@I&j+KI(lEkdU{LlcN?F*v*zSCIW7>&0Qol81l0&(w-0C$3<~kX0*Llo`UpSXsy>7ryIdqUC?W28IL>>4 z$#R+lM+)Tx)WiC~a*N&y2;YJpVSX!{qDz2FhJ=k?Yz_><$Ix2n*^{7!s;+lja_iV$ zWDPaQ6xNV8t^CI6I(S7Gx;yTj7UAgC$dR4+dN)%o!V;&pOTh&3y<|1OA18Hv*6J1X zemc|Kw0q5pJbx6T?ICoU&PfP*EIyg1I&kc50Z}wS1AWpIX z>$^hlIMk@I~z4GQ3$`>?3#hT(Mj(Olv9( zeVQ{_4cK<65BckBR*U4lR3q@|)1ZlP3}`zl0mf$3C43NClCZgiSs0KA+$sTBskInLAtw47r( zWw#8W^e?o!R(-3kV`Q39g*>y^u6*D-AW<)_rBO||sl(Ngb@;tqSR^mMH!0pTn4*0@ zQ7Q_?B0JBpM$U~5j3dj(m7mg{hv{8Q>uIFt3*vUYDG0|Q86&mAd$}omsAl0Ov<%Wm zUJyLA2r@B3o8jKZZ}%fg#d8L1fKKS%e|n|mHXQI;T1mwSRHmwaR5)(TEi{xhZxOIG zM?F7%U?d*=iZ0W`3UBCw009DXJR8~51@*P|I5*WG9Es014-(CtX-P(*80hY(+eWA& zZQP2T_$y_2w{oaB*NwM*Twl7qhSor5ojC0mvVC;+Q`V<6N;@4x`%g3}2pybop+_8F zNziPDvC=N4^sYuco8`=puQxlKaEwg#DhnP+VFPV>gVh46t$o}Tm}Wv9C@fUH$@f$9 zRTY3toPS`hWsojn^@cu@NDI9UqK2}2gIziP*%i>EF%EyryW_!bw;HfS18EKO2JCut zL-lV`dw3Wt>o$!ZuBYR=6P?t2FE*;{_CA7RZ>5fZg_H)+D<(1|oW5E00tcIYSVHS+ zSv_`Q!sSR9bgUBqZ0A2(Di{V6jNf2)eVuuq#HoN(jC;-QWQ%UGos53E`SN@Kv_|;i zJ8H!ApMp%7HBWR9r5mA1>O>;}RnD8MBQpF=_vQbX-{k*uvD# z2qd142e>O`zqJTEQIj7$JulUk_EWtvz!=-N`(EC+tCV73}8o2-Fqg(jYJ7!$Z7tbXQ4zp>An*S>0QVCUqv#vI26iTOH4@`>$&iqk zhClyAeb^Q4AJTWRsxW(U|1ehVB$PS_Tq2xnIe0`M$v7L{M$9ocpyuvf@PhNybAU{# z6_~|`0IMkN8RpWmr{K$70J;vg&!JgAmNzjnMroalf?0|@*aQ0`5XOT)vBh!<+xN>T zjEO7U4;)+|vp39z4KvWVZi2~@{c1-TSEfiagf-dvp*X<>5%{9mQ)`T9})y(pE1W=DZRzBd|-Y*ka zG`&}oa8mdgHZ+`ADY&sG0GaJ+2)Lh* zS_{JY^LZcvG^KDg02z;6CGsC8(tzA=L)-n~-(n!Y8xO7l5Rrj(K#WowjscL(6}c@s z>!(-WswkuQQeW`nf1mr)K(QAJ0Iu4*vTrx)u48cLjOL2q~kyb45|X?3=x!f7b`6guW1wc36H0BvMKRo>E59JvmPU zkk9cZF!;zPFkissGBU&qc(Y-0XocT2PZUrTacgL-iOwcZh6e;CHK^f5_z4f(=NQ-O?~F@>_)`_*Z@S}Ff|VfwxxNKDr^#E7 z?v+?hHMuLyz(~nE@Tn?;9N>ZJMZo7`1#G)hhN=p?={JZk_+4E+{HD1iRu(UsP{3Nh z{?v5B1{bo-*J?i_h;Tr(?gQGUKnlBU?ZrNO8|c(>aEN|TK@6T=EdDqsRubQB zOF5U<|G{LNIFEhkj*N_5=%!P8qzIV%Not1+27Nt?j&m)tK*r!>9PS?HY7j*dslq|z zKLG;c%kVqiQ=Q83iW&rb1MrB6Uo5%D2N!Kj1e-2cIOkCGf~5mgnd@MyeHpOKFw7d_{hZnm!ig{mf9- z6EG3x!AZZx-F>Kf;u-ba>bu}@MmbP)4LY%4<*3S^0*kM>Y+&`I&BnlZZPN(k({8hr zSU!d7GkP`K|7?h00zdacCK?vC+)c=FN8NXhD?1J3S0YshU_|redF-Fzk>-i_Tv(TY zfMJOPnTVJ=ei$UH7V)Sa(!bRI@DXFsqyphM_#WA`?*v8~lqb*zvu?2aR{|DUUJbur14I$Z z%zr4WIu72fc^kOM55VW9?&YSgg|UNrHs9h6)8%ocHuPM!&YLxr(ej-@4)Zbt~ zv_TuIjH2iQPU-BL6;ua6GYEF*M%4vOs6p__oL}O3Yj)VXJZ@Ng#QWlT;hd5O=82Xa z1-&4>zy6IxsuxI(6VUp-37Ttexn9f&+^vqggU+ak2j&fQbyVele@=@2pG?F71Zdra z;~_T3iU!`J?!sf`csfXmli`RM_^rvH<3kn@_H>KY(=iQeX`@3iXLUD}tH<^h@TbNQ z{EQ0*Q$-(}97bJRd6f7D^B*S%i$V*E=7DJp_AiLXR*#$Tj^E=a_zH(Zm(LlySQ4RU z&d-yTJ+<}#dOz;p9$UaLwmuuu5jSxuvKjz~7sn7rk%UN|eKV?Z&pSx4-CcY82C`zh zEQ{8~+#TN*vu9dy%`;pwrKZ`F#E&z@zSKT z>DC`-?E32Ie|pWrUmTdH*)_{`lyyBa__eEaf0YD_k z0bh@*78e>t`Lt;ZeC?pQ>fZC}yK4aYL}*JC4y-#=&_ekoUZPn1(^mV-xSJZ%$aY7} zVBRm1I!*>480m%LhzV=<^ern_wV%4_VORFH6rS=Dq5kDIHgr{PQ{cM~wpDj%DbkJ@ zf13#9j|TOp$M9p*LwT?j18+bFs0MSF(b94$Vu<9uGqD-)o?9P2*in z=}lG2O#4ypHS3S19IQ;iERFr9>u{fy#=!{1J#8r;`%m`;)TzVA##>fUM^p?&fO|Q8&zO1aCN9z=-cFJVN>NeKG zGsxD_dN7*9+@`XZKucx&>EK7lKQMny&wmEgj zVba$sFd>mo%v@4vhlXu%nBLOIWo*t>b;&Yb z*7DsYpN{vH%&NZ%M}FJlj{4VfvZqeo#$L-dzkLMUD5)rN9URF&^4yRMx%wLG-C$0U z0GJ*^zPeP6VDO87nmvSVECTczGGjo87*%YOZc3@T<<4!egb)ITN$YBuq99}zvqdgz zZv+}-)0UFw9{TxciC&5gvf+*;A*w3QEi$a#Vpr28`^S@t!MYJ-=~f}Syo>`RcHOS7 zgLKdP|0(D_X^!i4`wshDD7+KY4v+J%kxU<{=>3Ofq8lk_-6UqjCOfi0Nq4M zAjB#)#k8^N6Ve{uZu@)E$7k?wh##Z+kWZjSyX+!FHX|Eo`AyU*E2+RhLV~(uFc23B zz=UoF`eX-+%9hOmFRX$ADX!I&2c)84I0LJi+sQugz3!j(LqGyytZ6II7vq$-i$Yaz zffV}JlmOq!{Jt|c3?{`z&={fYj3?92r&fiZ8+qv@l~j24qS=wA4f(L?lr4&br{H=V zdQc|_hmnIX_ z8a1C>d31al_|w6W*}#)JCK~XpZQ;18Pm;`QCa?81k0ZXMt}6?C0{rhRHJ2j#Za%84 zKnT$F(!EHUV$H7~P%OSfK`dO#@l;PF=>b0C4VcsST-XJwunsX->2v1j@8*cC{%z{| z?T{b?O}Bw#fQmPN-bDT-=#F%4gABn3E!mX6Q{(;N=xqKx9QdH!91TJ-7hWVfUXLc1}H{U4TY^$ifO5?@L zfk{Eq)1iD4YeLAXh}(FgNnRE*&Hp)W0|l~Lj3&_%nzSJhqnww}pN{uYF_D?=De=ql z#j}mG-Ri{QYS>yBzQV3^3FbHeL2XBwJFwA#>aWzDbjI%j04S5%SN^q2IN+-9N8s^_ub0jF*Wf@mD| zMf~P9EozZ=G^<;XCY)oEYwgWODSP#D`v$a%A@tTobw9xMtV;9|^gPUt`yCCb`2fohNj0mh~`~U>R zYWj`Bj8W@l@NwO4^C{j~*iz!X14{H}!qK}-oQ59Ol~#gn!M>R@hzyBMt*=13yo(f% zYHU`=AW*w8xOV@YyyVGq)>AX(q|wT=nk{NX(_9rj&AycKdy_LQ9K10K7+=XduLtaV zXOyVOx-pl+#a$}EegTNPtQss@Bzr_4l=Y%zj?jQpHeZ9V1U^3X=WoK_08jM(FJW5V zsi89zfdD}?r>pV4YtvH_yODPCMBbj$*9Q8yx{)@LnQ=HB)@BXNv@xeNAf-sNuf6B# zs>~ZzA1o_uW3!^r!5O&Wbq%t=MqH_N%wjnWVqvS}Xzql1a{f_ZRX{_cUng03MKFE^ z1f7<3P&vS#z|=r(%bS1-7~$hEZAQQj{oAA-8YsemSCdu2%oUe%mscYUo1;;cKG5By z2LSG11S|!I;#CCFQLS()ANc(0Z)8m5&iuzGqmo$J))Rhj)?dqXzW$Ia-t)E~D94j` z&93!2u|ne7R62XO@&f78B)8|;J#Kg2NR?H|q*oQLejt??B7iHMi{Y8HE^J-4dEz*K zrf|;An)S|!RDpTun$xKt>tu5&C;0x%<(cv3+8~y=wGh0wp*^{~W7{udy)Iv%zpvLZ%$U4vrK;w#Asj*-ff$i&FFh?r%=ko+Cwm01_rYR8o zEtF50q&t&flXHQ2NyGT#F=a zb406!RMH$r-gCxYAJRi0^h_#&ERxTRf~5T(>;`zx+0QWA!Ph|On48X!=f4pPRv@*e z;p?lR!xq3M#p)G#0SFp&9@zGcPwJ6rK)Pw@rIw)CLoH$P1DXnUYmd9u`t<$;@S?Dg z!g=-fPB*=*^N>PPZjKEP_jsoRu~|MV>!^|-ar#L2y}{6;&qrI-dzT+k?^7J&@wH!n zo$p;CH%N&IYj0oQoAE$Hi!?p?muXX2dF7EwN1cq#fa+k>7S3x5X({%Dy`W`SJgT+z zsiNL&BYr&VYlEO67TQSCF1YNj(eqhjVT+FbJX?YK=ihZg_fpu|BejpqP+N5(cYTqN zVi-hb;mG1vch|?AmYUOAO;zsX_NxN*YVT)Qrm<=j%?EMzHqWh&48QxMMSC{T&}L$l z4AHyvOh|_Bge$Bk=%{$tTl7%J_xD7PHJQ}DHMy_{@3Hj9dmnF}KG*sm`&ozc(-8TPvLgSGO)tkoi@liV#I z@NEIb&c6tI2fY5xqvT8f4c|8n32n&>hZq`S;p4c@GJNOe9A{U7P(-!#^u?s{5gpWs zTQal$v1+4ITvZ!R@wpf?lCq>AqfiYv3*a@|BUem-+TZb4z~SU`-DQW7}c^Awflc;Qx*=Ri#f1>U=<$e z1yG0c1^pEsIcEtOfF#%K#f3+zjeP{J>oT3I1^$Y5UKiFmh3(sg!dX~;8&dvCD(1?9FRxQ6wIt`;5SXp@53qbDezeMaUpj(u7={+#+*QKGyp*pcdp5?D_OQaZA@Cz{V#mQvj)g?CKct>(2iksTW>t z3;yc0X})9hk=Uc0CWWNDQMuJ4Peh0MkFKf+ zQAmlrpCY+|Si@72d^2OySgmO#ZZl;PG2#(%{aWgz(2*}6uXVq?d@agR;b2w8{dF-9 z`IKV??wqZBnC{X;PiE?J1acis#!t(E8gx#{31&I+ngA?GG_iG>Jpa16m-^k%< zDmXR3f+Xx2g8jQ<1w9B&f((Q4zr)JNKTIXqMF0~7n(2S78-VUR>IA_S@sb2bKkhco zfY*x5OpC4K7y3xM+8gXTcP97T;?8c4Aq;M;ZS#(*UgIBBw3W9eK`YZYIIhequ1}`s z#>27co$Cs@ClZ=xxBGm#eX_evv9Q8pY%0Nk%2d!hNjzISIp8rO3)rRUVWxAiqzhxdqc``#_ZD6_$rld_DQ?X^GjnN zud@Hc<6V}01*7!(WR0fL0`FM{+j}DL)y@48*O8gi!JkXIg@($79N~sEiT3NN5hVr% zxQ)p9xpXp@f`G~AaaSzQdE-Hl&1kCq%XaG!_&X5XU)+q%WuMERHO~!=l3br+M8x) zkOAVWRGq|)y=II$9pdM`s>?+u%&_%VLA(H{JcNA64s@C$TZ(q;E`ExIGVnz(p_RG z>}?mdcw;&7$ojx$HQSkN_ma~sAFU#EGarN}-OzQ5CuXM8Gzkdq)1*hsP;3(EY5dhW z$M8qDxx&2-uvc7b$u6r2x&*$!oTF>__X5dISbc1SI0e$fV#vU%!+^rp?tTuTmh>~~ zeAsdsmOyiHmG8Ou{h0j^Wa#Fl5$N=X&g29bi!=(>B-p%N1ddMi~louv*;m2QfOY$fc1n9 zhp3|SGe6!g4fgCuYSA;h@B5i$aPT+(&N%;*x|y3raEmFrt@O=wiv1LUdx<3+Y%Xw2 zcH{--pDykW&Gl*R8Y;7YX+R;R=IcYak{KF>Y>Yvk{ts|;0HHa`FMe~?7um@Ly`j)Vqi|$auDTjPr z4;JR&*pt2qhvjge%fR+&U;m!&u)#PHd5f4X>`Ez;25e>Mz=OL>P9&Y?Hs?t{1tE)u zYQXf+bnd^)5nvfoHCQx%Clg(e);MMG402R1#mI@k;m_0+F~leSBE;!Tm`ggXfnR3~PA)HQOK1k|xM{r1}w&o@;kfV?|QQ zN`Z&J$=`o*R5LJby%H%e2hSv^X4^a2eyb5 z*hcJ@vEzfAU(8*=dO6e~zNIh@jMCbtY3SWYmKCw%5eT&Uq87Af0VdG8{{Pr}^LVKD z|8KbEXrWzn$|-3fq)vp8lv2r-Y%!KL>zJ9)a3kfZ=CZuE=W1ktzpoQ$F#7t(! zkSsBlB4oc_A9Tw3p6~Z}UDtix_v60r$M3&$RG81_^?ohS<@LVvC))trEow+U_)Bo| zj&3p^7=-t;XeiKxh!B4RO$1^|o%ZJza2ch*_Z2<%-h%56-y?txkK{*mmaL;%1DS>b z>($)B`Dcajaz%_VqW7EA|04v2G8Xw={^F7}BWV(_3WIHD|L-6oNS=V%a@5}jj~x)G`XFiXA~!tc|#-5DiMx9nOLcwAtVef4p258O(D*Td0Vg z@!5cK33I$vl=C-eNLxY56^0B%Wt{p3cCG#x_Q%^XhOMh}L4P={4_^cPJ)|)(2W-Dx zhFQ92k61VXTqhul-!s$C8}C8%;cM1p+j~o!*D2}fh|vyUKPmw~iwMY}yoV=NZ*>lF zFnuEmL>Y9{*S0OOR9Fb~Zor10gTpR!VkKc)VYe5RbXgfk3t^XAn`BmDi)f% zVKv7R>KS$hl0JDKR^u~6MOf;j@!5*|oC zf^Bn8epJ!|M(KMdMASo|w&5HE=N}XoL0Qm3qcm`(K zLVm2L2l3=Rz~ngcg@vaPt#ezHIe8d;ka~g`I278iMi5?nr%SPbT*s5QQ$UOZ+l%!$ zaS>tD^uu8VNjpSB7r?#(zuXUYI+c#$|8rLf`alUatT4Fnz?3$PiT`sr{m4lJcTfi1 z8&>m|fVfT#dMd~f2(bfa`XeZjU8ck6dmjjHh8ssfR_1mcGDp_tp<+1oU}q-BUxa6$x@&?$dHHMd~r3@+`a-~(o65m>V; zJUty%3$iuA3<z3_-LappdvRqx@Lh zzNx`wtX>ob21U$9L)68O)a5x9;%e?z<~!2||3(2~I=8vsq|))2(Qe=1heAUHwC4_+KU>-~y(- zobV{2-A_a+8=o=DVoVn{%-R2isriR`S7Cv2?epbJIdQMav<TM}5oPt?!K*P*qAeku>Nq7ZrrQ3w8*c#uIY1TpI^FqeSZ>4}nJLpxda z;xvo%6JFT?sR-Bgomqr49`a5uAQ9XjcxO0z|khfmE9o|?u z-E&QQ%VaMg{k4?)?P<5oGH6mZAjVJdzf+fkm0`}A@(YHsv|0yjdKyA4!Z1unZ@nH# zg`o^+TaoNk#A0sO=oaLFL=z%FfA50+!q{U-1Y4v(rq@{jqXMGJZ!ekXX_?0Px$Qhc z^{ssi+z0g&beLkib@?`8R)Oa~GeWX#}Y2D;4P%~3l+m?XA21Z}U) zsn!>olPZ&83ZIFocT3EVwX)s7-v7gCMa}^=C>DBen2+{PdpZBhVbSewcg}=UfCpFU z9Y|H)=a3(7qy>*udn3c*@gIitt$s+c+(^4@t_ywRHrL_jkQpryhXK9%ng~>(7C{R$ zuBhf;vm=U~Lur9P(SyjcuTBrMWz|?^p6BQjxH@^?gyj-pt+_(j$ytksvO*}Yj zW!aymF{nvgPKtG=se7O3$hRmH*Iu*HBLd{Dt_k+y#|DOkf}V{wqoH*QIC6;8aSj-S zEwpfe6juOLmZdf=W&i;=`7w0L8UY(=2V^eFfrw!@vMS&p3|wG3FO1`@EF*&>!N(qE zRG@IBJ#k{uVHl!9-w5+IrwY$dN%u%`Bq?mc*>9@^57~c(I{wI?e$O#3ADO7zZ@5)} zfy_FeCEmyBsYQth&YAz4z{NWw=Yjce)}%a5pIIU{cJC}8kf+5y{r;70Z}|)QnU1U* ztytbh8UjE%3SgX&@=K)g^ikqA+^+0XiWvk_zmn|$bySwsUYuIQp@z3(HXIsztslLO3O$m$NG1) zSW2Sev`0vx?T4<--x+e?U@@?hh?w&kmTL+Wfz78mlnIr9)~|5?}qil;L~c zow$Md%+(z*eTF{X8+sWSH0VFGgHQUD5pibAR3Modog*iZm3w5p_SG9bWv^( zZL3>Oji*`1pqVSi1`cOB zk_R?<(+}}{MizFsv{#PU6usbfeAdudlbd>Uc$+Q?m)SDI&00fkRx-*tan8nPTeST7SDWtq?sw^Pgz&kS z)wd6bW73$*Jhk0>ZfV>r*ez0veL4hJRaTaxlqJ4&9eeggW%1WL&8p+nM0o|hP7Yxzbf!pl~@ljAuHhQD|#zUb(BUBOxZs-vA<9$Qszz59KRoSz>+ zu-Vx#i1QZx8G!P+3_jnP-3zFl0e(sXb26MG@1MxNo2FaiV7&pdI)LpMN#WIS+RqVb zy%=8Pq_zI1U7qS&8=2m9n}t&!Z6SpzmRHc?i*Q&mCwB5DihMoQ!z3r~Hmaat(y6Gz zY}oZ-lK4)`;Ea>?qZKrG-ky6`Jd z82X*UGxt{$d)r3yCi`y}wo`kZu9uD}YPWgV?FtcLP${H?uouZyT?C9T{o)zi6orn3@g%{74xGav-_u1Wl#rSo! z*O{YVZ(JnOOuuc|Gu}qJ@Ipb)Rb{Q0T#%idvJw)o{m5`50nx8r9vzuM6L3hdDK- z#Eiqc^G3tqhRbbuBAVC5{zc^0D4kosc=SqNw>?L?%k1LlCYJ>}My524*HX(dk_%qUeSpeE|u+c1$gFx{?=1R{nTxl&B14E50OaxN#dzGLio zjJ?|v)d#oe^{n@oi1~S3Tx()O7{8p;u$qv6de=9*Cd&|JLGPn44fRXOpxi}+91U@3 zM#?#G7bX0CR+POU6fM1hwvLkjR(B4})>i}G7DU7RpPL@|(@n9kE+SubB8~LuQd>{T z+q5$C2FlW1lZ!(Yo9NZMap2Bz^JAit&h(5syf!~cq(qWT<#t?>2Sp{wXywV4=4 zSYfi}P)tan+0bBOqIwhRCitjK2*gYR+Jgfpr_oc)ktcc(fy!WjgcZ8`i+@Q4s?UBt zfV$ei{1B(d;yYz?Fkshy_m$v;X1sWfi2&*GT)Sut=-p&7s9HK$vP80E3_ zwRR6t-tWHp+JaANif(hMqbDUJqVmcik{`aDzEa-PHOq$8aYp00Zd+H(%8RWS%>iZ^ z3fDmnPH9L>dO%)3lv(xLL|}s>zt2Ou@ zIKGVpr@DpNL_l*gWll~sQg8-7O_mH^SZ_kqhrJ;tye=mJ4_4a5nat9$V{qY7H(k9* z`)gi4=4Q;sCIab+Q5%{B4%hDu9t6^8M|e80Lp|9oKqbId3aU#bY{30~39ks)$q_yr z>A`Lydvv}lvgcS@JAmNUtY%vd3H%%c_7}3XROjU0tkTJ;p2o%Dzp?P`6NBu`ojOkvj|Z%g zK0)>9!Fd$i$EY}L=Va=(9TAZIz2lLaq`dI)--VA{SQM-=4h=hKJpA>{BHCo%z<6|!)7P(Gmz}BWCB0I>5d+LUTIz2{C6jmH3d%Vt z4kO80=%hE~N6{N&OD>Fzg+2^CMH~MTYfQ{D!D^E-gma!^ePW;dHW(5~rwF9dlqA-o zJ~@36A1!1%5IjEwH@22|*T*Ehb+nMf6FpN?b>D1xE9W?nUgF%ShV8jd_G#Q8Oq;|z z)DF$-&LN{)kfAIuK{PjCxm&kUY<}~ZW55T_TNMzZ!QM*{Q`M6o;_Yi0ul;35*>q37E zp(>RZljYErV;3jhMHS)!zA;K~AB=t^DQlOe&6M8OMphv3!)RI2F;Z%@Zhh;m5ycZ% z5^8xC9l5F^q>?Xp`dOF?&ejv~y-%6?7$kT!QkD+o_QLP17C>r4zXA-noO3dmXkV-J z^f}qKMd^?BM<5G`E2D(a)@xyS3dW!E{GF@qm%~FYZeW*xvAwT*NVtJ1F7FVA)!WQcwVw3M@{UMcQY zlT2@+vTIP!U=xe!zMU8C(v99(Y`dF_&NR;0? zVij(l3>K4d;6F5f)7~bM+rINDU0~JL3S<}c@%QB@qcWzv3-LTmQjwZWY1baSXLt@p zCKYh*{^-~Rv?xe(LhN>ZRI?<@qIi?5msSSJ)~Ue$Pw5L2Pn7uC0;!&4jk+qiOHlzR zbv+5OoE0L}_HpBPjzJbvY`Keid&bHu{Fu9)v-DA1N!EOec%~;?6S@eZj1zpRIgiyA zMU8!FYG71$IfQ1xb29(5j@rI|=h!77%SK%OA6+MmS~@ABS-mS|voy+dD-BTZM-#kt zODLilw|Ookqkg2$e%qTi#oPX6x3;W~_wD95eek@rBek2{!3DF0h z7n=TA^s_*Ys6LndQYn`zKvpB575`{q$~m~9>x#*qR-p4yB@kt>=nItHZV-gpL@|ixZ@q(QFD-ZyvD-`a_Jf}5% zUYGiGkfkqV)!fqN>=&jb`B69O!W)+D%h3~|m_sZ^>~TaHHrwfP;|19V4LMwM@^eLh z=P2a8pw%0(^!5t<9n6 za@(Wn%XQf|B(Xh?-d9nN=}~Hg49h=`m>H#xhCrTx@5xs`3}P~E&aDNs&;U+zgyDO; zC~aSU%=8h-R(&CN0et{II;QtRzv#hRJCNOGTY@9$)haGxYh^BymWbrW`cX~m1G#xQ zTG+(LgHq_M>w;W3CWj!#0^$6v&7L#|j{^oP7X{cWt{{q9Xbkp^0FaW+X}p;`q#L4J|O z0F-B>pAx?cAY&;^PlSxK7%X;^c5ei({lodeXo>iHXtU`9WRGa@?`UCHUG5@Vh}We^Bq^os*TU+=1vWf4 zH>n9g4KJ(Mfvq;zN-V>a$B{*391O;exEpd(LiJ()l_$n3sfFqmWyN$ zR_t^bNJe-f-^!m}<~{<^?cXHN;musgbC-JJ>pOEvKq6sr6iHJ(bz6QWB z#M7Q9$n9-^9w}+XypF>}2XG*wR!Cw)kR1x~f$Wq3)Kpb?HhITI1xc)t00xdPylf-~ z9oCgV@d>{Jg{KP{rC!hy$`N5vTSRvCj*IAsoaNE6ElR&TLWKJA_1UBLXI@fs6^hqp z4o1grQD($pj{2f1i!q=7iZ||2J?|DyF7G?}AiDQpKm$;QE`=sZkn zB1XR#9yt8KJbRJZ2um*e$BeY;Y5-&*B8mV#Lme{?#DiYCyaj)*ZbL5A-B#6#se$GT zf3bxMxrPEEp(5gGQ7+KB54(|RzanA~)Hn)HuXlT^-m zUX1yqE0W!FwuMQglXo~lsb<2DPLOthO89UoWa;Rnmq??F_xW~ux(Pw6ueAdShWVr&6mjqxmh16MgJrNB zelb}p3+f?~u3JLOQS&lpkDx=pk_lH85>6o79o#L+Ij~*1%=3mIcTrD{S8vTa+mC^A za7_@ixNC&p_Ck1Z_>($OnmcqdPJLsqKFW9a`@2@Iyi8nECrYi3iq&L^W=-Pd>`&DV z{b49tRG^6+a}hVX!Sm@BhQBJ{%DH=jr45uNzBk7U|K<{5vQRqyS0#a-SmiR5LDANg zQR5G!HL{>)8LD}7SHGK-Lga+xlhtzg`22ML|!`!4mwADB1GB0e{hTtBR~63hJPUbdW3 z+3#VhGnI9t-2d1m(vC}gF(3{m)s~Hi$dsJ(W}Ceb$%TKf%*}>lDOkWo?qf z4W7qN9O^v3LD7Y15!GyoqUiFR2%hkq9|pb;)#cj3-dVVg)JV58kwv?b7PkM7m-CEV zmEhi>nM0<54;i`ASD60h0WJO{=5sLyM!$(I${oc${A(3$J?kpkFwkg-W=~Q)P0MyT zXT<>;>j%*fMm2mTC$Qs!E*B2qkdRgDotUq?AJW>+v2;01H5V~x&5n!E8rM zwi7Q@e8g2I4>PwHX|%rH6JPg8A?fR*+p@Iq(wn?*SCZy!+}F52p23o4zEHjuObJqw z40*0@aJgb_imC}(%D+R;`oamVfsD4&OMWI&B7*}lgPme+z8|Ca_PMzclK<%T+FcnD zQ)p;+%iApecH~xKMa;YXlM%IbDN#8EQ#n!>Oh(R!Rh^cmP35FXYloD^r#)UIcHx(DN^DEl_NXYcQyJ3 zp7q!3bMNGOp6K+9PaE!bR+$R2y6`%j&^~5YXiuU=7R9KR@I`5z9dt=`?=OGqitRae z`L}_@5!J!ITD6ZIm0HK#L!zaYKX~ZIis;xCm3!jyc)wvMzN@)4!&bqpyj%NO+M%?L zqD*7SuUD$aH@?;2kEHDk&i5Hf9PxIxpj7X-@A^}voq`D_bqshEJ-VVkI_AarP3GOv zn&68~ER(+-xj%R@$Y= z$9SAeV^uei^<-%k{pO_BXd8`P1qR|k%5?Ruvte6Goh($ zQpNOyc9h5m@t%WS%TVo8tb!Cwmw$l(9n&+1F*Fct3lmvaev2q{r_7iXKm;zjL9!Yz z=Om=cJftP~WM;4UQ1AOrmq03skD}KvVCnPR)kY=EzcS?sZtrzf28@)Ab-7Nf_YaH^ zT=^?K&GvWXZhEGkZBbX_gAW+-Qp51|c}{1?Uf+v&Hg)9+)5)lnEp6eUWlC)C1Z<*gb8BO)VG%q8#oo)-f z9=6G=@&WBI_KLOLZ7;^!tWi&kohy2NXI{DcwZQ2^qJNJcE3`s5OkFmp$$HnvUZ0Y+ z^rxP>q1%nj!ZQaOwT0TM6YL{inpU<$2vnxuIj?ufsS+i3B23@LG1_PB?r5Z@3wL2! zcp7HVlmBeE^I99%H8wfznO6HXsRP?9?NdWPL}f3te6SxYg|WXCfezH1pkGT9-`aP} zlkuPvx7;Ve_|0Wu8f_{)ZN%-9+vuwGo_&>>7rIV#ei^tKvgULpN`ZiiPN}~?RQ;hZ z+?9F2?f~Q4i0g~6yzo<|LgsS!2PYgyu6zi~tGLIH2^&e13)xh<|D50{HEog&kx;W* zkFow@o0~kQF5k6d&)x7XCgLm>>u&v0)&cuv!9s*;u;1`ORS`J{B@cX!lwMnX zr00WGr8w>2u8|WX8K%)WgZ`4(!&(^Z>V6mryyl8m;<_%B!0isb-?mayitH=lJnGXxJlk&dC%G_ok{tw8iq19l+ToR z**fuQ_eytNX6p(K?RPxrm^t`fN;lZ{M5A&T@nug6gB!k-NoILKpsKmg5Dt$|@sKYt} z=}}IU>`!7IO_iD6Uyd3jca?VWod_g>j8NKTvYK88gI~fn zNk62GQZO5sGg(hb`M5Y`FJ^Iel!IveR!yI*GJngbs}~x ztQ3Q9U-kOgk2~839Lq`DNpM(Mb!*-oI2L5;#S?o~VcWBGVb$6M{l(~Dk~oR+uCM;S zqpa==Pu|(6s*e`ksXGlGTc|GIpTrQeTjQz8Fsr_h7D~OACKjUmj-6yRk)>?g^C3#s zoo9XVkFX0{%wp1nUt0LF>z9n~S5rZEcGNnu&PKhCcw$!R7!_YIu|1 z-c(Kzp~lGUj(i(ggP=wq_|~e98nD@=$4o`hwWE7g5AAxBIXGZdRk4^xufK1WU?;9h zxF>BxDXTwc8pLBQW;|HBve2%=G+*YBkag7kf-$qZ5w6A>HTt}oh|`k=Heue3MgpfJ zJHFFgC&AaIdpLe%ll7IlYS#`%1w+F=Tw1=Ar%*y?1>Manp|6X2U4J)AICu0>U;s+Z zkZ-fN1}=337?R}+dYzgho`80(%Ym!Js`Dl4fR zl}5));d-!~3;jbk3-snE%dXC**LS>6vXHZ=Ub&2zeR5MlP7?B!{-G3uhk~eyUndM+ zQkK+fqvRCugTA6k3Z*p)tf7pQegO6Gm8kqQ_t8(e@!9pPtTwWKL)X}w`wV?vq$8Il zli&hjpX&1_)0`#AoeU}LXE)cjl0)yP;*&xs_C7o4_us@>Mpp&IYbae9&8UeM3J zUaEr@{)$#G%DwsUgcW$i^qaf*+|dbF!q^*9=3`4N)=uLDx?w(8AQj}M8sz&&p z%hn?r{M}(R5KOsukVRugW4@u6q7%;GE1136_5IAr!u%$toE>h;rRWragrKLPQn-)~ zhZiXCnya!WkRTy3P@mcIx%{xZk*rG|T=yw$M@n(+dQxkujk?`r?`Ru2D%;9<7mjk3 z$)dIO__x(BWxf%+H1YbVf&@vJ7Ef32YOnQl^)_g_3qiQlP9cJ%LGS*vf8_=@DaX5c z&z^MGXV!*7j%zJ(EjPm{`gpV#<{a-GsXqUV<@gNZ0-&m!rd#S1TsS=FNuNOTt;>~> zyZF=8*V~G5VquON5{I3?6_b?-D8o9Xi(pd$SSqmGVrmwH>J-ft(YTVbpMW-9KmM2| zZH~vKOrG48wNSaVmE0RkG0J2#CXtqhR-V@6RL(zaw+)_gMOWASC~AFxrQCLS!RATLYjda%C~ag>$I%!XI+oOyAa}86 zfLo4|a~wqP;jcQtdE1>#rYapW+xY$oGes}FHRbTWvscY;KHi?3x;s6D=3by#Pg$xe zJr=RTPQXtz9H*hq+0R-_v-Ty~+!T!yYC4T{SLx>3hL;Pz#Ah@6PX?I}Sm45#lJ8HM z!7_WI&?fDQ+G0|*s3zG}AApy8W?a+hQR=v3=1^3?Ks9^8#0Qhn!zs~4_9uWWKVVR) zJ`rm+8k5YABSXRSPqT`6yxo!sF(U^seZzD9QK`Fff1FPm8P7ZQV&a9}(Bja}uVk;3 zmc^l7@p~yGqrg#5v9F8c8jWR~DaTWk2xy%%9(X_fXN6<6FE2n53v+*IY9>)d%shUB z`}Ioy9-$^nyLhGQ6&%;IBsE-*(=T!YgTvi5D1}`9c;SSvoyFcUh$7Lhn41$H?DC!* z4AP4#?jf`om9I2WAg$Z9v!{e&M03|5hbBIo(k=Y@Th#UXHSa@dvG^rJgx-(tgTDIC zd5n7blT-VS|)0lJo0i1_LF zlEjJF3l{G~O~oECg+HxapH*batU8AC^d1D=`4pO> z7GB548_DOBgfFR@dGM5!38ZIP6Z@9FGWn(To4QfA2-IFukobq<%?_BlPj;vBTx306JtA>Feij z_z&AV9Dk7};04r%sL;;t}cl^}l&)93l39#_u7OaSF1Gpa@H7OS} z8txORsdNz&#I7@s&R!nnPQ$o%#dV*BGv@B9M1a5h$lXNKbz-E(u9Q4M$z_%|&=aDv z*xzLge!9oVv8DZy)z26IdN|&3lJDM6$nRQ zbw*ht{(!ehIYUzu9e_NZ;#)JIT`WR&jk1ygIE!HYZs{rD9b>l)BaoN@=}9`2PPr-7 z&C?SJU0-9HRcqII5&s^kOd*bL+XC8?GKxPL^~Np(0rOP+$q!|)lm~dgb2;f+PXF?Ou-`x{}z#_HGa&%cr66sA! zB!nHHB%8J}OXPqDCTo}zx6g3H2+emrkbCkFG&Ne7EZ}AN20VZf=l_Kl%NaB(nbj#t zc^o2|J(UEdY2aV17yLcEF54m(PDq7T?+f_1LLzywPn2l=Ku9E#%jbiUAGp1cAB5Xk zNgU=7M;{6;kS|edvw*WqbBl`I0_OX2^V>6oEnGmLmmqfm+1lZ`@liGg$V<5k2>kyK z z=%9u?;Oc?N%u|%aPVh~`k)@o}U4SE#<(ww?cJT1fm7+O62AqJva?Y)Cc1qTV|EO_T z>{^OB^Mu-vHGa54QzNBnZ6+mp@vA$W4L~u9RRVRC=!sTdtAgG7&b>LY&PL4IkYGZEPIeeNz4U?LPrXFID`gN zGs0YtCW}(!?tuybe-*6bNehM(`v79D0v15^;wIo-Z_=_5?Z^zq4%a`SR?kQe-f`#`Shh@oS?7Gqqg{dYJ(hbV$fb3G(?0R+1TSq+@3Mi&$# z6>g^h`krdu@dC7mzn>-IXIYB%4}R!PZUl0k$C1^I1X9%;`7yprIqfw_mh-$3$lV`8 zT`z!@6Q;eGC7q|!97h!%pTZn$sw4nKD|_}s*I}&7vs?RL=A@HnQDF#28iM!^Y?5;@ zABv$OxK!D5$rvRx=z1YG$A(Go$jM*4MHARRoL@hV1VwessO@FLj z2(@rdYMOw%cT1NsL)c|C$oDRBm}bktst4Q4J+s~4g`zl#BB2s;9S@JklS1vvy8 zXi%y=EHItKCnr|#0TT4DXlh$W4Alwc}#-`g<~1vAr%t!lH@>i#p3XrG#fN29$GvR7TiUFN!FIU@MwU z*w_r)_mZEhCp!Y4RcH73M{Hl0#EGf9piN+~+}f&sSO8qYA@6|Zf(;ixYc&kiK<#r= z5al*2)__bq!GBIT=+525tAR+d2gU>hPM{zL(E!xAGl2~jjDO*On9-p6*gaO!BjUg7 zN3#M74)P(0p97&X4g;VhfMw!jPYdYSKovB?nm@x3if~;#k3W7~T`8Jt3)FnytdQvc zD)o*$B{bZmSK5k6e=KLi+GgC!1fH)$pE=6XKRX><9Bwh9ftsD3UPk>-r>e^cVu(e` zTzGo5>TLO2R-xcXG;D^EOl<$*5`<`qPFlc<${u7qzm9SH2XPQ6ju2tPwBiV}5t`cd zEuvYu3^~SAoe_793~a) z3jK)bU1uiTPHABYUDRCQNRfUCcs73YY}KzJ+c5NQ={@($;gpVG>oQie1VZK&vMypWYqv8q40pay><5G=)#2_`O9jAD>> z{8bM5&2boL;-EN2!wqL8AaFn=a?URxVMIkjPqPsCW~hZB{O8*+Ou|X1FhX3@M+md- zW3>mI%(Xw0jRE^Zkh`)b%|n#n%v+nKYk}1BD3k*D0FZv6u=Lkq^nm<_03}1=3-yVT zadLy?HLXv>K(F?{(^HWhOEDY47BZ5eomfV;{i(Mi!A_O1zxP*AJwUbxGBe1j(60{d z6~HiO_;a>`$@@)ZNCjZqF+dQVmJZ?<-oTmnAgC$EP!@nz0Ur&=;v&pdeCIT{KnB{~ zN7KrpZ1~{+pzeVF0@CbrSXWu&L=x5%z+@q!OcTbmE`Umr!YUX*QB|oF{<#Nq3Zeb0 zDl;+*6lb&Xgl-}0C+@feT9ZM6A$H!Z#sdi2jeLzjO?cU>M{lUrlL`pE>ouBW71a z&H0Jao=$0cdr;oo-A>hx9z3KDotvpcOZ0d*z-Rn#l|z`eWZHc!Pf{j0ABG+;}?J zodE?lP7;D9Dhz?)3QmT8lqL|TmMfolH})j zDGVR#J!2KBj)`xF*#wVVQPfh5u?t2sZaq=Dbn1uTCmEh{Ap744A%9MDSWa>X^#E;J z)i~RLwIy-dp~Y$4X`^(k@-Q`)%)K_gmcgA<;msjM^XWUpW` z0ou1-EQJwMgx075krv6i>q#KPfxQsYdewmjXyd-a0;!EIM9amJj#)J~!1`I^qy@mv zLIl|GX}kdf6@8CPYQ!9DLzRGBTNpZ~+E9l>w($|3{NtvPiZf z@*=nvGr%;~4(a;fs{{clY-RV)&_wp(u9$zXMmh+Mux_1_C!Czi{_qJ0qCxe9t5w>pZIvWK8WRJCQ7scWFt`FM*oBZe9%V%>~B)^e@J@34qE#bP*Z0i2jgat z>d8PiYbV6E0Btm&FOP36U_C<6ibKM*h=0|WPmcv=XpmZNedmw0f+0W_mN1+W=rsgj z45?Blkz2(i?LkHLoipFUXeFDtY=q^Z!|>5&`hHc=Q-Qv?SE`Z)n#@UjV!GlqT<0!i zX;dYOtjR^@epTc5kqU?w5Rx+@pIuzDF!STkXLq<(U1L^A31EeeBqoGEPtL?Grp;vO z5L+};M0RZ#DD9__G$;~{Xrr=FaRwraL!g3LAV&e1#O`AY{sWfg2ja}7YqJT8ki=k4 zgQxy~Fz1CMId5U!-@3R@0WfwP{-OOWQy?HyH{d5s=qSL%VY)U4o)>7tK?4XMT|FPU z`CV)ufD|CLggFUBZg6QDXeUu1wmb7uiJvk%EbRCP=_G(&@EnCf^o0~*csYMp>H@Z5 z(wrAU#UnBOr<@aCg(wG4@kd9e@HDa76UlQMr<3!}B@)-~Z7D6-gA~ zc}K2J1E8YUS7{y({@Ao`{^kYKRV!mNd?oO=slp}mR>PP8GE@PH>#I(+ejC=B_vgI- z{#E{e^Hc=yN8lI_^vy2a@7^ydvx!eQX3&t~b*!Jel%aP|Kg{F)iZJ)YZv~C{ z?m98~W5;Reyz-X>A=|0RiS}HNOL?#8?d`XT&yIC$YX6whI?%H&LIodxsql$gmy1U4 zK#J7ZereC)UOnF7(n{6H(iop1LIVwF)8$e>*p*s7wyeOTx?K9w8do`GDlgrm2gkZa8KCw(*U}RcX7ByRu=q`R=_S z94Ne@PjOnU=3V#Acq!PoCblqlyB+?bA!%HdXNzUJaakMo{Bh*7qBKtX?3^hJ& z=g&i1TkqWQ2zMQrMD>M9++D6+p{r)D=3e|huIy6KX%x>Xm&C}hO)Ru_Ya`nT5^J;F z@-E;%hS6eKgE7J~xW+W}DDj=1qqEJm{?N4t=41lFHSo`q2=)nTZPD1_@THchmw9a% zH}K1jiLr2d+en3Xii(tsGe?Cp2X%Qj4!rhhJW1fE>ZUuJ>kxDV#pj%VfdHU9Pi}ng z^SA+pW^Kw5aCGP(%ehUsn)#%kE?Ieqbc#1xLb9p4vF5Tq{0XY=Mg_`iqg;w|id;eI z8}v!u{g|Xc#(!O3M|YL(YT?-5uMkQ$6i&9_k&Jb8mDM6dcH=DU1+S;yZ_O4X@J6ZZDl)AHb2F8e&EU zqI9G#vUZ*p-)VuDAFg6p?Jk;n`n6Osq0*x-3?t_LZMXLE@xOhx_6CkrnTtCxi91H^m|NDCOX+(G)vfTm4ETt zBaaI=&ytpEcy*+)E)f(Lq zD%;1ti7+IAVSh4|oYokcdwBTv2L)T3+)s^kJCfz7a-)2VT1Fo_MSpWi;Lm;3JwLm_ zalGp=PCQg9^@^!GhSM|Ue*b7F4Uq*0O=jxYxpal5M5Zvvc~ei)x_P;!`*CkMm92G$ z)AZGkMU8(UU6|zS+?TeRu)x1mHjvgmE-@z_;vPeAc73#(RLK8y$?9{xet)aU)(bsP zmfxq~A6t}PZi%sx7_hc}@E|49Nmf+#%Gjm`>e-tFUft@xvM)Xxcpjd;tCh=D`_xTj z{qY-%7voc|ZEk&hd(KB#(4L!b{ea`mMqwvh(gX+MjYAVC4```}l<$P9wqn%oZDv-k(L0>FP5{hZUH zEI6n&NbTg1#rocwyiH&9wPJJaS(_q;E6#OJRu;NCKYS>tM_P44+>A^o<2!oleOOjX zX*`))T>^?Yfl5ZL)C_Nw}-rYc?FV=i=cg{=o zD~TzjMCbIwLI@0P>Z{%Pct?dmqoR9O@?Os#O?IM<7z&f0&JjFYy94{F?CU9^DHfa1 z@pq#`RNi{BrP3ajybG1$OMFFlU;erGo}n1DUYe4 z55~S~EkgmBI2@+LmeNl(ew2DV@Ew^?t2D96*PHx&>_f|?D)rrxF+Ls4#@Z2$-pZZk zjUB1sSx0L|$8X2a8;a=&dnp!%3l%Di%qV5;AC3wX&pdkk>)f}|{B3*hH7Rvz6cel9 zd12s)PQ%UJzeTES^z3Z96mnaZx-Bh%kw&$PEyayij;ZO4*@0YpyS;aB-WdtL!B-_^ zJ+)?baQWVzTYLH{zKE{~tM1s?5KDim+@XB+-mi0y-a&#_*s)}ujxzS)cyEvo8EezYyXOIyMgz%KCokI-d;^Xk-4Wo zut-t@#07Ay+)syP^uOrso*GN0IZRj1N_Nj=<@Sbr`?Rkr_7~gp{CArB|1RPG=iJDB zJ(->f$&|U4;@u^U+l`ds(N8K#TlTG$yJ)jD!6i$!N~W?B^Q^rQ1}# zY^^pJ+B6)iWBUioB{O0CaP1Q53v)l@-s*?6$Z9mTqP4W?essd}dpc9`#7AFp`7-Vm zP8psbY%Ya*cPtM^&Rt73vzs?rs7q*(>l`gutfPe;8SFu85bCos-QV7*>*cm*;$OM1 z_hRU{zEbYHAEM!IqIK4@q=_fP;L7u^c)9ESBH=$L%l`Mk{ogPIvN7cUCU8be%(k-P zcBU-=HQUFA`-X8MizVljz5j-U{yzqkWg9BtxH}C7eNMRdzL(Y!-4#qsD==5JWJ~Pn zx$T(gGvz(?N=AO5Cqf?Ey04*V_c;BTP*}x-rADXH6w;>-cK%_0Y=Dqw-Do0OK-)3+ z8z6uJ0YBy0C%0R|Xs@DwmHhSdxkzSdM5N!fl$i|D_ zu~9vQg-NA17NBVn#ZiiQQ~3!_!QtW7fjd4mV^_Amju`IrE~JON1hkQT_UC+!dC*>g zLM3A@ilhluyDtq6Q|OHpH?tDA>Lb00F7c1yo7Q&>b-k^muM`{pXcU7x(m60#NTTWb zxT(I&zrM;f{b!K$?a`zJdVLbgL(k8O_;@?1NWm=OLRJOJql2tw%Rhika5jobv+O$1 z-@H}CKMl1+SaXTWpFg()4o~-*@w)c%x2`l6je}}Al^eNV4Trg;?&pP>*yp8jIcoIE z1KRafYs}_;2&Xo3Xo9LXzb|;u?6>!nr9>rX`7!&1B14PwXN+_Rq%>RBW`|(4$4&Fx z;5($~ZN7dlXYSAa)<(`Bdd#o4vVH3rbm|#NlEQu-5sJ4t9MrU3D00fzR;d?umZlXg z^SY8K9ReR?d|@TG!_2b?d8CA&f17O{+)hgfgy7f51_O6C?on#+(ODv~?f#tR z?*AbW#evk#+3iW~4z=RDm!(oT^RK6H&QA6nndD2t$LGG=NamKDEB9~t<{Rd)E|V-y$8t_!MWcK=$mdGU~A_jzpbyxRampk~!ph zfSW;3-%WW$yVxVEt*h}z1~00bH~3b^a|99jsy9N`;Se}}_HsGUwJj9PbG3zS{A8bu zD8JcIW4rlRk0YL7ldP|lIucdGmJxl|LfX5M)Mav>qCd}!iCI%y5bL;e6A5=W3`yTA z!By1?XHpKYXwxT1;&IVDc0|uc>m#gqWvj{A($>u_WXyGEyt-<@b%f{HmAX-E3gdU- zN=c}r?Z+-3YBdN62y6G(%$@W*6H`wwOpw6^nLaJ7{0+Ap#20>AA>ER);Sm*f!8u9( z)@(#yBi%ClBK@h!n!zomEO%rA=8W^*skJ~vS7+ysE0ovIqZ~glj9R+~ZoH6ns*nxE z5qhF{yrS*&Xyduf_(^^D)a*krbD~iOL9N8Hd~6XtuNE55v*9Yo0(`gcY_(W*LdT8R zwa~a<9&2Q&lsO5?)tj5_r3RkoH0s-eJk||G>`$z&E=Nh!tjvjQ-6z*y+MfUMb=7=+dY2V76iUuY^Lrk8VB9hGIlJct z3VpK1dxa#v-K|AECs0-6Fnv=ENL@Q;Q>fTH2O3@JfBw0=El`No#b&-bc&Kes=G|J; zhRsVm=E@9;%xay|M(zzr*GZpjUt75+z{mU115YZ6IE-R37ti4tW4Zeqops(xXC?e?JzD0LUQ?$$6JW@Mtl|9b;=@A9pE{X3_j|Rs18o zM8`s|VC!p+XECdP5jD){c}6LzlKXRG4~m%tl7bcjV@$?70GqcLs6jEUfK)koO08E< zrE34FMoo}E)ESXUy8^`1-G~)X`G7X9{|F%Fh zXA}qJyYHUF4L&N(4RwbIY>_<&2yycsZXb%B?`55~rSy*#AYJyx3>9<0ed!O-Jht~R zvK(u&Y{@unEAN-oo0cRbj67D4o(*m?AId1Fzo!XjE``p$K=qI>vLw=#)Sd<$jWCL+s7Hd`OT6d+XqTA5^Bbt2DeM$f{$6oo9zO6T=@C( z^$TDWwoPdVSPJhG^6idIbyvw2db%u{C)Q;nLip)T>RZ_XW>9&TK3hLY-sm4ADlQgt za*xZ$vlzC%4}|ZD3oOkZfr$z^KBk2?#jmqlUNQC0c~p{;F)*zY6(diNK6+Bf7`qIoelsqoEpHtKeEstL7Qn$76MWiGg z^4*XNzYg1x#kCs>j(IzIbU7XYfzif$b?Ge&@4xfiA9*oKoX{}eK&8snw#anb>Ck-o2-#-iFli{sr7*@tJJYH zYgmErP5bx(ncS{XKG&oNXht}*Y<<=7BxUcT;BB!_s^5*kH6I~!b#Vf(+*-PrZH8s3 zSxuNV?ht#lF-lO4Anu(Q_)rYxJT8X%03UNPSrzGJE2$t-r^&bQ)Uo_1I*ux}j9ycB zm}6HYc4$nG{+4PF9oSGWN~9Q%c-XQN9PBt&8wGyjUysiv;xr26y!e57U_!7Jl4q3k zozI8HZrLP(p#N`gUPbEV0?RA+vx02zhL!*m_?ZNR4K~O4AJLP?*)NUa9I|%pgpi&$ zj@~QZb=?l~JZdm%J|(qVIM^Bd{qY<2BtoNfxI7(Edv54nZ^`{UMR#8C6EB}FOFioJH|({4SL?ie9eI2?_WfMQ0>0$m&sQ3pe0eF^ ztVJ`rf9`2X)DthZD`M^Wx0^TJo^Xb&r%n6qJKN;D_m07UuMx>O89IO8SSxzaTVF{f zs}Aw=Y{Bke0bFFRodaFy)GA^}lT1p&X+QKG_q<_6;`M57BA^^1LD|r)TwJa0o2-jE zb38Wdfsaw5&*q(^`d;H-7*V~$$JP!DbmzDuSA!3A{zvF{0ps3J>m{LW5|T- zjoxcORUxMy{DXAfl2{p%Z^lwJ6LX*es?$-Jfr;GxXP7z9Rpn+HuURDR1nd3H64oZO zyrQhsiVx>r@&zz%fye*S9jJ`W4js~&lNLsb&QFVo+ zuKw^xJHbK{4r*&qQIpaqzO4R@>1=V-fTH5XMol0GU%?4bMZB#GW$If~N9DFTnU|~h z<(Q16|L-TGWhV~**W=?Difgv#GV_YX1*v!Gf;2r)Wrz6Xi&fp4_^pXG$3IU&(3yCp z>vB=OZrQyxKMmCD77xehpJgQ0_lN{+XdJaJ{><%ZE~85WS?mRh`~2dfH$ePL-EMDN+$AEKv_(EGNQZ5)l53SZ;XwXZ zBwCtM-JOj&rMcMsp(<%MkZcshYYiXeAgH2UH~8=!9+LP6!*R0Cp>Aa*fAo=BCds~= ztObxuAIF~OwM5;Eo&MtyD0{}(xUJes2!@e@)aZdGbo^|877Sk0<$w=-I=IeDv(o66 znrpSt_O>ckjMOk*ppwBJ!pC@D7o_;|C^Y!x_RB>*LedKs(PN(A~}|>WAxt*u^~+kJsTQ8r@?7=e3K6SE5+9- zuqo>{PZc?hWEayeLNvfO^U|XKnV2%%oW)o>264MSm~GS)ribbh&OCdi-NCv>W5zga zwn(@c=FfOEAbxt_^IdP}Ee87lfhLTBYRG8=8duOI@&3HgIiqCq?!~Q>u4;fb7{tR= zH2l|F6GyJ;R22T6WZtvjmpG~UW?$ULUn42SLeM}XtTc^vxyrUZBFn31D`-<4kqUl~ zwcPBB-|elQB~<7L&=9D_m>5@cy8eT~D;*+Jcc>XI-Z&P?E5)Mcb@1&B!X;#Mj z&$`TNjyVY_huAA1?lCjGAj5FluP3Wcxm5M^x%2%LngLEr6y=f*E!qD4s&qzTN_`>V zMo6bvP=)v^#Q*TR%|Vs4hxzK!s5x;esi+sl$mk^|*DUMp_R+7_@CU{wrfx?>DZie> zW~%+jSdBxJQB-*&zp1g*gCKe8f0hJ^jRKpdZlHf`>?RtVVso;M8vQ>6tghws zBD*S&x8^dV16tg_nY#YH(jRhahANqA64t|al|-sqB++5Gaxt3-l}`1n2Qn@Z(IAz{ zi2y^e#$7bol8g)fCuq>y_sze$^maS~ZA`Zn2ivFD{KL~P%P5#u6b0@farG%zSCWEL z)hocG$W(AYnCEQ12VX4XlpxK{$|ySb6wt6bau;4V7D%4>=bV;Pm9_3`8iW)Lfwy|_ zrR>mIHn*;NG&h-}|KK@**zeO@@|{`Lip%ZOukS;!LnKE1Q!k?)8!9zuy5C9iSQ1an%TB1%kJ+k{^FF|!vESP;)27Eq0%@`;d*ApJ@N2KWO%lczlAR>A#Zqvno{u(q% zrT@n?V&l$(TE`W%an8@HwvN2{yhe79qU{-unn6$~HJZ%zPOCzbmu!&*Nhcm8{v_Z0 zm1+=d)YfR04C`G=S%&nPqBvxq&W&lJK=WYr)}oH?smI7!p8&Oq&E)&Sn+;+n989!A z*+mMR-hO2axzkfnuuCcJl|J3VzzR%_7S#X1VV*_)HDPPHEjjm0eBPH=LW+GoMOm1T zgp>98Qlsadu|$s;3<0i)R-xrGA<%$Z#L2J$jrz+u1%s?{@m=WDHjkV|j7Cn3^~=-=169G-d6CVj=7c+r zu}!<DQPZ)7b(vU$O8#*#N<1IORoHAg+)Eq@zJ+!-Jr_8IYkDl>N@Yfe5-)-{9L zDh@|1h?BBe`-ja&Y6W^m;!c83)10R1Y(WTUim8=-Q8#^$J))8cu)9JII~uLsv^(Q0 zA?{{^#5Ew3s-aTZwPP)9eH1uQ$=uoaSLg3N%IxFoQ3DfYG$#JdAj_?tb3mrvbCNIO z+d9-0eCXEQD5R(rm9DHG@wNn*H{`q1NYAz0)t5Unn@DPRa2HJ^dgbuPTBh3*Yw|v# zv=2F2951*qf34_cZ`*)=f^4Pv%uHy+gRgZDrHdro6`}K*GhAff%5jZ=K!k?dXJsq zff{wUd;f_6-?o6fJI<4p5Kogn!|~k99p%U)*ZVHY7XI8&z3T*ja%%Df#v50zT^Acb zNOZ$V*VHMi%rcR4{BBg1w^hQ^ic{l5Z&6i|o{>S7qDIOLbgN-vO5b$=^~r$}n|@G{ z3Sl1x=PnjR$eXj-aBP!-W+7IyTQeW4*`b-$(wxbUd~P#4|FBfpud(&E3hO`RD1E@L zOjC-QJiJW|)Q4+)o}CSE!>sXPQ(EcFeRl~7z&%pUnD(DwlC+3Ws7W#6E;^D{42 zSs?g>ZCq76==9*V`2y`7$gNf*><$3-zVuy-mi^)2rl^ny%-#Tx9})_9_<>Cw8>k?< zSVd1~XkYdJCHL846@;4F26sAQ=W?G(E7umW#t5D-lD@Y&TH=vs%37E(3zAm}gOBzF zKdD^}*@d;^zdTkSEi$x=ncmshhy8Ssy`4Vwje~P)l1x-pe<7rZ8c6#`5+>pl@6HK*a@h4-%e3CuY4_DrB-UxPkhf*p^4=ErVN|Lwjtvb`Z1~+w!F|q}04w%ml zqy|4=#CGwk&MLpIdz-suB$lOK?0m0T|5qz}jh7S+%O+W7Fk;Y85ZQXBu4DhK*ok!w z5~XfLY1jPGJH{o|D&l;dD^(7VFdDO0|M)2N{DnzTVfyU;|9B$B%wF1ZzY$YJ)rlra zvLFpr$$aj{K8MViy`C^dZVDoNGZ3IB&o;+Q@84_}9QF`Yo>19Q%twW|0{8cmr~=$% z&gj+Li8+>xByPL^ZQ)4sCS(Rn10|Yil*9#W-N+MHaNa=w|6AX`F0Hx|OmMJG1+PwS zt75HVEmmh{msBFM23U|^;trkB#AwP5z{H{Vd8hENQ_~2NsiRg*Jm>x8cCa9vT2kGh z6qYZKYW^+YH@%uD#1lPD`3~>_$R!_Owio(mSoocPI-J}MIzzs7YJL3O=bKRt?Sxd7 zowF3ZVW7eMmlV2%LQm2-86OP$a%O)Y(0@)u!z%N|wF13B@K|Mky#?|G&e{1rB>ap-X z6E=30nxd_#n0VdduBa{t2Ng$p%93;Dw)?cT5ed=t-u(89`EKkRnTXLF% zhpL}8$|)r<7vH7)7!Cf`?T(r}J8C~-YopTUl)Arr*^PUC*Lol6D$*<@VRpqFD!xG8 zwxxsG1w1s$l1Y*>-~^IB*8?lHRa)qFkA+~;s-fJ+3yS=%m@r!?_duuI|M23Qly&Z- zoHpD^qd8QhUY|>+T}9-?Lc#=dnu}X2@A(}?a zA8$qflfE$>#>SdId!GO}jNhOw0BEzDDS&NMQ`@_qlbMqTGZLv2-0`kfy;pT2&2~WYpkul{pmXu z`RskBHp`YwEZs*3sxW!;P~!dkkEteZr%^`ebU-P}0lF|l=SnDAS=u@9;u-KFp;&~% z!|6|+p|6|+^zb$=p!zSu@6#FTB7lzVundRm_-DRx9|ZPbetm$bOn7XJaoF?&-^xt7KDTT8mqQdR_wWg#M(HFXfTA*3E!IugG!zso6)ctS=Zf!W6P z7@qeZz%i5pU{C*XtGQW#<*&_H4LQ$x4MUF4{XWfY=+cxQIWn_!Y(1GCtcQ0(@0~sV z8UWAfuK*7u$myve<_0(|64T))Kzw)kgb3M$p9rp#V#R6bDTb1$ySmKbvnuskC%@aJ zm0NRHEZRLh4d*;gf4 zm$gf8-*Vr*@wf8hT6=qqFj~X9jNoqix)>h4{TW46OEC|hsyw<1(49UJPy%@Wlihd& z?qH_8!3~^Qko+~%7;csS?Nj%9GU}(K%Vrh@@H z3=Oy#z{#oJn^~RPyShmId9u2y%wjtx@7JTfuRlGAR+i!Mzkv}jUB5^I0+_ZZR%btP zVCc1y7+!$}7s5an#)5}&kv8wnpR^gRG_C>^;UfOuK2)Z!sr^BAceVx)0qEb_VS2wZ zvIh`dQ3e7Y>ngTb(cY#H*+|!pYXnKJC_OW>uRWApYXuabX&dPJjfaAha!i1t%smX_ zSLY1m1Oa7t(3oMXA1y{b^a=BIc%dhZI!(~I|XSADcB`($-wK?Z>O zbbY+5yXIN6IkRWKXVtl5JaNU=2*usvFRf9-F>UjiRgrAW1X22n&AasCdwqboSu|sT zFuct{NJO?a%1CRkEC#u*?2$HuCaQ&y&7|=?8El{`#OiMRs`EPKIB>%N2o%%I@7ff*nlW|V`N`z=v9A{p(K&< zln&P107bS~k>dosk>G5A>BhxBzst$H7js6;fnBp%^htPLidh9ne+#y_@r;XYKc8n+ zUv14H@7hQ+zG?*nZ^*O6#oqy3qVn}wohKo7j3%=@Z%n3Ej5u>|EDZFS_ZOpMdER%M zDZLVb-tg6|RK?P#sT1gpXvOyytugTLpM6oXbEr1q22c8qZ_bPib?U2h`>rp%qK=;9 z5PC6RdTlDOttPW%NAD#s3;8SSjyXWvz1{{VRjEGG+U94TXTnE11LlFPHt%pBguhcd zc6!3^$}0zChHhSrA=$%1_=q7St)4UK+jHB6+r>Yzcd_CZFs?jgE_r~HUki=sJgplv zIwv-umZleX4Sh(%@gQO38LMM_!K-;1OWD26v)+_+Oz}ely^*}Y=go@c%@jn=!*e3r zxjISX_+;XZq-g+j%U+H|Ntlv|567(8t}0jU2F2KRp&4FAmkB@IAZG&Pq)tICKs$g* z2oB1Sh&fhVtDf3nyJV?$k7P48XYCD0QlI9!sVe8`YKB{e@4L~QK! zm}XIHfREU)_ge0pmN>>avhOUm2NJ7 z#ps}AHDo6U`-*BQp~LhXUB~)J2{CDjHXqsD(()twE1Gn{gp} zE8YgyfBm@9{kB7BQ^kdlTLYHdu@{fcBg4vCC56qEpt~tJsWv(-f6{Gn6^7xa-1w8A zyqFwm6o;Od0hH_xfRRn&=5+Zqk&TmCB&PeXvoUhJ;^#oRKfrR6nZ0ZP{1|1@=*f1f7hM&l@lg93j=om0CI5=$0|O+{NHj*aHZuS0;`Q5tY|aL5FZy zN*1kNivy?vrRQn(y=A~FK%$|NE$qY@CmP#$~=h%bYKZ_iz z3#C%BWN-6y-qVmaG;|_;!)+J9&9Chprk_DSIa>^D4eYYL_l%>4KHLDERyD^Dpw-oG%H61oL6(lS> z3&D!jlCzlraoosIEcm`VN}Uk_qe29N^f19Y)b=EMFrFy8FzeSPaBxNvDnijuRK)Lo zj5OT6hgupWDi+dK1CG+CV9z@b@WwGS1Dfg5AhF)RSpiZR9%beeB7J`UXlh`UkBl>UG;z*R;49h%t?c4> ztp@g(FpAd&N!diit5h(33Q3Ka7foEM)kelTa&0uI3H_-XDPvcOFSpBnIl^gcuU;;ixauEZ z3w;%}3t(StwIHO)7asinD8lTD>aQOcDEfWL^<_2N9v6@?wnIboyPi24S4&@Kt|p^w zC3{JgF!zuaum;=#l&gZ+lVja-fYQBksQ?s9Ko_)KBxwFvncDc8b%LKuTOCl>Y(MHg z2x52OHrJOg9QO7Yx;UN9P8?Z6j!4lN$)(16Tpv6H*hxkh*fHg|)Q6HCSHRP28q$JZ zOhrp701wxbXSf_w_Yh`NQ`Sm(-*yz_ryxBP(Sh0M?;o$AhpP=-!j%Icvou(IZGBA< ztrXtxy@3(1lf({=69RWfOCcIJ8^h0tz@doyeS!Viu1ngCuOS#OhWP!{_9K6fr*XsA zLtJ~RDSJTd>~5(VOcTt3<@PsgCofKzh!#h$X}`X!p7Bihv}E9cO4+2jj$a6 zTM1GzI>5C@5BOlyflW@e`Nf*uOG0bE+gHuLGc>}Fw8wyKcU+gje};AdzvBu0UTw6u zVbOIswgqJ0U=0V@k`B9YpbML9e^nK$<;f_z^0&k&3|Z|3WMmRc4<2CN0gt}C+!|np zrxUu!i{}Eg+g9L3rNc-98SpxQr>a~a$F`Pig#Y|qy#eHJ+2qJIlf$jo^o=uXX3h;S zW+9aR=tU~^PfY<=9UPvsD4g&4xN$_{~;lfU` zc64%o(Nfk&k4_n+^*F5kMYQ(>^B_$fma>X(|bH=GNytp9yF7zgZG0r?1E*o-h( z<$(ZS#`*2dkkEvsW73H)cyw5#8Y+zFCTF(~UXE#@RBzkLdA5k!*}&Ke?l)Zs(!*IR z&NKAoSf122bdMdzWol^xZsKgTqtsrSl}`*T{oRA76W0Qe!tp->R9`cNvA8+1I4od; z0Av`i;)qg>lVRzN`qOioxNp0cqC7%{VcdrY6(s8ui)jgPX9RpouyF%YFpxA4UE{_y zyrcJB<5uW04iD|}@HanBuN>;sGTi>Z?4`{ieRpf+zc0#{3~bo~&gH+F6M|?Kq>vz- zLQ1S-kFqSTwk`N%gYB;x`ro&|wggVL4s?U4tb0NrS{xtXwr4Qpno z!N;+`!AB|@iha-h;0Oxg;c^Xj`?6)%|5AOZxmjp#5W8=t3a#wCEEt^uR-ny74eQpj zWjoh@I@v!^Xt3$OxXu69KR<)g%fJ2u4u@X7%LE0Ae;rDR`R@P57Z{(wHJ~`AIjmC` znfv7ioA;dmjrZ!^*SI@lUquXLW^ezAWvy`N7H1N==Hp8RPy5yo9apO3)oP`fJ!y#w z>};4D$@B@xPAz=i+S8S^uM|1;PN9sKPJe)A{O514iBJ;O3Ot!2B7jl`4v-{7L IPNy#Y5BkqPV*mgE literal 52207 zcmd43c|6o>|39ueE!rarmF&%ADMQLy$TBn5nMql4$~p?!cUq*7G{ex0>}Hq|B9i^I z$d+x8!cZYwjBI0@@x4Z8yFd52@9+2b{r&#<^?3AfkoR(3uh;YSTrMZl)L4JlcH!+j zJUqJ$4Rp*CP7`tQj%4YC6 z?+t@XUOYUz-*EqKsB_P;=izAzH`G0c_P;!ty!G+nVIR({$&;78b8Zg?`P4kF)z!N#QPM1ZuURnMj zJ?K8SDQ(xs$gun1%c`f1Lgnw6mM9x>_Uz^1IUDKx)k`>>mUlyd`r|bCej5%;pA`XL zaK0M7m50aFlQey3Yr4x0(zK{B56?~M%!U@9y|j#1CfeM42$DvhY)yxfq$~4x^6;b? zVl%vsgwqU2PdUGUZo7;?T><%{- zIM2Uow-I~`N&0+f8~3}5b=*rlR(f@2uQq1C(OhOG`1I_3>C;=abHIP`@QnYW&0TpO zQ<=R`?#G*|w@kVB;pyZJ=WZlVn(<$^<6fF4hku&@Pg=7-v$=GXA*VK$Yy|$ssHq;4 zOI@KPPhI;`U>KInb8}`>`bM7pjTKe{8Ko-U)A9%aDkM^rZ@^ciEw}eja9{2fe z?|9kBXTdFIdt&>8c2l2O9Pef-D}9cry0>}mlheU@hM#}92Mw%&=-3g#_NH4jhYCa{ogru~e{xKj%K23}jVOiJ0ohvrp(Jz-N? zcedQE^%mjNZ3WcM9fHvp3J#{vkfZKGW6*^Lk)~3S`w{W62@qRavFXxI_8h}|tw6ft z_Bn<2Z|6lA4(HhH4LtFixZ5FiL*jWzS5mQaA7A;%ef=i}J_A)+HWe#8<-V~SZW%0v z?QTM!&+$fKV$p@jrB3k+mK0ekU3)mXOXr?RW-UuLbMp9rWRD;_bOVp-DNqV$rz$Ia zWL$%>RlPCgKT`GElq=?UY|El;t|8OSyRNmq`Zin>m<5j(uwCY#c|<#x`rtsW*;;^> z1|#H%Yw(q-Ua5`&6`r$on?ZTi3nW1L2_(-S*UP_jywO%1Mi9C#ESU>f&+N##kFGMu zTti@@(Phar6KO=(v_e1Pxk5mrp+Knk-kUQ#po)gJ*nS&yjB*$+XKyhrwQ-NBk5|B` z=c-`xc1%=R4N)&sXZ&cz$l6E@l&achg*L&{!pahlRLx;~R%i4K1bC!2aGxS(GWP}D zP9r6KV$CBb4pQgVU{1aZ7tS5U2a?I~<%Swda-)0B5Z;!NxTZ_v3x|_vW!@4(|aAee}R$_R{4erQyrLR}T6xh7-*W<*p3#fkTJ?F8xV-p+$4`{A*QTne`C+lSKu@*{mR4+i zHwjv{nwU>54;{GDIheN3ySAoZFEP}0zs+>sN$>Wx2bAO0N>PEFL4)xM+Zj!aBNcys z9;$}fb67L^lzPo>t);DJw{8V*n42uCZ!kAkPm!gZFPA$;TRz6)$_d43|F$`^)XHpiPXx`-vd?n7QG&!DM?5%}i zOFyB;YF5;B^^bTd_^hnDc6M7`NVI{LgsMqY86y!vTO>_lyQ`;>rW{uxw zX3xD&Rxo3Qten@SU8Y9$X44nVeZ~^?>3b9o>jxoI`S#^V`UYHwhOE)H<}@YhcNobf zZn%TExzd}+d8`yYPQOrVvpkqEUW-$xuq}F8Q^Rxf;RevXrUxob*=<6oQCjT4P@6cW z06mtvu~Sh%HkYaVST)4smynV1m9aZs+4|v-U2D&7Yze7Y@h|^2`$cNr#RwxzrTH$o zj}v3tcUMQ3|IpaNQyc~`^=A3ULknezc1Y3j4|-gJ5R5{tey zwMiQFdZ6aSozSIjkIvbSJTXE^OmUhQZv?jGuqpRFyN$V81*G8x7y%UT<9!p<9Aphhh*!d6!} zmy;KTtDXzhoE5tHa2t5#M?}BU?^z@6RtM|jO;XHh;*eiK^^xoc2Y}Z=- zuGDj_(Y`0-1KQ8fL`&vT4%jpHY<9c6ULLq=8gyZZ(w+gwqG{Uw}&z*jgehb?Bj9-7Anj*f8mg>Q^+-Yd-ris!S`ul zM}C|*9N5S3?%d~Bmb$#cz_Qw8n5hP9?uLum98D!BRrb{T!nsdsGHnA@Xk7lD=H#g< zjE@~cXV{mzn6SOyrgOrD_8=*&rQ*tls`)M9+y8jWQkAK+F$)c28_gaSaddzRW+!5Q zDMlP6Yr$9$GSENbyOrH+Uf^M=8m$@9{fp|POy<~q31(K95NBIR3Gr0{urt{^i-Z;Tt{OTcg?rQon{kMB#bcL9-RO{0pY?gxt zqG6*l2Of|+Le)u{UUlK0%YxoN)(%^0n4F7?t}D9$mtQ(rb9&_Rc*w8A-5n=_ms;Jk zgVSjk+Qzb(ta0k`Z*;5NcGC@Q`?x)$n0c3WjQZ6V{&qYn?2z`F4}0;x>7=s5cJ`N- z6{8QBu^9!dz?+(!MRbqfYsuyJhhy9HQ-~J=`tiiMLBzXu+ZyF4O|Oyg`dw#hKCw59 z2efTtRjlde%rQB$ccIVGCDxof;9ef<_d@NX=~HL*SI~*HCkktuwdcpg=2BHO_6tI* zcPwWRr@p0VRbD@o{Nqi#_Xn0<$6B&hf^X^>Dd+TsFlWBxrNNVPdDleK_DoL-R{BOQ zF)t5NN3x;XQsx5XtBJG50^B{_!L3{&+Z=O4OcVv$tbi8mld3V|Fjb%xb^8b_UOxeYcgNV4yiskvS&Pt?}9In~;S{|5 zTBP;TRWN$bBpKOP7@|m9=&f_3Cph>21grB zcBLQRBmDJSSE?{vOT%53-RiTaZOOJKhLc_AzucRcsaP9aHR4~s@Y@ydH~nwK6$NB4 zoXdo?yHG#+ZtuAhpxV*xcT*}Jv`4_wRPhq_T|h6Fci(cddoLfhxl zy#jYH>Q_XVQ<%>|_Mi>F#O-*J)bml1Zq2g{O&c8KmIKX^N=J-CvbJk){+;JMP(X`g zlCQpPOoSqy>eBFUX(Y7GOxd})=4(^2QRaMz<5~iXw??u%SQULH7NKsZ=lieSf0GEU zp+@oN)|0im&)76o4OqJN|)|k-n1(M zm4zEUJ|FfkkD@w8gKVZU_y~fa$u1@y^HLk;R0a(nfIh#-n_#** zacv`2SeP$2X>IJ3Fef=^?1d;pe^ZU;*7;9i{unBLfL%8uxnsieZ}q#V-F1TMf~Ah* zpfQ2~)dLTo2oDrJ9UeHv2;@DnmlhI1|6IU0k1FtgayjIxK-G_#KoZPbjIl7dLTwFg zFe1!%fH7C;;KO~#1Aici9L6%sg+QAMn)9=+&_AEG9PE2~*HVj(cT-JFM*qsLbTh4* z)OV?8VvcCKOEW?iB|2AbisdD)EgaI;sqxw)_tNQP)$BsW26xx6qy(h@T{rgYoX*6x z+r1EfKg>MbTY5mjeb*L=w*hnc^F

$qes=>p7tYnsR)3^$@p2egb37VDq?OZ1d zCgJ?*aP$-1$-ZSlxun9|{r(v|GF7-P<~qDHGUAwm4#AxPxhh^omf( z@`*l0x9aVu@Q$>48+ARuBiPofHju8;?UtE$t>0Tws+m8U{#_&`y+1Xl7>!cX(qn!P z?$&U6#fWxpQ(kv)vO)VanEN=>0axI z%2OJu@N1V_Q;NELu;OjiK*l}W^dzkyD~c6#QH#A5wDjOQHoSAs5thPqA3pKuU5Ywx z%i46lDavQwO{JqPwQo?qrf{^9vuY{4)a0S`*{ZYyF_?HptY_())!g`Zj8fQpam!Ns z%%JPDjd|V!kT~jqg}zz<{?vGFP=e`NL7y>uZP2&pnfLRcU^YIcbHwY-*pF(jf9ddSan~|oJ{hiKM~t8_CevnDJBY&i`M8F!*W}1|9b0Hn<~R; z?^2X-zSl#Wcw44Z86w-de75eoG5M&%x^&VtaB3mZ`8PjiT8V<|jY&ElQb11=?HiNd zwR?$Uhl41@O7r*z8L;Ongtd=F8MK zVJtu4KNy=!tr2Rn2`i_j{i>zr5OXLI&0S-S@ar^{81OE05JDRsJK42=AU!`K<)eciPpe z=8hgG_(`0sAdUCH`wZ6!-BJrxLbzi=K`T zoYassdrF7@#rue-(;IbYsv*UDVwMIMKNt1!m%jJWu63VS`gHEqWquVsM0Pd&O=w_2 zoP^u+Zw~`+<@b^4#*7()nUcFd*&%T7?!5O(`ruf?T4ju&Mp0iwHyvAGwzlTRW`rs9 z*J+hml)Y7%u3={RC|D$XBBpD-yqC{-KC{BJWIV1@9i-CyoukB9m|f|c!aOl06QJC6 z`w8r_XnwWUtl5DuSKXZP1X?VMyqP7Rk?dY=F}jY3YUJ&ss&mX%AHqgfe;%_NNU*@>e) zu40V-HquU~kE8d|)X7n03uzms6h)hwKd8JgW0}nPY5Ua5tI%Hu9oH(XbMIYUPVyeX z?P>qWFI~olRNHnw?QcDu{xvChMoLvsF_eR1r)FMGJ%Z#{NEyByCtAS_H}sxNA=sv@ zqH9JNCR5FqQhXECL_y((@b1y>|lxUeBBjw6-gDQ`7M7 z_b&HjC5@)oN&ix6_POe~;E{g!?U9dILCd<7A&bWP!C7W7(QWx_{pV~>;Gq-uDK*#-PmN80w>_Hnhn^`XkH4v67%9(_UmUjT-#&EzuFLQf?rG4TiN$@BNsv7r!|QIiGyC3IFh`WDs$zbdwvxIUu13_-!3dZ7%`n?)Y~F?MT8FU^7(3iBDL zsaau%JrB|t6fPKkZb5&xR&g(X_2Tft_Er8{RcjviSCo}mYXQ*am){_PZttUu?divh zXFe%UZOObQnC~Z>RDF9(7&AXDxkwm_pas@$BNzw>|4DCXyciAhE^MNv(&r$*wk(7w zxlqP9V`44j7-RZwx^cwIwmdojVCbh zx7k-A6hIK~CNx`r36EqVN*0D=ipNUwrm|U!^GiiXqeX08hS-o>?nhN;%d>5g1d1_` zEO;r#lID1M3!pQZzxyELIAhpoUrmj)xOsp<7g==7DA~8{)g=0d$=VNg%8=*4JBt@> zgo^%y_xBI%oSWHW%N!abRjst&bY~dvNr5$&Adjb9HkwFu^Y*hDx$9FJ&iPO=^?~=+ zu@YIz3SvTVwU5yHG<~1e!4dgQMM$54y!j&AC)N%4z=H6mFqlHnMj++3u3Od*l+a=9 zm21M%7*F2mnb?7|A_*6!EL+6qdg2N?1S%HDA~ou_-zBTIGlIqmbr;H$Zp|p@e-n)K z%fB4~A)h!|`MyP~ne`f!@1l{{ST#zfBS&;VpIxIGu^j60vf_EUZ2og~4}{d$x7xtr zp!F?!nSTG9he0e=am&`1Pn`;fLDp>Y>rFV76Y)hN#ewSN` z^aCc=#<2sZ>v%ibm<*keHHXvli=Ai3tKGxKU-ag60@L6S!?#MgC~fM^E&&ALJ|-B^ zrFw~WF(deI9Q=*;{Io;I==Yk5o)grsHnhmZ=8X9!XwA+tK|t}&H96&_)h)NA2kl8c z>$NQBz409@{;REp*KnQN_5^xC&#)t_DPFnD9x8bO1B`RvgU13*^q1OS)UJJI8j1eV zsW|+`+#!+>N8Q89IKEJYleYbF(DmYrGoD0a-!yAP2{wC$aAFm86Omn`*HNKqC=sfe z5V+Q{w>)qliD9zl^Yw6U>_Yn1)}*P0oW(@Q0HBd>W^8x@HFjYCJ}PkVmCzrfdi`RucGXWF@e>S(vcktif@emYzX6D(xfrVY}JKKPe% z4J#IPu{8m`r1mdZoZO*!o&pq|d=QIVm~E1^tLb>&{x_xak5b>;rT3K0yO#g3)i=$K z9oV~kw{hcIajGCBrcdvcj4KL^=HRmJBw9j3BOZhTbpX$PH)#sP;aRi~6x!^O5bSb^ zNx6fEpp0AgVv1>SsaLg0d@&}t;8?X}PFQ-;Z#7$=knDcC7V{&^L!SYnl=3UFLfOQ(J(-(7!T=;dMW@NxvEE;&! z;DSylDK*U0j4eV3bh8+hcE9UE(-E%3{K@+V-ICJ60fQ|6e5bqp{+&Ad_|mmaM3P@! zbmy$?){a`yDZ{~5B3!Msa=8DUp91p*GY=Pp_Sr_A(S`3IC}BFdIC}99tLVGBgg9D^ z8faUpOD+HQobBA7tWa(Xc~dzztvLR}ebd(VMI@L!3lYn!_1A7L`><+UO>kTIqAz~l@8EWl?K=&$aLeNc@M;R_gbB4;2?SaoLb3^KJoI= zI}6QPBESI1P{NWM8RqHdvu>aFF#&e5&ylK<-2j>Nxmj)f`ylt~^99Wp&y9qQ_S`oB z)7S0ka zbv!p0_N)gf?s)^ob`JxOikk|ipPy&>Wa93{WGX8>_4`_E-;?XzD#Y*HQ)2ScR^m;b+_I;C<3%~IH0I%$3Os3c+>EfZw!+Gn-uGp8 zta6Wc?6&y3H94V!Dtc{2LIoI7j;njeyY3e+n}Wqr3J-1JDxB_Z<)1gT+nRN>gUpW> zIH~pc+b)s`^LpRDCC)}3)h%4<&v=@=wq>53`ek20lur0Koe|jaw&gjtR3f%rqG{|C;ES)KDP{!Fe5cx}(`^e4$20 zK?$^6-?C5X4p3uSzLxX0=E@nvo}%lhp_OesqyAh{@+YyH<(`KzQMcalde65 z%SM6hvFFuhUB@DqF2zlmo;u_dslp(P83#@XOHM_Ds>Ws3= z?xgzpogGQ?%^++{>*Frk-B&6+!vhwjuEQ5BOMjJ<3-uS$2$+4YG)((6*LEI-U0sUX zMe%>Gx<~N#xc=rM_pa*X!%Z zfbcBSQbvms8@pKHb*GMPr?S@am>HeA`lRj0N()(HfYtrk!*7)p<{HwcWqeZZ;qtv% zXc*_-v9och3}64ozOC!fx*>5KIbt&CXuFDKpY^IKM)X6YEK>VM0)N%SW*h4JdW`f3 z7#VUM8EQQG@pJ3SWy0wJ#`1-szKhaF(VNAzhb4;M-i|+Jge@G3TI;*bpD8$3s9=;n z_=|4Fs@*w6yn+#y*S;Yx_a^K7FjbghT~cpuK%&1km-6S6IxXgMPW0ZhEa(PA{u5bV zIeNSxj`sO6dGt<%61f(CJoM@CkF%s=-P(3>v-Gij25~BzL%t*86f6ucdO8@QEOlwO z?Q}9+UjN&_#M2TW;gWD?Kuh!S&xRWDl;S5v6=D`aANdH|ak+xJ3BSnb%8d^06-RLj zKO4sH#X$t6QV&K(=}1CP3u0%6plN{Zos%4&3$cn7LmxfxL~`sMWU^SY37`G)5}8Pc zNm`sag~E+BnMdeB#Vtj8*<581$4-8O2&J?tc0A9uNzmghU|r%S)w1Li z@k??rNt4aWsBgvgjm}y2dRdL`S#wIH9G4Dl6*CWh?aiKIoyH|f<}q#*JS9@Wj91sb zF=-#Rk&YDdB#?32ov~S-t`u(_2Sapb5~K##*oMT)1~i6CStO`q-r#BR&GCkfdhqpS zdU|mtp4T>C77I-yZoguP-Y#2Klm$7SpxYIWKVE~2N{U=GC!E!#j9;gOOO`d#4R|dx z{I~CgKH6cN;60m_Z9vd;(}fKi#t$G3`N^?z0iGS;kuA*yDqw^wmZuHrGx45Ll3i7> zVNnZgmOUIMaNLBhK4xb^nJer8)=j8phX(hSrlBs-ZJp@f?Mj;yVZH$Wdsu)ajMKO%C` zv+I5`*hir{X&)uj^2bC_O2N7ra~@elz6UQLkwxE;OLf`?8LJWSwz@6cABrbj#KIB% zYN!h^ax4bCy~Ip>1`+DQy`g{X_FV$?yJU>Y!5SvmUz$O?S~ka@lrYCQ!5kVe_7;sV zpCEYC4hVpiA@YA;R%c zL<$|bO`!fR8nhfD|7lZ@M{|6asTAmg@5u8c$a7p{1<_?h4JFn9@6g4{QsJMF#J5W3 z9_xLVC)t3J?z!Ovcie`cnEwj4!01xp5LNoBFJ;vcT8N{+RWc*pM|OQeVzp!94N$k$ zF*=C20VMV)x0BSdRC)(q7LoFmB8Af99~MRYQ79SqQOM18;)o9|@nU9Ol)G_~awb?O zi7A+alKJxEY$fx;8G9vDj}H9PKoUgE`?}2sgqj_RdTM~^qR_m53Pw0B*T8p)UWcXZ zRc$FG@?n8fg3XvKlrnP@j)_MiXg$3x@d>ir_twS2qoph^fd~ErsL&M0#z(m~ckUuU zEap$4Cb3T75SdF_PBNq>ozGku^JfwKjwkV;kW#_^_cXMiE2>)2<}eI>1<6|kBi{n` zc7u;BLX`v?264N9rOfSYz&vb5+bpOb~O~m zzN-sKjets;oS8zNAA;l)|J+O=9Ho-P-5N3!RO@|vp_zCG?VPhykJq<8Ev;vzr8AYa!xo%Dxn*7doXEEk3tku$?QP8k$wn5#m65_vZZZX|>FFcn`YvW{KXoEm!w=6u7FKWB)HyQ*PS z(#e?k_h(ZcfW2L4`*Yuyn&VTzq)IPMCX2M~(^MXit18 z_^d{Jb}{U2=ojAfjb(dXQfOBi2tEM{`QXWDzlbZ|O{N;a98Q^+6K9;Zi+gsp_))a+ z1WF|RqB)_6s2GXO`nnGImWKFTWbv1l`1gAgkmTR+#}TBWs|_flw*cOn(KJ0Mm8b}m zb#imObf}aH%%gw3kSMh4T9Msf)i|fjn9<@i0`pc9NaQZ3W|a`)ML&@L^Q_d1}0I}eJSRr zQ2VHK0E0T1P3I?(OS=e+I(Hcz7*BY5Xu99l4fU= zQQ!x4WQB>-}5>}yd#mkGX||&v@@VlX-5xn+_@QjB98%Dk%-4w zz{tY1N9w~bVFI}9myUmKnxigh#)a|>CP3islsMj@9+f~PH;}ky%~^Tfo}B&7Xu8r5 zDd?^H$SY2b2|0QysL5a_8tos)apb8!qGF*WbiJnI1rQl7;*L(B9w#e_eE1|t0Cfm;d{hnP z`58O&03Mp-2SezcnU z8Me-w9A1M{ZU4{Pj`q;8@hv__c$>2MZ3E@Ct4F& zinynP(*Mn*yaXoYdp+oI3tE?=PKBQAn}Hw8e&M*^S;8sME|%c8!+g#hXs1B!6T2{0ZpD)c3>u^8qs35P^_ z;^TcS@eU1fD#?6~iuTMc~` zH&ysXPkl7SYp%fEm-!|mQwr*9*^K^=EZC?LY#78{Pkw~#oHd8ULuCwwoWN^iPnn-I zAO6O1&N=(=aU$z036h%*KPry;NQ_cKIZBX|AYsyban!72>i!s@40Qjgo1@l(-yg`Q zNXQ>Fyr-#1*xg_LXm{ucx#uJJ7~;SEaKI~9@9$bR0{HCzI%n@WLUkMUpbt$Yx?WAe zz@2w-7gWm3!zeyX)+k={#ZZG$W+Wb>C~zoR_L3SZLKl-HXpApbCnq0X)kKM-UKJ`J z07=yz{a6m9#5*OFYc&i*CaQjmvl)FRQb&K)s|eJMm0;TyjVa2YW{5);Zo6TE4;MMJ zXg5JEUL;W^e=@PZap<4*#hnfzhw9Bg`GJucB?F!;!VO5F9Do`8djaxqmNO%gAUgRQ z6_wBw>#knpa3Kt1#|3oD3>PdVs)q<*T?~W5=z~!af}I(L^2%A%P4*IZ*NpG><5dvX z4JiB)p!#)OZS>_P)qA}%I}rKXKLUEV7oX!>1nW{_aW4Sof)QXC^!V8pG>%2&n=7;n z1LTy~HpBZr&1)BLfFwSrP_K%8vq|<&8o7Sfrd+&L4H@^d>H{7y$N;{s zQ9$%0943(tkAGIf6LCWyCg^cJFs#``eVD)@k;GX%&>`E??XI<}PZkf+G`=IH`kcn= zVG-@G)GptzH@GY#xGKPQ_U^WAg=rF{~0E2*>oM0a*IX0*SNW;iSWTdQ= zGTKoBQ`Zvz9e#d@`T+2$!gg>wt_9!-bFk^>{|9aT2k6l5Z~>#?^eO5eylj{s=v*a~ ze#)5#yF+^)JvsHczGkO;)pv{O7Et!#l0bv~5(2mbS7Js20spHLRG^Ulw$8N}6cX2% zx#&NakIwY{N33x<3pO84a!L7+ACLd}YL^n!13C=N`yK%EVatp?QqIVuxidA?U*m9P z-mWA_^TL6?VJ#U1kjowA-|wv;OIrAtNNgm$!(faki8012wt#U0>r@}Z+AP3GkZVAM z0YV3neNQSycjw*m&$>G^!~x-3f(t^zy!KLJ6i zvNgWq$%vug4&!P62fAZ`U*|OiVx5q%u5W56-sVn^6+g;=*6c-H$DSQw{@+fjhNc<| z1kixsl2r}_ye+{IYM4U*cX|$30vH(aDWJH9p{Gy%+TNgg9zWhs1V6b{=QK5-ENQ_l zgmgWyZ+!ndU;yVY#0*`2Yl$B)<)xBne-0pE?)khW_~}YgsyuYN)x-h#ooZ-9@`^>e z$f%(Jw^hXHK}V9Q3*JCS7H(|qJ`YnJFqypu&uC#DD>*@+(mEj4vo=`@VI!0p5(^eWt>mjOe0-AiCf;2y6ep||7 zb>z+RgP3{*v_JF~=b4x0;c|As^5Bb+(Gzu*2UEOSzl?CMjBHdLn!Fy(yvM5S3qAYGXCl+R zC+;w?osXl(IJd$m`fi#y%DgIl2qzMoy|OjMI8)zNmwn`AM1J7aZONQQNg0dfdHzpD zHy^I7b{Rj4>i>`8{`ZlBQ$y*^W;xyaM4X9@actE3poU7103v2a94xgRAWwE;h8c9e zdUL?McVQ_rU>wBq11Spjd1o0d^6@{JbA@h{gMOP@g_&o3-j>Vctlji-*2}i-Kv}R) z@x#>CNLvOxw;V1B^c|Yd_2|6xCesxi0q!iQ%{Q!qzO8xcC-}aFqbwWCf7h4L3#7%D z$y4BoxVF(FU0`Zm@)Y<)P?Vn_Cj-PSYPk*C+`J3yk)m7x&B3z59G>w+k_(%cW`>Mp z3_V~J9A2nC?xX}AO$JLns)G`LZ65RHa;lMqb*SXL#*9cO^Rau!bX>K*o$;C&BWNKO z+xJO}@?(T8s^K5HnKS#+D->zh$|($LnU1S5VLxP_V)%EejMAcalO+x16iO)JJH5s=x!z1%42E^{Kc?mm?m1#<20U1l=A99txnFlM?Dfry5Ee z1ISPQVso7IztNtJzLfEQk}t|Axj1*ijp?Kkn<+caGavcnGZYaUpVzU}i7Nx?Zudfx z@|OlnM@c$0``XxTYaWZSHeRDD46mh-e9ft_v8P{bMp;QIF_od17jjwr3$#9MF$Bz^ z`9ByC>%>SJZr6Z0YQ#H(j-k=f$2U(QmlU}YEFvyj6)4nyS3hqaptO zVarIY)a@~Y3f&#G4R?(%LCU>qK?^@Svdjgepd_{7N1h6OETceq!@ z86VNO^Y9|c6=Jj4@v2lQ_`f40Sn(UzjS=||KxyT_fRVX$>9!j=_dM_+bKSK`qb4G@F_o9)4t<($xxr6%A^`bkh*tYVd>ul;7Y;$iO@xG@IPyd9RLI0Z zU`Qvclc@D`4iFuQb+M$_42oHpfjm!iqB!&&U_?Okn7gKSAjRheJenm>iBWZLho|+1bHzIpWmYsk>=kufn;NIf+IIs5U|ZyrN9mFImN#e z#doxzbx2%K44B)1hrIevwu>oP#QL7)FvfdPU-=Aq_ovw_A12eR%(rzB3-U5`N);k2 zjq?r_ah7iA0CCDG+>1X3yzsfgpQf?Y1rnVO_@B^yg0$vT8W4B8&jMDOk?_x+%oZgS zu!T_(SiBvKp!Bbb?{IVcd-d>fzsjSWZ=U7$wR+|DO9}VSEZ!WS&Xk81ncmPQ zCmmy$)++ss*Z!)m9-{ZB*1y%)2M4W8Vv%DGj+VYolcgm8r<~he1Wcl*N=EVTeuiHl zFu5mXVM)T*58_jAd`v=&J{=Yj=aYI;;mv=zj9h)*J9S`IO3N(=bTmm!miVV@p3Qa5 zXOgJs81(LD^!<456_0;M3ISsj#YNRDEJc@c+YToM)c7Ni*R4zcVty78{^a&ND#V!d zhac+cLV3)Mc^QZ?(g4$1S0?|`d8ewP6i&H)TyLUk(9#ywfO(hYHw))+Bi(nb;N3Im zK`udVM&o}nblLyO(7XDq@1zEv**zt#lb2}ji$!)`1 zO5j)UYJmv&CleJj7;AUr;eB}3p`uv_RgXz%w?T4+J%4iLH=kv;)l%bruaAdgf7yjG z2Qd^^ym5_Q0NyETD2MV^wDr1kwtYveTh>)@WG9Q{??h_{(TL?tJje&n(0qV!HRRGV zp$>zFokIcz7mjJbT9$^0Kwfdpak^(`>XxCRqb-L@uw@lBo#ZB!4u_^wZMV(&1DiQgBKwT$uKK)M6d@wi$ z6CF9j^_o-Jt1o1;n=GzpRdi3K5tClDf3KAoYtF9Lvywh!;5D@*Y_qZ|tLok$t?G0J z(RCcxokMipG4|HP+6+kSEZl!_gL^)K`g?zS(DCptf`K{X4;lD-iT$LbT(?`&5N)~f zQX|%hCf1BT0{)o?@ZMYs)KKvJtK@%Cf)acnF>Q|jwb;b)KKkT6O(iL)tn!V~h4bF8 zX!A5iXW;qc zvv+o6CFns7i(~_4C~;XY|0+h8U%_CKXgzef+o6X4Lw;8E@lyJG@PAH;G;*geZ_cJy zm;}G#?E=5>_V7c0>7FX}Z)eNrsl883e++Adin3KpZghTnV>R61oJIc|KYM@!QO;PA zEu$G6mw4xm->;I_6siX(k*Ng10#*`cvD~zQ0XkM|+y!vo#!ds?7-tap2|QPGxN68X zGslnqr>J(3t2pyB?hFK;6qlp=uSlu7FG&j*I*Mq#2vBqNAKVwnq=tDZ)>g6>wc5Yw zYo06Ud$FTRefezp*SnhuLFRJ32Sf6TE7{`7(@Xgc6{vp>iT>hf+$}cw(eN~SH&E!@ zBy`#VBn&Qt$q;vKeyjdXsbfXM2+oG-ow#z*|0|#}$NsBpl?-wqeC_SQ z8l#8Ti0i%x1`7<$f60V@0+P|croaCVhz`y){1Dur3*Gfccmd}c#w7YzCbG;<3R5TA zc6axslPcm0U4W|{2V5;iX?j?wc(`nUzr=cc_R|@5NAb)_44ZOYe!nJS7R1g^b z9Hw8I%*TZ~kW$U2fbIQtEMON25_Tkj{s`nPwm~;ya z{QxQE6f)@*vG=T?{h42zLJ@l4H{%ADY=l>S!+6gQT~hk;uBL5LqBYy@gQj3WNVJYq zOBO%NrR;k4KV)c|fdyfH%1juM@A--7B6fk~Lf!<-GeAqr_Tj^Ob^D%0#|q#FW~Ij8a~Q``DKw+4PTA zdF2{gj%@ODS#B;kC?E{^rv&|Xk&Jnph$Mr zUD3Py7qoRSzU(gE0( z;`sflZXlbq=9l_N+q^zf4F~q^mU3;n?vG}bIGmCazN9r(J^&vkMcDawsy`xW>#p;+SzbsM9RP8 zB}Q*g7-v6^@Jo-Q?97r#H1a4A2ndPQIt)8OHz0#RhkJwzL{W=E65tRE-JzyD31a)R zX)F`jTqc>W2Q6@fUU7n(aIHLs-V!*SM8)w51AvKuI{I<*zu$v=35Qc=B;ZW%<|Z&S zf@B%I$;@dtV*VO-_ooGQ_LbQ~s@`l=e%bOMsm^9%uC6QgOkXMy9KRl!2BLdzLigi~ zM-Mr(C;FV=$|$NZ^$n=eL{H3(Ka&IQBES(EYAERx>%%LxZgcmtJJ^z!kE~v48Jsd6rR$Z{B}2f2 z3nB7>J4%S;0|F~H6SOpr{I|n5;I!P&L9abTrC`^o9xx%4%oR5UC<1ir(fJwfmmu9J zbLye7O=CIHdhKG@M7l5hxF#C#$ywEd*@F8AuKB^?f3f%G;ZX1Y-}pH#r#ez0oFuYm z%gK_RvXq?|g%*`96j>tcoJ6)Xb`ho#gQ? z^Zi}-{kyK;@BaRCuIm`4nfGgZJ|EkQ=0 zXJJ2ZqNd8;$mhD_DB;GpBy)WHDa(O29L6Z;a+zc7?Yk`F7!G_}9QVKhF}hdTd5$EI zJ~(Hq0U(OVT?~cwR}`m8AOf)$&&SDb&-a0SgI`s@smIK^1;t_#uNE0^=M{wl(gJ?I zA_t57tQ)kP1hg3`&jtQkLn2gXmmW~h|0*TmsgSGJ69VO6i2UJ)GXcJM&E>aTDp`}q zy4%?9pI%sgDAsQm9upXQ?VS(z@_1R<^9@Vh9>u~7=THHCsqF|9 zcuy`V;;H$&-&8H~eekPRdfd>kgNmR-161P$LQU%tc%H9dCfo4(X$K5U-y7xJ0Hp;y z1=X5nbX{NR1(il~Xz??HIbedVs6&5jUuDW12{(Z|UfB@{*D}P_5o!Z=kevT)J7|J_ zB2j^(DBD2ckjKBF5I#X2NzJVwmUD;~w)R*lgcr_$An&`@REtg3!e7NX>W1HxQE7^! z#Ap!S+|-bOk{cb_RglW=N5NPiByu|<*90YI^3!+?6S=VG9@h}%fVnn^j;78!HKnXb zNL;w!+;8}yE9kl}Cz3)7Y(%6S5qcKiNqAhKm;lM}CxOAfG+B8|;1Yq8&>0`*`NB?r zR{r*Mv?l6b`4QbB9G@}*39j&wJuQi#{S@~;i%65O0;h!~u7OGgygg6Xa_#Kb(-m%x z%{96YWy#kvN`QjuxC3Za=RSmpZgS5W`fdyOXMK;R9WujrFFEuiwZ|ttH&Rw6?6uen zk^+T8{x$#tn9B;8Ck?l54gFO% zzzVmI`QUBtfynYsb8xcSIN+iBmQeT;Kn)i!EGdmF5h*Q@{Q+aIgD^6Hsl#5oB!_X7 zQ2J;uuCy1ytF-`gH%TV6RQuo!{IOtcTH#p#UV`_10dYyn!8wltbcfw7c;g%p?Ii0| zIK$VI&L=p*`StdW=`pYp&=T@-E;`>zhcpi-gL}Itx2+6EV~Qky+^!&AXZ)I5=M1u7 zK>iL;3dzXV(Mbjw@03x!J}Tk;C(Wo;1awO)l1Ty3p8=@{Pwcv=Gmp4>kzA77za##E z$j9!XB>IRR|LDryf?`#*kkyVsooGP;gA#gw(;fMh-rwdXyR*&;``a(hVVK1ZEQ8#% zk)N@pPL?-E&VR0z`_=~SR<-c!cWOc;CGZYK_K4IAsDlmq@kx+_^E3?f;h=YEw&;mO zWN^6t_eRz+Flj-}=<`j}d_e(WyM|y3wg1~K)G%2OmYxC&GB7{%G!w5<dC}p zMB!}lJ$y{)pEfF`>tK_2A-}j)<&(B-%N};lgCOk+v|0g`hDO9Ypq2gx>O`n@ffqZq zcsCUmmGVe2Q+MdaTz>tFXn6ic!iqHw<*CySIt zmcZtMwhZvpJN_SX5MkZ^k;Z?O?aZD5aL+V3#16p_#7mlC-$sb6l@a7Ei*|%U$RIuW zZ|L)`Rs@^fms~85S_=xKPZG*qiZK92iCBUVeSBP4zu(C~(cFK9U$)6VpkVQZLkE@_ z*C5Ew*^Q#LfW)2WKVDL6r$9TZmHkB$xH4?8)00W-9`I=cQlq3F<(x_QfzE3B-MC%e z-2b$bM1M(IJ}=079Sum(X?~GOAo}G`O2?I*(5Ui#Hye=RS9tQPL6!~YCt^;(y;-3J zd~y-JF=%UAs=*^+$p)I`Y`P;D8va8a>JMw{+<7c$)Z3x7LKs01r^X6f&)*bjYFXW8 zc8RyKSWYAc1(*~Z1c(j5iLV6_rj8(dcsj^tw5kSD4bEiK8#09bJRMdJvBSszPC)+M z9vCkYpN+9-IUsM*uD1>7Ld(B7)8d7j6LZV`cEXzDsFfP+`CbLH!tShXPsHWRjuL=g z56{Toa#$z_!@45LmUe(1|FhWTGhTYI7X&UI>*FLoYs9o4gL>y&k(>z9oC?Y&xq#Gh zh3A&`Yx-Rp#CK_Hr;Qq~KDA7k{s-}RJ?S@)_rL;7^~ou*AAJSW;l3*8cg;It#}p!L zVHKbvTGr&h^z2YoS>^zh`7l0j>krzv7T!g94@mpi)IS&`F;5@e((|E5l=|{xi|U!@ zjlPz`O*h91ZLn38Fa__Zr}1q@ExaGE2Jkt(DG~8*;%gHn@PNDIuYl+%h<-vuOcih= zfDsQl3f7{)n~)DwpMZYxgn&sVT^uQ0l>FL_6Vv`h@PaVi+Y#9r?iOreUdPHB$=M|9 zqVpGYl zx(^n2sHf;2R6L}nt))<^n|DvnGVT@^oPyhnpjKU1oS1_gd81QC(DKcFa~i-7+}_c6 zC)Moddh_YCn*$e?D3jTN2y!fRlT+0$6rk z`|P^Ot3oUc&mh-G1QEy(04k}*gW_5|E&nD?mS-3LR_EwJcI zeCjHFy;zCP=r(drx}AK$z~n=)ky0UN*8x*AU^psVcIjmB7WPW%xm%}I&EN58MYrjB;$zig>;j^0t!m)DHI_}GMTm%d1+5XhxTKD@`G&w31LY}RwG`&^k z8%hl46+5hsuV}`2s?{FUEwTC|@aI{6$hBO)u0TnBT}r2NSW~dKv0jTBcOkr_GvLe( zruwmpR4&aKm-A|_BlipT42^A4pC5ScrCg2O`<^uXt|aI^c+~#bCI>Bnj3AH>P~ zs7=2(qOSB{);R<%~aAq|zrk@6NS_}vA^ z+IvUMZHjKrdvNhGLt9%m6J-oLvKo?)@JL*!Ai3u$Npct9IDBtEO_ni``dP}9UQX}i zLuU>Lm~4*BOt{l8nX;T&KC9gA85U}wfZ`qS9iooU-^Sq@Xd~_lD0*Pz`nUkw!lL*q zP0ZRzds+%b35Pc@W-c|hph`t0C<`YVSveK8wM~f)kts|i^l>S9x&~vkW+qdu=J%k; zgbYrWquUF(@zNd-&7E;Jy76Hy@0{;qX2z%|N#g~hJpMf|Zx#_=psZ7tWv2|B8=LN@ zBDOM4mu#p4RGzjb>LqHfbgokt?0f#T*OB*hA{c;m4RnsqKH1gH!HZLLD|6NQQ?D+* zuFS_72Cp_Lf3zX#!iKoDdOC)}&F;DM7g2A@mI`sbo4K+%d}0O>6{y&${@lX@4<;Q- zo^xnO(v@qJyqwQJ<8K~JiXSIlbIrTcD_Zj2D2%(A`v?!-SX!&}v|PX6_@hfoGmYpE z`M&E?=I1sg4Vn~P^{5g_nWz5}HCo?ztqm0x8s(e!QI?OIwrkRZn9!9iK zR6Oui!Tf9u!}k$HW#;G?Q^FL_yc@q8|9IN#QJqjoP+nLE9WyJ{!ZUOBIlOJ;PRq<* ziTplu<;FcD`G-LVxQxT&cS(>=pE6?`&dxj@1C?UTQf;HsCDrq7_!(1M~hui9$8AuyK7YgbudScPfq1%1fTIqy0{V zG_xZ52Rk07Y^FS_;JA6A*j)<=oC{67HX?DVXR#xQ!K%>j${L_jg!?tL=}exL_nawp zk0-bHwPRcx?FnJ>tV#5(gAc{;vj3Sv*JABz@_BAnN|(oW>C7`)ezzH%}ds-5`394R7U#kMP+uYn5Qp|R7FY@K~Xva7@Lwfu*n~z z23r*;?Ujedn%kAa>!Yc-1?6bI;{(OoqlWDrKyzxO&Mu)w@+meZsDcbG=RE&q|2)?r zI#vAwrZsNV%Qd`dFeyr{)~Os$?4*E!2&WLyDC$e$>axcen$}jAyw1B@0&$+~b5(58 zQ-?2dN6pwqQ`6`GC#1yf7bnyG<>L38G-*u{Ypqk;a{- zClp+xC)%pBa%vu)%B9;MF(@-fiq^-j>Cqu)%}!IKcFT;poAh+^43r z{2XsdDV;uHYiWx#tc&ZiIPpbu@ZtC#@hj8utdBrd?{F_^reT=NGjG}055s^!$D z+%|pi6xECv-t+SR0RlV-or&C;n_%p6PM`C52+yg&k&pwpM?TkzY!$T)h#R9u@aKL8 zm7wAM(j~9pP2WMiquGGx8=N74-_6dKR*-`$4wWcZ2x-$9&&P7d=SZo+8m%W}N&3t*0$%PfC1?S5Oh5+Xa(Q+&BNC^7^#I79 zcapfy7c3-#fK!0zY19><)(yb7Vj}`Fd4dC6Cq*mH`$w&b%-^6H-)<5Q@|zp^5{Lom zzlR_02y`+?%YS|q;I)n5p#U)>A~!4Sm$x_o1cQbD0ceB(XoXq0vaeZ?4aQgWcu9KS zsWZNAX{{}&_oyElp7{K)y)+_e2GyrQm)_`eqcA;yv7{=R9GnQDfFgmv)&hYzVh?1R z$Cbnu_~e3P?iln=c5)(=?9V=rXemDsJ8+1Bb^iGwfPpi?SthiCd4gWP(9r-Oy2fGz z22MtCLa+kAAz}ty$xbl*l$`*H7J`QQtVyr*XbszZ@n9O6+IR-PWVFo~1$SQn(7St9 zME|f}8lmMEz^D*4yjk}@_5j!J$%%A6H%t1?CVvq0U%vxB{>|js)#igoifw)HKCGlE zgeJD25Yw4Bf^rOHi#vd^2Qmv>zT@g5GxELf*FkmZx8i!|?9dC#mT)|fEnWyLw#AIx z0iZ1>i*518#igzN_FDKmI^#PXYFy+5EqB<1!spNnhnjL{c?&20P|y!Yh#y+<03Ol> z>)&zm?dSt!XeYDnuiO&`$QCsYx$gpd6)SdpLg=bS%`)LNjKwHlKK_3B%6 zR`x4boAwb$)|HbZIk#j1u%-m)BoXPI7CXQ^ukOEw+UN2w;IVFk$3E=gL-zuq7uMv*D z@1O;dUO;3I*R&+MSD<5-;%CV1a1z^i!65j1j^W$*sr+zYQRP zjysRQ7&W!n_~f{pK}?~?_G}mL2jK`{CJM8yiQOn&M58C+^WvqRGkBjl0M0<#iGQ-p ze8qP^^Ic!okDGp?TXwahfhbaccOfvqaP^H94LL*?rz=Gg_J&;p3=vsb+nn(eeW{+s z_RA=&fN9Z+b`v1of7M$8q#L-BVUX_#o8I1X5 zeO$4y#LtL+={b86c{W_%yUnp*so^R(P(+YOP1faVuo;M_~c+~11-r7$1f#y2;7l6MPcNp(*p?dc&C z{KCt|ctjw*d&!#8DT}QhQ%-yCo2;6Az@>G8TTnJy$3UjV#$>f=_3e4t%ugT1;qx+&l~A|Xi=>A@F#s-y6mM%8H^(#h zR^@j#ib%mpIrG`IvqH4T^nrItZ`^SL|H%Cox1$uUK=VC!a^4y@jnjz%ST{{VwJGRd zLUbS}C)egAj=jPl5r4I1D@&J<6iRvuMa6Es`ZO^zK6hUp;bbF(1{=zyw3RXycg5oG zSbg&F*`(3){U$QGaPhww7$Pn|#L5GD*!EVa-}OVmc)w&czvvKcmT{hY*$-{{06fMO zpkLNWh9wZ{LzHvSPZlu+LzGwzP-x0)5?oa>%AL9Hn-i0 zBdzhAAL%Dm>@~EH6bZW_^wtdY(F}{(8F4j zXJ`p0@XEv7SNM;Z*H2efj=H{X_U%Wj{o$tWe>LFhAm->jS^`&vrd;2a{tK^!O2|p9 zwttq^J&?R}o)a&^#BEZVLht4jaCsqkO~EY2Wu#ox@I-FOSXGEn})41xfkU z9i^M;)qJaSmRs9-;IfQ4$#&BP(i@*Mb&2&Rs0F*i6D6(c)Fi*#d1Er+&;J;n z&hD;hSg4@*%aBfxA4l;Yy?-%7mArf#R}#1zjd@T$rY7gMf9F9#OAdGct9uJvf|mZ^ zAbVpunp+;<7(I9N%$vmexd}DDyVCOG$qjkb!te?-OW-qpuji4z9W}>A+nVnuuOnr6 zPuh_$&`5 zYUyRt@t?veR&eU88RGqBVWAVZxH~v}NnTo`ie`eR`pot;kKH*>Vo@;SuX$XBzxo#_0%DoqLZZwlFnGI6sip$2X3fg;T)aUudjxA z=vH6DD2Gxshh{53Hca1U7ekJikrRcnF1LEIu&4WgpQ=T>S)}|1DGjoDrf&rXqn$$a zsj3!4rKk_BiPRm-?w7>e*PF4U@7cyBpmBmSa$A1rjtBX1Cbc7_<@yu8&!$Q|>v+UWrF1Ff z@)q=p+1`bsDjDoP7Eu`=k_X8(PV^G?QE`1CDeEC+uBp$mb9n6XQQ@X|5!^JY!njBemNHq5scK&C?+d8UzL^ToZt3@k z?YYU#{`B8iILpj%WmDX4c~-}`jI2jaOkZ6t%nGP7!iQOKcf6DoRjuF&7`3OWF#@gf ztj;dXrUo|KUD~;ayo{IHV6TUek6^Lp0Wv(o=)%2~GyZYB#9Cw$?6lZ}s0YB+_8G9) z3-qg^MHi0*bP%kZ(btID^|FtrNyS3$P8IQQBXnI}rcx`%R0S5TM$P-u*Ks|Fc+qsz z1D=T;F=mLg-~O5U^l(afL&ooZ;N8ZtAENl?mczGkpbXP}2K;`_Y$)`w&JjpRKFG5R za&T{2{jpFXWmvb#(vYJbo50i%BfqGW6S>Q-X}f#2h0oeK&#HuuIpTcFQT31q>kGFO zRoa^eE}p~&=b3~;6#;nP@QDFQQI$hOcCS*0x*ZNtxSw&CRO5M7+p5YaYHT9GtW+Cm z&-!T+Dd1ym7}>+^rcT}>e{avgdV0F}GWL87M|0e<0lQc6FB(gaW=Mv-1(Z$|)qZRb zU9BRt!MvU{tBH3_bMx=i-$EoiFCE*j9<1?rgFeQ#WW8mxgJzse@HKghTdjB3Tas+U zwi5y>jW%jHF}+TC3^hzwoX$!RG|aQQS>Cnnd|$@gM4x4W$LVcDW0c;73a1j@`}<}l zJ#TbQ9(kmtRbMFJUd8Bs)ZgpRbg{apt?*$XN=n~ulqb*c_L-hP#hl-CikSG9#|({a zR>}8_Jm21eIUG9iM*-Pu!@zV!cYnirXsG0Q^2@h9O}c;utFnR-OI&W6<91L3LI<uJ|});E}B?sj!fzj|DpQGMAk_?AsrQ|S?D)})=roGk3NtzKFeCWj01PuHCmh~Gho zH7hMSRBP5~C+O_C?K!)ITXwqA4zGacTDqYGhl5S(zSqR8C*VrQ^onO0@A)fECA(UW zwD;5Xqc1;ccF(pCkCNG7ASrULb9~_L7OT94Df)Gy4CmAKfg?(Bp0J^z4Dv>l%SzWL zx#cbR8Djlg6tw);MagWYIH=W*G#C!im0fYCX+SO%W*ilC&eo~5%A@z^1*n>OW<4>6 zDH+;SbJuXPm!30svuyo7NVyO_M-NjfhVADhIL-o3$_;9keE#lekb4hE(o z#<>=kj!LNkZYXF$req`#E)^)h$&eu8JVVByb1{oFY8=&M69EjbdrKpQyLHqrSi63x zMy>7r3GqZOn&4uX6N9d;JKV##`00rq;#Qi6zE>oQA! z@K)QN;lqX}FgcG(O{MnHZM-B?=sG0}9?4?;W;4AZ{Swo;G_B&f*}DDOqk~ROXY&|~ zKS}#h6uR}`!;i-v6>)oQ6>Ksn21=!5iHbSL4V=wzpTcgMzFj?9vCpmIi9x?p6kM$G zil)^iVHs%cw&(a@yHb%^(fb+V&lTxnnx(#`+`$=KI0_G>M=u2Zmdq1;bvt3H(inGS ztcE-iz4oA@sehCXt-%svE#B&zeyh^ow4(BGAW*B$%K;eWuToS)xvoE;ansi7YB!iE zk_wyMgjm?=yw(QP?Gk9`3>hj|OQiPt|C|wK!e>`Bd_aH1KqhB)V{-dZpSxD(I$0wZ z7R)pB00K3+cJ)eA&9uYjbu4c;M#optN2CK_yCbHNR zBV57@SXr4q9kSz5YSzIc6@h{mG)Ji&`^iClAw|dbCN>8R1mPDHD&E95AAyM{z$Is! zXO%@a^rNUTJ**A7QWZ_tqAXP72%@Cpj?K zK4p=H%rDuIT3?7*IhV9_z1pcuIq(%Gtyy++Zcqub5x|$3k!Xw@|_#r_>32K*?XFU@EegR6hu}5g5K?3q)PtG<@IjS{rn-4NPq_*@Z!?oi>rRpPK5~Aq0Us40BfaFc4yKsx1!tG+{XH z=^G6T0jYeK25KsS^Am1B4+Z#7G(*VJp_cwTVMg;Hc)4#nq?ruu2wR0&WQ)&$r-AeW4r? z306Tv-0&|U<)c|dw2Je+TlsvQud00 zSAb7iu%jOimz3p1pO`bG;3gIr)eGF$>dDC`nt6 zQ_ukgGZ=Mf~NDN>Z63)N20Ipd8MKZUr7{58Z4vF*vMgr#=ksTVxIF5nzyhLh`sM}&^AiXNb5dO(ft4wH)67B}GE093IO=nh z9(@TsP)yIv_&n5i+LRxFJsyxzAIKW|G?1EWArvbS8V_Lwi)*GJIZ}?x`3xnklqQWU z`G(->b#6kEP5-+{A3y+zFc*ec40OE!Q-~aY5q$%)ksv`A3=oJjH*`ge@*OTeH#aK2 zKWivY!nm{@NPSTV_WFky4(Q!M-6?Ga@hk=f^aB!ZklwQr-6CiRP@+C06#QlF3d&wE zD_OB3=Ya6*J2mcCC_evVrCiRJRoj}V`AwJhSH%6ZxLR|Qy}02DovH&I#_z(C!p2>W z8vr+LBq5%==Pij}oxDGcoe~EG=loO5o{qh^cOQaC{;&iA>IE?E2aY|ZVIYx^|P0H&-N{)3gl257+pq~@wi-Gth0L`uj-wU?@xIHPI-StKA90Hg{DUtB@l!@3`bi1dS34dy9=eOfeKh`Ez||*pG#HY;>N(^L z<#KjUTHd&{0)9J#BG)uq{4a|LiJ`V>>8!w3!gUrDA^pF{&c~ZALUiim4yTz94?gRN z|B{#Y|7cl35Y+(%6wo@~ABwQBV!F+=ma z9m2+79)~?qFkS@GormFYUnoxWhe3l0^8)CQ$Nx%6!L|g;Xvs*|5h9`GAk9$jK`LcT z^K>{+9$b0Ch`s%9&N5I;FN$l_x!^z79TG^8!rx^)|K(f*w-vA>NOUZFTuuoh_myfa z76$!t%vrqsi}fpzQZjtldqyG(77jgdJP{yU2KdDlj_JSBw{LGVf?}!dRVY9~E1>oe zm~Yk;ha$}Dml8w^Vn+v^2+}}?3Ll!XM?7c-PvUQ1dmsnFg&c+iB#Q-NexPm#FKSL* zPpUa3k&tRoAvbEepZ}=rsNe^j!?kKmkq)(P%AM&jRAb~BL1 zQ?_;^6!TwGqYzR9YDJ?ebDLtyS^V6ycBA}e|1QU!mi`EB2*z0!eHhHoko1c-qtuRg z5Jtpr>oo$(b)^qK15w^d9^jAtPHVeH&^#ws#&iRS>}{M4jH4XEFM@u1ljcX9L z{_=YAv93x;Ns*vWY>VX!G`Qlr^k5!_{#!C?^-7q}l@ORW z;_vJX@qI=+Es-U;8WK^^eeNq9-%JkV`TljO!8wK~2>+WL@8`-7N?b+J%7{IOi1H{915d{jqa>$j%ntpc7Kt zwh*%RZCSHF*72H#O!CI{mWPm+^yCg=xeb2_CG3Kiwq&Q?B1Ma=*0S6RFRgEX);3lj z|1(bFS9ocS^V@f`r{R_z&b9DTh`iUFUy=R3yr@<1(*88%#cC_rohaQ)|MSoNzw|Km z66^;$X7gs1Gx86P@s)TiKY4Dq>_2~NN3ZW1QpUocI@I#u?WP*Fiw|!*(}qUtyhata zG45Bp_ce52CKpH?2R8Fe4ZPI|A6O1)pba0z$T7wm-KPhu(4$4VNexPL<+=Cmau;{3 zajyJ2?DG0n=2j4?HSvb=jLid7ubEsO`=( z@gXc~P_%f2$j=hFo|AaxX`ILbxX9hJlj2cw(z;E{p)p>@%7gUgsjK?=?$vH?gAdd% zYJ~pkJn`K})wyc53)q5k_p(}V>eDJA)(hbz^@UJ2ogP3gd3UiuUc-mk-HrD=Sf&c^I)8#1M2gDO96h>Vj#0nrg$wVsV=VuK@;;fe>u zjI~E?$sJXYaG5>+b?vkZ&(ueVgyv}Nenra~*2D}e8rqaERM1tNLk*f^8Rdsd%sc`w z!Nnc^S8c;J8(1gzqE6VIA5~Z==7(>w_}#Y%JQSZCO-kM$Mh~ZlDKi4fVuB7Lmt6Zv8Q&si$#?Ga_u+$G&a0vSaU~bZZ<}K8 zpg0JeGI#LXF+6O3!R+e6auIv)^xd(Q*lVe&xSlfvmGyPg?o3yNyG8Ra^XJNGo@+MP zDZNMQLPwjB5XtzFHMS<|h1Bs}+uez;y`tFwNDA92{q5g0cbFe4?PNaQGdE`H6Zur1 z*N=s>V<}c(?qjR3R^gaNS%M3_ZzpQKdF0pABVNK36OhSRU}l|;*AWVxc(*y@U^Mm^ zpT9bzZ`190ughivdLmz^pdO)w8+TfCKuvP4a*M>8e4+1Nk=M%G&2TaG_kMQ2#A81B zb?(C6+S=4bUJW&hjfS=fkp(`hpYGR#N}p32b&$TSEML$oJTYHY$7a1DTjW3&QI4dw$T8#gaf`g?C8$y0CWcKH5#xFXNSKszbjx<*XcB7M-5` zq2|^CpLu$Av#*DirF3uE`D^X8^;3%@2 zVW@P0X)?DsRJz#zY+v3MVcoCiYMR>SxpW@3e9+A^6!tu7tyQF`XxQ!MGo7xvLDm&O zt&jh%VuL=z11L?)zWo4a&!?z5QZD z00j<|td33ZdHvA*$@%jN^xc}9;2WCje0kW}k+;Gmpx3m(n9a!i&Nmpqv*V+$)4_pm zr^m{6&SN*+$9)UIMIVwK@nv4|)^$(jx1{W&=-SLKd?<$;D?AEVC?>vO6 z+H5(HLcds1O?vZ4h;$oF+#w^seLK)h;>~iLbCpWhTbA1Trz2na`&X~kK0ab7Cz7w5 zhs<>bWn5D5uWzyCu`XA8$H4CW=Fw*7tSTZI^u`g@tXyQ}Dj)bVKx;gZsh05V|Np0q z`~Q8Bs=M8xBWfPGS#jTuZ`LrSp z9L5b{MA+-^Ly1bZ6NKM2{<3+Txh1@TQ_RHM>Sp%wAu2bHeZz3W()wVMKNXl!Qk z8CFj7Oyk0ZkzqXTqVskIq;=czWe4cl)fH->0|mLXwV={sMf?*ic&h zl^_2mC(X>d-8}mB`JvFJcz$N-=xqMzuytW1@>_p=duRQ;Y>)N;{Y6T8iC!@&8*3YF zHsjj3H0#<_G(U5`aWi~yozGip)ZQpA318j^hacZ1pJue>yOW(h5Xxp`swk9Cx@3c z1=j4RM14LvOAZN&ZTx8;%mn#epNpfm18rg~KkbwK>yJ)7l5`z^Q^lVhaA08cBBQ8+ zJfmQExNUXW;6aWCjiF2-(qQ%J)yIRzE$0SpY3?d>is+jnBx%_}^d!Mpe)f&C_u#vt zl0b$z^(7(Y#I2=(|Cs3h}|CgVsvIuThQha*W+bpS&e^N zI{$7do@;q|7-G_*$EruJ(WaxB19Yn2g*s1aIlU%33@gKb5N(_C?5GZ!K7}I>?kj7q zx-x*#JdAZMFr}Y3I?a4&F{@2FUUgO>!*6I?!QIp>T1^efE{3pEYM#&==4M{ipBaKb)fe%%vC0-$RlgqT3 z8--PImA_ z@1sKslQbDvQ>6?tF^E@Pd9Zdr0B3-<%6`EZq`-O}FlHx0`B-;~V^PEB1tcyJ(`4HvZpkBT&?8XN?-`7S+T zCcCf^!b~-$8T5BTa+fjn{LHHyOy0#4GJ&4KdU@9vj}DQohy{P_)Vus;v7Fl)RJ>&& zv|ent#-;HxnmgKVe6oa+bHw>!&E}3*xtXJUW5W(4NPuQWaoge&uBo(@3I(!jyonfg zej0PRuMuM!xM;UtYAxNSk837!;lm)`0U~YO{oS1eCi@a?Pq2l+hYj=T79{+k)d$k} z?=xAK`^JPx0kl+ZK~m9cuBoW#%ICUH$F~F;P1>n@lC(P~34A!JL)$5j*M%`e--aDN zXWus*|M1vru9>+U=IRm5c!aIsBB52ASEG$=84F7-gT4&LES2(*n2y~QzKXfy`1!ZA zxg}dZE#l&gj1d21-GoSjN&+zdxPDZ*JVY2%;;Y;?IbQX7QPc3TrP6; z9EsmX+|1InnK*y>roa%#F2kR(_Jx%TO^-z{nLd@;L0A4T+ZRcDvLF9=rk5t%Liuy3 z4m-&VVv3Q2m}8oZhM*H3DLZHZ7bc2w%f}7V=Zh95mx)cC4rFFkFz_nYcOW^DEcYPbVvtuWTV7F56cl{#}^Zu?u1HZ6Qa2lWP-T5FJh zlNF^@u4-=oQ)9Uwn>(PXJhyy$=Jhl;%dbrJKPSrb(kC9YtqU48C1?5^XNXBX5K>oLKg43pt5{v(F(;*Ed-hq2=m zp`kK`YtZolJ8HKI$D|GFe27f3#puQjhMNxc{W&vso@OhPqdzQK{$e!I z&cug*vP^SXx~BMK>QbOJpVh+!1wYNPii2Zm{L#b{Tmp=X?bS65%CEi^iME$zls&dT z9^_}JEKI(^)Z6kCH>0bG>E5C{=(Cr{mj)Mt-z_x=UU(sn_OK0SEYjk;t6zEbQLCw4 z>ixsPUiG%y(Y%i52QQJQQn2XMrQhf^Z>N=sd&@%Ud$~5(t{Fq~GL9|Gk6w3Jm}$gR zYEBYenE}#O#*51pm*|T}YRNhgGM6e1gIFZYcc;)7g4`xG1sAG@8Uk@c88zE0=Y8Ty z{NXv*!&;apWHOhE0}2uz3rP-cW=^)lf%~nr(8Wqgm1n#*)C|<}l)cay8CO3kjEkp^ zaqvaIq&JLJbPpM-1?o4TcVl_ya|HZ|756he#7vU6F7JtdZKx`>m4oc}GQ((_bLU0P zCiHHWpQ0a0vLyeKA{K;eFKh{^6La-D9&GG(o3GNVnpQ-AaUj&C&W=>^QFkO}GOd9!(?=ORr$;Y{*olgZWC|JL|=o`6m?fD+tyt$=!n9)Z=9-Y$|@0fIE zIhPcmidOsO9ff<{%=ZNyPs{!tLdTFaV( zp$%jEhzH}uuP~n#K05aj?oE6pJw7{jq1D-G-Jol-PF$lfVCZI_yZfw|EK{ykWkS{E zf$vW>lpD$g77ua!ZY#Q2Mq(a)?igWz2Eauu|Cph2p!n2N?Q7>*f5C30**9v{u{@MA z3N#-PjgT3iX-trbVVzL@Gvg=Pa)rX120!k%Fqd>Re6I{*WjJSM7if#^H<>hw>%H?I za)fJj7M{)J_6dT`sw_m`YH{2WuSP%Q87kvBXu8f z@1sF?M(~Fr`7*caldYKMp;EMUyvUW&t2fk=w=|Jdr{$nMy}layS~eN3kLJB@hWs1UrhB; z&8rCI)Agk)KesjcW@>`tM7Z`gboT-(Yb{O-o|WtulBs7`vRMqDe2>CmH8G9f+m=(0 zN(C2G8(;H1JGdX%3oi_7jq{nEC`#}~<~C>zlAi_mXD+!ne>~TFxnY6%a(=oWyZ27- z7XJcHn&!pn8fs>6Lclr3bo~5-a^afH*6Ve4Axy>$TCSrS!^yb*$c>L{k#8jFK&{Ug z@=AAmJ#nOgIb&1fQVLmPR*?CyPG2-!jM;D*+nnGK9oGOKw;i^TS6L2qc5-4QZ%nBZ zE=@kzyrnQhWb?rCNy4;t__vDv&Xp*poe=9*Xt(;+W|o>}M>Lfd6_&@~p=57h`o6nV z#kXGg3X}9|p{k+Ej%x$M-JG;r{qnMD@Kx+1*5twKvrEMz-Wp}|exPIT?L&8vH%FVb zPhL<$iv5R%$*x3zcDcx z*al|YKJBobdM`epO@E_JW9W(vI|_S$lOLfRBktiIXA?igHry~m^o2y6KNg6VbSK-` zp%a*10p`5U!-e^gbHVg(59W@VyMkd-p;G3av>1_t8b|!p8R>Jwybz;=8Ak`vd+0vS z&*-E&^f_C`TXl;7uN2p>d*MUo>O{j}wJ}oaG=o1z-i$Ys{vZX|n)il{y)<+ph0d4Z ze_a(t;a3OxvV;xyYh+htjENMz@eOm+jK?v%f%&Y0IyA;AN@sTnQ~TA>=0N>6_m1V^ z>~6#Ot*v(&?}v29;m^%Cb=7$-Q-?`0wuA0P@X^>LCTC|x^%-{xw=NV)$80AuLzl$% zQ16f_Tn>n$V0e7D9j>i# zEZkPROpP&FPRd0r?@@O85T?Vw1Wpa7prBea+TiwUfzML7s<&2a@(`Y^`b4S; zaEI^|tM&Hb2Ejbf(MCL8$*a+(Q8Goehq%GFV&n7KZEe%T(}wzXkFht@L{*Jzb!aIc zM}|EtgopC@Q%L)HBpEhzQUkjL)9Zt8o{rV%tgd#K(*GGQR=29DN@x05btBaC#K*Fjh~Dkr{-Y0XGYi;lZYw1HvxDdo0+qw`0?U`dovzaRrg$7;$V z2do{|8>|Z>axv174fPt^m&rPrsE-fzJ<)9|g0%c6zHTn5zBE~^fUv_K#JvdQvHW#g zk(jROs)J00qB|4?=$}gx`aFlF=kk{|b=OV##t!2(6h|pbvwP3=>Evc!lu%ckR$j&v zUR7R@T%LKY*)FtMJ-&G?Ui?ebeb~?UvVg#;%p0$66sRzQelDZZ_DsE0OZmlzMt!}9 zF`G8Jxov*z{n*PAe|&&#@NQxZW_e65VOmN0;xaim=;{e;CD8>ddN6%&ux7Bj-)_xt z>?C^k;%v;Hwn6|-sBU2C!Vy&yADn%QHENZ)ZEI_+xipAv>r;MX`!Zd03*pIXoJ7=v zCRNw0Rj1b{t>5gmti05orF=PKCrwL;GTa=`CE-^a!C`8cH}aBOB2L_Is`Ep41UxB| ztS}dVsJx%WHJDKg`ZJ!L?YkEjynNrb<7L2;cKX=cj?Khn?QZ)W^xK!6>s=+!Jbc9Q z4o##Iy*v3ap2plHT^Z>t_u#1;xEGUeYZW_QIi*jX=-|dX7^bw5&=fCfbz$I)r2M%i z`JQ42mQX?+2mrF~Qa-vK`uR|&1WM7Cp8A^Rp(Vn~&F_jE(wuF0T~>Hv@#Id_M$ISF zw>2B=55Ftqfq`qulA#qnzRJ5-HujDfA37xX!xX<#s>(#G49*;oV%K8nQ*ZaTDJ9ViW!jM|vu}oIcomnKQpKo4BNRDzE3{pH1Y_XR%Dz zp`kzC*u^IEsw%!4KJC}{uCJhy1IE#{i<)ycu*@qj?wrtezvFi~c<~mtJ>rzmyQ#9H zBo2M8`CHSB2*;M|quCL*(_~HpbS`s|%FHs{T^%|QR7MHVcOs=v?WWDlYIwbNI@8nX>?YpNPAD7jkKSFi zAWQ98b|a6u-8%pNP($S~tl{=XE|!it=Z^6~4W|2CJt-)zRekc~&42b@My*Ui@o{rGd|5L``z?L=RzkR_ZA8cX{s7ed%$nZTpS;&sa zU<$v!)EeNP^8U#44>`3yAA)p|y5VbeY1kLe`mNb>7Baim-m`@k1Ig2~`g(~Al!r}v^p zk{{WrFy}TgK(gPzbIN;3cXQiSoN32|uIs!e#~N|bul)U5hq_K(?~X%4<8!9oxJOJf zub7E!P$WUZLV68*&Z+#u@RBw+_*vmpo0)rA+;JrlK z+?K33(8;XcB24^3aD>S3yfOIFAcNS|9ocaT9pHn)|F8DWJ)X(_|KmC+ht7p=M2X~- zGKUmas2rBbC{gykze3|ikyB=qNEAY7!cvSWNjGH<+ucEnWEom)=s*sOF|niV_gTL? z_x=6;{`>v&`~LCs@YuEO+O_Mt-q+{)eBQgR_v`uc0A@8nMZ<#iHbA@(kUW4l!UDKO zx}$s~<^I_91*6$3Lm79htU?*mj&-{D#cvue0yqRZs7diU7iS9igFrWRxT-R+>JR{= zwzF_%SIs@NueIOIq8NEGI&V_;%P4)Bz*QR3x}jieoIo%Vo!LZ=y7Ow^uE#A(?&WY76^<(UOg`OS~2m!-G3Gm4}%h3 zb>b>uk9DljX*-xx6%_=iIotpjAEGKQB2ubK?3V^N&QmY5C>G1xOcq;-^>9nf(7iC| z_~=W;{fKA>;7g&z0?PrXuj7#3H2`-D(KCzsx+E{|P4?67CQkEx=`T7?PyUMCIIILn79|0&cqp3;;QDm(O+c_3M#0(=7Err(ire1t!5(-{|^vH&NwzrA!pm-`lA9x zU$1Ij ztg)*V*;w)<^i?@jH+6A?dT?E8ETk`_*A1k=7KjXB&hb?QEAPWaY^cXJ6mKA^$MkNx zxYk6)BmB?&eCff7*CDgWihIylzyHyQdY1rCi!`C*(|0z!Zbnz*3Cl5TzJiDEU&~$% zsi=bi(<>1FyM?mqQ!=hSF36A$D+h4|)~kkJ$@d9&%k3wA4zF9CwpjC!51m;u(@{|L z{{Wl>I9kC@B;nS5N_W=ast;FM(U+bN(Ont__-`?!fe_JiW? zee6F%SVix6$5{4D+O&QSxi_wl&r&}DB5Dz=6}SwTBc5tO`UeUxk>);h9fVkfPH&u= z^{)Mg#lpD5_-zAeg+LYNQ${iNq5N}Wl(aAL9K>rhfiT6kOaaL2%#b;^{yDRYq0fS2 z&{7M;_{)L2W-1Jr1=kMY0B^kM3KXuWd+WQef$8(_KusSgq910Q* zM00~m2Y{i;h{EE5FmDnrY;SBV8UoB#Jg)%Fh&plEO<0^qFOT>1VC9W(e`YjF%iC^I z&_cr|oXoSk?pTdU>_8gb0y+g}Bbmcz2t&30!C{2us7k`xIJ1UktAuI9RINNhwd=h0 zwQ$0UqH`-lhdfc8D~e)|RAwvHx`sHk+PALGGxfaWs3+^FQ92nnw|P0gz4;AR?cH$Y zNqFD*nRMvW8QY3(lt>p4uYky;pfYipZ@J5uutl=Y@LysF*S3S!0+aO7&P}cxuPFl> zi8k+E?Fo3*DffvhrC)YT!WeYGr5gl)t zULnK9j*z+w-r;%G<_IHXC7LV=slGU~THk3(z*!%9`l(4QGt*>0ivNqh#uJFjsVUK! z0Kf08ga5YUFKu@bf#Sg2!>iChJ9~S6g&-FhjbCPULI>elB3 zd!plL7I5QmBg?K^%G9Ru;R&_NMds%lTGV5o7pJWT4$BN!x#;1Hdey*ldy7c#Lj>=; z7bU?8p=VKpeubnS+fK9XO95>%+aSLZ!TYA^wCS1}MLX#I)u6MliM+kP{&SmpgwXaA z{wwpEDbGtceZ*E_M1&WBhQLqO*rU?H}Bge)+LcQAm6lkWzy3SRvi)bocaR#)@u6Y z`zz@wE|~%W%gLn3XZ?ME505sTf`R<b*eh3nS{QkNpYQ4n1*I(}31L9Jp|0EM)cyt%Pi z|MSa&dA_xdCpS0F*a3jRd(wJ}Rw6GfZPj*7o)8YL0R;I7tU+HlH-@0)nbX?jl{ab} zMdkXeohw}5I84pxQ8qDqmDHL8_(vCIjuz7$RjU;SH8Cwhqc?afUF4A=7kCV)P( z!g`EwOHNJYTBb7%pgJeEm6`#yyh5I~s!rJb@9UnWv-&f^rz`r%*kvr;LsnM>|XKeh}-{FjM<_G;u5O=S4DwoIOT<-jjuuAU_hk z^?WaajTaNEVh+@NikWRQSszOvFT1D#^r%BPrLgxnFeXXXc%4HM^L@8pbti2x%&)vv zOmv3?0I4V#*Vh>U5}qd*Vtp298xPX|N_aEHbJqsm{%|j#;JAtdzA}b0kmJLooulW$ zxIKpdtnBQ?0w{s-{=Qe>4Ko#|JTm3xc|7rk`=mCR*7G1c4?huq{&0XnOMWr24gdv0 z2)Dw9sP_9jf)>ZWiPu+uryh5#0wzgsg-wFsV1g2V0IlQM3@PWJcdhoi2NZ(?K#>)p z*;72l*_Zbb;dFX&Xd-TxRpo*dhui}3`jS8ZMyWn$+Jgz=E8rmsU;%!lxc~jDgV+Ed zZ1)NcD5Wmlu(${n(y~TVLiKy|{lJZVkg=X7FupD3 zw|W5F0Jx37xp&}~fnWjvSBwPGIbU7Rul#NU_@*%gZvvkdbBeFfZ%`)rTl$t!6HfSI z7o9!eZt)1Gq-#jP1^39jb^+ZQjPq&c9w%=T!N`E82C7bfW|2~=k>w>+S3aT@#1uP76w*5-fyvba#Id`F~||G zJ43^d6@(9Y1L4?Yg`flQ3}j&dSm7a9FF@RGMeL}zL|6l@cN2odft5GYJm10U--%AV z7_XiTAIDx%$oX4#onlHU;+cZR0lfS`ZhjHu7#9nP>d^$vP+)VXXLu_VC@d{JfwnRv zs47zgbB0899%RtHhNh1A`i2#zZzcVe2~wLuc6Xs)Qp_y-5fTV!lXTcf9WWY5koBw`v{Yk#vnJ&$Dg%M5cS`F02(%>x44-YJOQY@<}ep6xeKDJ5-l zT3Bo>r~}btf$C}O^gHptWV9o|;Uomo`#jMf7&Tl}px;;r+T;?v!jHIYmU zgvB?RB(>fGaflT(LC10&vN8&fa9Zw5qqaF^{>Mw7DE*^0C zk@AzSC`;bQdxNtmX7{il6!L&3IJXMsNw#PJ!OA zxFdB3OGx2%tM`6d6T_)eru1Cyv>B^uS!(*wl^DrHl-iRJe4vZ=fNy8pPZ=+}FrwyU%$bwDLfQ%>( zj?C4*L?q1@HRw+}JeaSF8A|ilPO~Xd6ZaR>#x?)In_>qc+9gv2494Q{+Ra`J#%(om z+-t^}1nGpphPvuHxkh0uo_Uu>R5^F>x6V-w0X(Nyu=_-H#r@W&)i z9#A*ukhir*YkIN9@blm0vne&Ew1jPZb^e##Sw{;;v~p<~(&meO?eBPTFWRkGOd)SV zO(^|&fm;-$P#&?&5~WcItrm*(K`XOy-Hhu`w` z&kf$2(NIP`=I3nE7G=$N?5CJg^1pdmJTCoAgL8rf5oZ*aNv$*7Pu5IgtK%?7Q7JAG zW8_9kOHe^cDd%_TX0XRK(%39FTNWs+fm(UKpMB@Pix}f3YjaQW|H>l;i!)|sa?Ts< z{Ll%zDbT)IqUk-*&YBll?5tvW!L6m(ht4%`!@p#i;*maFezPF{9Pd$+PFB#b;3U36 z=51Lm@N0fLS^b(RCwB~VSar+ldUm7D-g~str-yr}1Nf2TNqmDqfbO8J@7rMQoFgv{ zwOOETH+?mP!5TUzx!11+OZBWsR!WSP!=p!*f3tGZIV==#?Zjf-TKL-KPWYDz)}Kb_ z#(K6t(fd4Vdrp)vr91J|k4u_nbD1Q;Kl%PXlir#-o)Xb(_B3-Ogu|?_$#uo-!rC_0 z=FY#xB44Q)QdDv|sm=LAoqHssFSJi2yGTz@i)NXES>Kl50*2XN8RJ9u=k{RiD5?~S z=#-i#8OhaT?_qN?p=+R>cn44$;y}}YJfa`x&JHqFB}G;b(A)V%qEiE@hgmiN`}zPq zz*|MR=2s%JALHD@BL$~~DP%Qc&-c8@jz78vsaGy60X%>^TmE=F`}uce)_3hu>Vqe* z3szE&(d}EYU#WarL=FS1%D3=t_)g7bd^FJ6F`068E0m_TUwJ(!A-Ktyp=e=XWv$^= z!|dy#yTEs zsY^Rm+JR>pnHsOQJF;Uua*&L1ot{}3RpeUE#@9xeWN7VeZ&`tLGxm5!9Rz#0Xb$kGi*6!pb-C{^oZ=(ow?%)g-m}-_fCxp_V#W2kQtvW5LgR z2#(2ksODw&q;0n-(?oWi5pkgY^60)h{Ttbmtf?x&-hr+RIB9a)~tyJ>XtB-&M za;ieAbf3ieHU$GZ9Zl68s)i*xn}m_`t%)-!E`F}AiuW{jvDrDaH&SsmCrui?eluGj z;lV*L(F2;}wA0uH$*iM`z#2VH6KZb8B*YzMv(rR=)4cBR%3*q`H2g5uPtIHe^dtR> z^k)9*%a}EImiTKjo`ULad~LTDK5&O$6W;O!8*$T;ipAP>ad)lJ_J#hsGYeI_?!gvA zEZ*5JNFsDB17ecMX}Cm~@C(v%#F|SI)tDAcig~#;d8Tpc!()tT`IkcV&3)%{IG0on zG0?t(oWt!4#eSZG{d1IXpGq-fH0y1F<(yld)H?DDxV5dD7E>Z-9Z>e zKWZv~3W_ZpN9|?cjlxUCBhZ!hpj1IovPYKr>^OREO)@AL*eLdwtq=C+=XW$`rUkYqG4P&qX99SIN^0K-<|uUOj@l`Bb$z63%Vw6Qb;g1F`=||wm0)J!NQCyX z(qQGSUf@N$TW&FXt7qt;+yw`)3GW=uKUuG_@69*wst*9OkJ{&!Fv0Aj8+~lRH|5Y@ zj+!fY#otMjE&&^~Q}HNf*Jby5HNO6~!nz$G^LlsbQ{;(_3+718byf2#H0)l2e*Zvx zD$Q$u2KDwPuw?6kL&C}=@X0#~iL)L$pgDlQ#C?L>F@r2;*>kzA`?0?Vd^!FjzH)s6 i4Ov+p_@8K(u3R~&c5n^-mpIwSoDaD Date: Fri, 3 Apr 2026 13:00:02 -0500 Subject: [PATCH 16/18] Mejorando despliegue --- challenge-1/Dockerfile | 42 ++++++++++++++++++ challenge-1/README.md | 2 +- challenge-1/docker-compose.yml | 78 +++++++++++++++++++++++++++++++++- challenge-1/main.sh | 37 ++++++++++++++++ 4 files changed, 156 insertions(+), 3 deletions(-) create mode 100644 challenge-1/Dockerfile create mode 100644 challenge-1/main.sh diff --git a/challenge-1/Dockerfile b/challenge-1/Dockerfile new file mode 100644 index 00000000..df715e07 --- /dev/null +++ b/challenge-1/Dockerfile @@ -0,0 +1,42 @@ +# Stage 1: Build +FROM node:20-alpine AS build + +WORKDIR /usr/src/app + +# Copiar archivos de definición de dependencias +COPY package*.json ./ +COPY tsconfig*.json ./ +COPY nest-cli.json ./ + +# Instalar todas las dependencias (incluyendo devDependencies para compilar) +RUN npm install + +# Copiar el código fuente y las librerías +COPY apps/ ./apps/ +COPY libs/ ./libs/ + +# Compilar las tres aplicaciones +RUN npm run build api +RUN npm run build relay +RUN npm run build consumers + +# Stage 2: Production +FROM node:20-alpine + +WORKDIR /usr/src/app + +# Copiar package.json y lock para instalar solo dependencias de producción +COPY package*.json ./ +RUN npm install --omit=dev + +# Copiar los artefactos compilados desde la etapa de build +COPY --from=build /usr/src/app/dist ./dist + +# Copiar las plantillas de correo necesarias para NotifyConsumer +COPY templates ./templates + +# Exponer el puerto de la API (por defecto 3001) +EXPOSE 3001 + +# El comando de inicio se sobreescribirá en docker-compose para cada servicio +CMD ["node", "dist/apps/api/main"] diff --git a/challenge-1/README.md b/challenge-1/README.md index 315c2f79..56362698 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -179,7 +179,7 @@ Como parte de la evolución de la plataforma, **he implementado** una serie de c 6. **Optimización de Respuesta (Cache):** **He integrado** una capa de caché en memoria para el endpoint de consulta de pagos. Esto **convierte** consultas que podrían ser costosas en respuestas instantáneas de pocos milisegundos para peticiones repetitivas. --- -## Cómo compilar y ejecutar +## Cómo compilar y ejecutar: `chmod +x main.sh;./main.sh` Inicia todo el proceso creando contenedores a las apis, Kafka y bases de datos, que internamente ejecutan: 1. **Levantar Infraestructura Base** (Kafka, Zookeeper, PostgreSQL) ```bash diff --git a/challenge-1/docker-compose.yml b/challenge-1/docker-compose.yml index 8fa9d2ab..dac9f9d8 100644 --- a/challenge-1/docker-compose.yml +++ b/challenge-1/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: db: image: postgres:15-alpine @@ -45,8 +43,84 @@ services: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + healthcheck: + test: ["CMD-SHELL", "nc -z localhost 9092 || exit 1"] + interval: 10s + timeout: 10s + retries: 10 + networks: + - payment-network + + payment-api: + build: + context: . + dockerfile: Dockerfile + container_name: payment_api + depends_on: + db: + condition: service_healthy + kafka: + condition: service_healthy + ports: + - "3001:3001" + environment: + - DB_HOST=db + - DB_PORT=5432 + - DB_USER=user + - DB_PASSWORD=password + - DB_NAME=payments_db + - KAFKA_BROKERS=kafka:29092 + - NODE_ENV=production + networks: + - payment-network + command: ["node", "dist/apps/api/main"] + + payment-relay: + build: + context: . + dockerfile: Dockerfile + container_name: payment_relay + depends_on: + db: + condition: service_healthy + kafka: + condition: service_healthy + environment: + - DB_HOST=db + - DB_PORT=5432 + - DB_USER=user + - DB_PASSWORD=password + - DB_NAME=payments_db + - KAFKA_BROKERS=kafka:29092 + - NODE_ENV=production + networks: + - payment-network + command: ["node", "dist/apps/relay/main"] + + payment-consumers: + build: + context: . + dockerfile: Dockerfile + container_name: payment_consumers + depends_on: + db: + condition: service_healthy + kafka: + condition: service_healthy + environment: + - DB_HOST=db + - DB_PORT=5432 + - DB_USER=user + - DB_PASSWORD=password + - DB_NAME=payments_db + - KAFKA_BROKERS=kafka:29092 + - BREVO_API_KEY=${BREVO_API_KEY} + - NOTIFY_TARGET_EMAIL=${NOTIFY_TARGET_EMAIL} + - SENDER_EMAIL=${SENDER_EMAIL} + - NODE_ENV=production networks: - payment-network + command: ["node", "dist/apps/consumers/main"] networks: payment-network: diff --git a/challenge-1/main.sh b/challenge-1/main.sh new file mode 100644 index 00000000..9760b5e5 --- /dev/null +++ b/challenge-1/main.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Script para automatizar el levantamiento del ecosistema Challenge 1 + +echo "--------------------------------------------------------" +echo "Iniciando proceso de contenedorización - Challenge 1" +echo "--------------------------------------------------------" + +# 1. Verificar si Docker está corriendo +if ! docker info > /dev/null 2>&1; then + echo "Error: Docker no parece estar corriendo. Por favor, inícialo primero." + exit 1 +fi + +# 2. Limpiar imágenes y contenedores antiguos +echo "Limpiando recursos previos..." +docker-compose down --remove-orphans + +# 3. Construir y levantar el stack +echo "Construyendo imágenes y levantando el stack completo..." +# Usamos --build para forzar la reconstrucción de las apps NestJS +docker-compose up --build -d + +echo "--------------------------------------------------------" +echo "Stack levantado en modo background." +echo "--------------------------------------------------------" +echo "Estado de los contenedores:" +docker-compose ps + +echo "" +echo "Puedes ver los logs de cualquier servicio con:" +echo " docker logs -f payment_api" +echo " docker logs -f payment_relay" +echo " docker logs -f payment_consumers" +echo "" +echo "API escuchando en: http://localhost:3001" +echo "--------------------------------------------------------" From a4c1295ef13ca64338e494c7d8aa8ffb0b418124 Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 13:04:36 -0500 Subject: [PATCH 17/18] Mejorando diagrama de secuencia --- challenge-1/README.md | 74 +++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/challenge-1/README.md b/challenge-1/README.md index 56362698..53d16e34 100644 --- a/challenge-1/README.md +++ b/challenge-1/README.md @@ -21,64 +21,64 @@ sequenceDiagram Note over C,API: 1. Creación Atómica C->>API: POST /payments - API->>DB: START TRANSACTION - API->>DB: INSERT Payment (PENDING) - API->>DB: INSERT OutboxEvent (PENDING) + API->>DB: INICIAR TRANSACCIÓN + API->>DB: INSERTAR Pago (PENDIENTE) + API->>DB: INSERTAR Evento Outbox (PENDIENTE) API->>DB: COMMIT - API-->>C: 201 Created (paymentId) + API-->>C: 201 Creado (paymentId) Note over R,DB: 2. Publicación Asíncrona (Relay) loop Cada 5 segundos (@Cron) - R->>DB: SELECT PENDING events - R->>K: Publish {pais}.payment.created.v1 - R->>DB: UPDATE OutboxEvent (SENT) + R->>DB: SELECCIONAR eventos PENDIENTES + R->>K: Publicar {pais}.payment.created.v1 + R->>DB: ACTUALIZAR Evento Outbox (ENVIADO) end Note over K,D: 3. Procesamiento Paralelo e Idempotencia - K->>D: Consume {pais}.payment.created.v1 - par Fraud Check - D->>DB: Check & Save Idempotency - D->>K: Emit {pais}.payment.fraud.approved.v1 - and Ledger Write - D->>DB: Check & Save Idempotency - D->>K: Emit {pais}.payment.ledger.written.v1 - and Notify (Brevo) - D->>N: Consume {pais}.payment.created.v1 + K->>D: Consumir {pais}.payment.created.v1 + par Verificación de Fraude + D->>DB: Verificar y Guardar Idempotencia + D->>K: Emitir {pais}.payment.fraud.approved.v1 + and Registro en Libro (Ledger) + D->>DB: Verificar y Guardar Idempotencia + D->>K: Emitir {pais}.payment.ledger.written.v1 + and Notificar (Brevo) + D->>N: Consumir {pais}.payment.created.v1 N-->>C: Email (Confirmación de Recepción) end Note over K,S: 4. Consistencia Final (Saga) rect rgba(124, 116, 116, 1) - Note right of S: Multi-Trigger Idempotency - K->>S: Consume {pais}.fraud.approved - S->>DB: Save SagaConsumer_Fraud - K->>S: Consume {pais}.ledger.written - S->>DB: Save SagaConsumer_Ledger + Note right of S: Idempotencia de Disparadores Múltiples + K->>S: Consumir {pais}.fraud.approved + S->>DB: Guardar SagaConsumer_Fraud + K->>S: Consumir {pais}.ledger.written + S->>DB: Guardar SagaConsumer_Ledger end - S->>DB: Verify both keys exist for eventId + S->>DB: Verificar que ambas llaves existen para eventId alt Ambas condiciones cumplidas - S->>DB: UPDATE Payment (SETTLED) - S->>K: Emit {pais}.payment.settled.v1 + S->>DB: ACTUALIZAR Pago (LIQUIDADO/SETTLED) + S->>K: Emitir {pais}.payment.settled.v1 else Fallo detectado (DLT) - S->>DB: UPDATE Payment (FAILED) - S->>K: Emit {pais}.payment.failed.v1 + S->>DB: ACTUALIZAR Pago (FALLIDO) + S->>K: Emitir {pais}.payment.failed.v1 end ``` ### Explicación del Proceso -1. **Transactional Outbox (API & DB):** +1. **Transactional Outbox (API y BD):** * **Hay 2 tablas** Para garantizar la atomicidad. Al guardar el `Payment` (negocio) y el `OutboxEvent` (mensaje pendiente) en la **misma transacción de base de datos**, aseguramos que no se pierdan mensajes si el sistema falla antes de avisar a Kafka. * Si la transacción local falla, no hay ni pago ni mensaje. Si tiene éxito, ambos están persistidos de forma segura. -2. **Outbox Relay (The Worker):** +2. **Outbox Relay (El Trabajador / Worker):** * Es un proceso independiente que actúa como un "cartero". Su única función es leer la tabla `outbox_events`, publicar los mensajes en Kafka y marcarlos como `SENT`. * Esto desacopla la disponibilidad de la API de la de Kafka (si Kafka no está disponible, el Relay reintenta luego). -3. **Dispatcher (Consumers Entry Point):** +3. **Dispatcher (Punto de Entrada de Consumidores):** * Centraliza la recepción del evento `payment.created.v1` y dispara en paralelo las evaluaciones de **Fraude** y **Libro Contable (Ledger)**. -4. **Consumidores Especializados (Fraud, Ledger & Notify):** +4. **Consumidores Especializados (Fraude, Libro Contable y Notificación):** * **Fraud Check:** Realiza el scoring de riesgo. Si es exitoso, emite `payment.fraud.approved.v1`. * **Ledger Write:** Registra el movimiento financiero (débito/crédito) y emite `payment.ledger.written.v1`. * **Notify (Brevo):** Escucha el evento inicial de creación (`payment.created.v1`) y envía una confirmación de recepción inmediata al usuario (`barfrank2020@gmail.com`) utilizando plantillas HTML personalizadas. @@ -161,7 +161,7 @@ erDiagram - `consumer` (String, PK): Nombre del microservicio o lógica que procesó el evento (ej. `FraudConsumer`). - `processedAt` (Timestamp): Registro de tiempo para control y auditoría de la idempotencia. -## Tech Stack +## Tecnologías Utilizadas (Tech Stack) - **Framework:** NestJS - **Microservicios/Messaging:** Nativos NestJS Microservices, Kafka - **Base de Datos:** PostgreSQL @@ -203,7 +203,7 @@ npm run build ## Arquitecturas y Decisiones (ADR) -### ADR 1: The Transactional Outbox vs Two-Phase Commit +### ADR 1: Transactional Outbox vs Two-Phase Commit - **Decisión:** **Implementé** el Transactional Outbox pattern. - **Razón:** El uso de 2PC o llamar a `kafkaClient.emit` dentro de una transacción genera pérdida de datos cuando el bloque local es exitoso pero el mensaje al Broker fracasa. Guardar una copia serializada del payload como `OutboxEvent` en PostgreSQL nos permite delegar a un *Poller Relay* la publicación, desacoplándonos de la disponibilidad instantánea de Kafka. @@ -211,7 +211,7 @@ npm run build - **Decisión:** **Elegí** un NestJS Standard Monorepo (`apps/api`, `apps/relay`, `apps/consumers`). - **Razón:** Al tratarse de un challenge, y con la estricta idea de no acoplar los consumer / relay en procesos `setInterval()` internos de la API, el monorepo nos brinda separación de subprocesos y puertos, además de permitir exportar las entidades Base de datos (`Payment`, `OutboxEvent`) y los DTOs en una única librería `libs/shared` consolidada, sin duplicidad de esfuerzo. -### ADR 3: Coreografía del Estado Final (Eventual Consistency) +### ADR 3: Coreografía del Estado Final (Consistencia Eventual) - **Decisión:** **Decidí** coreografiar el estado de los pagos desde un tercer oyente `SagaConsumer`. - **Razón:** En lugar de hacer que Fraud o Ledger modifiquen el `PaymentTable` diréctamente (creando cuellos de acceso a tabla central), enviamos una repuesta Kafka `payment.fraud.approved` que un saga local evalúa. Esto documenta con claridad la garantía *eventual* donde la API devuelve el Payload intacto con semántica PENDING hasta la convergencia final. @@ -243,7 +243,7 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec ### Requerimientos realizados - Por motivos prácticos, **asumo** una conexión genérica a la BD en todo el Monorepo. En producción, **usaría** credenciales restrictivas. -- Dead Letter Queue (`DLT`) y Retry Policies: **Configuré** el relay para que reintente sin fin. Si los consumidores fallan (simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al sub-tópico `.dlt`, enviando a su vez `payment.failed.v1` donde **mi Saga** declara el estado `FAILED`. +- Dead Letter Queue (`DLT`) y Políticas de Reintento: **Configuré** el relay para que reintente sin fin. Si los consumidores fallan (simulado con `amount > 1000000`), el `FraudConsumer` invoca `sendToDlt` y deriva al sub-tópico `.dlt`, enviando a su vez `payment.failed.v1` donde **mi Saga** declara el estado `FAILED`. --- @@ -278,7 +278,7 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec "updatedAt":"2026-04-03T08:23:17.022Z" } ``` -* **Paso C (Validar DB):** Verifica que el pago está `PENDING` y el outbox tiene el evento listo pero no enviado. +* **Paso C (Validar BD):** Verifica que el pago está `PENDING` y el outbox tiene el evento listo pero no enviado. ```bash docker exec -it challenge_db psql -U user -d payments_db -c "SELECT status, id FROM payments; SELECT status, \"aggregateId\" FROM outbox_events WHERE status = 'PENDING';" ``` @@ -324,7 +324,7 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec (1 row) ``` - Validación en Cola settled: + Validación en Cola de Liquidados (Settled): ```bash docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.settled.v1 --from-beginning --max-messages 10 ``` @@ -443,7 +443,7 @@ Al implementar prefijos geográficos (`pe.`, `mx.`, `co.`) en Kafka, mi arquitec 28de18ea-7124-46a4-acde-d06625c71f0f | FAILED | 1500000.00 (1 row) ``` -* **Paso D (Validar DLT failed):** En la cola de kafka revisamos si está el fallido. +* **Paso D (Validar DLT Fallido):** En la cola de kafka revisamos si está el fallido. ```bash docker exec kafka kafka-console-consumer --bootstrap-server localhost:9092 --topic pe.payment.failed.v1 --from-beginning --max-messages 10 ``` From 0e79592d96edc45a702aa02a770a94d07bdb113d Mon Sep 17 00:00:00 2001 From: fbarrioss Date: Fri, 3 Apr 2026 13:12:08 -0500 Subject: [PATCH 18/18] Limpieza de carpetas --- challenge-1/package-lock.json | 10808 ---------------- challenge-2/package-lock.json | 10475 --------------- challenge-3/dist/app.controller.d.ts | 22 - challenge-3/dist/app.controller.js | 82 - challenge-3/dist/app.controller.js.map | 1 - challenge-3/dist/app.module.d.ts | 2 - challenge-3/dist/app.module.js | 29 - challenge-3/dist/app.module.js.map | 1 - challenge-3/dist/app.service.d.ts | 3 - challenge-3/dist/app.service.js | 20 - challenge-3/dist/app.service.js.map | 1 - .../decorators/kafka-event.decorator.d.ts | 2 - .../dist/decorators/kafka-event.decorator.js | 12 - .../decorators/kafka-event.decorator.js.map | 1 - challenge-3/dist/index.d.ts | 4 - challenge-3/dist/index.js | 21 - challenge-3/dist/index.js.map | 1 - challenge-3/dist/kafka-consumer.explorer.d.ts | 18 - challenge-3/dist/kafka-consumer.explorer.js | 123 - .../dist/kafka-consumer.explorer.js.map | 1 - challenge-3/dist/kafka-dlt.handler.d.ts | 10 - challenge-3/dist/kafka-dlt.handler.js | 57 - challenge-3/dist/kafka-dlt.handler.js.map | 1 - challenge-3/dist/kafka-typed-producer.d.ts | 10 - challenge-3/dist/kafka-typed-producer.js | 48 - challenge-3/dist/kafka-typed-producer.js.map | 1 - challenge-3/dist/kafka.module.d.ts | 12 - challenge-3/dist/kafka.module.js | 61 - challenge-3/dist/kafka.module.js.map | 1 - challenge-3/dist/main.d.ts | 1 - challenge-3/dist/main.js | 10 - challenge-3/dist/main.js.map | 1 - challenge-3/dist/tsconfig.build.tsbuildinfo | 1 - .../dist/types/event-contract.type.d.ts | 11 - challenge-3/dist/types/event-contract.type.js | 3 - .../dist/types/event-contract.type.js.map | 1 - challenge-3/package-lock.json | 9946 -------------- 37 files changed, 31802 deletions(-) delete mode 100644 challenge-1/package-lock.json delete mode 100644 challenge-2/package-lock.json delete mode 100644 challenge-3/dist/app.controller.d.ts delete mode 100644 challenge-3/dist/app.controller.js delete mode 100644 challenge-3/dist/app.controller.js.map delete mode 100644 challenge-3/dist/app.module.d.ts delete mode 100644 challenge-3/dist/app.module.js delete mode 100644 challenge-3/dist/app.module.js.map delete mode 100644 challenge-3/dist/app.service.d.ts delete mode 100644 challenge-3/dist/app.service.js delete mode 100644 challenge-3/dist/app.service.js.map delete mode 100644 challenge-3/dist/decorators/kafka-event.decorator.d.ts delete mode 100644 challenge-3/dist/decorators/kafka-event.decorator.js delete mode 100644 challenge-3/dist/decorators/kafka-event.decorator.js.map delete mode 100644 challenge-3/dist/index.d.ts delete mode 100644 challenge-3/dist/index.js delete mode 100644 challenge-3/dist/index.js.map delete mode 100644 challenge-3/dist/kafka-consumer.explorer.d.ts delete mode 100644 challenge-3/dist/kafka-consumer.explorer.js delete mode 100644 challenge-3/dist/kafka-consumer.explorer.js.map delete mode 100644 challenge-3/dist/kafka-dlt.handler.d.ts delete mode 100644 challenge-3/dist/kafka-dlt.handler.js delete mode 100644 challenge-3/dist/kafka-dlt.handler.js.map delete mode 100644 challenge-3/dist/kafka-typed-producer.d.ts delete mode 100644 challenge-3/dist/kafka-typed-producer.js delete mode 100644 challenge-3/dist/kafka-typed-producer.js.map delete mode 100644 challenge-3/dist/kafka.module.d.ts delete mode 100644 challenge-3/dist/kafka.module.js delete mode 100644 challenge-3/dist/kafka.module.js.map delete mode 100644 challenge-3/dist/main.d.ts delete mode 100644 challenge-3/dist/main.js delete mode 100644 challenge-3/dist/main.js.map delete mode 100644 challenge-3/dist/tsconfig.build.tsbuildinfo delete mode 100644 challenge-3/dist/types/event-contract.type.d.ts delete mode 100644 challenge-3/dist/types/event-contract.type.js delete mode 100644 challenge-3/dist/types/event-contract.type.js.map delete mode 100644 challenge-3/package-lock.json diff --git a/challenge-1/package-lock.json b/challenge-1/package-lock.json deleted file mode 100644 index 732d3751..00000000 --- a/challenge-1/package-lock.json +++ /dev/null @@ -1,10808 +0,0 @@ -{ - "name": "challenge-1", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "challenge-1", - "version": "0.0.1", - "license": "UNLICENSED", - "dependencies": { - "@nestjs/cache-manager": "^3.1.0", - "@nestjs/common": "^11.0.1", - "@nestjs/config": "^4.0.3", - "@nestjs/core": "^11.0.1", - "@nestjs/microservices": "^11.1.17", - "@nestjs/platform-express": "^11.0.1", - "@nestjs/schedule": "^6.1.1", - "@nestjs/throttler": "^6.5.0", - "@nestjs/typeorm": "^11.0.0", - "cache-manager": "^7.2.8", - "class-transformer": "^0.5.1", - "class-validator": "^0.15.1", - "kafkajs": "^2.2.4", - "nestjs-zod": "^5.2.1", - "pg": "^8.20.0", - "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1", - "typeorm": "^0.3.28", - "uuid": "^13.0.0", - "zod": "^4.3.6" - }, - "devDependencies": { - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.18.0", - "@nestjs/cli": "^11.0.0", - "@nestjs/schematics": "^11.0.0", - "@nestjs/testing": "^11.0.1", - "@types/cron": "^2.0.1", - "@types/express": "^5.0.0", - "@types/jest": "^30.0.0", - "@types/node": "^24.0.0", - "@types/supertest": "^7.0.0", - "@types/uuid": "^10.0.0", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.2", - "globals": "^17.0.0", - "jest": "^30.0.0", - "prettier": "^3.4.2", - "source-map-support": "^0.5.21", - "supertest": "^7.0.0", - "ts-jest": "^29.2.5", - "ts-loader": "^9.5.2", - "ts-node": "^10.9.2", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.20.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", - "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/core/node_modules/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, - "license": "MIT" - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", - "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", - "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@inquirer/prompts": "7.3.2", - "ansi-colors": "4.1.3", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", - "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.1.2", - "@inquirer/confirm": "^5.1.6", - "@inquirer/editor": "^4.2.7", - "@inquirer/expand": "^4.0.9", - "@inquirer/input": "^4.1.6", - "@inquirer/number": "^3.0.9", - "@inquirer/password": "^4.0.9", - "@inquirer/rawlist": "^4.0.9", - "@inquirer/search": "^3.0.9", - "@inquirer/select": "^4.0.9" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@borewit/text-codec": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", - "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@cacheable/utils": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.1.tgz", - "integrity": "sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA==", - "license": "MIT", - "dependencies": { - "hashery": "^1.5.1", - "keyv": "^5.6.0" - } - }, - "node_modules/@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, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@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==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@emnapi/core": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", - "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", - "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", - "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", - "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@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, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "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==", - "license": "ISC", - "dependencies": { - "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": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "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==", - "license": "MIT", - "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, - "license": "ISC", - "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/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@keyv/serialize": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", - "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", - "license": "MIT" - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nestjs/cache-manager": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.1.0.tgz", - "integrity": "sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", - "@nestjs/core": "^9.0.0 || ^10.0.0 || ^11.0.0", - "cache-manager": ">=6", - "keyv": ">=5", - "rxjs": "^7.8.1" - } - }, - "node_modules/@nestjs/cli": { - "version": "11.0.17", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", - "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@angular-devkit/schematics-cli": "19.2.22", - "@inquirer/prompts": "7.10.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "4.2.0", - "chokidar": "4.0.3", - "cli-table3": "0.6.5", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "13.0.6", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.9.3", - "webpack": "5.105.4", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 20.11" - }, - "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", - "@swc/core": "^1.3.62" - }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.18.tgz", - "integrity": "sha512-0sLq8Z+TIjLnz1Tqp0C/x9BpLbqpt1qEu0VcH4/fkE0y3F5JxhfK1AdKQ/SPbKhKgwqVDoY4gS8GQr2G6ujaWg==", - "license": "MIT", - "dependencies": { - "file-type": "21.3.4", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/config": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.3.tgz", - "integrity": "sha512-FQ3M3Ohqfl+nHAn5tp7++wUQw0f2nAk+SFKe8EpNRnIifPqvfJP6JQxPKtFLMOHbyer4X646prFG4zSRYEssQQ==", - "license": "MIT", - "dependencies": { - "dotenv": "17.2.3", - "dotenv-expand": "12.0.3", - "lodash": "4.17.23" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "rxjs": "^7.1.0" - } - }, - "node_modules/@nestjs/core": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.18.tgz", - "integrity": "sha512-wR3DtGyk/LUAiPtbXDuWJJwVkWElKBY0sqnTzf9d4uM3+X18FRZhK7WFc47czsIGOdWuRsMeLYV+1Z9dO4zDEQ==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.4.2", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/microservices": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.18.tgz", - "integrity": "sha512-sodzBqqKAcOv5GctTbb0j3vzgx+X3/IxmJ8pBKL9hEmsarsYPkig6dcOcVFmM2Pknm+o6Cxaqv1YZZETISNi+w==", - "license": "MIT", - "dependencies": { - "iterare": "1.2.1", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@grpc/grpc-js": "*", - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "amqp-connection-manager": "*", - "amqplib": "*", - "cache-manager": "*", - "ioredis": "*", - "kafkajs": "*", - "mqtt": "*", - "nats": "*", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@grpc/grpc-js": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - }, - "amqp-connection-manager": { - "optional": true - }, - "amqplib": { - "optional": true - }, - "cache-manager": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "kafkajs": { - "optional": true - }, - "mqtt": { - "optional": true - }, - "nats": { - "optional": true - } - } - }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.18.tgz", - "integrity": "sha512-s6GdHMTa3qx0fJewR74Xa30ysPHfBEqxIwZ7BGSTLoAEQ1vTP24urNl+b6+s49NFLEIOyeNho5fN/9/I17QlOw==", - "license": "MIT", - "dependencies": { - "cors": "2.8.6", - "express": "5.2.1", - "multer": "2.1.1", - "path-to-regexp": "8.4.2", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" - } - }, - "node_modules/@nestjs/schedule": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.1.tgz", - "integrity": "sha512-kQl1RRgi02GJ0uaUGCrXHCcwISsCsJDciCKe38ykJZgnAeeoeVWs8luWtBo4AqAAXm4nS5K8RlV0smHUJ4+2FA==", - "license": "MIT", - "dependencies": { - "cron": "4.4.0" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0" - } - }, - "node_modules/@nestjs/schematics": { - "version": "11.0.10", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", - "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "@angular-devkit/schematics": "19.2.23", - "comment-json": "4.6.2", - "jsonc-parser": "3.3.1", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": ">=4.8.2" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", - "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.4", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", - "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nestjs/schematics/node_modules/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, - "license": "MIT" - }, - "node_modules/@nestjs/schematics/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@nestjs/testing": { - "version": "11.1.18", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.18.tgz", - "integrity": "sha512-frzwNlpBgtAzI3hp/qo57DZoRO4RMTH1wST3QUYEhRTHyfPkLpzkWz3jV/mhApXjD0yT56Ptlzn6zuYPLh87Lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@nestjs/throttler": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@nestjs/throttler/-/throttler-6.5.0.tgz", - "integrity": "sha512-9j0ZRfH0QE1qyrj9JjIRDz5gQLPqq9yVC2nHsrosDVAfI5HHw08/aUAWx9DZLSdQf4HDkmhTTEGLrRFHENvchQ==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", - "@nestjs/core": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0" - } - }, - "node_modules/@nestjs/typeorm": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.1.tgz", - "integrity": "sha512-8rw/nKT0S+L+MkzgE9F2/mox7mAgsPlwfzmW9gsESN1lmQtIrVEfiiBwC2O8+guS1jBfQehJIdcdUj2OAp4VUQ==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.2.0", - "typeorm": "^0.3.0 || ^1.0.0-dev" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", - "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "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==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz", - "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sqltools/formatter": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", - "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", - "license": "MIT" - }, - "node_modules/@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/cron": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/cron/-/cron-2.0.1.tgz", - "integrity": "sha512-WHa/1rtNtD2Q/H0+YTTZoty+/5rcE66iAFX2IY+JuUoOACsevYyFkSYu/2vdw+G5LrmO7Lxowrqm0av4k3qWNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/luxon": "*", - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/luxon": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", - "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", - "license": "MIT" - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", - "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/supertest": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", - "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" - } - }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/validator": { - "version": "13.15.10", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", - "integrity": "sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==", - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", - "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/type-utils": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.58.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", - "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.0", - "@typescript-eslint/types": "^8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", - "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.58.0", - "@typescript-eslint/tsconfig-utils": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@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, - "license": "BSD-3-Clause" - }, - "node_modules/@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, - "license": "Apache-2.0" - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "devOptional": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", - "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/app-root-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", - "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/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, - "license": "Python-2.0" - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.3.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.14", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.14.tgz", - "integrity": "sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-manager": { - "version": "7.2.8", - "resolved": "https://registry.npmjs.org/cache-manager/-/cache-manager-7.2.8.tgz", - "integrity": "sha512-0HDaDLBBY/maa/LmUVAr70XUOwsiQD+jyzCBjmUErYZUKdMS9dT59PqW59PpVqfGM7ve6H0J6307JTpkCYefHQ==", - "license": "MIT", - "dependencies": { - "@cacheable/utils": "^2.3.3", - "keyv": "^5.5.5" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/class-transformer": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz", - "integrity": "sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==", - "license": "MIT" - }, - "node_modules/class-validator": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/class-validator/-/class-validator-0.15.1.tgz", - "integrity": "sha512-LqoS80HBBSCVhz/3KloUly0ovokxpdOLR++Al3J3+dHXWt9sTKlKd4eYtoxhxyUjoe5+UcIM+5k9MIxyBWnRTw==", - "license": "MIT", - "dependencies": { - "@types/validator": "^13.15.3", - "libphonenumber-js": "^1.11.1", - "validator": "^13.15.22" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-json": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", - "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-timsort": "^1.0.3", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/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==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/cron": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cron/-/cron-4.4.0.tgz", - "integrity": "sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==", - "license": "MIT", - "dependencies": { - "@types/luxon": "~3.7.0", - "luxon": "~3.7.0" - }, - "engines": { - "node": ">=18.x" - }, - "funding": { - "type": "ko-fi", - "url": "https://ko-fi.com/intcreator" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dotenv": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", - "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", - "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotenv-expand/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.331", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", - "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", - "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "9.39.4", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/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, - "license": "ISC" - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-type": { - "version": "21.3.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.4.tgz", - "integrity": "sha512-Ievi/yy8DS3ygGvT47PjSfdFoX+2isQueoYP1cntFW1JLYAuS4GD7NUPGg4zv2iZfV52uDyk5w5Z0TdpRS6Q1g==", - "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flat-cache/node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^4.0.1", - "cosmiconfig": "^8.2.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/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, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "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, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hashery": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz", - "integrity": "sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ==", - "license": "MIT", - "dependencies": { - "hookified": "^1.15.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hookified": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz", - "integrity": "sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "license": "ISC", - "engines": { - "node": ">=6" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", - "import-local": "^3.2.0", - "jest-cli": "30.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.3.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "p-limit": "^3.1.0", - "pretty-format": "30.3.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "parse-json": "^5.2.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.3.0", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kafkajs": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", - "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/keyv": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", - "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.1.1" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libphonenumber-js": { - "version": "1.12.41", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.41.tgz", - "integrity": "sha512-lsmMmGXBxXIK/VMLEj0kL6MtUs1kBGj1nTCzi6zgQoG1DEwqwt2DQyHxcLykceIxAnfE3hya7NuIh6PpC6S3fA==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/load-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", - "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - }, - { - "type": "buymeacoffee", - "url": "https://buymeacoffee.com/borewit" - } - ], - "license": "MIT", - "engines": { - "node": ">=13.2.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", - "license": "MIT", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "type-is": "^1.6.18" - }, - "engines": { - "node": ">= 10.16.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/multer/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/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==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/nestjs-zod": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/nestjs-zod/-/nestjs-zod-5.2.1.tgz", - "integrity": "sha512-pGfOsLVcXJKB6vdh59YMN9o3hvaOKFISo1EU9IUCMGl5yb0JsvY6A0ZnNnTmwb8zs7o1cWwC8GeVrawvnL8/rw==", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.3.1" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/swagger": "^7.4.2 || ^8.0.0 || ^11.0.0", - "rxjs": "^7.0.0", - "zod": "^3.25.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/swagger": { - "optional": true - } - } - }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "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.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-to-regexp": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", - "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pg": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", - "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", - "license": "MIT", - "dependencies": { - "pg-connection-string": "^2.12.0", - "pg-pool": "^3.13.0", - "pg-protocol": "^1.13.0", - "pg-types": "2.2.0", - "pgpass": "1.0.5" - }, - "engines": { - "node": ">= 16.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.3.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", - "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", - "license": "MIT", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", - "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", - "license": "MIT" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", - "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", - "license": "MIT", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "license": "MIT", - "dependencies": { - "split2": "^4.1.0" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", - "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/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, - "license": "ISC" - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/schema-utils": { - "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, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sql-highlight": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", - "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", - "funding": [ - "https://github.com/scriptcoded/sql-highlight?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/scriptcoded" - } - ], - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", - "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/superagent": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", - "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "component-emitter": "^1.3.1", - "cookiejar": "^2.1.4", - "debug": "^4.3.7", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.5", - "formidable": "^3.5.4", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.14.1" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/supertest": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", - "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cookie-signature": "^1.2.2", - "methods": "^1.1.2", - "superagent": "^10.3.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", - "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", - "license": "MIT", - "dependencies": { - "@borewit/text-codec": "^0.2.1", - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-jest": { - "version": "29.4.9", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", - "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.9", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.4", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <7" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-loader": { - "version": "9.5.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", - "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@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" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tapable": "^2.2.1", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typeorm": { - "version": "0.3.28", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", - "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", - "license": "MIT", - "dependencies": { - "@sqltools/formatter": "^1.2.5", - "ansis": "^4.2.0", - "app-root-path": "^3.1.0", - "buffer": "^6.0.3", - "dayjs": "^1.11.19", - "debug": "^4.4.3", - "dedent": "^1.7.0", - "dotenv": "^16.6.1", - "glob": "^10.5.0", - "reflect-metadata": "^0.2.2", - "sha.js": "^2.4.12", - "sql-highlight": "^6.1.0", - "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@sap/hana-client": "^2.14.22", - "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "ioredis": "^5.0.4", - "mongodb": "^5.8.0 || ^6.0.0", - "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", - "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0", - "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@google-cloud/spanner": { - "optional": true - }, - "@sap/hana-client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mssql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - }, - "typeorm-aurora-data-api-driver": { - "optional": true - } - } - }, - "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typeorm/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/typeorm/node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/typeorm/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typeorm/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/typeorm/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typeorm/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typeorm/node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", - "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.0", - "@typescript-eslint/parser": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", - "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", - "license": "MIT", - "dependencies": { - "@lukeed/csprng": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uint8array-extras": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", - "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-13.0.0.tgz", - "integrity": "sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist-node/bin/uuid" - } - }, - "node_modules/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==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validator": { - "version": "13.15.35", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.35.tgz", - "integrity": "sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT" - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/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==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", - "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/challenge-2/package-lock.json b/challenge-2/package-lock.json deleted file mode 100644 index 1adfcbe0..00000000 --- a/challenge-2/package-lock.json +++ /dev/null @@ -1,10475 +0,0 @@ -{ - "name": "challenge-2", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "challenge-2", - "version": "0.0.1", - "license": "UNLICENSED", - "dependencies": { - "@nestjs/common": "^11.0.1", - "@nestjs/core": "^11.0.1", - "@nestjs/event-emitter": "^3.0.1", - "@nestjs/platform-express": "^11.0.1", - "@nestjs/typeorm": "^11.0.0", - "pg": "^8.20.0", - "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1", - "typeorm": "^0.3.28" - }, - "devDependencies": { - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.18.0", - "@nestjs/cli": "^11.0.0", - "@nestjs/schematics": "^11.0.0", - "@nestjs/testing": "^11.0.1", - "@types/express": "^5.0.0", - "@types/jest": "^30.0.0", - "@types/node": "^24.0.0", - "@types/supertest": "^7.0.0", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.2", - "globals": "^17.0.0", - "jest": "^30.0.0", - "prettier": "^3.4.2", - "source-map-support": "^0.5.21", - "supertest": "^7.0.0", - "ts-jest": "^29.2.5", - "ts-loader": "^9.5.2", - "ts-node": "^10.9.2", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.20.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", - "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/core/node_modules/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, - "license": "MIT" - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", - "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", - "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@inquirer/prompts": "7.3.2", - "ansi-colors": "4.1.3", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", - "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.1.2", - "@inquirer/confirm": "^5.1.6", - "@inquirer/editor": "^4.2.7", - "@inquirer/expand": "^4.0.9", - "@inquirer/input": "^4.1.6", - "@inquirer/number": "^3.0.9", - "@inquirer/password": "^4.0.9", - "@inquirer/rawlist": "^4.0.9", - "@inquirer/search": "^3.0.9", - "@inquirer/select": "^4.0.9" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@borewit/text-codec": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", - "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@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, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@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==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@emnapi/core": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", - "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", - "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", - "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", - "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@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, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "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==", - "license": "ISC", - "dependencies": { - "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": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "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==", - "license": "MIT", - "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.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "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==", - "license": "MIT", - "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, - "license": "ISC", - "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/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nestjs/cli": { - "version": "11.0.17", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", - "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@angular-devkit/schematics-cli": "19.2.22", - "@inquirer/prompts": "7.10.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "4.2.0", - "chokidar": "4.0.3", - "cli-table3": "0.6.5", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "13.0.6", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.9.3", - "webpack": "5.105.4", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 20.11" - }, - "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", - "@swc/core": "^1.3.62" - }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", - "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", - "license": "MIT", - "dependencies": { - "file-type": "21.3.2", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/core": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", - "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/event-emitter": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/event-emitter/-/event-emitter-3.0.1.tgz", - "integrity": "sha512-0Ln/x+7xkU6AJFOcQI9tIhUMXVF7D5itiaQGOyJbXtlAfAIt8gzDdJm+Im7cFzKoWkiW5nCXCPh6GSvdQd/3Dw==", - "license": "MIT", - "dependencies": { - "eventemitter2": "6.4.9" - }, - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0" - } - }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", - "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", - "license": "MIT", - "dependencies": { - "cors": "2.8.6", - "express": "5.2.1", - "multer": "2.1.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" - } - }, - "node_modules/@nestjs/schematics": { - "version": "11.0.10", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", - "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "@angular-devkit/schematics": "19.2.23", - "comment-json": "4.6.2", - "jsonc-parser": "3.3.1", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": ">=4.8.2" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", - "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.4", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", - "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nestjs/schematics/node_modules/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, - "license": "MIT" - }, - "node_modules/@nestjs/schematics/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@nestjs/testing": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", - "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@nestjs/typeorm": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-11.0.0.tgz", - "integrity": "sha512-SOeUQl70Lb2OfhGkvnh4KXWlsd+zA08RuuQgT7kKbzivngxzSo1Oc7Usu5VxCxACQC9wc2l9esOHILSJeK7rJA==", - "license": "MIT", - "peerDependencies": { - "@nestjs/common": "^10.0.0 || ^11.0.0", - "@nestjs/core": "^10.0.0 || ^11.0.0", - "reflect-metadata": "^0.1.13 || ^0.2.0", - "rxjs": "^7.2.0", - "typeorm": "^0.3.0" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", - "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "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==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz", - "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sqltools/formatter": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", - "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", - "license": "MIT" - }, - "node_modules/@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/supertest": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", - "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", - "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/type-utils": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.58.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", - "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.0", - "@typescript-eslint/types": "^8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", - "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.58.0", - "@typescript-eslint/tsconfig-utils": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@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, - "license": "BSD-3-Clause" - }, - "node_modules/@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, - "license": "Apache-2.0" - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "devOptional": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", - "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/app-root-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", - "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/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, - "license": "Python-2.0" - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.3.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-json": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", - "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-timsort": "^1.0.3", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/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==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dayjs": { - "version": "1.11.20", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", - "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.331", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", - "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", - "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "9.39.4", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", - "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/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, - "license": "ISC" - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-type": { - "version": "21.3.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", - "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^4.0.1", - "cosmiconfig": "^8.2.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/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, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "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, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "license": "ISC", - "engines": { - "node": ">=6" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", - "import-local": "^3.2.0", - "jest-cli": "30.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.3.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "p-limit": "^3.1.0", - "pretty-format": "30.3.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "parse-json": "^5.2.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.3.0", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/load-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", - "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - }, - { - "type": "buymeacoffee", - "url": "https://buymeacoffee.com/borewit" - } - ], - "license": "MIT", - "engines": { - "node": ">=13.2.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", - "license": "MIT", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "type-is": "^1.6.18" - }, - "engines": { - "node": ">= 10.16.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/multer/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/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==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "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.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/pg": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", - "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", - "license": "MIT", - "dependencies": { - "pg-connection-string": "^2.12.0", - "pg-pool": "^3.13.0", - "pg-protocol": "^1.13.0", - "pg-types": "2.2.0", - "pgpass": "1.0.5" - }, - "engines": { - "node": ">= 16.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.3.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", - "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", - "license": "MIT", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", - "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", - "license": "MIT" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", - "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", - "license": "MIT", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "license": "MIT", - "dependencies": { - "split2": "^4.1.0" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz", - "integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/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, - "license": "ISC" - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/schema-utils": { - "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, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sql-highlight": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", - "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", - "funding": [ - "https://github.com/scriptcoded/sql-highlight?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/scriptcoded" - } - ], - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", - "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/superagent": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", - "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "component-emitter": "^1.3.1", - "cookiejar": "^2.1.4", - "debug": "^4.3.7", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.5", - "formidable": "^3.5.4", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.14.1" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/supertest": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", - "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cookie-signature": "^1.2.2", - "methods": "^1.1.2", - "superagent": "^10.3.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-buffer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", - "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", - "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", - "license": "MIT", - "dependencies": { - "@borewit/text-codec": "^0.2.1", - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-jest": { - "version": "29.4.9", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", - "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.9", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.4", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <7" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-loader": { - "version": "9.5.7", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.7.tgz", - "integrity": "sha512-/ZNrKgA3K3PtpMYOC71EeMWIloGw3IYEa5/t1cyz2r5/PyUwTXGzYJvcD3kfUvmhlfpz1rhV8B2O6IVTQ0avsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@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" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tapable": "^2.2.1", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typeorm": { - "version": "0.3.28", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.28.tgz", - "integrity": "sha512-6GH7wXhtfq2D33ZuRXYwIsl/qM5685WZcODZb7noOOcRMteM9KF2x2ap3H0EBjnSV0VO4gNAfJT5Ukp0PkOlvg==", - "license": "MIT", - "dependencies": { - "@sqltools/formatter": "^1.2.5", - "ansis": "^4.2.0", - "app-root-path": "^3.1.0", - "buffer": "^6.0.3", - "dayjs": "^1.11.19", - "debug": "^4.4.3", - "dedent": "^1.7.0", - "dotenv": "^16.6.1", - "glob": "^10.5.0", - "reflect-metadata": "^0.2.2", - "sha.js": "^2.4.12", - "sql-highlight": "^6.1.0", - "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", - "@sap/hana-client": "^2.14.22", - "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "ioredis": "^5.0.4", - "mongodb": "^5.8.0 || ^6.0.0", - "mssql": "^9.1.1 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", - "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0", - "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@google-cloud/spanner": { - "optional": true - }, - "@sap/hana-client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mssql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - }, - "typeorm-aurora-data-api-driver": { - "optional": true - } - } - }, - "node_modules/typeorm/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typeorm/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/typeorm/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typeorm/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/typeorm/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typeorm/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", - "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.0", - "@typescript-eslint/parser": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", - "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", - "license": "MIT", - "dependencies": { - "@lukeed/csprng": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uint8array-extras": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", - "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/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==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT" - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/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==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/challenge-3/dist/app.controller.d.ts b/challenge-3/dist/app.controller.d.ts deleted file mode 100644 index 9d01f22b..00000000 --- a/challenge-3/dist/app.controller.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AppService } from './app.service'; -import { KafkaTypedProducer } from './kafka-typed-producer'; -import type { EventContract } from './types/event-contract.type'; -type PaymentCreatedPayload = { - paymentId: string; - amount: number; - currency: 'PEN' | 'MXN' | 'USD'; - fromCountry: string; -}; -export declare class AppController { - private readonly appService; - private readonly producer; - private readonly logger; - readonly maxRetries = 2; - constructor(appService: AppService, producer: KafkaTypedProducer); - getHello(): string; - testPublish(body: any): Promise<{ - status: string; - }>; - handlePaymentCreated(event: EventContract): Promise; -} -export {}; diff --git a/challenge-3/dist/app.controller.js b/challenge-3/dist/app.controller.js deleted file mode 100644 index aa88f213..00000000 --- a/challenge-3/dist/app.controller.js +++ /dev/null @@ -1,82 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var AppController_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AppController = void 0; -const common_1 = require("@nestjs/common"); -const app_service_1 = require("./app.service"); -const kafka_typed_producer_1 = require("./kafka-typed-producer"); -const kafka_event_decorator_1 = require("./decorators/kafka-event.decorator"); -let AppController = AppController_1 = class AppController { - appService; - producer; - logger = new common_1.Logger(AppController_1.name); - maxRetries = 2; - constructor(appService, producer) { - this.appService = appService; - this.producer = producer; - } - getHello() { - return this.appService.getHello(); - } - async testPublish(body) { - await this.producer.publish('payment.created.v1', { - eventId: Math.random().toString(), - eventType: 'payment.created.v1', - version: 1, - producer: 'squad-payments', - occurredAt: new Date().toISOString(), - data: { - paymentId: 'PAY-123456', - amount: body.amount || 100, - currency: 'PEN', - fromCountry: 'PE', - }, - }); - return { status: 'published' }; - } - async handlePaymentCreated(event) { - this.logger.log(`Received Kafka Event in Squad Consumer: ${JSON.stringify(event.data)}`); - if (event.data.amount > 1000) { - this.logger.error('Amount too high! Simulating crash to trigger DLT handler...'); - throw new Error('Amount exceeds maximum allowed limit. Simulating failure.'); - } - } -}; -exports.AppController = AppController; -__decorate([ - (0, common_1.Get)(), - __metadata("design:type", Function), - __metadata("design:paramtypes", []), - __metadata("design:returntype", String) -], AppController.prototype, "getHello", null); -__decorate([ - (0, common_1.Post)('/test-publish'), - __param(0, (0, common_1.Body)()), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AppController.prototype, "testPublish", null); -__decorate([ - (0, kafka_event_decorator_1.KafkaEvent)('payment.created.v1'), - __metadata("design:type", Function), - __metadata("design:paramtypes", [Object]), - __metadata("design:returntype", Promise) -], AppController.prototype, "handlePaymentCreated", null); -exports.AppController = AppController = AppController_1 = __decorate([ - (0, common_1.Controller)(), - __metadata("design:paramtypes", [app_service_1.AppService, - kafka_typed_producer_1.KafkaTypedProducer]) -], AppController); -//# sourceMappingURL=app.controller.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.controller.js.map b/challenge-3/dist/app.controller.js.map deleted file mode 100644 index 3babd66b..00000000 --- a/challenge-3/dist/app.controller.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.controller.js","sourceRoot":"","sources":["../src/app.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAqE;AACrE,+CAA2C;AAC3C,iEAA4D;AAC5D,8EAAgE;AAYzD,IAAM,aAAa,qBAAnB,MAAM,aAAa;IAOL;IACA;IAPF,MAAM,GAAG,IAAI,eAAM,CAAC,eAAa,CAAC,IAAI,CAAC,CAAC;IAGzC,UAAU,GAAG,CAAC,CAAC;IAE/B,YACmB,UAAsB,EACtB,QAA4B;QAD5B,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAAoB;IAC3C,CAAC;IAGL,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW,CAAS,IAAS;QAEjC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAwB,oBAAoB,EAAE;YACvE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,SAAS,EAAE,oBAAoB;YAC/B,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,IAAI,EAAE;gBACJ,SAAS,EAAE,YAAY;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;gBAC1B,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;aAClB;SACF,CAAC,CAAC;QAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAIK,AAAN,KAAK,CAAC,oBAAoB,CAAC,KAA2C;QACpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2CAA2C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGzF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF,CAAA;AA/CY,sCAAa;AAYxB;IADC,IAAA,YAAG,GAAE;;;;6CAGL;AAGK;IADL,IAAA,aAAI,EAAC,eAAe,CAAC;IACH,WAAA,IAAA,aAAI,GAAE,CAAA;;;;gDAiBxB;AAIK;IADL,IAAA,kCAAU,EAAC,oBAAoB,CAAC;;;;yDAShC;wBA9CU,aAAa;IADzB,IAAA,mBAAU,GAAE;qCAQoB,wBAAU;QACZ,yCAAkB;GARpC,aAAa,CA+CzB"} \ No newline at end of file diff --git a/challenge-3/dist/app.module.d.ts b/challenge-3/dist/app.module.d.ts deleted file mode 100644 index 09cdb35c..00000000 --- a/challenge-3/dist/app.module.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare class AppModule { -} diff --git a/challenge-3/dist/app.module.js b/challenge-3/dist/app.module.js deleted file mode 100644 index 0cdd5cd8..00000000 --- a/challenge-3/dist/app.module.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AppModule = void 0; -const common_1 = require("@nestjs/common"); -const app_controller_1 = require("./app.controller"); -const app_service_1 = require("./app.service"); -const kafka_module_1 = require("./kafka.module"); -let AppModule = class AppModule { -}; -exports.AppModule = AppModule; -exports.AppModule = AppModule = __decorate([ - (0, common_1.Module)({ - imports: [ - kafka_module_1.KafkaModule.forFeature({ - topics: ['payment.created.v1'], - consumerGroup: 'payments-service-cg', - }), - ], - controllers: [app_controller_1.AppController], - providers: [app_service_1.AppService], - }) -], AppModule); -//# sourceMappingURL=app.module.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.module.js.map b/challenge-3/dist/app.module.js.map deleted file mode 100644 index cb6fc0be..00000000 --- a/challenge-3/dist/app.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AACjD,+CAA2C;AAC3C,iDAA6C;AAYtC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAVrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,0BAAW,CAAC,UAAU,CAAC;gBACrB,MAAM,EAAE,CAAC,oBAAoB,CAAC;gBAC9B,aAAa,EAAE,qBAAqB;aACrC,CAAC;SACH;QACD,WAAW,EAAE,CAAC,8BAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,wBAAU,CAAC;KACxB,CAAC;GACW,SAAS,CAAG"} \ No newline at end of file diff --git a/challenge-3/dist/app.service.d.ts b/challenge-3/dist/app.service.d.ts deleted file mode 100644 index 0496e790..00000000 --- a/challenge-3/dist/app.service.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -export declare class AppService { - getHello(): string; -} diff --git a/challenge-3/dist/app.service.js b/challenge-3/dist/app.service.js deleted file mode 100644 index 3bfb90bd..00000000 --- a/challenge-3/dist/app.service.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.AppService = void 0; -const common_1 = require("@nestjs/common"); -let AppService = class AppService { - getHello() { - return 'Hello World!'; - } -}; -exports.AppService = AppService; -exports.AppService = AppService = __decorate([ - (0, common_1.Injectable)() -], AppService); -//# sourceMappingURL=app.service.js.map \ No newline at end of file diff --git a/challenge-3/dist/app.service.js.map b/challenge-3/dist/app.service.js.map deleted file mode 100644 index b1674f62..00000000 --- a/challenge-3/dist/app.service.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"app.service.js","sourceRoot":"","sources":["../src/app.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAGrC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACrB,QAAQ;QACN,OAAO,cAAc,CAAC;IACxB,CAAC;CACF,CAAA;AAJY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAItB"} \ No newline at end of file diff --git a/challenge-3/dist/decorators/kafka-event.decorator.d.ts b/challenge-3/dist/decorators/kafka-event.decorator.d.ts deleted file mode 100644 index 64f9ec44..00000000 --- a/challenge-3/dist/decorators/kafka-event.decorator.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare const KAFKA_EVENT_METADATA: unique symbol; -export declare function KafkaEvent(topic: string): MethodDecorator; diff --git a/challenge-3/dist/decorators/kafka-event.decorator.js b/challenge-3/dist/decorators/kafka-event.decorator.js deleted file mode 100644 index b8de736d..00000000 --- a/challenge-3/dist/decorators/kafka-event.decorator.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KAFKA_EVENT_METADATA = void 0; -exports.KafkaEvent = KafkaEvent; -exports.KAFKA_EVENT_METADATA = Symbol('KAFKA_EVENT_METADATA'); -function KafkaEvent(topic) { - return (target, propertyKey, descriptor) => { - Reflect.defineMetadata(exports.KAFKA_EVENT_METADATA, { topic }, descriptor.value); - return descriptor; - }; -} -//# sourceMappingURL=kafka-event.decorator.js.map \ No newline at end of file diff --git a/challenge-3/dist/decorators/kafka-event.decorator.js.map b/challenge-3/dist/decorators/kafka-event.decorator.js.map deleted file mode 100644 index 1a1f4507..00000000 --- a/challenge-3/dist/decorators/kafka-event.decorator.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"kafka-event.decorator.js","sourceRoot":"","sources":["../../src/decorators/kafka-event.decorator.ts"],"names":[],"mappings":";;;AAEA,gCASC;AAXY,QAAA,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAEnE,SAAgB,UAAU,CAAC,KAAa;IACtC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QACzC,OAAO,CAAC,cAAc,CACpB,4BAAoB,EACpB,EAAE,KAAK,EAAE,EACT,UAAU,CAAC,KAAe,CAC3B,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/challenge-3/dist/index.d.ts b/challenge-3/dist/index.d.ts deleted file mode 100644 index 387790bc..00000000 --- a/challenge-3/dist/index.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './kafka.module'; -export * from './kafka-typed-producer'; -export * from './decorators/kafka-event.decorator'; -export * from './types/event-contract.type'; diff --git a/challenge-3/dist/index.js b/challenge-3/dist/index.js deleted file mode 100644 index 6a2dc4f2..00000000 --- a/challenge-3/dist/index.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -__exportStar(require("./kafka.module"), exports); -__exportStar(require("./kafka-typed-producer"), exports); -__exportStar(require("./decorators/kafka-event.decorator"), exports); -__exportStar(require("./types/event-contract.type"), exports); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/challenge-3/dist/index.js.map b/challenge-3/dist/index.js.map deleted file mode 100644 index cc175667..00000000 --- a/challenge-3/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,yDAAuC;AACvC,qEAAmD;AACnD,8DAA4C"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-consumer.explorer.d.ts b/challenge-3/dist/kafka-consumer.explorer.d.ts deleted file mode 100644 index bc3f4e0c..00000000 --- a/challenge-3/dist/kafka-consumer.explorer.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { OnModuleInit, OnModuleDestroy } from '@nestjs/common'; -import { DiscoveryService, Reflector } from '@nestjs/core'; -import { Kafka } from 'kafkajs'; -import { KafkaDltHandler } from './kafka-dlt.handler'; -export declare const KAFKA_CONSUMER_GROUP = "KAFKA_CONSUMER_GROUP"; -export declare class KafkaConsumerExplorer implements OnModuleInit, OnModuleDestroy { - private readonly discoveryService; - private readonly reflector; - private readonly client; - private readonly dltHandler; - private readonly groupId; - private readonly logger; - private consumer; - constructor(discoveryService: DiscoveryService, reflector: Reflector, client: Kafka, dltHandler: KafkaDltHandler, groupId: string); - onModuleInit(): Promise; - private executeWithRetryAndDlt; - onModuleDestroy(): Promise; -} diff --git a/challenge-3/dist/kafka-consumer.explorer.js b/challenge-3/dist/kafka-consumer.explorer.js deleted file mode 100644 index 85d5cda8..00000000 --- a/challenge-3/dist/kafka-consumer.explorer.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var __param = (this && this.__param) || function (paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -}; -var KafkaConsumerExplorer_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KafkaConsumerExplorer = exports.KAFKA_CONSUMER_GROUP = void 0; -const common_1 = require("@nestjs/common"); -const core_1 = require("@nestjs/core"); -const kafkajs_1 = require("kafkajs"); -const kafka_event_decorator_1 = require("./decorators/kafka-event.decorator"); -const kafka_dlt_handler_1 = require("./kafka-dlt.handler"); -exports.KAFKA_CONSUMER_GROUP = 'KAFKA_CONSUMER_GROUP'; -let KafkaConsumerExplorer = KafkaConsumerExplorer_1 = class KafkaConsumerExplorer { - discoveryService; - reflector; - client; - dltHandler; - groupId; - logger = new common_1.Logger(KafkaConsumerExplorer_1.name); - consumer; - constructor(discoveryService, reflector, client, dltHandler, groupId) { - this.discoveryService = discoveryService; - this.reflector = reflector; - this.client = client; - this.dltHandler = dltHandler; - this.groupId = groupId; - if (this.groupId) { - this.consumer = this.client.consumer({ groupId: this.groupId }); - } - } - async onModuleInit() { - if (!this.consumer) { - return; - } - const providers = this.discoveryService.getProviders(); - const controllers = this.discoveryService.getControllers(); - const allInstances = [...providers, ...controllers]; - const handlers = []; - allInstances.forEach((wrapper) => { - const { instance } = wrapper; - if (!instance || typeof instance !== 'object' || !Object.getPrototypeOf(instance)) { - return; - } - const methodNames = Object.getOwnPropertyNames(Object.getPrototypeOf(instance)); - methodNames.forEach((methodName) => { - const method = instance[methodName]; - if (typeof method === 'function') { - const metadata = this.reflector.get(kafka_event_decorator_1.KAFKA_EVENT_METADATA, method); - if (metadata && metadata.topic) { - handlers.push({ - topic: metadata.topic, - handler: method.bind(instance), - instance, - }); - this.logger.log(`Mapped {${metadata.topic}} event to ${instance.constructor.name}.${methodName}()`); - } - } - }); - }); - if (handlers.length === 0) - return; - await this.consumer.connect(); - for (const handler of handlers) { - await this.consumer.subscribe({ topic: handler.topic, fromBeginning: false }); - } - await this.consumer.run({ - eachMessage: async (payload) => { - const matchingHandlers = handlers.filter((h) => h.topic === payload.topic); - for (const handlerConf of matchingHandlers) { - await this.executeWithRetryAndDlt(handlerConf, payload); - } - }, - }); - } - async executeWithRetryAndDlt(handlerConf, payload) { - let attempts = 0; - const maxRetries = handlerConf.instance?.maxRetries ?? 3; - const { message, topic } = payload; - while (attempts <= maxRetries) { - try { - const parsedMessage = JSON.parse(message.value?.toString() || '{}'); - await handlerConf.handler(parsedMessage); - return; - } - catch (error) { - attempts++; - this.logger.error(`Error processing message on ${topic} (Attempt ${attempts}/${maxRetries}): ${error.message}`); - if (attempts > maxRetries) { - this.logger.warn(`Max retries exceeded for topic ${topic}. Routing to DLT.`); - await this.dltHandler.connect(); - await this.dltHandler.route(topic, message, error); - return; - } - } - } - } - async onModuleDestroy() { - if (this.consumer) { - await this.consumer.disconnect(); - } - await this.dltHandler.disconnect(); - } -}; -exports.KafkaConsumerExplorer = KafkaConsumerExplorer; -exports.KafkaConsumerExplorer = KafkaConsumerExplorer = KafkaConsumerExplorer_1 = __decorate([ - (0, common_1.Injectable)(), - __param(4, (0, common_1.Inject)(exports.KAFKA_CONSUMER_GROUP)), - __metadata("design:paramtypes", [core_1.DiscoveryService, - core_1.Reflector, - kafkajs_1.Kafka, - kafka_dlt_handler_1.KafkaDltHandler, String]) -], KafkaConsumerExplorer); -//# sourceMappingURL=kafka-consumer.explorer.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-consumer.explorer.js.map b/challenge-3/dist/kafka-consumer.explorer.js.map deleted file mode 100644 index fa3deab2..00000000 --- a/challenge-3/dist/kafka-consumer.explorer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"kafka-consumer.explorer.js","sourceRoot":"","sources":["../src/kafka-consumer.explorer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA2F;AAC3F,uCAA2D;AAC3D,qCAA8D;AAC9D,8EAA0E;AAC1E,2DAAsD;AAEzC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAKb;IACA;IACA;IACA;IAC8B;IARhC,MAAM,GAAG,IAAI,eAAM,CAAC,uBAAqB,CAAC,IAAI,CAAC,CAAC;IACzD,QAAQ,CAAW;IAE3B,YACmB,gBAAkC,EAClC,SAAoB,EACpB,MAAa,EACb,UAA2B,EACG,OAAe;QAJ7C,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAW;QACpB,WAAM,GAAN,MAAM,CAAO;QACb,eAAU,GAAV,UAAU,CAAiB;QACG,YAAO,GAAP,OAAO,CAAQ;QAE9D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,YAAY,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAmE,EAAE,CAAC;QAEpF,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAClF,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEhF,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAmC,CAAC,CAAC;gBAC7D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;oBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACjC,4CAAoB,EACpB,MAAM,CACP,CAAC;oBAEF,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,CAAC;4BACZ,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;4BAC9B,QAAQ;yBACT,CAAC,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,KAAK,cAAc,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAElC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YACtB,WAAW,EAAE,KAAK,EAAE,OAA2B,EAAE,EAAE;gBACjD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3E,KAAK,MAAM,WAAW,IAAI,gBAAgB,EAAE,CAAC;oBAC3C,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAClC,WAAgE,EAChE,OAA2B;QAE3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,EAAE,UAAU,IAAI,CAAC,CAAC;QACzD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;QAEnC,OAAO,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC;gBACpE,MAAM,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,EAAE,CAAC;gBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,aAAa,QAAQ,IAAI,UAAU,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEhH,IAAI,QAAQ,GAAG,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,KAAK,mBAAmB,CAAC,CAAC;oBAC7E,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBAChC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAc,CAAC,CAAC;oBAC5D,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACF,CAAA;AA1GY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;IAUR,WAAA,IAAA,eAAM,EAAC,4BAAoB,CAAC,CAAA;qCAJM,uBAAgB;QACvB,gBAAS;QACZ,eAAK;QACD,mCAAe;GARnC,qBAAqB,CA0GjC"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-dlt.handler.d.ts b/challenge-3/dist/kafka-dlt.handler.d.ts deleted file mode 100644 index a22df98c..00000000 --- a/challenge-3/dist/kafka-dlt.handler.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Kafka } from 'kafkajs'; -export declare class KafkaDltHandler { - private readonly client; - private readonly logger; - private producer; - constructor(client: Kafka); - connect(): Promise; - disconnect(): Promise; - route(originalTopic: string, message: any, error: Error): Promise; -} diff --git a/challenge-3/dist/kafka-dlt.handler.js b/challenge-3/dist/kafka-dlt.handler.js deleted file mode 100644 index 1becf4c0..00000000 --- a/challenge-3/dist/kafka-dlt.handler.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var KafkaDltHandler_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KafkaDltHandler = void 0; -const common_1 = require("@nestjs/common"); -const kafkajs_1 = require("kafkajs"); -let KafkaDltHandler = KafkaDltHandler_1 = class KafkaDltHandler { - client; - logger = new common_1.Logger(KafkaDltHandler_1.name); - producer; - constructor(client) { - this.client = client; - this.producer = this.client.producer(); - } - async connect() { - await this.producer.connect(); - } - async disconnect() { - await this.producer.disconnect(); - } - async route(originalTopic, message, error) { - const dltTopic = `${originalTopic}.dlt`; - this.logger.warn(`Routing message to DLT topic: ${dltTopic} due to error: ${error.message}`); - const payload = { - key: message.key, - value: JSON.stringify({ - originalTopic, - originalPayload: message.value?.toString(), - error: error.message, - failedAt: new Date().toISOString(), - }), - headers: { - 'x-original-topic': originalTopic, - 'x-error-type': error.constructor.name, - }, - }; - await this.producer.send({ - topic: dltTopic, - messages: [payload], - }); - } -}; -exports.KafkaDltHandler = KafkaDltHandler; -exports.KafkaDltHandler = KafkaDltHandler = KafkaDltHandler_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [kafkajs_1.Kafka]) -], KafkaDltHandler); -//# sourceMappingURL=kafka-dlt.handler.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-dlt.handler.js.map b/challenge-3/dist/kafka-dlt.handler.js.map deleted file mode 100644 index bba5ee85..00000000 --- a/challenge-3/dist/kafka-dlt.handler.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"kafka-dlt.handler.js","sourceRoot":"","sources":["../src/kafka-dlt.handler.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAAmD;AAG5C,IAAM,eAAe,uBAArB,MAAM,eAAe;IAIG;IAHZ,MAAM,GAAG,IAAI,eAAM,CAAC,iBAAe,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAW;IAE3B,YAA6B,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;QACxC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,aAAqB,EAAE,OAAY,EAAE,KAAY;QAC3D,MAAM,QAAQ,GAAG,GAAG,aAAa,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,QAAQ,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAE7F,MAAM,OAAO,GAAY;YACvB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;gBACpB,aAAa;gBACb,eAAe,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE;gBAC1C,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACnC,CAAC;YACF,OAAO,EAAE;gBACP,kBAAkB,EAAE,aAAa;gBACjC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;aACvC;SACF,CAAC;QAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvCY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,mBAAU,GAAE;qCAK0B,eAAK;GAJ/B,eAAe,CAuC3B"} \ No newline at end of file diff --git a/challenge-3/dist/kafka-typed-producer.d.ts b/challenge-3/dist/kafka-typed-producer.d.ts deleted file mode 100644 index e82d3878..00000000 --- a/challenge-3/dist/kafka-typed-producer.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Kafka } from 'kafkajs'; -import { EventContract } from './types/event-contract.type'; -export declare class KafkaTypedProducer { - private readonly client; - private readonly logger; - private producers; - constructor(client: Kafka); - publish(topic: string, payload: EventContract): Promise; - disconnectAll(): Promise; -} diff --git a/challenge-3/dist/kafka-typed-producer.js b/challenge-3/dist/kafka-typed-producer.js deleted file mode 100644 index 5faaa11a..00000000 --- a/challenge-3/dist/kafka-typed-producer.js +++ /dev/null @@ -1,48 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var KafkaTypedProducer_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KafkaTypedProducer = void 0; -const common_1 = require("@nestjs/common"); -const kafkajs_1 = require("kafkajs"); -let KafkaTypedProducer = KafkaTypedProducer_1 = class KafkaTypedProducer { - client; - logger = new common_1.Logger(KafkaTypedProducer_1.name); - producers = new Map(); - constructor(client) { - this.client = client; - } - async publish(topic, payload) { - let producer = this.producers.get(topic); - if (!producer) { - producer = this.client.producer(); - await producer.connect(); - this.producers.set(topic, producer); - this.logger.log(`Initialized and connected producer for topic: ${topic}`); - } - await producer.send({ - topic, - messages: [{ value: JSON.stringify(payload) }], - }); - this.logger.debug(`Published message to ${topic}: ${JSON.stringify(payload.eventId)}`); - } - async disconnectAll() { - for (const producer of this.producers.values()) { - await producer.disconnect(); - } - } -}; -exports.KafkaTypedProducer = KafkaTypedProducer; -exports.KafkaTypedProducer = KafkaTypedProducer = KafkaTypedProducer_1 = __decorate([ - (0, common_1.Injectable)(), - __metadata("design:paramtypes", [kafkajs_1.Kafka]) -], KafkaTypedProducer); -//# sourceMappingURL=kafka-typed-producer.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka-typed-producer.js.map b/challenge-3/dist/kafka-typed-producer.js.map deleted file mode 100644 index 05abb9ee..00000000 --- a/challenge-3/dist/kafka-typed-producer.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"kafka-typed-producer.js","sourceRoot":"","sources":["../src/kafka-typed-producer.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAoD;AACpD,qCAA0C;AAInC,IAAM,kBAAkB,0BAAxB,MAAM,kBAAkB;IAIA;IAHZ,MAAM,GAAG,IAAI,eAAM,CAAC,oBAAkB,CAAC,IAAI,CAAC,CAAC;IACtD,SAAS,GAA0B,IAAI,GAAG,EAAE,CAAC;IAErD,YAA6B,MAAa;QAAb,WAAM,GAAN,MAAM,CAAO;IAAG,CAAC;IAE9C,KAAK,CAAC,OAAO,CACX,KAAa,EACb,OAAyB;QAEzB,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iDAAiD,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,QAAQ,CAAC,IAAI,CAAC;YAClB,KAAK;YACL,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/C,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;CACF,CAAA;AA/BY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAK0B,eAAK;GAJ/B,kBAAkB,CA+B9B"} \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.d.ts b/challenge-3/dist/kafka.module.d.ts deleted file mode 100644 index 99b8ea53..00000000 --- a/challenge-3/dist/kafka.module.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DynamicModule } from '@nestjs/common'; -import { KafkaConsumerExplorer } from './kafka-consumer.explorer'; -export interface KafkaFeatureOptions { - topics: string[]; - consumerGroup?: string; - brokers?: string[]; -} -export declare class KafkaModule { - private readonly explorer; - constructor(explorer: KafkaConsumerExplorer); - static forFeature(options: KafkaFeatureOptions): DynamicModule; -} diff --git a/challenge-3/dist/kafka.module.js b/challenge-3/dist/kafka.module.js deleted file mode 100644 index 9e372b52..00000000 --- a/challenge-3/dist/kafka.module.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -var __metadata = (this && this.__metadata) || function (k, v) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); -}; -var KafkaModule_1; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.KafkaModule = void 0; -const common_1 = require("@nestjs/common"); -const core_1 = require("@nestjs/core"); -const kafkajs_1 = require("kafkajs"); -const kafka_consumer_explorer_1 = require("./kafka-consumer.explorer"); -const kafka_typed_producer_1 = require("./kafka-typed-producer"); -const kafka_dlt_handler_1 = require("./kafka-dlt.handler"); -let KafkaModule = KafkaModule_1 = class KafkaModule { - explorer; - constructor(explorer) { - this.explorer = explorer; - } - static forFeature(options) { - const brokers = options.brokers || process.env.KAFKA_BROKERS?.split(',') || ['localhost:9092']; - const clientProvider = { - provide: kafkajs_1.Kafka, - useFactory: () => { - return new kafkajs_1.Kafka({ - clientId: `yape-kafka-module-${Math.random().toString(36).substring(7)}`, - brokers: brokers, - }); - }, - }; - const groupIdProvider = { - provide: kafka_consumer_explorer_1.KAFKA_CONSUMER_GROUP, - useValue: options.consumerGroup || '', - }; - return { - module: KafkaModule_1, - providers: [ - clientProvider, - groupIdProvider, - kafka_typed_producer_1.KafkaTypedProducer, - kafka_dlt_handler_1.KafkaDltHandler, - kafka_consumer_explorer_1.KafkaConsumerExplorer, - ], - exports: [kafka_typed_producer_1.KafkaTypedProducer], - }; - } -}; -exports.KafkaModule = KafkaModule; -exports.KafkaModule = KafkaModule = KafkaModule_1 = __decorate([ - (0, common_1.Global)(), - (0, common_1.Module)({ - imports: [core_1.DiscoveryModule], - }), - __metadata("design:paramtypes", [kafka_consumer_explorer_1.KafkaConsumerExplorer]) -], KafkaModule); -//# sourceMappingURL=kafka.module.js.map \ No newline at end of file diff --git a/challenge-3/dist/kafka.module.js.map b/challenge-3/dist/kafka.module.js.map deleted file mode 100644 index ddeb3ec9..00000000 --- a/challenge-3/dist/kafka.module.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"kafka.module.js","sourceRoot":"","sources":["../src/kafka.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,qCAAgC;AAChC,uEAAwF;AACxF,iEAA4D;AAC5D,2DAAsD;AAY/C,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACO;IAA7B,YAA6B,QAA+B;QAA/B,aAAQ,GAAR,QAAQ,CAAuB;IAAG,CAAC;IAEhE,MAAM,CAAC,UAAU,CAAC,OAA4B;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/F,MAAM,cAAc,GAAa;YAC/B,OAAO,EAAE,eAAK;YACd,UAAU,EAAE,GAAG,EAAE;gBACf,OAAO,IAAI,eAAK,CAAC;oBACf,QAAQ,EAAE,qBAAqB,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACxE,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;YACL,CAAC;SACF,CAAC;QAEF,MAAM,eAAe,GAAa;YAChC,OAAO,EAAE,8CAAoB;YAC7B,QAAQ,EAAE,OAAO,CAAC,aAAa,IAAI,EAAE;SACtC,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,cAAc;gBACd,eAAe;gBACf,yCAAkB;gBAClB,mCAAe;gBACf,+CAAqB;aACtB;YACD,OAAO,EAAE,CAAC,yCAAkB,CAAC;SAC9B,CAAC;IACJ,CAAC;CACF,CAAA;AAjCY,kCAAW;sBAAX,WAAW;IAJvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,sBAAe,CAAC;KAC3B,CAAC;qCAEuC,+CAAqB;GADjD,WAAW,CAiCvB"} \ No newline at end of file diff --git a/challenge-3/dist/main.d.ts b/challenge-3/dist/main.d.ts deleted file mode 100644 index cb0ff5c3..00000000 --- a/challenge-3/dist/main.d.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/challenge-3/dist/main.js b/challenge-3/dist/main.js deleted file mode 100644 index 873b31da..00000000 --- a/challenge-3/dist/main.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const core_1 = require("@nestjs/core"); -const app_module_1 = require("./app.module"); -async function bootstrap() { - const app = await core_1.NestFactory.create(app_module_1.AppModule); - await app.listen(process.env.PORT ?? 3002); -} -bootstrap(); -//# sourceMappingURL=main.js.map \ No newline at end of file diff --git a/challenge-3/dist/main.js.map b/challenge-3/dist/main.js.map deleted file mode 100644 index fa2fb809..00000000 --- a/challenge-3/dist/main.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAC3C,6CAAyC;AAEzC,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,sBAAS,CAAC,CAAC;IAChD,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,EAAE,CAAC"} \ No newline at end of file diff --git a/challenge-3/dist/tsconfig.build.tsbuildinfo b/challenge-3/dist/tsconfig.build.tsbuildinfo deleted file mode 100644 index ff65c630..00000000 --- a/challenge-3/dist/tsconfig.build.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.es2023.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.es2023.array.d.ts","../node_modules/typescript/lib/lib.es2023.collection.d.ts","../node_modules/typescript/lib/lib.es2023.intl.d.ts","../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/typescript/lib/lib.es2023.full.d.ts","../node_modules/reflect-metadata/index.d.ts","../node_modules/@nestjs/common/decorators/core/bind.decorator.d.ts","../node_modules/@nestjs/common/interfaces/abstract.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/controllers/controller.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/arguments-host.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter.interface.d.ts","../node_modules/rxjs/dist/types/internal/subscription.d.ts","../node_modules/rxjs/dist/types/internal/subscriber.d.ts","../node_modules/rxjs/dist/types/internal/operator.d.ts","../node_modules/rxjs/dist/types/internal/observable.d.ts","../node_modules/rxjs/dist/types/internal/types.d.ts","../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../node_modules/rxjs/dist/types/internal/operators/audittime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffercount.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertime.d.ts","../node_modules/rxjs/dist/types/internal/operators/buffertoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/bufferwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/catcherror.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combineall.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/operators/combinelatestwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatall.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/concatwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../node_modules/rxjs/dist/types/internal/operators/debouncetime.d.ts","../node_modules/rxjs/dist/types/internal/operators/defaultifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../node_modules/rxjs/dist/types/internal/operators/delaywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilchanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/distinctuntilkeychanged.d.ts","../node_modules/rxjs/dist/types/internal/operators/elementat.d.ts","../node_modules/rxjs/dist/types/internal/operators/endwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustall.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../node_modules/rxjs/dist/types/internal/operators/exhaustmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../node_modules/rxjs/dist/types/internal/operators/findindex.d.ts","../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../node_modules/rxjs/dist/types/internal/subject.d.ts","../node_modules/rxjs/dist/types/internal/operators/groupby.d.ts","../node_modules/rxjs/dist/types/internal/operators/ignoreelements.d.ts","../node_modules/rxjs/dist/types/internal/operators/isempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../node_modules/rxjs/dist/types/internal/operators/mapto.d.ts","../node_modules/rxjs/dist/types/internal/notification.d.ts","../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergeall.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemap.d.ts","../node_modules/rxjs/dist/types/internal/operators/flatmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergemapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergescan.d.ts","../node_modules/rxjs/dist/types/internal/operators/mergewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectableobservable.d.ts","../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../node_modules/rxjs/dist/types/internal/operators/observeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/onerrorresumenextwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishbehavior.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishlast.d.ts","../node_modules/rxjs/dist/types/internal/operators/publishreplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../node_modules/rxjs/dist/types/internal/operators/racewith.d.ts","../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../node_modules/rxjs/dist/types/internal/operators/repeatwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../node_modules/rxjs/dist/types/internal/operators/retrywhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/refcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../node_modules/rxjs/dist/types/internal/operators/sampletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../node_modules/rxjs/dist/types/internal/operators/sequenceequal.d.ts","../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../node_modules/rxjs/dist/types/internal/operators/sharereplay.d.ts","../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../node_modules/rxjs/dist/types/internal/operators/skiplast.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/skipwhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/startwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/subscribeon.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchall.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmap.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchmapto.d.ts","../node_modules/rxjs/dist/types/internal/operators/switchscan.d.ts","../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../node_modules/rxjs/dist/types/internal/operators/takelast.d.ts","../node_modules/rxjs/dist/types/internal/operators/takeuntil.d.ts","../node_modules/rxjs/dist/types/internal/operators/takewhile.d.ts","../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../node_modules/rxjs/dist/types/internal/operators/throttletime.d.ts","../node_modules/rxjs/dist/types/internal/operators/throwifempty.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeinterval.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../node_modules/rxjs/dist/types/internal/operators/timeoutwith.d.ts","../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../node_modules/rxjs/dist/types/internal/operators/toarray.d.ts","../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowcount.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtime.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowtoggle.d.ts","../node_modules/rxjs/dist/types/internal/operators/windowwhen.d.ts","../node_modules/rxjs/dist/types/internal/operators/withlatestfrom.d.ts","../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipall.d.ts","../node_modules/rxjs/dist/types/internal/operators/zipwith.d.ts","../node_modules/rxjs/dist/types/operators/index.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/action.d.ts","../node_modules/rxjs/dist/types/internal/scheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testmessage.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionlog.d.ts","../node_modules/rxjs/dist/types/internal/testing/subscriptionloggable.d.ts","../node_modules/rxjs/dist/types/internal/testing/coldobservable.d.ts","../node_modules/rxjs/dist/types/internal/testing/hotobservable.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/timerhandle.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asyncaction.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/virtualtimescheduler.d.ts","../node_modules/rxjs/dist/types/internal/testing/testscheduler.d.ts","../node_modules/rxjs/dist/types/testing/index.d.ts","../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../node_modules/rxjs/dist/types/internal/observable/dom/animationframes.d.ts","../node_modules/rxjs/dist/types/internal/behaviorsubject.d.ts","../node_modules/rxjs/dist/types/internal/replaysubject.d.ts","../node_modules/rxjs/dist/types/internal/asyncsubject.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asapscheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queuescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframescheduler.d.ts","../node_modules/rxjs/dist/types/internal/scheduler/animationframe.d.ts","../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../node_modules/rxjs/dist/types/internal/util/isobservable.d.ts","../node_modules/rxjs/dist/types/internal/lastvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/firstvaluefrom.d.ts","../node_modules/rxjs/dist/types/internal/util/argumentoutofrangeerror.d.ts","../node_modules/rxjs/dist/types/internal/util/emptyerror.d.ts","../node_modules/rxjs/dist/types/internal/util/notfounderror.d.ts","../node_modules/rxjs/dist/types/internal/util/objectunsubscribederror.d.ts","../node_modules/rxjs/dist/types/internal/util/sequenceerror.d.ts","../node_modules/rxjs/dist/types/internal/util/unsubscriptionerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindcallback.d.ts","../node_modules/rxjs/dist/types/internal/observable/bindnodecallback.d.ts","../node_modules/rxjs/dist/types/internal/anycatcher.d.ts","../node_modules/rxjs/dist/types/internal/observable/combinelatest.d.ts","../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../node_modules/rxjs/dist/types/internal/observable/forkjoin.d.ts","../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromevent.d.ts","../node_modules/rxjs/dist/types/internal/observable/fromeventpattern.d.ts","../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../node_modules/rxjs/dist/types/internal/observable/onerrorresumenext.d.ts","../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../node_modules/rxjs/dist/types/internal/observable/throwerror.d.ts","../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../node_modules/rxjs/dist/types/internal/config.d.ts","../node_modules/rxjs/dist/types/index.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/ws-exception-filter.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validation-error.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/execution-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/can-activate.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/custom-route-param-factory.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/nest-interceptor.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/paramtype.interface.d.ts","../node_modules/@nestjs/common/interfaces/type.interface.d.ts","../node_modules/@nestjs/common/interfaces/features/pipe-transform.interface.d.ts","../node_modules/@nestjs/common/enums/request-method.enum.d.ts","../node_modules/@nestjs/common/enums/http-status.enum.d.ts","../node_modules/@nestjs/common/enums/shutdown-signal.enum.d.ts","../node_modules/@nestjs/common/enums/version-type.enum.d.ts","../node_modules/@nestjs/common/enums/index.d.ts","../node_modules/@nestjs/common/interfaces/version-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-configuration.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-consumer.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/middleware-config-proxy.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/nest-middleware.interface.d.ts","../node_modules/@nestjs/common/interfaces/middleware/index.d.ts","../node_modules/@nestjs/common/interfaces/global-prefix-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/before-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-bootstrap.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-application-shutdown.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-destroy.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/on-init.interface.d.ts","../node_modules/@nestjs/common/interfaces/hooks/index.d.ts","../node_modules/@nestjs/common/interfaces/http/http-exception-body.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-redirect-response.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/cors-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/https-options.interface.d.ts","../node_modules/@nestjs/common/services/logger.service.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/http-server.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/message-event.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/raw-body-request.interface.d.ts","../node_modules/@nestjs/common/interfaces/http/index.d.ts","../node_modules/@nestjs/common/interfaces/injectable.interface.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-hybrid-application-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/forward-reference.interface.d.ts","../node_modules/@nestjs/common/interfaces/scope-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/injection-token.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/optional-factory-dependency.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/provider.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/dynamic-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/introspection-result.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/nest-module.interface.d.ts","../node_modules/@nestjs/common/interfaces/modules/index.d.ts","../node_modules/@nestjs/common/interfaces/shutdown-hooks-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application-context.interface.d.ts","../node_modules/@nestjs/common/interfaces/websockets/web-socket-adapter.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-application.interface.d.ts","../node_modules/@nestjs/common/interfaces/nest-microservice.interface.d.ts","../node_modules/@nestjs/common/interfaces/index.d.ts","../node_modules/@nestjs/common/decorators/core/catch.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/controller.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/dependencies.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/exception-filters.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/inject.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/injectable.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/optional.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/set-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-guards.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-interceptors.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/use-pipes.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/apply-decorators.d.ts","../node_modules/@nestjs/common/decorators/core/version.decorator.d.ts","../node_modules/@nestjs/common/decorators/core/index.d.ts","../node_modules/@nestjs/common/decorators/modules/global.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/module.decorator.d.ts","../node_modules/@nestjs/common/decorators/modules/index.d.ts","../node_modules/@nestjs/common/decorators/http/request-mapping.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/http-code.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/create-route-param-metadata.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/render.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/header.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/redirect.decorator.d.ts","../node_modules/@nestjs/common/constants.d.ts","../node_modules/@nestjs/common/decorators/http/sse.decorator.d.ts","../node_modules/@nestjs/common/decorators/http/index.d.ts","../node_modules/@nestjs/common/decorators/index.d.ts","../node_modules/@nestjs/common/exceptions/intrinsic.exception.d.ts","../node_modules/@nestjs/common/exceptions/http.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-gateway.exception.d.ts","../node_modules/@nestjs/common/exceptions/bad-request.exception.d.ts","../node_modules/@nestjs/common/exceptions/conflict.exception.d.ts","../node_modules/@nestjs/common/exceptions/forbidden.exception.d.ts","../node_modules/@nestjs/common/exceptions/gateway-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/gone.exception.d.ts","../node_modules/@nestjs/common/exceptions/http-version-not-supported.exception.d.ts","../node_modules/@nestjs/common/exceptions/im-a-teapot.exception.d.ts","../node_modules/@nestjs/common/exceptions/internal-server-error.exception.d.ts","../node_modules/@nestjs/common/exceptions/method-not-allowed.exception.d.ts","../node_modules/@nestjs/common/exceptions/misdirected.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-acceptable.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-found.exception.d.ts","../node_modules/@nestjs/common/exceptions/not-implemented.exception.d.ts","../node_modules/@nestjs/common/exceptions/payload-too-large.exception.d.ts","../node_modules/@nestjs/common/exceptions/precondition-failed.exception.d.ts","../node_modules/@nestjs/common/exceptions/request-timeout.exception.d.ts","../node_modules/@nestjs/common/exceptions/service-unavailable.exception.d.ts","../node_modules/@nestjs/common/exceptions/unauthorized.exception.d.ts","../node_modules/@nestjs/common/exceptions/unprocessable-entity.exception.d.ts","../node_modules/@nestjs/common/exceptions/unsupported-media-type.exception.d.ts","../node_modules/@nestjs/common/exceptions/index.d.ts","../node_modules/@nestjs/common/services/console-logger.service.d.ts","../node_modules/@nestjs/common/services/utils/filter-log-levels.util.d.ts","../node_modules/@nestjs/common/services/index.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-options.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/streamable-handler-response.interface.d.ts","../node_modules/@nestjs/common/file-stream/interfaces/index.d.ts","../node_modules/@nestjs/common/file-stream/streamable-file.d.ts","../node_modules/@nestjs/common/file-stream/index.d.ts","../node_modules/@nestjs/common/module-utils/constants.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-async-options.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-cls.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/configurable-module-host.interface.d.ts","../node_modules/@nestjs/common/module-utils/interfaces/index.d.ts","../node_modules/@nestjs/common/module-utils/configurable-module.builder.d.ts","../node_modules/@nestjs/common/module-utils/index.d.ts","../node_modules/@nestjs/common/pipes/default-value.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/file.interface.d.ts","../node_modules/@nestjs/common/pipes/file/interfaces/index.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator-context.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-validator.interface.d.ts","../node_modules/@nestjs/common/pipes/file/file-type.validator.d.ts","../node_modules/@nestjs/common/pipes/file/max-file-size.validator.d.ts","../node_modules/@nestjs/common/utils/http-error-by-code.util.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-options.interface.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file.pipe.d.ts","../node_modules/@nestjs/common/pipes/file/parse-file-pipe.builder.d.ts","../node_modules/@nestjs/common/pipes/file/index.d.ts","../node_modules/@nestjs/common/interfaces/external/class-transform-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/transformer-package.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-options.interface.d.ts","../node_modules/@nestjs/common/interfaces/external/validator-package.interface.d.ts","../node_modules/@nestjs/common/pipes/validation.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-array.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-bool.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-date.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-enum.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-float.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-int.pipe.d.ts","../node_modules/@nestjs/common/pipes/parse-uuid.pipe.d.ts","../node_modules/@nestjs/common/pipes/index.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interfaces.d.ts","../node_modules/@nestjs/common/serializer/class-serializer.interceptor.d.ts","../node_modules/@nestjs/common/serializer/decorators/serialize-options.decorator.d.ts","../node_modules/@nestjs/common/serializer/decorators/index.d.ts","../node_modules/@nestjs/common/serializer/index.d.ts","../node_modules/@nestjs/common/utils/forward-ref.util.d.ts","../node_modules/@nestjs/common/utils/index.d.ts","../node_modules/@nestjs/common/index.d.ts","../src/app.service.ts","../node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/@types/node/globals.typedarray.d.ts","../node_modules/@types/node/buffer.buffer.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/@types/node/web-globals/events.d.ts","../node_modules/buffer/index.d.ts","../node_modules/undici-types/utility.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client-stats.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/h2c-client.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-call-history.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/snapshot-agent.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/undici-types/retry-handler.d.ts","../node_modules/undici-types/retry-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cache-interceptor.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/util.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/eventsource.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/@types/node/web-globals/storage.d.ts","../node_modules/@types/node/web-globals/streams.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/inspector.generated.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/sea.d.ts","../node_modules/@types/node/sqlite.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/kafkajs/types/index.d.ts","../src/types/event-contract.type.ts","../src/kafka-typed-producer.ts","../src/decorators/kafka-event.decorator.ts","../src/app.controller.ts","../node_modules/@nestjs/core/adapters/http-adapter.d.ts","../node_modules/@nestjs/core/adapters/index.d.ts","../node_modules/@nestjs/core/inspector/interfaces/edge.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/entrypoint.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/extras.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/node.interface.d.ts","../node_modules/@nestjs/core/injector/settlement-signal.d.ts","../node_modules/@nestjs/core/injector/injector.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-metadata.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/serialized-graph-json.interface.d.ts","../node_modules/@nestjs/core/inspector/serialized-graph.d.ts","../node_modules/@nestjs/core/injector/opaque-key-factory/interfaces/module-opaque-key-factory.interface.d.ts","../node_modules/@nestjs/core/injector/compiler.d.ts","../node_modules/@nestjs/core/injector/modules-container.d.ts","../node_modules/@nestjs/core/injector/container.d.ts","../node_modules/@nestjs/core/injector/instance-links-host.d.ts","../node_modules/@nestjs/core/injector/abstract-instance-resolver.d.ts","../node_modules/@nestjs/core/injector/module-ref.d.ts","../node_modules/@nestjs/core/injector/module.d.ts","../node_modules/@nestjs/core/injector/instance-wrapper.d.ts","../node_modules/@nestjs/core/router/interfaces/exclude-route-metadata.interface.d.ts","../node_modules/@nestjs/core/application-config.d.ts","../node_modules/@nestjs/core/constants.d.ts","../node_modules/@nestjs/core/discovery/discovery-module.d.ts","../node_modules/@nestjs/core/discovery/discovery-service.d.ts","../node_modules/@nestjs/core/discovery/index.d.ts","../node_modules/@nestjs/core/helpers/http-adapter-host.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/index.d.ts","../node_modules/@nestjs/core/helpers/context-id-factory.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/core/exceptions/exceptions-handler.d.ts","../node_modules/@nestjs/core/router/router-proxy.d.ts","../node_modules/@nestjs/core/helpers/context-creator.d.ts","../node_modules/@nestjs/core/exceptions/base-exception-filter-context.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/rpc-exception-filter-metadata.interface.d.ts","../node_modules/@nestjs/common/interfaces/exceptions/index.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter.d.ts","../node_modules/@nestjs/core/exceptions/external-exceptions-handler.d.ts","../node_modules/@nestjs/core/exceptions/external-exception-filter-context.d.ts","../node_modules/@nestjs/core/guards/constants.d.ts","../node_modules/@nestjs/core/helpers/execution-context-host.d.ts","../node_modules/@nestjs/core/guards/guards-consumer.d.ts","../node_modules/@nestjs/core/guards/guards-context-creator.d.ts","../node_modules/@nestjs/core/guards/index.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-consumer.d.ts","../node_modules/@nestjs/core/interceptors/interceptors-context-creator.d.ts","../node_modules/@nestjs/core/interceptors/index.d.ts","../node_modules/@nestjs/common/enums/route-paramtypes.enum.d.ts","../node_modules/@nestjs/core/pipes/params-token-factory.d.ts","../node_modules/@nestjs/core/pipes/pipes-consumer.d.ts","../node_modules/@nestjs/core/pipes/pipes-context-creator.d.ts","../node_modules/@nestjs/core/pipes/index.d.ts","../node_modules/@nestjs/core/helpers/context-utils.d.ts","../node_modules/@nestjs/core/injector/inquirer/inquirer-constants.d.ts","../node_modules/@nestjs/core/injector/inquirer/index.d.ts","../node_modules/@nestjs/core/interfaces/module-definition.interface.d.ts","../node_modules/@nestjs/core/interfaces/module-override.interface.d.ts","../node_modules/@nestjs/core/inspector/interfaces/enhancer-metadata-cache-entry.interface.d.ts","../node_modules/@nestjs/core/inspector/graph-inspector.d.ts","../node_modules/@nestjs/core/metadata-scanner.d.ts","../node_modules/@nestjs/core/scanner.d.ts","../node_modules/@nestjs/core/injector/instance-loader.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader-options.interface.d.ts","../node_modules/@nestjs/core/injector/lazy-module-loader/lazy-module-loader.d.ts","../node_modules/@nestjs/core/injector/index.d.ts","../node_modules/@nestjs/core/helpers/interfaces/external-handler-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/interfaces/params-metadata.interface.d.ts","../node_modules/@nestjs/core/helpers/external-context-creator.d.ts","../node_modules/@nestjs/core/helpers/index.d.ts","../node_modules/@nestjs/core/inspector/initialize-on-preview.allowlist.d.ts","../node_modules/@nestjs/core/inspector/partial-graph.host.d.ts","../node_modules/@nestjs/core/inspector/index.d.ts","../node_modules/@nestjs/core/middleware/route-info-path-extractor.d.ts","../node_modules/@nestjs/core/middleware/routes-mapper.d.ts","../node_modules/@nestjs/core/middleware/builder.d.ts","../node_modules/@nestjs/core/middleware/index.d.ts","../node_modules/@nestjs/core/nest-application-context.d.ts","../node_modules/@nestjs/core/nest-application.d.ts","../node_modules/@nestjs/common/interfaces/microservices/nest-microservice-options.interface.d.ts","../node_modules/@nestjs/core/nest-factory.d.ts","../node_modules/@nestjs/core/repl/repl.d.ts","../node_modules/@nestjs/core/repl/index.d.ts","../node_modules/@nestjs/core/router/interfaces/routes.interface.d.ts","../node_modules/@nestjs/core/router/interfaces/index.d.ts","../node_modules/@nestjs/core/router/request/request-constants.d.ts","../node_modules/@nestjs/core/router/request/index.d.ts","../node_modules/@nestjs/core/router/router-module.d.ts","../node_modules/@nestjs/core/router/index.d.ts","../node_modules/@nestjs/core/services/reflector.service.d.ts","../node_modules/@nestjs/core/services/index.d.ts","../node_modules/@nestjs/core/index.d.ts","../src/kafka-dlt.handler.ts","../src/kafka-consumer.explorer.ts","../src/kafka.module.ts","../src/app.module.ts","../src/index.ts","../src/main.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/connect/index.d.ts","../node_modules/@types/body-parser/index.d.ts","../node_modules/@types/cookiejar/index.d.ts","../node_modules/@types/estree/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/eslint/use-at-your-own-risk.d.ts","../node_modules/@types/eslint/index.d.ts","../node_modules/@eslint/core/dist/cjs/types.d.cts","../node_modules/eslint/lib/types/use-at-your-own-risk.d.ts","../node_modules/eslint/lib/types/index.d.ts","../node_modules/@types/eslint-scope/index.d.ts","../node_modules/@types/send/index.d.ts","../node_modules/@types/qs/index.d.ts","../node_modules/@types/range-parser/index.d.ts","../node_modules/@types/express-serve-static-core/index.d.ts","../node_modules/@types/http-errors/index.d.ts","../node_modules/@types/serve-static/index.d.ts","../node_modules/@types/express/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/@jest/expect-utils/build/index.d.ts","../node_modules/chalk/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/symbols.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbols/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/any.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/any/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/async-iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/async-iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/readonly-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/readonly-optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/readonly-optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/constructor.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/enum.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/enum/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/function.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/function/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/computed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/computed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/never.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/never/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/intersect.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intersect/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union-evaluated.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/union/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/recursive.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/recursive/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/unsafe.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unsafe/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/ref.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/ref/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/tuple.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/tuple/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/error.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/error/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/string.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/string/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/boolean.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/boolean/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/number.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/number/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/integer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/integer/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/bigint.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/bigint/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/parse.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/finite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/generate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/syntax.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/pattern.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/union.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/template-literal/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/indexed-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/indexed/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/iterator.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/iterator/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/promise.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/promise/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/set.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/sets/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/mapped.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/mapped/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/optional-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/optional/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/awaited.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/awaited/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-keys.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/keyof-property-entries.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/keyof/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/omit-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/omit/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/pick-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/pick/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/null.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/null/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/symbol.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/symbol/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/undefined/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/partial-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/partial/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/regexp.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/regexp/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/record.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/record/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/required-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/required/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/transform.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/transform/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/compute.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/infer.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/module.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/module/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/not.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/not/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/static.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/static/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/object.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/object/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/helpers.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/helpers/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/date.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/date/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/uint8array.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/uint8array/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/unknown.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/unknown/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/void.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/void/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/schema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/anyschema.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/schema/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/clone/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/create/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/argument.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/argument/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/kind.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/value.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/guard/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/patterns.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/patterns/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/format.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/registry/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/composite.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/composite/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/const.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/const/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/constructor-parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/constructor-parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/exclude-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/exclude/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-check.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/extends-undefined.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extends/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-template-literal.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/extract-from-mapped-result.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/extract/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/instance-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instance-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/instantiate.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/instantiate/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic-from-mapped-key.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/intrinsic.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/capitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/lowercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uncapitalize.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/uppercase.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/intrinsic/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/parameters.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/parameters/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/rest.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/rest/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/return-type.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/return-type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/json.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/javascript.d.ts","../node_modules/@sinclair/typebox/build/cjs/type/type/index.d.ts","../node_modules/@sinclair/typebox/build/cjs/index.d.ts","../node_modules/@jest/schemas/build/index.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/jest-matcher-utils/build/index.d.ts","../node_modules/jest-mock/build/index.d.ts","../node_modules/expect/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/methods/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/superagent/lib/agent-base.d.ts","../node_modules/@types/superagent/lib/node/response.d.ts","../node_modules/@types/superagent/types.d.ts","../node_modules/@types/superagent/lib/node/agent.d.ts","../node_modules/@types/superagent/lib/request-base.d.ts","../node_modules/form-data/index.d.ts","../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../node_modules/@types/superagent/lib/node/index.d.ts","../node_modules/@types/superagent/index.d.ts","../node_modules/@types/supertest/types.d.ts","../node_modules/@types/supertest/lib/agent.d.ts","../node_modules/@types/supertest/lib/test.d.ts","../node_modules/@types/supertest/lib/cookies.d.ts","../node_modules/@types/supertest/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[426,481,498,499,635],[426,481,498,499],[426,481,498,499,645],[426,481,498,499,855],[322,426,481,498,499],[422,426,481,498,499],[71,323,324,325,326,327,328,329,330,331,332,333,334,335,426,481,498,499],[274,308,426,481,498,499],[281,426,481,498,499],[271,322,422,426,481,498,499],[340,341,342,343,344,345,346,348,426,481,498,499],[276,426,481,498,499],[322,422,426,481,498,499],[276,347,426,481,498,499],[336,339,349,426,481,498,499],[337,338,426,481,498,499],[312,426,481,498,499],[276,277,278,279,426,481,498,499],[352,426,481,498,499],[294,351,426,481,498,499],[351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,426,481,498,499],[381,426,481,498,499],[378,379,426,481,498,499],[377,380,426,481,498,499,513],[70,280,322,350,374,377,382,389,414,419,421,426,481,498,499],[76,274,426,481,498,499],[75,426,481,498,499],[76,266,267,426,481,498,499,567,572],[266,274,426,481,498,499],[75,265,426,481,498,499],[274,402,426,481,498,499],[268,404,426,481,498,499],[265,269,426,481,498,499],[269,426,481,498,499],[75,322,426,481,498,499],[273,274,426,481,498,499],[286,426,481,498,499],[288,289,290,291,292,426,481,498,499],[280,426,481,498,499],[280,281,300,426,481,498,499],[294,295,301,302,303,426,481,498,499],[72,73,74,75,76,266,267,268,269,270,271,272,273,274,275,281,286,287,293,300,304,305,306,308,316,317,318,319,320,321,426,481,498,499],[299,426,481,498,499],[282,283,284,285,426,481,498,499],[274,282,283,426,481,498,499],[274,280,281,426,481,498,499],[274,284,426,481,498,499],[274,312,426,481,498,499],[307,309,310,311,312,313,314,315,426,481,498,499],[72,274,426,481,498,499],[308,426,481,498,499],[72,274,307,311,313,426,481,498,499],[283,426,481,498,499],[309,426,481,498,499],[274,308,309,310,426,481,498,499],[298,426,481,498,499],[274,278,298,299,316,317,426,481,498,499],[296,297,299,426,481,498,499],[270,272,281,287,301,318,319,322,426,481,498,499],[76,265,270,272,275,318,319,426,481,498,499],[279,426,481,498,499],[265,426,481,498,499],[298,322,383,387,426,481,498,499],[387,388,426,481,498,499],[322,383,426,481,498,499],[322,383,384,426,481,498,499],[384,385,426,481,498,499],[384,385,386,426,481,498,499],[275,426,481,498,499],[392,393,394,426,481,498,499],[392,426,481,498,499],[394,395,396,398,399,400,426,481,498,499],[391,426,481,498,499],[394,397,426,481,498,499],[394,395,396,398,399,426,481,498,499],[275,392,394,398,426,481,498,499],[390,401,406,407,408,409,410,411,412,413,426,481,498,499],[275,322,406,426,481,498,499],[275,397,426,481,498,499],[275,397,422,426,481,498,499],[268,274,275,397,402,403,404,405,426,481,498,499],[265,322,402,403,415,426,481,498,499],[322,402,426,481,498,499],[417,426,481,498,499],[350,415,426,481,498,499],[415,416,418,426,481,498,499],[298,426,481,498,499,525],[298,375,376,426,481,498,499],[307,426,481,498,499],[280,322,426,481,498,499],[420,426,481,498,499],[300,322,422,426,481,498,499],[426,481,498,499,537],[322,422,426,481,498,499,556,557],[347,426,481,498,499],[422,426,481,498,499,550,555,556],[426,481,498,499,560,561],[76,322,426,481,498,499,551,556,570],[422,426,481,498,499,538,563],[75,422,426,481,498,499,564,567],[322,426,481,498,499,551,556,558,569,571,575],[75,426,481,498,499,573,574],[426,481,498,499,564],[265,322,422,426,481,498,499,578],[322,422,426,481,498,499,551,556,558,570],[426,481,498,499,577,579,580],[322,426,481,498,499,556],[426,481,498,499,556],[322,422,426,481,498,499,578],[75,322,422,426,481,498,499],[322,422,426,481,498,499,550,551,556,576,578,581,584,589,590,603,604],[265,426,481,498,499,537],[426,481,498,499,563,566,605],[426,481,498,499,590,602],[70,426,481,498,499,538,558,559,562,565,597,602,606,609,613,614,615,617,619,625,627],[322,422,426,481,498,499,544,552,555,556],[322,426,481,498,499,548],[299,322,347,422,426,481,498,499,547,548,549,550,555,556,558,628],[426,481,498,499,550,551,554,556,592,601],[322,422,426,481,498,499,543,555,556],[426,481,498,499,591],[422,426,481,498,499,551,556],[422,426,481,498,499,544,551,555,596],[322,347,422,426,481,498,499,543,555],[422,426,481,498,499,549,550,554,594,598,599,600],[422,426,481,498,499,544,551,552,553,555,556],[322,347,426,481,498,499,551,554,556],[265,426,481,498,499,555],[274,307,313,426,481,498,499],[426,481,498,499,540,541,542,551,555,556,595],[426,481,498,499,547,596,607,608],[347,422,426,481,498,499,556],[347,422,426,481,498,499],[426,481,498,499,539,540,541,542,545,547],[426,481,498,499,544],[426,481,498,499,546,547],[422,426,481,498,499,539,540,541,542,545,546],[426,481,498,499,582,583],[322,426,481,498,499,551,556,558,570],[426,481,498,499,593],[305,426,481,498,499],[286,322,426,481,498,499,610,611],[426,481,498,499,612],[322,426,481,498,499,558],[322,426,481,498,499,551,558],[299,322,422,426,481,498,499,544,551,552,553,555,556],[298,322,422,426,481,498,499,538,551,558,596,614],[299,300,422,426,481,498,499,537,616],[426,481,498,499,586,587,588],[422,426,481,498,499,585],[426,481,498,499,618],[422,426,481,498,499,510],[426,481,498,499,621,623,624],[426,481,498,499,620],[426,481,498,499,622],[422,426,481,498,499,550,555,621],[426,481,498,499,568],[322,347,422,426,481,498,499,551,555,556,558,593,594,596,597],[426,481,498,499,626],[426,481,498,499,665,667,671,674,676,678,680,682,684,688,692,696,698,700,702,704,706,708,710,712,714,716,724,729,731,733,735,737,740,742,747,751,755,757,759,761,764,766,768,771,773,777,779,781,783,785,787,789,791,793,795,798,801,803,805,809,811,814,816,818,820,824,830,834,836,838,845,847,849,851,854],[426,481,498,499,665,798],[426,481,498,499,666],[426,481,498,499,804],[426,481,498,499,665,781,785,798],[426,481,498,499,786],[426,481,498,499,665,781,798],[426,481,498,499,670],[426,481,498,499,686,692,696,702,733,785,798],[426,481,498,499,741],[426,481,498,499,715],[426,481,498,499,709],[426,481,498,499,799,800],[426,481,498,499,798],[426,481,498,499,688,692,729,735,747,783,785,798],[426,481,498,499,815],[426,481,498,499,664,798],[426,481,498,499,685],[426,481,498,499,667,674,680,684,688,704,716,757,759,761,783,785,789,791,793,798],[426,481,498,499,817],[426,481,498,499,678,688,704,798],[426,481,498,499,819],[426,481,498,499,665,674,676,740,781,785,798],[426,481,498,499,677],[426,481,498,499,802],[426,481,498,499,796],[426,481,498,499,788],[426,481,498,499,665,680,798],[426,481,498,499,681],[426,481,498,499,705],[426,481,498,499,737,783,798,822],[426,481,498,499,724,798,822],[426,481,498,499,688,696,724,737,781,785,798,821,823],[426,481,498,499,821,822,823],[426,481,498,499,706,798],[426,481,498,499,680,737,783,785,798,827],[426,481,498,499,737,783,798,827],[426,481,498,499,696,737,781,785,798,826,828],[426,481,498,499,825,826,827,828,829],[426,481,498,499,737,783,798,832],[426,481,498,499,724,798,832],[426,481,498,499,688,696,724,737,781,785,798,831,833],[426,481,498,499,831,832,833],[426,481,498,499,683],[426,481,498,499,806,807,808],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,665,667,671,674,678,680,684,686,688,692,696,698,700,702,704,706,708,710,712,714,716,724,731,733,737,740,757,759,761,766,768,773,777,779,783,787,789,791,793,795,798,805],[426,481,498,499,688,783,798],[426,481,498,499,784],[426,481,498,499,725,726,727,728],[426,481,498,499,727,737,783,785,798],[426,481,498,499,725,729,737,783,798],[426,481,498,499,680,696,712,714,724,798],[426,481,498,499,686,688,692,696,698,702,704,725,726,728,737,783,785,787,798],[426,481,498,499,835],[426,481,498,499,678,688,798],[426,481,498,499,837],[426,481,498,499,671,674,676,678,684,692,696,704,731,733,740,768,783,787,793,798,805],[426,481,498,499,713],[426,481,498,499,689,690,691],[426,481,498,499,674,688,689,740,798],[426,481,498,499,688,689,798],[426,481,498,499,798,840],[426,481,498,499,839,840,841,842,843,844],[426,481,498,499,680,737,783,785,798,840],[426,481,498,499,680,696,724,737,798,839],[426,481,498,499,730],[426,481,498,499,743,744,745,746],[426,481,498,499,737,744,783,785,798],[426,481,498,499,692,696,698,704,735,783,785,787,798],[426,481,498,499,680,686,696,702,712,737,743,745,785,798],[426,481,498,499,679],[426,481,498,499,668,669,736],[426,481,498,499,665,783,798],[426,481,498,499,668,669,671,674,678,680,682,684,692,696,704,729,731,733,735,740,783,785,787,798],[426,481,498,499,671,674,678,682,684,686,688,692,696,702,704,729,731,740,742,747,751,755,764,768,771,773,783,785,787,798],[426,481,498,499,776],[426,481,498,499,671,674,678,682,684,692,696,698,702,704,731,740,768,781,783,785,787,798],[426,481,498,499,665,774,775,781,783,798],[426,481,498,499,687],[426,481,498,499,778],[426,481,498,499,756],[426,481,498,499,711],[426,481,498,499,782],[426,481,498,499,665,674,740,781,785,798],[426,481,498,499,748,749,750],[426,481,498,499,737,749,783,798],[426,481,498,499,737,749,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,748,750,783,785,798],[426,481,498,499,738,739],[426,481,498,499,737,738,783],[426,481,498,499,665,737,739,785,798],[426,481,498,499,846],[426,481,498,499,684,688,704,798],[426,481,498,499,762,763],[426,481,498,499,737,762,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,763,783,785,798],[426,481,498,499,810],[426,481,498,499,752,753,754],[426,481,498,499,737,753,783,798],[426,481,498,499,737,753,783,785,798],[426,481,498,499,680,686,692,696,698,702,729,737,752,754,783,785,798],[426,481,498,499,732],[426,481,498,499,675],[426,481,498,499,674,740,798],[426,481,498,499,672,673],[426,481,498,499,672,737,783],[426,481,498,499,665,673,737,785,798],[426,481,498,499,767],[426,481,498,499,665,667,680,682,688,696,708,710,712,714,724,766,781,783,785,798],[426,481,498,499,697],[426,481,498,499,701],[426,481,498,499,665,700,781,798],[426,481,498,499,765],[426,481,498,499,812,813],[426,481,498,499,769,770],[426,481,498,499,737,769,783,785,798],[426,481,498,499,674,676,680,686,692,696,698,702,708,710,712,714,716,737,740,757,759,761,770,783,785,798],[426,481,498,499,848],[426,481,498,499,692,696,704,798],[426,481,498,499,850],[426,481,498,499,684,688,798],[426,481,498,499,667,671,678,680,682,684,692,696,698,702,704,708,710,712,714,716,724,731,733,757,759,761,766,768,779,783,787,789,791,793,795,796],[426,481,498,499,796,797],[426,481,498,499,665],[426,481,498,499,734],[426,481,498,499,780],[426,481,498,499,671,674,678,682,684,688,692,696,698,700,702,704,731,733,740,768,773,777,779,783,785,787,798],[426,481,498,499,707],[426,481,498,499,758],[426,481,498,499,664],[426,481,498,499,680,696,706,708,710,712,714,716,717,724],[426,481,498,499,680,696,706,710,717,718,724,785],[426,481,498,499,717,718,719,720,721,722,723],[426,481,498,499,706],[426,481,498,499,706,724],[426,481,498,499,680,696,708,710,712,716,724,785],[426,481,498,499,665,680,688,696,708,710,712,714,716,720,781,785,798],[426,481,498,499,680,696,722,781,785],[426,481,498,499,772],[426,481,498,499,703],[426,481,498,499,852,853],[426,481,498,499,671,678,684,716,731,733,742,759,761,766,789,791,795,798,805,820,836,838,847,851,852],[426,481,498,499,667,674,676,680,682,688,692,696,698,700,702,704,708,710,712,714,724,729,737,740,747,751,755,757,764,768,771,773,777,779,783,787,793,798,816,818,824,830,834,845,849],[426,481,498,499,790],[426,481,498,499,760],[426,481,498,499,693,694,695],[426,481,498,499,674,688,693,740,798],[426,481,498,499,688,693,798],[426,481,498,499,792],[426,481,498,499,699],[426,481,498,499,794],[426,481,498,499,635,636,637,638,639],[426,481,498,499,635,637],[426,481,495,498,499,531,641],[426,481,495,498,499,531],[426,481,498,499,644,650],[426,481,498,499,644,645,646],[426,481,498,499,647],[426,481,492,495,498,499,531,652,653,654],[426,481,498,499,642,655,657],[426,481,498,499,659],[426,481,498,499,660],[426,481,498,499,857,861],[426,478,479,481,498,499],[426,480,481,498,499],[481,498,499],[426,481,486,498,499,516],[426,481,482,487,492,498,499,501,513,524],[426,481,482,483,492,498,499,501],[426,481,484,498,499,525],[426,481,485,486,493,498,499,502],[426,481,486,498,499,513,521],[426,481,487,489,492,498,499,501],[426,480,481,488,498,499],[426,481,489,490,498,499],[426,481,491,492,498,499],[426,480,481,492,498,499],[426,481,492,493,494,498,499,513,524],[426,481,492,493,494,498,499,508,513,516],[426,473,481,489,492,495,498,499,501,513,524],[426,481,492,493,495,496,498,499,501,513,521,524],[426,481,495,497,498,499,513,521,524],[424,425,426,427,428,429,430,431,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,492,498,499],[426,481,498,499,500,524],[426,481,489,492,498,499,501,513],[426,481,498,499,502],[426,481,498,499,503],[426,480,481,498,499,504],[426,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530],[426,481,498,499,506],[426,481,498,499,507],[426,481,492,498,499,508,509],[426,481,498,499,508,510,525,527],[426,481,493,498,499],[426,481,492,498,499,513,514,516],[426,481,498,499,515,516],[426,481,498,499,513,514],[426,481,498,499,516],[426,481,498,499,517],[426,478,481,498,499,513,518,524],[426,481,492,498,499,519,520],[426,481,498,499,519,520],[426,481,486,498,499,501,513,521],[426,481,498,499,522],[426,481,498,499,501,523],[426,481,495,498,499,507,524],[426,481,486,498,499,525],[426,481,498,499,513,526],[426,481,498,499,500,527],[426,481,498,499,528],[426,481,486,498,499],[426,473,481,498,499],[426,481,498,499,529],[426,473,481,492,494,498,499,504,513,516,524,526,527,529],[426,481,498,499,513,530],[426,481,493,498,499,513,531],[426,481,495,498,499,531,656],[426,481,498,499,872],[426,481,498,499,643,863,865,867,873],[426,481,496,498,499,501,513,521,531],[426,481,493,495,496,497,498,499,501,513,863,866,867,868,869,870,871],[426,481,495,498,499,513,872],[426,481,493,498,499,866,867],[426,481,498,499,524,866],[426,481,498,499,873,874,875,876,877],[426,481,498,499,873,874,878],[426,481,498,499,873,874],[426,481,495,496,498,499,501,863,873],[426,481,498,499,879],[426,481,498,499,644,648,649],[426,481,498,499,650],[426,481,498,499,662,859,860],[426,481,495,498,499,513,531],[426,481,498,499,857],[426,481,498,499,663,858],[426,481,498,499,501,521,531],[426,481,498,499,856],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,93,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,133,134,135,136,137,138,139,140,141,142,143,144,146,147,148,149,150,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,196,197,198,200,209,211,212,213,214,215,216,218,219,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,426,481,498,499],[122,426,481,498,499],[78,81,426,481,498,499],[80,426,481,498,499],[80,81,426,481,498,499],[77,78,79,81,426,481,498,499],[78,80,81,238,426,481,498,499],[81,426,481,498,499],[77,80,122,426,481,498,499],[80,81,238,426,481,498,499],[80,246,426,481,498,499],[78,80,81,426,481,498,499],[90,426,481,498,499],[113,426,481,498,499],[134,426,481,498,499],[80,81,122,426,481,498,499],[81,129,426,481,498,499],[80,81,122,140,426,481,498,499],[80,81,140,426,481,498,499],[81,181,426,481,498,499],[81,122,426,481,498,499],[77,81,199,426,481,498,499],[77,81,200,426,481,498,499],[222,426,481,498,499],[206,208,426,481,498,499],[217,426,481,498,499],[206,426,481,498,499],[77,81,199,206,207,426,481,498,499],[199,200,208,426,481,498,499],[220,426,481,498,499],[77,81,206,207,208,426,481,498,499],[79,80,81,426,481,498,499],[77,81,426,481,498,499],[78,80,200,201,202,203,426,481,498,499],[122,200,201,202,203,426,481,498,499],[200,202,426,481,498,499],[80,201,202,204,205,209,426,481,498,499],[77,80,426,481,498,499],[81,224,426,481,498,499],[82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,123,124,125,126,127,128,130,131,132,133,134,135,136,137,138,139,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,426,481,498,499],[210,426,481,498,499],[426,439,442,445,446,481,498,499,524],[426,442,481,498,499,513,524],[426,442,446,481,498,499,524],[426,481,498,499,513],[426,436,481,498,499],[426,440,481,498,499],[426,438,439,442,481,498,499,524],[426,481,498,499,501,521],[426,481,498,499,531],[426,436,481,498,499,531],[426,438,442,481,498,499,501,524],[426,433,434,435,437,441,481,492,498,499,513,524],[426,442,450,458,481,498,499],[426,434,440,481,498,499],[426,442,467,468,481,498,499],[426,434,437,442,481,498,499,516,524,531],[426,442,481,498,499],[426,438,442,481,498,499,524],[426,433,481,498,499],[426,436,437,438,440,441,442,443,444,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,468,469,470,471,472,481,498,499],[426,442,460,463,481,489,498,499],[426,442,450,451,452,481,498,499],[426,440,442,451,453,481,498,499],[426,441,481,498,499],[426,434,436,442,481,498,499],[426,442,446,451,453,481,498,499],[426,446,481,498,499],[426,440,442,445,481,498,499,524],[426,434,438,442,450,481,498,499],[426,442,460,481,498,499],[426,453,481,498,499],[426,436,442,467,481,498,499,516,529,531],[422,423,426,481,498,499,533,534,535],[422,423,426,481,498,499,536,631],[426,481,498,499,533,534,535,631],[422,426,481,498,499,532,535,628,629],[422,426,481,498,499,532],[422,426,481,498,499,532,533],[422,426,481,498,499,532,534,628,629,630],[426,481,498,499,628,632]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"785921608325fa246b450f05b238f4b3ed659f1099af278ce9ebbc9416a13f1d","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d8dedbec739bc79642c1e96e9bfc0b83b25b104a0486aebf016fc7b85b39f48","impliedFormat":1},{"version":"e89535c3ec439608bcd0f68af555d0e5ddf121c54abe69343549718bd7506b9c","impliedFormat":1},{"version":"622a984b60c294ffb2f9152cf1d4d12e91d2b733d820eec949cf54d63a3c1025","impliedFormat":1},{"version":"81aae92abdeaccd9c1723cef39232c90c1aed9d9cf199e6e2a523b7d8e058a11","impliedFormat":1},{"version":"a63a6c6806a1e519688ef7bd8ca57be912fc0764485119dbd923021eb4e79665","impliedFormat":1},{"version":"75b57b109d774acca1e151df21cf5cb54c7a1df33a273f0457b9aee4ebd36fb9","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"795a08ae4e193f345073b49f68826ab6a9b280400b440906e4ec5c237ae777e6","impliedFormat":1},{"version":"8153df63cf65122809db17128e5918f59d6bb43a371b5218f4430c4585f64085","impliedFormat":1},{"version":"a8150bc382dd12ce58e00764d2366e1d59a590288ee3123af8a4a2cb4ef7f9df","impliedFormat":1},{"version":"5adfaf2f9f33957264ad199a186456a4676b2724ed700fc313ff945d03372169","impliedFormat":1},{"version":"d5c41a741cd408c34cb91f84468f70e9bda3dfeabf33251a61039b3cdb8b22d8","impliedFormat":1},{"version":"a20c3e0fe86a1d8fc500a0e9afec9a872ad3ab5b746ceb3dd7118c6d2bff4328","impliedFormat":1},{"version":"cbaf4a4aa8a8c02aa681c5870d5c69127974de29b7e01df570edec391a417959","impliedFormat":1},{"version":"c7135e329a18b0e712378d5c7bc2faec6f5ab0e955ea0002250f9e232af8b3e4","impliedFormat":1},{"version":"340a45cd77b41d8a6deda248167fa23d3dc67ec798d411bd282f7b3d555b1695","impliedFormat":1},{"version":"fae330f86bc10db6841b310f32367aaa6f553036a3afc426e0389ddc5566cd74","impliedFormat":1},{"version":"2bee1efe53481e93bb8b31736caba17353e7bb6fc04520bd312f4e344afd92f9","impliedFormat":1},{"version":"357b67529139e293a0814cb5b980c3487717c6fbf7c30934d67bc42dad316871","impliedFormat":1},{"version":"99d99a765426accf8133737843fb024a154dc6545fc0ffbba968a7c0b848959d","impliedFormat":1},{"version":"c782c5fd5fa5491c827ecade05c3af3351201dd1c7e77e06711c8029b7a9ee4d","impliedFormat":1},{"version":"883d2104e448bb351c49dd9689a7e8117b480b614b2622732655cef03021bf6d","impliedFormat":1},{"version":"d9b00ee2eca9b149663fdba1c1956331841ae296ee03eaaff6c5becbc0ff1ea8","impliedFormat":1},{"version":"09a7e04beb0547c43270b327c067c85a4e2154372417390731dfe092c4350998","impliedFormat":1},{"version":"eee530aaa93e9ec362e3941ee8355e2d073c7b21d88c2af4713e3d701dab8fef","impliedFormat":1},{"version":"28d47319b97dbeee9130b78eae03b2061d46dedbf92b0d9de13ed7ab8399ccd0","impliedFormat":1},{"version":"6559a36671052ca93cab9a289279a6cef6f9d1a72c34c34546a8848274a9c66c","impliedFormat":1},{"version":"7a0e4cd92545ad03910fd019ae9838718643bd4dde39881c745f236914901dfa","impliedFormat":1},{"version":"c99ebd20316217e349004ee1a0bc74d32d041fb6864093f10f31984c737b8cad","impliedFormat":1},{"version":"6f622e7f054f5ab86258362ac0a64a2d6a27f1e88732d6f5f052f422e08a70e7","impliedFormat":1},{"version":"d62d2ef93ceeb41cf9dfab25989a1e5f9ca5160741aac7f1453c69a6c14c69be","impliedFormat":1},{"version":"1491e80d72873fc586605283f2d9056ee59b166333a769e64378240df130d1c9","impliedFormat":1},{"version":"c32c073d389cfaa3b3e562423e16c2e6d26b8edebbb7d73ccffff4aa66f2171d","impliedFormat":1},{"version":"eca72bf229eecadb63e758613c62fab13815879053539a22477d83a48a21cd73","impliedFormat":1},{"version":"633db46fd1765736409a4767bfc670861468dde60dbb9a501fba4c1b72f8644d","impliedFormat":1},{"version":"f379412f2c0dddd193ff66dcdd9d9cc169162e441d86804c98c84423f993aa8a","impliedFormat":1},{"version":"f2ee748883723aa9325e5d7f30fce424f6a786706e1b91a5a55237c78ee89c4a","impliedFormat":1},{"version":"eda4760e5d7b171132265e970b67c322bcfffacb84248f44def26ed160eb722e","impliedFormat":1},{"version":"142f5190d730259339be1433931c0eb31ae7c7806f4e325f8a470bd9221b6533","impliedFormat":1},{"version":"cbd19f594f0ee7beffeb37dc0367af3908815acf4ce46d86b0515478718cfed8","impliedFormat":1},{"version":"3cdb96f128133efd129c798ac11f959e59d278ae439f69983224774d79ed11db","impliedFormat":1},{"version":"8776e64e6165838ac152fa949456732755b0976d1867ae5534ce248f0ccd7f41","impliedFormat":1},{"version":"896bbc7402b3a403cda96813c8ea595470ff76d31f32869d053317c00ca2589a","impliedFormat":1},{"version":"5c4c5b49bbb01828402bb04af1d71673b18852c11b7e95bfd5cf4c3d80d352c8","impliedFormat":1},{"version":"7030df3d920343df00324df59dc93a959a33e0f4940af3fefef8c07b7ee329bf","impliedFormat":1},{"version":"a96bc00e0c356e29e620eaec24a56d6dd7f4e304feefcc99066a1141c6fe05a7","impliedFormat":1},{"version":"d12cc0e5b09943c4cd0848f787eb9d07bf78b60798e4588c50582db9d4decc70","impliedFormat":1},{"version":"7333ee6354964fd396297958e52e5bf62179aa2c88ca0a35c6d3a668293b7e0e","impliedFormat":1},{"version":"19c3760af3cbc9da99d5b7763b9e33aaf8d018bc2ed843287b7ff4343adf4634","impliedFormat":1},{"version":"9d1e38aeb76084848d2fcd39b458ec88246de028c0f3f448b304b15d764b23d2","impliedFormat":1},{"version":"d406da1eccf18cec56fd29730c24af69758fe3ff49c4f94335e797119cbc0554","impliedFormat":1},{"version":"4898c93890a136da9156c75acd1a80a941a961b3032a0cf14e1fa09a764448b7","impliedFormat":1},{"version":"f5d7a845e3e1c6c27351ea5f358073d0b0681537a2da6201fab254aa434121d3","impliedFormat":1},{"version":"3a47d4582ef0697cccf1f3d03b620002f03fb0ff098f630e284433c417d6c61b","impliedFormat":1},{"version":"d7c30f0abfe9e197e376b016086cf66b2ffb84015139963f37301ed0da9d3d0d","impliedFormat":1},{"version":"ff75bba0148f07775bcb54bf4823421ed4ebdb751b3bf79cc003bd22e49d7d73","impliedFormat":1},{"version":"d40d20ac633703a7333770bfd60360126fc3302d5392d237bbb76e8c529a4f95","impliedFormat":1},{"version":"35a9867207c488061fb4f6fe4715802fbc164b4400018d2fa0149ad02db9a61c","impliedFormat":1},{"version":"b5fd805b7c578ca6a42c42bbfa6fda95a85d9e332106d810bb18116dc13a45f8","impliedFormat":1},{"version":"3abd9ab4fb3a035c865e6a68cb9f4260515354d5ebebacd5c681aee52c046d1f","impliedFormat":1},{"version":"13e82862532619a727cff9a9ba78df7ca66e8a9b69e4cbd18e9809257b6bf7ba","impliedFormat":1},{"version":"601fe4e366b99181cd0244d96418cffeaaa987a7e310c6f0ed0f06ce63dfe3e9","impliedFormat":1},{"version":"c66a4f2b1362abc4aeee0870c697691618b423c8c6e75624a40ef14a06f787b7","impliedFormat":1},{"version":"8808b1c4f84f2e43da98757a959fe7282cb1795737e16534a97b7d4d33e84dfc","impliedFormat":1},{"version":"cd0565ace87a2d7802bf4c20ea23a997c54e598b9eb89f9c75e69478c1f7a0b4","impliedFormat":1},{"version":"738020d2c8fc9df92d5dee4b682d35a776eaedfe2166d12bc8f186e1ea57cc52","impliedFormat":1},{"version":"86dd7c5657a0b0bc6bee8002edcfd544458d3d3c60974555746eb9b2583dc35e","impliedFormat":1},{"version":"d97b96b6ecd4ee03f9f1170722c825ef778430a6a0d7aab03b8929012bf773cd","impliedFormat":1},{"version":"e84e9b89251a57da26a339e75f4014f52e8ef59b77c2ee1e0171cde18d17b3b8","impliedFormat":1},{"version":"272dbfe04cfa965d6fff63fdaba415c1b5a515b1881ae265148f8a84ddeb318f","impliedFormat":1},{"version":"2035fb009b5fafa9a4f4e3b3fdb06d9225b89f2cbbf17a5b62413bf72cea721a","impliedFormat":1},{"version":"eefafec7c059f07b885b79b327d381c9a560e82b439793de597441a4e68d774a","impliedFormat":1},{"version":"72636f59b635c378dc9ea5246b9b3517b1214e340e468e54cb80126353053b2e","impliedFormat":1},{"version":"ebb79f267a3bf2de5f8edc1995c5d31777b539935fab8b7d863e8efb06c8e9ea","impliedFormat":1},{"version":"ada033e6a4c7f4e147e6d76bb881069dc66750619f8cc2472d65beeec1100145","impliedFormat":1},{"version":"0c04cc14a807a5dc0e3752d18a3b2655a135fefbf76ddcdabd0c5df037530d41","impliedFormat":1},{"version":"605d29d619180fbec287d1701e8b1f51f2d16747ec308d20aba3e9a0dac43a0f","impliedFormat":1},{"version":"67c19848b442d77c767414084fc571ce118b08301c4ddff904889d318f3a3363","impliedFormat":1},{"version":"c704ff0e0cb86d1b791767a88af21dadfee259180720a14c12baee668d0eb8fb","impliedFormat":1},{"version":"195c50e15d5b3ea034e01fbdca6f8ad4b35ad47463805bb0360bdffd6fce3009","impliedFormat":1},{"version":"da665f00b6877ae4adb39cd548257f487a76e3d99e006a702a4f38b4b39431cb","impliedFormat":1},{"version":"083aebdd7c96aee90b71ec970f81c48984d9c8ab863e7d30084f048ddcc9d6af","impliedFormat":1},{"version":"1c3bde1951add95d54a05e6628a814f2f43bf9d49902729eaf718dc9eb9f4e02","impliedFormat":1},{"version":"d7a4309673b06223537bc9544b1a5fe9425628e1c8ab5605f3c5ebc27ecb8074","impliedFormat":1},{"version":"0be3da88f06100e2291681bbda2592816dd804004f0972296b20725138ebcddf","impliedFormat":1},{"version":"3eadfd083d40777b403f4f4eecfa40f93876f2a01779157cc114b2565a7afb51","impliedFormat":1},{"version":"cb6789ce3eba018d5a7996ccbf50e27541d850e9b4ee97fdcb3cbd8c5093691f","impliedFormat":1},{"version":"a3684ea9719122f9477902acd08cd363a6f3cff6d493df89d4dc12fa58204e27","impliedFormat":1},{"version":"ff3c48a17bf10dfbb62448152042e4a48a56c9972059997ab9e7ed03b191809b","impliedFormat":1},{"version":"bc3561e460de5a2c19123f618fc1d5a96a484d168884d00666997d847f502bf9","impliedFormat":1},{"version":"c0c46113b4cd5ec9e7cf56e6dbfb3930ef6cbba914c0883eeced396988ae8320","impliedFormat":1},{"version":"118ea3f4e7b9c12e92551be0766706f57a411b4f18a1b4762cfde3cd6d4f0a96","impliedFormat":1},{"version":"01acd7f315e2493395292d9a02841f3b0300e77ccf42f84f4f11460e7623107d","impliedFormat":1},{"version":"656d1ce5b8fbed896bb803d849d6157242261030967b821d01e72264774cab55","impliedFormat":1},{"version":"da66c1b41d833858fe61947432130d39649f0b53d992dfd7d00f0bbe57191ef4","impliedFormat":1},{"version":"835739c6dcf0a9a1533d1e95b7d7cf8e44ca1341652856b897f4573078b23a31","impliedFormat":1},{"version":"774a3bcc0700036313c57a079e2e1161a506836d736203aa0463efa7b11a7e54","impliedFormat":1},{"version":"96577e3f8e0f9ea07ddf748d72dc1908581ef2aafd4ae7418a4574c26027cf02","impliedFormat":1},{"version":"f55971cb3ede99c17443b03788fe27b259dcd0f890ac31badcb74e3ffb4bb371","impliedFormat":1},{"version":"0ef0c246f8f255a5d798727c40d6d2231d2b0ebda5b1ec75e80eadb02022c548","impliedFormat":1},{"version":"ea127752a5ec75f2ac6ef7f1440634e6ae5bc8d09e6f98b61a8fb600def6a861","impliedFormat":1},{"version":"862320e775649dcca8915f8886865e9c6d8affc1e70ed4b97199f3b70a843b47","impliedFormat":1},{"version":"561764374e9f37cb895263d5c8380885972d75d09d0db64c12e0cb10ba90ae3e","impliedFormat":1},{"version":"ee889da857c29fa7375ad500926748ef2e029a6645d7c080e57769923d15dfef","impliedFormat":1},{"version":"56984ba2d781bd742b6bc0fa34c10df2eae59b42ec8b1b731d297f1590fa4071","impliedFormat":1},{"version":"7521de5e64e2dd022be87fce69d956a52d4425286fbc5697ecfec386da896d7e","impliedFormat":1},{"version":"f50b072ec1f4839b54fd1269a4fa7b03efbc9c59940224c7939632c0f70a39c3","impliedFormat":1},{"version":"a5b7ec6f1ff3f1d19a2547f7e1a50ab1284e6b4755d260a481ea01ed2c7cec60","impliedFormat":1},{"version":"1747f9eebf5beb8cfc46cf0303e300950b7bff20cff60b9c46818caced3226e3","impliedFormat":1},{"version":"9d969f36abb62139a90345ee5d03f1c2479831bd84c8f843d87ec304cad96ead","impliedFormat":1},{"version":"e972b52218fd5919aec6cd0e5e2a5fb75f5d2234cf05597a9441837a382b2b29","impliedFormat":1},{"version":"d1e292b0837d0ef5ede4f52363c9d8e93f5d5234086adc796e11eae390305b36","impliedFormat":1},{"version":"0a9e10028a96865d0f25aeca9e3b1ff0691b9b662aa186d9d490728434cf8261","impliedFormat":1},{"version":"1aed740b674839c89f427f48737bad435ee5a39d80b5929f9dc9cc9ac10a7700","impliedFormat":1},{"version":"6e9e3690dc3a6e99a845482e33ee78915893f2d0d579a55b6a0e9b4c44193371","impliedFormat":1},{"version":"4e7a76cce3b537b6cdb1c4b97e29cb4048ee8e7d829cf3a85f4527e92eb573f2","impliedFormat":1},{"version":"bedbf6e1e952560ff250828c494da56976ca88860f8ba3dfb17dc89eac2e3463","impliedFormat":1},{"version":"46f1fe93f199a419172d7480407d9572064b54712b69406efa97e0244008b24e","impliedFormat":1},{"version":"044e6aaa3f612833fb80e323c65e9d816c3148b397e93630663cda5c2d8f4de1","impliedFormat":1},{"version":"deaf8eb392c46ea2c88553d3cc38d46cfd5ee498238dbc466e3f5be63ae0f651","impliedFormat":1},{"version":"6a79b61f57699de0a381c8a13f4c4bcd120556bfab0b4576994b6917cb62948b","impliedFormat":1},{"version":"c5133d7bdec65f465df12f0b507fbc0d96c78bfa5a012b0eb322cf1ff654e733","impliedFormat":1},{"version":"7905c052681cbe9286797ec036942618e1e8d698dcc2e60f4fb7a0013d470442","impliedFormat":1},{"version":"89049878a456b5e0870bb50289ea8ece28a2abd0255301a261fa8ab6a3e9a07d","impliedFormat":1},{"version":"d0da4f4fd66f37c13deabc1a641edd629141c333ccf862733788bd27e89436ac","impliedFormat":1},{"version":"d4a4f10062a6d82ba60d3ffde9154ef24b1baf2ce28c6439f5bdfb97aa0d18fc","impliedFormat":1},{"version":"f13310c360ecffddb3858dcb33a7619665369d465f55e7386c31d45dfc3847bf","impliedFormat":1},{"version":"e7bde95a05a0564ee1450bc9a53797b0ac7944bf24d87d6f645baca3aa60df48","impliedFormat":1},{"version":"62e68ce120914431a7d34232d3eca643a7ddd67584387936a5202ae1c4dd9a1b","impliedFormat":1},{"version":"91d695bba902cc2eda7edc076cd17c5c9340f7bb254597deb6679e343effadbb","impliedFormat":1},{"version":"e1cb8168c7e0bd4857a66558fe7fe6c66d08432a0a943c51bacdac83773d5745","impliedFormat":1},{"version":"a464510505f31a356e9833963d89ce39f37a098715fc2863e533255af4410525","impliedFormat":1},{"version":"0612b149cabbc136cb25de9daf062659f306b67793edc5e39755c51c724e2949","impliedFormat":1},{"version":"2579b150b86b5f644d86a6d58f17e3b801772c78866c34d41f86f3fc9eb523fe","impliedFormat":1},{"version":"e4b3a3e1b21a194b29d35488ec880948fc2ef8e937288463ea2981ad62a7b106","impliedFormat":1},{"version":"0353e05b0d8475c10ddd88056e0483b191aa5cdea00a25e0505b96e023f1a2d9","impliedFormat":1},{"version":"6a312caabb43c284a4b0da60d5c24f285338096eb9e977af1faca38d32a34685","impliedFormat":1},{"version":"b6eda93163beb978dd0d3042b11c60373506400c94613c0b40d1c0a9a9f1020e","impliedFormat":1},{"version":"a8af4739274959d70f7da4bfdd64f71cfc08d825c2d5d3561bc7baed760b33ef","impliedFormat":1},{"version":"99193bafaa9ce112889698de25c4b8c80b1209bb7402189aea1c7ada708a8a54","impliedFormat":1},{"version":"70473538c6eb9494d53bf1539fe69df68d87c348743d8f7244dcb02ca3619484","impliedFormat":1},{"version":"c48932ab06a4e7531bdca7b0f739ace5fa273f9a1b9009bcd26902f8c0b851f0","impliedFormat":1},{"version":"df6c83e574308f6540c19e3409370482a7d8f448d56c65790b4ac0ab6f6fedd8","impliedFormat":1},{"version":"ebbe6765a836bfa7f03181bc433c8984ca29626270ca1e240c009851222cb8a7","impliedFormat":1},{"version":"20f630766b73752f9d74aab6f4367dba9664e8122ea2edcb00168e4f8b667627","impliedFormat":1},{"version":"468df9d24a6e2bc6b4351417e3b5b4c2ca08264d6d5045fe18eb42e7996e58b4","impliedFormat":1},{"version":"954523d1f4856180cbf79b35bd754e14d3b2aea06c7efd71b254c745976086e9","impliedFormat":1},{"version":"31a030f1225ab463dd0189a11706f0eb413429510a7490192a170114b2af8697","impliedFormat":1},{"version":"6f48f244cd4b5b7e9a0326c74f480b179432397580504726de7c3c65d6304b36","impliedFormat":1},{"version":"5520e6defac8e6cdced6dd28808fafe795cb2cd87407bb1012e13a2b061f50b7","impliedFormat":1},{"version":"c3451661fb058f4e15971bbed29061dd960d02d9f8db1038e08b90d294a05c68","impliedFormat":1},{"version":"1f21aefa51f03629582568f97c20ef138febe32391012828e2a0149c2c393f62","impliedFormat":1},{"version":"b18141cda681d82b2693aef045107a910b90a7409ecff0830e1283f0bb2a53e6","impliedFormat":1},{"version":"18eb53924f27af2a5e9734dce28cf5985df7b2828dade1239241e95b639e9bf1","impliedFormat":1},{"version":"a9f1c52f4e7c2a2c4988b5638bd3dbfe38e408b358d02dd2fb8c8920e877f088","impliedFormat":1},{"version":"a7e10a8ad6536dd0225029e46108b18cee0d3c15c2f6e49bd62798ad85bc57b6","impliedFormat":1},{"version":"8db1ed144dd2304b9bd6e41211e22bad5f4ab1d8006e6ac127b29599f4b36083","impliedFormat":1},{"version":"843a5e3737f2abbbbd43bf2014b70f1c69a80530814a27ae1f8be213ae9ec222","impliedFormat":1},{"version":"6fc1be224ad6b3f3ec11535820def2d21636a47205c2c9de32238ba1ac8d82e6","impliedFormat":1},{"version":"5a44788293f9165116c9c183be66cefef0dc5d718782a04847de53bf664f3cc1","impliedFormat":1},{"version":"afd653ae63ce07075b018ba5ce8f4e977b6055c81cc65998410b904b94003c0a","impliedFormat":1},{"version":"9172155acfeb17b9d75f65b84f36cb3eb0ff3cd763db3f0d1ad5f6d10d55662f","impliedFormat":1},{"version":"71807b208e5f15feffb3ff530bec5b46b1217af0d8cc96dde00d549353bcb864","impliedFormat":1},{"version":"1a6eca5c2bc446481046c01a54553c3ffb856f81607a074f9f0256c59dd0ab13","impliedFormat":1},{"version":"5d4242d50092a353e5ab1f06663a89dbc714c7d9d70072ea03c83c5b14750f05","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"c724034e22cbbde98550aca4ee32006f7f4c566885328949ac16ff9ff2f76e89","impliedFormat":1},{"version":"983d890a7ed6e4c856bdba8ec32c36b5904ba4c53a610041dcbd568faa7aca32","impliedFormat":1},{"version":"3d02d26a579f63218675f46f42ef9279e4254cd053667384e93bf4a078feb002","impliedFormat":1},{"version":"51e7382cb5b63c92ebf346cc88e9af83cbea8f7d9ead2d7973ef997273bcd9ef","impliedFormat":1},{"version":"6196a583ad833817c500fc3a6d1ec6a2ec2caf914723e13c97063322ecba4ee8","impliedFormat":1},{"version":"04de5584b953b03611eeef01ba9948607def8f64f1e7fbc840752b13b4521b52","impliedFormat":1},{"version":"8b0b6a4c032a56d5651f7dd02ba3f05fbfe4131c4095093633cda3cae0991972","impliedFormat":1},{"version":"192a0c215bffe5e4ac7b9ff1e90e94bf4dfdad4f0f69a5ae07fccc36435ebb87","impliedFormat":1},{"version":"3ef8565e3d254583cced37534f161c31e3a8f341ff005c98b582c6d8c9274538","impliedFormat":1},{"version":"d7e42a3800e287d2a1af8479c7dd58c8663e80a01686cb89e0068be6c777d687","impliedFormat":1},{"version":"1098034333d3eb3c1d974435cacba9bd5a625711453412b3a514774fec7ca748","impliedFormat":1},{"version":"f2388b97b898a93d5a864e85627e3af8638695ebfa6d732ecd39d382824f0e63","impliedFormat":1},{"version":"73a3180fe69bf6e8d61f8fbbf969a3e4c9d19e1b3570768a281d371f85aa2dec","impliedFormat":1},{"version":"f477375e6f0bf2a638a71d4e7a3da8885e3a03f3e5350688541d136b10b762a6","impliedFormat":1},{"version":"a44d6ea4dc70c3d789e9cef3cc42b79c78d17d3ce07f5fd278a7e1cbe824da56","impliedFormat":1},{"version":"55cd8cbc22fe648429a787e16a9cd2dc501a2aafd28c00254ad120ef68a581c0","impliedFormat":1},{"version":"ba4900e9d6f9795a72e8f5ca13c18861821a3fc3ae7858acb0a3366091a47afb","impliedFormat":1},{"version":"7778e2cc5f74ef263a880159aa7fa67254d6232e94dd03429a75597a622537a7","impliedFormat":1},{"version":"8e06a1ef49502a62039eeb927a1bd7561b0bce48bd423a929e2e478fd827c273","impliedFormat":1},{"version":"7ec3d0b061da85d6ff50c337e3248a02a72088462739d88f33b9337dba488c4f","impliedFormat":1},{"version":"2f554c6798b731fc39ff4e3d86aadc932fdeaa063e3cbab025623ff5653c0031","impliedFormat":1},{"version":"fe4613c6c0d23edc04cd8585bdd86bc7337dc6265fb52037d11ca19eeb5e5aaf","impliedFormat":1},{"version":"53b26fbee1a21a6403cf4625d0e501a966b9ccf735754b854366cee8984b711c","impliedFormat":1},{"version":"9ff247206ec5dffdfadddfded2c9d9ad5f714821bb56760be40ed89121f192f4","impliedFormat":1},{"version":"98c6ddd06251098b3302e7094cbc9ab54a2ea88069f5416b7d0b8daee2ff8aa2","impliedFormat":1},{"version":"8c59d8256086ed17676139ee43c1155673e357ab956fb9d00711a7cac73e059d","impliedFormat":1},{"version":"cfe88132f67aa055a3f49d59b01585fa8d890f5a66a0a13bb71973d57573eee7","impliedFormat":1},{"version":"53ce488a97f0b50686ade64252f60a1e491591dd7324f017b86d78239bd232ca","impliedFormat":1},{"version":"50fd11b764194f06977c162c37e5a70bcf0d3579bf82dd4de4eee3ac68d0f82f","impliedFormat":1},{"version":"e0ceb647dcdf6b27fd37e8b0406c7eafb8adfc99414837f3c9bfd28ffed6150a","impliedFormat":1},{"version":"99579aa074ed298e7a3d6a47e68f0cd099e92411212d5081ce88344a5b1b528d","impliedFormat":1},{"version":"096e4ddaa8f0aa8b0ceadd6ab13c3fab53e8a0280678c405160341332eca3cd7","impliedFormat":1},{"version":"415b55892d813a74be51742edd777bbced1f1417848627bf71725171b5325133","impliedFormat":1},{"version":"942ab34f62ac3f3d20014615b6442b6dc51815e30a878ebc390dd70e0dec63bf","impliedFormat":1},{"version":"7a671bf8b4ad81b8b8aea76213ca31b8a5de4ba39490fbdee249fc5ba974a622","impliedFormat":1},{"version":"8e07f13fb0f67e12863b096734f004e14c5ebfd34a524ed4c863c80354c25a44","impliedFormat":1},{"version":"9faa56e38ed5637228530065a9bab19a4dc5a326fbdd1c99e73a310cfed4fcde","impliedFormat":1},{"version":"7d4ad85174f559d8e6ed28a5459aebfc0a7b0872f7775ca147c551e7765e3285","impliedFormat":1},{"version":"d422f0c340060a53cb56d0db24dd170e31e236a808130ab106f7ab2c846f1cdb","impliedFormat":1},{"version":"424403ef35c4c97a7f00ea85f4a5e2f088659c731e75dbe0c546137cb64ef8d8","impliedFormat":1},{"version":"16900e9a60518461d7889be8efeca3fe2cbcd3f6ce6dee70fea81dfbf8990a76","impliedFormat":1},{"version":"6daf17b3bd9499bd0cc1733ab227267d48cd0145ed9967c983ccb8f52eb72d6e","impliedFormat":1},{"version":"e4177e6220d0fef2500432c723dbd2eb9a27dcb491344e6b342be58cc1379ec0","impliedFormat":1},{"version":"ddc62031f48165334486ad1943a1e4ed40c15c94335697cb1e1fd19a182e3102","impliedFormat":1},{"version":"b3f4224eb155d7d13eb377ef40baa1f158f4637aa6de6297dfeeacefd6247476","impliedFormat":1},{"version":"4a168e11fe0f46918721d2f6fcdb676333395736371db1c113ae30b6fde9ccd2","impliedFormat":1},{"version":"5b0a75a5cced0bed0d733bde2da0bbb5d8c8c83d3073444ae52df5f16aefb6ab","impliedFormat":1},{"version":"ef2c1585cad462bdf65f2640e7bcd75cd0dbc45bae297e75072e11fe3db017fa","impliedFormat":1},{"version":"ef809928a4085de826f5b0c84175a56d32dd353856f5b9866d78b8419f8ea9bc","impliedFormat":1},{"version":"6f6eadb32844b0ec7b322293b011316486894f110443197c4c9fbcba01b3b2fa","impliedFormat":1},{"version":"a51e08f41e3e948c287268a275bfe652856a10f68ddd2bf3e3aaf5b8cdb9ef85","impliedFormat":1},{"version":"862f7d760ef37f0ae2c17de82e5fbf336b37d5c1b0dcf39dcd5468f90a7fdd54","impliedFormat":1},{"version":"af48a76b75041e2b3e7bd8eed786c07f39ea896bb2ff165e27e18208d09b8bee","impliedFormat":1},{"version":"cb524ec077f3963e13e85747c6b53fbdf6bf407c84ca1873c6e43da1e96bee6d","impliedFormat":1},{"version":"deb092bc337b2cb0a1b14f3d43f56bc663e1447694e6d479d6df8296bdd452d6","impliedFormat":1},{"version":"041bc1c3620322cb6152183857601707ef6626e9d99f736e8780533689fb1bf9","impliedFormat":1},{"version":"22bd7c75de7d68e075975bf1123de5bccecfd06688afff2e2022b4c70bfc91c3","impliedFormat":1},{"version":"128e7c2ffd37aa29e05367400d718b0e4770cefb1e658d8783ec80a16bc0643a","impliedFormat":1},{"version":"076ac4f2d642c473fa7f01c8c1b7b4ef58f921130174d9cf78430651f44c43ec","impliedFormat":1},{"version":"396c1e5a39706999ec8cc582916e05fcb4f901631d2c192c1292e95089a494d9","impliedFormat":1},{"version":"89df75d28f34fc698fe261f9489125b4e5828fbd62d863bbe93373d3ed995056","impliedFormat":1},{"version":"8ccf5843249a042f4553a308816fe8a03aa423e55544637757d0cfa338bb5186","impliedFormat":1},{"version":"93b44aa4a7b27ba57d9e2bad6fb7943956de85c5cc330d2c3e30cd25b4583d44","impliedFormat":1},{"version":"a0c6216075f54cafdfa90412596b165ff85e2cadd319c49557cc8410f487b77c","impliedFormat":1},{"version":"3c359d811ec0097cba00fb2afd844b125a2ddf4cad88afaf864e88c8d3d358bd","impliedFormat":1},{"version":"3c0b38e8bf11bf3ab87b5116ae8e7b2cad0147b1c80f2b77989dea6f0b93e024","impliedFormat":1},{"version":"8df06e1cd5bb3bf31529cc0db74fa2e57f7de1f6042726679eb8bc1f57083a99","impliedFormat":1},{"version":"d62f09256941e92a95b78ae2267e4cf5ff2ca8915d62b9561b1bc85af1baf428","impliedFormat":1},{"version":"e6223b7263dd7a49f4691bf8df2b1e69f764fb46972937e6f9b28538d050b1ba","impliedFormat":1},{"version":"d9b59eb4e79a0f7a144ee837afb3f1afbc4dab031e49666067a2b5be94b36bd4","impliedFormat":1},{"version":"1db014db736a09668e0c0576585174dbcfd6471bb5e2d79f151a241e0d18d66b","impliedFormat":1},{"version":"8a153d30edde9cefd102e5523b5a9673c298fc7cf7af5173ae946cbb8dd48f11","impliedFormat":1},{"version":"abaaf8d606990f505ee5f76d0b45a44df60886a7d470820fcfb2c06eafa99659","impliedFormat":1},{"version":"51a66bfa412057e786a712733107547ceb6f539061f5bf1c6e5a96e4ccf4f83c","impliedFormat":1},{"version":"d92a80c2c05cf974704088f9da904fe5eadc0b3ad49ddd1ef70ca8028b5adda1","impliedFormat":1},{"version":"fbd7450f20b4486c54f8a90486c395b14f76da66ba30a7d83590e199848f0660","impliedFormat":1},{"version":"ece5b0e45c865645ab65880854899a5422a0b76ada7baa49300c76d38a530ee1","impliedFormat":1},{"version":"62d89ac385aeab821e2d55b4f9a23a277d44f33c67fefe4859c17b80fdb397ea","impliedFormat":1},{"version":"f4dee11887c5564886026263c6ee65c0babc971b2b8848d85c35927af25da827","impliedFormat":1},{"version":"fb8dd49a4cd6d802be4554fbab193bb06e2035905779777f32326cb57cf6a2c2","impliedFormat":1},{"version":"e403ecdfba83013b5eb0e648a92ce182bff2a45ccb81db3035a69081563c2830","impliedFormat":1},{"version":"82d3e00d56a71fc169f3cf9ec5f5ffcc92f6c0e67d4dfc130dafe9f1886d5515","impliedFormat":1},{"version":"b8d57effce2d49a5493debbd8c644e8d52fbe66e2c6d451371375ef5f7bccb8e","impliedFormat":1},{"version":"9963d9857df2df335d1232a12eccbe5c777537a244f4b39406b27bf4736202f6","impliedFormat":1},{"version":"1b33478647aa1b771314745807397002a410c746480e9447db959110999873ce","impliedFormat":1},{"version":"b8d58ef4128a6e8e4b80803e5b67b2aaf1436c133ce39e514b9c004e21b2867e","impliedFormat":1},{"version":"7e6a96b383da9f5acb848bb9dedb9ac8489df7cec46bbf26aeaed2610f709078","impliedFormat":1},{"version":"9fac6ebf3c60ced53dd21def30a679ec225fc3ff4b8d66b86326c285a4eebb5a","impliedFormat":1},{"version":"8cb83cb98c460cd716d2a98b64eb1a07a3a65c7362436550e02f5c2d212871d1","impliedFormat":1},{"version":"07bc8a3551e39e70c38e7293b1a09916867d728043e352b119f951742cb91624","impliedFormat":1},{"version":"e47adc2176f43c617c0ab47f2d9b2bb1706d9e0669bf349a30c3fe09ddd63261","impliedFormat":1},{"version":"7fec79dfd7319fec7456b1b53134edb54c411ba493a0aef350eee75a4f223eeb","impliedFormat":1},{"version":"189c489705bb96a308dcde9b3336011d08bfbca568bcaf5d5d55c05468e9de7a","impliedFormat":1},{"version":"98f4b1074567341764b580bf14c5aabe82a4390d11553780814f7e932970a6f7","impliedFormat":1},{"version":"1dd24cbf39199100fbe2f3dbd1c7203c240c41d95f66301ecc7650ae77875be1","impliedFormat":1},{"version":"2e252235037a2cd8feebfbf74aa460f783e5d423895d13f29a934d7655a1f8be","impliedFormat":1},{"version":"763f4ac187891a6d71ae8821f45eef7ff915b5d687233349e2c8a76c22b3bf2a","impliedFormat":1},{"version":"59ff7d8f6d9c68b2db8bbddf8773c763fbe7b250947e4d45ca64d54f6f3c7d96","impliedFormat":1},{"version":"280ecc3a39bc591e63acefd807485398f38b0f87d5516fc03d0a27719c39c2b4","impliedFormat":1},{"version":"a8b7cdb71b4e0166e78ba82a8a682f9407e2d286ae582fe25a7a668767bc27ae","impliedFormat":1},{"version":"730e20aedd9f265450adbd07b6bd3310560f8f148ccb062b8c86659a27c786dc","impliedFormat":1},{"version":"0a9c0f3730c701bdf8ebca077c067fbf365194cb5ff7584f2e7e4ca93371262c","impliedFormat":1},{"version":"dd120398ca28ddfd2a6af2bc417276fe5e908ed4c325370d6925430b013cffd4","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"a4a39b5714adfcadd3bbea6698ca2e942606d833bde62ad5fb6ec55f5e438ff8","impliedFormat":1},{"version":"bbc1d029093135d7d9bfa4b38cbf8761db505026cc458b5e9c8b74f4000e5e75","impliedFormat":1},{"version":"ac450542cbfd50a4d7bf0f3ec8aeedb9e95791ecc6f2b2b19367696bd303e8c6","impliedFormat":1},{"version":"8a190298d0ff502ad1c7294ba6b0abb3a290fc905b3a00603016a97c363a4c7a","impliedFormat":1},{"version":"3cf631a6ae0060fddf4898c816958e39f47e16570faf7bc7048c774c83cd7a7e","impliedFormat":1},{"version":"1f68ab0e055994eb337b67aa87d2a15e0200951e9664959b3866ee6f6b11a0fe","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"f4db16820c99b6db923ab18af5fecb02331d785c4c2a8a88373a0cfc08256589","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"d934a06d62d87a7e2d75a3586b5f9fb2d94d5fe4725ff07252d5f4651485100f","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","impliedFormat":1},{"version":"ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","impliedFormat":1},{"version":"85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","impliedFormat":1},{"version":"6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","impliedFormat":1},{"version":"5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","impliedFormat":1},{"version":"35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","impliedFormat":1},{"version":"951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","impliedFormat":1},{"version":"4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","impliedFormat":1},{"version":"99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","impliedFormat":1},{"version":"71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","impliedFormat":1},{"version":"74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","impliedFormat":1},{"version":"a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","impliedFormat":1},{"version":"fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","impliedFormat":1},{"version":"cad63667f992149cee390c3e98f38c00eee56a2dae3541c6d9929641b835f987","impliedFormat":1},{"version":"f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","impliedFormat":1},{"version":"eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","impliedFormat":1},{"version":"578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","impliedFormat":1},{"version":"7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","impliedFormat":1},{"version":"45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","impliedFormat":1},{"version":"80419a23b4182c256fa51d71cb9c4d872256ca6873701ceabbd65f8426591e49","impliedFormat":1},{"version":"5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","impliedFormat":1},{"version":"ed9ad5b51c6faf9d6f597aa0ab11cb1d3a361c51ba59d1220557ef21ad5b0146","impliedFormat":1},{"version":"73db7984e8a35e6b48e3879a6d024803dd990022def2750b3c23c01eb58bc30f","impliedFormat":1},{"version":"c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","impliedFormat":1},{"version":"33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","impliedFormat":1},{"version":"de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","impliedFormat":1},{"version":"e481bd2c07c8e93eb58a857a9e66f22cb0b5ddfd86bbf273816fd31ef3a80613","impliedFormat":1},{"version":"ef156ba4043f6228d37645d6d9c6230a311e1c7a86669518d5f2ebc26e6559bf","impliedFormat":1},{"version":"457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","impliedFormat":1},{"version":"473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","impliedFormat":1},{"version":"22bc373ca556de33255faaddb373fec49e08336638958ad17fbd6361c7461eed","impliedFormat":1},{"version":"b3d58358675095fef03ec71bddc61f743128682625f1336df2fc31e29499ab25","impliedFormat":1},{"version":"5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","impliedFormat":1},{"version":"a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","impliedFormat":1},{"version":"80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","impliedFormat":1},{"version":"0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","impliedFormat":1},{"version":"8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","impliedFormat":1},{"version":"0a516adfde610035e31008b170da29166233678216ef3646822c1b9af98879da","impliedFormat":1},{"version":"70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","impliedFormat":1},{"version":"df10dc6fe1c49e2f94be9d7d1e625aeb66e5eb90b2e0af1f378bfdfa5313155b","impliedFormat":1},{"version":"082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","impliedFormat":1},{"version":"813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","impliedFormat":1},{"version":"039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","impliedFormat":1},{"version":"e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","impliedFormat":1},{"version":"b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","impliedFormat":1},{"version":"16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","impliedFormat":1},{"version":"346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","impliedFormat":1},{"version":"3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","impliedFormat":1},{"version":"2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","impliedFormat":1},{"version":"bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","impliedFormat":1},{"version":"56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","impliedFormat":1},{"version":"fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","impliedFormat":1},{"version":"37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","impliedFormat":1},{"version":"be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","impliedFormat":1},{"version":"a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","impliedFormat":1},{"version":"cf01f601ef1e10b90cad69312081ce0350f26a18330913487a26d6d4f7ce5a73","impliedFormat":1},{"version":"a9de7b9a5deaed116c9c89ad76fdcc469226a22b79c80736de585af4f97b17cd","impliedFormat":1},{"version":"5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","impliedFormat":1},{"version":"20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","impliedFormat":1},{"version":"da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","impliedFormat":1},{"version":"7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","impliedFormat":1},{"version":"eb13c8624f5747a845aea0df1dfde0f2b8f5ed90ca3bc550b12777797cb1b1e3","impliedFormat":1},{"version":"2452fc0f47d3b5b466bda412397831dd5138e62f77aa5e11270e6ca3ecb8328d","impliedFormat":1},{"version":"33c2ebbdd9a62776ca0091a8d1f445fa2ea4b4f378bc92f524031a70dfbeec86","impliedFormat":1},{"version":"3ac3a5b34331a56a3f76de9baf619def3f3073961ce0a012b6ffa72cf8a91f1f","impliedFormat":1},{"version":"d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","impliedFormat":1},{"version":"776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","impliedFormat":1},{"version":"be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","impliedFormat":1},{"version":"40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","impliedFormat":1},{"version":"05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","impliedFormat":1},{"version":"15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","impliedFormat":1},{"version":"968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","impliedFormat":1},{"version":"77debd777927059acbaf1029dfc95900b3ab8ed0434ce3914775efb0574e747b","impliedFormat":1},{"version":"921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","impliedFormat":1},{"version":"60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","impliedFormat":1},{"version":"755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","impliedFormat":1},{"version":"7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","impliedFormat":1},{"version":"1e25b848c58ad80be5c31b794d49092d94df2b7e492683974c436bcdbefb983c","impliedFormat":1},{"version":"3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","impliedFormat":1},{"version":"145df08c171ec616645a353d5eaa5d5f57a5fbce960a47d847548abd9215a99e","impliedFormat":1},{"version":"dcfd2ca9e033077f9125eeca6890bb152c6c0bc715d0482595abc93c05d02d92","impliedFormat":1},{"version":"8056fa6beb8297f160e13c9b677ba2be92ab23adfb6940e5a974b05acd33163b","impliedFormat":1},{"version":"86dda1e79020fad844010b39abb68fafed2f3b2156e3302820c4d0a161f88b03","impliedFormat":1},{"version":"dea0dcec8d5e0153d6f0eacebb163d7c3a4b322a9304048adffc6d26084054bd","impliedFormat":1},{"version":"2afd081a65d595d806b0ff434d2a96dc3d6dcd8f0d1351c0a0968568c6944e0b","impliedFormat":1},{"version":"b86259ab4b95ebe1aedb03d3eebea647f0bd9a706981220f00210487d70e77a0","impliedFormat":1},{"version":"2f1f7c65e8ee58e3e7358f9b8b3c37d8447549ecc85046f9405a0fc67fbdf54b","impliedFormat":1},{"version":"e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","impliedFormat":1},{"version":"2762c2dbee294ffb8fdbcae6db32c3dae09e477d6a348b48578b4145b15d1818","impliedFormat":1},{"version":"78a1eace936ad32ca1c228814f3333cb2e826e1447e60fee181b3c53d43a8d07","impliedFormat":1},{"version":"24bd135b687da453ea7bd98f7ece72e610a3ff8ca6ec23d321c0e32f19d32db6","impliedFormat":1},{"version":"64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","impliedFormat":1},{"version":"f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","impliedFormat":1},{"version":"7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","impliedFormat":1},{"version":"22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","impliedFormat":1},{"version":"9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","impliedFormat":1},{"version":"e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","impliedFormat":1},{"version":"9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","impliedFormat":1},{"version":"b04862a4f44f78fd12ad8ed34ab81f9f254a87398568173694a78dc0bdebcd23","impliedFormat":1},{"version":"fa894bdddb2ba0e6c65ad0d88942cf15328941246410c502576124ef044746f9","impliedFormat":1},{"version":"59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","impliedFormat":1},{"version":"456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","impliedFormat":1},{"version":"a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","impliedFormat":1},{"version":"6f6b0b477db6c4039410c7a13fe1ebed4910dedf644330269816df419cdb1c65","impliedFormat":1},{"version":"960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","impliedFormat":1},{"version":"530f4bee13cc07fd4e8bac69eeb728a6270ebafeab886c98624c699725b29755","impliedFormat":1},{"version":"a0db48d42371b223cea8fd7a41763d48f9166ecd4baecc9d29d9bb44cc3c2d83","impliedFormat":1},{"version":"aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","impliedFormat":1},{"version":"6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","impliedFormat":1},{"version":"b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","impliedFormat":1},{"version":"81b097e0f9f8d8c3d5fe6ba9dc86139e2d95d1e24c5ce7396a276dfbb2713371","impliedFormat":1},{"version":"692d56fff4fb60948fe16e9fed6c4c4eac9b263c06a8c6e63726e28ed4844fd4","impliedFormat":1},{"version":"f13228f2c0e145fc6dc64917eeef690fb2883a0ac3fa9ebfbd99616fd12f5629","impliedFormat":1},{"version":"d89b2b41a42c04853037408080a2740f8cd18beee1c422638d54f8aefe95c5b8","impliedFormat":1},{"version":"be5d39e513e3e0135068e4ebed5473ab465ae441405dce90ab95055a14403f64","impliedFormat":1},{"version":"97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","impliedFormat":1},{"version":"9932f390435192eb93597f89997500626fb31005416ce08a614f66ec475c5c42","impliedFormat":1},{"version":"5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","impliedFormat":1},{"version":"1ee47a39f996d76442fe9777bb4446bd110f6828488db0e65cba817b4ffc5807","impliedFormat":1},{"version":"fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","impliedFormat":1},{"version":"7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","impliedFormat":1},{"version":"4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","impliedFormat":1},{"version":"a71fd01a802624c3fce6b09c14b461cc7c7758aa199c202d423a7c89ad89943c","impliedFormat":1},{"version":"1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","impliedFormat":1},{"version":"db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","impliedFormat":1},{"version":"4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","impliedFormat":1},{"version":"8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","impliedFormat":1},{"version":"2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","impliedFormat":1},{"version":"ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","impliedFormat":1},{"version":"295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","impliedFormat":1},{"version":"342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","impliedFormat":1},{"version":"c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","impliedFormat":1},{"version":"320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","impliedFormat":1},{"version":"4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","impliedFormat":1},{"version":"1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","impliedFormat":1},{"version":"5c75e05bc62bffe196a9b2e9adfa824ffa7b90d62345a766c21585f2ce775001","impliedFormat":1},{"version":"cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","impliedFormat":1},{"version":"fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","impliedFormat":1},{"version":"5ae43407346e6f7d5408292a7d957a663cc7b6d858a14526714a23466ac83ef9","impliedFormat":1},{"version":"c72001118edc35bbe4fff17674dc5f2032ccdbcc5bec4bd7894a6ed55739d31b","impliedFormat":1},{"version":"353196fd0dd1d05e933703d8dad664651ed172b8dfb3beaef38e66522b1e0219","impliedFormat":1},{"version":"670aef817baea9332d7974295938cf0201a2d533c5721fccf4801ba9a4571c75","impliedFormat":1},{"version":"3f5736e735ee01c6ecc6d4ab35b2d905418bb0d2128de098b73e11dd5decc34f","impliedFormat":1},{"version":"b64e159c49afc6499005756f5a7c2397c917525ceab513995f047cdd80b04bdf","impliedFormat":1},{"version":"f72b400dbf8f27adbda4c39a673884cb05daf8e0a1d8152eec2480f5700db36c","impliedFormat":1},{"version":"24509d0601fc00c4d77c20cacddbca6b878025f4e0712bddd171c7917f8cdcde","impliedFormat":1},{"version":"5f5baa59149d3d6d6cef2c09d46bb4d19beb10d6bee8c05b7850c33535b3c438","impliedFormat":1},{"version":"f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","impliedFormat":1},{"version":"be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","impliedFormat":1},{"version":"82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","impliedFormat":1},{"version":"8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","impliedFormat":1},{"version":"b61efdebae3d131b6ad71bd2aa7cc4284e351481339bf66d84ee5ed86465bcc8","impliedFormat":1},{"version":"213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","impliedFormat":1},{"version":"874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","impliedFormat":1},{"version":"c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","impliedFormat":1},{"version":"31fac222250b18ebac0158938ede4b5d245e67d29cd2ef1e6c8a5859d137d803","impliedFormat":1},{"version":"a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","impliedFormat":1},{"version":"2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","impliedFormat":1},{"version":"0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","impliedFormat":1},{"version":"813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","impliedFormat":1},{"version":"5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","impliedFormat":1},{"version":"6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","impliedFormat":1},{"version":"3e0832bc2533c0ec6ffcd61b7c055adedcca1a45364b3275c03343b83c71f5b3","impliedFormat":1},{"version":"342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","impliedFormat":1},{"version":"6a6ab1edb5440ee695818d76f66d1a282a31207707e0d835828341e88e0c1160","impliedFormat":1},{"version":"7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","impliedFormat":1},{"version":"de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","impliedFormat":1},{"version":"ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","impliedFormat":1},{"version":"b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","impliedFormat":1},{"version":"cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","impliedFormat":1},{"version":"3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","impliedFormat":1},{"version":"ecfef0c0ff0c80ac9a6c2fab904a06b680fb5dfe8d9654bb789e49c6973cb781","impliedFormat":1},{"version":"0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","impliedFormat":1},{"version":"7a80da7b14bc7902b1da607c8b3734ad5740f8f5fade9a7bfbf753b9bba22652","impliedFormat":1},{"version":"7e46dd61422e5afe88c34e5f1894ae89a37b7a07393440c092e9dc4399820172","impliedFormat":1},{"version":"9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","impliedFormat":1},{"version":"a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","impliedFormat":1},{"version":"0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","impliedFormat":1},{"version":"0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","impliedFormat":1},{"version":"e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","impliedFormat":1},{"version":"180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","impliedFormat":1},{"version":"424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","impliedFormat":1},{"version":"044a62b9c967ee8c56dcb7b2090cf07ef2ac15c07e0e9c53d99fab7219ee3d67","impliedFormat":1},{"version":"3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","impliedFormat":1},{"version":"78fd8f2504fbfb0070569729bf2fe41417fdf59f8c3e975ab3143a96f03e0a4a","impliedFormat":1},{"version":"8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","impliedFormat":1},{"version":"72e72e3dea4081877925442f67b23be151484ef0a1565323c9af7f1c5a0820f0","impliedFormat":1},{"version":"fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","impliedFormat":1},{"version":"ab35597fd103b902484b75a583606f606ab2cef7c069fae6c8aca0f058cee77d","impliedFormat":1},{"version":"ca54ec33929149dded2199dca95fd8ad7d48a04f6e8500f3f84a050fa77fee45","impliedFormat":1},{"version":"cac7dcf6f66d12979cc6095f33edc7fbb4266a44c8554cd44cd04572a4623fd0","impliedFormat":1},{"version":"98af566e6d420e54e4d8d942973e7fbe794e5168133ad6658b589d9dfb4409d8","impliedFormat":1},{"version":"772b2865dd86088c6e0cab71e23534ad7254961c1f791bdeaf31a57a2254df43","impliedFormat":1},{"version":"21717957404f5b57e7c66b38d5ea832cc7eb5e81a6152242cf2e21893b1fcc5d","impliedFormat":1},{"version":"539dd525bf1d52094e7a35c2b4270bee757d3a35770462bcb01cd07683b4d489","impliedFormat":1},{"version":"86c0791444b64f452f8e513dd07c697313dfc5842916d73abbd2dabd28930367","impliedFormat":1},{"version":"7a705c800602314ac1e6ac059e2c0842fedace663a44bc240e0dc6bfefa2020b","impliedFormat":1},{"version":"8e42a36680c916db7b8951fea71ec2ce0092b82e44c8a33a436902244f0cc907","impliedFormat":1},{"version":"3e2f739bdfb6b194ae2af13316b4c5bb18b3fe81ac340288675f92ba2061b370","affectsGlobalScope":true,"impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"8e770f88d5f5b92aa94251b2d223d18e85dc0ff8ffba5b0d82164a78e8ac5663","impliedFormat":1},{"version":"3134a6c11d0beb89fcb57ee0720c68fbd47d6c796e219ec188c459553e46505b","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[423,[533,536],[629,634]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strictBindCallApply":true,"strictNullChecks":true,"target":10},"referencedMap":[[637,1],[635,2],[648,3],[662,2],[856,4],[347,2],[334,2],[71,2],[323,5],[324,5],[325,2],[326,6],[336,7],[327,5],[328,8],[329,2],[330,2],[331,5],[332,5],[333,5],[335,9],[343,10],[345,2],[342,2],[349,11],[346,2],[344,2],[340,12],[341,13],[348,14],[350,15],[337,2],[339,16],[338,17],[277,2],[280,18],[276,2],[585,2],[278,2],[279,2],[353,19],[354,19],[355,19],[356,19],[357,19],[358,19],[359,19],[352,20],[360,19],[374,21],[361,19],[351,2],[362,19],[363,19],[364,19],[365,19],[366,19],[367,19],[368,19],[369,19],[370,19],[371,19],[372,19],[373,19],[382,22],[380,23],[379,2],[378,2],[381,24],[422,25],[72,2],[73,2],[74,2],[567,26],[76,27],[573,28],[572,29],[266,30],[267,27],[402,2],[296,2],[297,2],[403,31],[268,2],[404,2],[405,32],[75,2],[270,33],[271,34],[269,35],[272,33],[273,2],[275,36],[287,37],[288,2],[293,38],[289,2],[290,2],[291,2],[292,2],[294,2],[295,39],[301,40],[304,41],[302,2],[303,2],[322,42],[305,2],[306,2],[616,43],[286,44],[284,45],[282,46],[283,47],[285,2],[313,48],[307,2],[316,49],[309,50],[314,51],[312,52],[315,53],[310,54],[311,55],[299,56],[318,57],[300,58],[320,59],[321,60],[308,2],[317,2],[274,2],[281,61],[319,62],[388,63],[383,2],[389,64],[384,65],[385,66],[386,67],[387,68],[390,69],[395,70],[393,71],[394,71],[401,72],[391,2],[392,73],[396,70],[398,74],[400,75],[399,76],[414,77],[407,78],[408,79],[409,79],[410,80],[411,80],[412,79],[413,79],[406,81],[416,82],[415,83],[418,84],[417,85],[419,86],[375,87],[377,88],[298,2],[376,56],[420,89],[397,90],[421,91],[537,92],[538,93],[558,94],[559,95],[560,2],[561,96],[562,97],[571,98],[564,99],[568,100],[576,101],[574,6],[575,102],[565,103],[577,2],[579,104],[580,105],[581,106],[570,107],[566,108],[590,109],[578,110],[605,111],[563,112],[606,113],[603,114],[604,6],[628,115],[553,116],[549,117],[551,118],[602,119],[544,120],[592,121],[591,2],[552,122],[599,123],[556,124],[600,2],[601,125],[554,126],[555,127],[550,128],[548,129],[543,2],[596,130],[609,131],[607,6],[539,6],[595,132],[540,13],[541,95],[542,133],[546,134],[545,135],[608,136],[547,137],[584,138],[582,104],[583,139],[593,13],[594,140],[597,141],[612,142],[613,143],[610,144],[611,145],[614,146],[615,147],[617,148],[589,149],[586,150],[587,5],[588,139],[619,151],[618,152],[625,153],[557,6],[621,154],[620,6],[623,155],[622,2],[624,156],[569,157],[598,158],[627,159],[626,6],[855,160],[666,161],[667,162],[804,161],[805,163],[786,164],[787,165],[670,166],[671,167],[741,168],[742,169],[715,161],[716,170],[709,161],[710,171],[801,172],[799,173],[800,2],[815,174],[816,175],[685,176],[686,177],[817,178],[818,179],[819,180],[820,181],[677,182],[678,183],[803,184],[802,185],[788,161],[789,186],[681,187],[682,188],[705,2],[706,189],[823,190],[821,191],[822,192],[824,193],[825,194],[828,195],[826,196],[829,173],[827,197],[830,198],[833,199],[831,200],[832,201],[834,202],[683,182],[684,203],[809,204],[806,205],[807,206],[808,2],[784,207],[785,208],[729,209],[728,210],[726,211],[725,212],[727,213],[836,214],[835,215],[838,216],[837,217],[714,218],[713,161],[692,219],[690,220],[689,166],[691,221],[841,222],[845,223],[839,224],[840,225],[842,222],[843,222],[844,222],[731,226],[730,166],[747,227],[745,228],[746,173],[743,229],[744,230],[680,231],[679,161],[737,232],[668,161],[669,233],[736,234],[774,235],[777,236],[775,237],[776,238],[688,239],[687,161],[779,240],[778,166],[757,241],[756,161],[712,242],[711,161],[783,243],[782,244],[751,245],[750,246],[748,247],[749,248],[740,249],[739,250],[738,251],[847,252],[846,253],[764,254],[763,255],[762,256],[811,257],[810,2],[755,258],[754,259],[752,260],[753,261],[733,262],[732,166],[676,263],[675,264],[674,265],[673,266],[672,267],[768,268],[767,269],[698,270],[697,166],[702,271],[701,272],[766,273],[765,161],[812,2],[814,274],[813,2],[771,275],[770,276],[769,277],[849,278],[848,279],[851,280],[850,281],[797,282],[798,283],[796,284],[735,285],[734,2],[781,286],[780,287],[708,288],[707,161],[759,289],[758,161],[665,290],[664,2],[718,291],[719,292],[724,293],[717,294],[721,295],[720,296],[722,297],[723,298],[773,299],[772,166],[704,300],[703,166],[854,301],[853,302],[852,303],[791,304],[790,161],[761,305],[760,161],[696,306],[694,307],[693,166],[695,308],[793,309],[792,161],[700,310],[699,161],[795,311],[794,161],[640,312],[636,1],[638,313],[639,1],[642,314],[641,315],[643,2],[651,316],[647,317],[646,318],[644,2],[655,319],[658,320],[656,2],[659,2],[660,321],[661,322],[862,323],[645,2],[863,2],[478,324],[479,324],[480,325],[426,326],[481,327],[482,328],[483,329],[424,2],[484,330],[485,331],[486,332],[487,333],[488,334],[489,335],[490,335],[491,336],[492,337],[493,338],[494,339],[427,2],[425,2],[495,340],[496,341],[497,342],[531,343],[498,344],[499,2],[500,345],[501,346],[502,347],[503,348],[504,349],[505,350],[506,351],[507,352],[508,353],[509,353],[510,354],[511,2],[512,355],[513,356],[515,357],[514,358],[516,359],[517,360],[518,361],[519,362],[520,363],[521,364],[522,365],[523,366],[524,367],[525,368],[526,369],[527,370],[528,371],[428,2],[429,372],[430,2],[431,2],[474,373],[475,374],[476,2],[477,359],[529,375],[530,376],[653,2],[654,2],[652,377],[657,378],[864,2],[873,379],[865,2],[868,380],[871,381],[872,382],[866,383],[869,384],[867,385],[878,386],[875,387],[877,2],[876,388],[874,389],[879,2],[880,390],[432,2],[663,2],[650,391],[649,392],[861,393],[870,394],[858,395],[859,396],[860,2],[532,397],[857,398],[70,2],[265,399],[238,2],[216,400],[214,400],[264,401],[229,402],[228,402],[129,403],[80,404],[236,403],[237,403],[239,405],[240,403],[241,406],[140,407],[242,403],[213,403],[243,403],[244,408],[245,403],[246,402],[247,409],[248,403],[249,403],[250,403],[251,403],[252,402],[253,403],[254,403],[255,403],[256,403],[257,410],[258,403],[259,403],[260,403],[261,403],[262,403],[79,401],[82,406],[83,406],[84,406],[85,406],[86,406],[87,406],[88,406],[89,403],[91,411],[92,406],[90,406],[93,406],[94,406],[95,406],[96,406],[97,406],[98,406],[99,403],[100,406],[101,406],[102,406],[103,406],[104,406],[105,403],[106,406],[107,406],[108,406],[109,406],[110,406],[111,406],[112,403],[114,412],[113,406],[115,406],[116,406],[117,406],[118,406],[119,410],[120,403],[121,403],[135,413],[123,414],[124,406],[125,406],[126,403],[127,406],[128,406],[130,415],[131,406],[132,406],[133,406],[134,406],[136,406],[137,406],[138,406],[139,406],[141,416],[142,406],[143,406],[144,406],[145,403],[146,406],[147,417],[148,417],[149,417],[150,403],[151,406],[152,406],[153,406],[158,406],[154,406],[155,403],[156,406],[157,403],[159,406],[160,406],[161,406],[162,406],[163,406],[164,406],[165,403],[166,406],[167,406],[168,406],[169,406],[170,406],[171,406],[172,406],[173,406],[174,406],[175,406],[176,406],[177,406],[178,406],[179,406],[180,406],[181,406],[182,418],[183,406],[184,406],[185,406],[186,406],[187,406],[188,406],[189,403],[190,403],[191,403],[192,403],[193,403],[194,406],[195,406],[196,406],[197,406],[215,419],[263,403],[200,420],[199,421],[223,422],[222,423],[218,424],[217,423],[219,425],[208,426],[206,427],[221,428],[220,425],[207,2],[209,429],[122,430],[78,431],[77,406],[212,2],[204,432],[205,433],[202,2],[203,434],[201,406],[210,435],[81,436],[230,2],[231,2],[224,2],[227,402],[226,2],[232,2],[233,2],[225,437],[234,2],[235,2],[198,438],[211,439],[67,2],[68,2],[13,2],[11,2],[12,2],[17,2],[16,2],[2,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[3,2],[26,2],[27,2],[4,2],[28,2],[32,2],[29,2],[30,2],[31,2],[33,2],[34,2],[35,2],[5,2],[36,2],[37,2],[38,2],[39,2],[6,2],[43,2],[40,2],[41,2],[42,2],[44,2],[7,2],[45,2],[50,2],[51,2],[46,2],[47,2],[48,2],[49,2],[8,2],[55,2],[52,2],[53,2],[54,2],[56,2],[9,2],[57,2],[58,2],[59,2],[61,2],[60,2],[62,2],[63,2],[10,2],[69,2],[64,2],[1,2],[65,2],[66,2],[15,2],[14,2],[450,440],[462,441],[448,442],[463,443],[472,444],[439,445],[440,446],[438,447],[471,448],[466,449],[470,450],[442,451],[459,452],[441,453],[469,454],[436,455],[437,449],[443,456],[444,2],[449,457],[447,456],[434,458],[473,459],[464,460],[453,461],[452,456],[454,462],[457,463],[451,464],[455,465],[467,448],[445,466],[446,467],[458,468],[435,443],[461,469],[460,456],[456,470],[465,2],[433,2],[468,471],[536,472],[632,473],[423,6],[535,2],[633,474],[630,475],[629,476],[534,477],[631,478],[634,479],[533,2]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880],"version":"5.9.3"} \ No newline at end of file diff --git a/challenge-3/dist/types/event-contract.type.d.ts b/challenge-3/dist/types/event-contract.type.d.ts deleted file mode 100644 index e9b5ec4c..00000000 --- a/challenge-3/dist/types/event-contract.type.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface EventEnvelope { - eventId: string; - eventType: string; - version: number; - producer: string; - occurredAt: string; - correlationId?: string; -} -export type EventContract = EventEnvelope & { - data: T; -}; diff --git a/challenge-3/dist/types/event-contract.type.js b/challenge-3/dist/types/event-contract.type.js deleted file mode 100644 index ce9ca1cf..00000000 --- a/challenge-3/dist/types/event-contract.type.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=event-contract.type.js.map \ No newline at end of file diff --git a/challenge-3/dist/types/event-contract.type.js.map b/challenge-3/dist/types/event-contract.type.js.map deleted file mode 100644 index a887b7f0..00000000 --- a/challenge-3/dist/types/event-contract.type.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"event-contract.type.js","sourceRoot":"","sources":["../../src/types/event-contract.type.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/challenge-3/package-lock.json b/challenge-3/package-lock.json deleted file mode 100644 index 9c50a568..00000000 --- a/challenge-3/package-lock.json +++ /dev/null @@ -1,9946 +0,0 @@ -{ - "name": "challenge-3", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "challenge-3", - "version": "0.0.1", - "license": "UNLICENSED", - "dependencies": { - "@nestjs/common": "^11.0.1", - "@nestjs/core": "^11.0.1", - "@nestjs/microservices": "^11.1.17", - "@nestjs/platform-express": "^11.0.1", - "kafkajs": "^2.2.4", - "reflect-metadata": "^0.2.2", - "rxjs": "^7.8.1" - }, - "devDependencies": { - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "^9.18.0", - "@nestjs/cli": "^11.0.0", - "@nestjs/schematics": "^11.0.0", - "@nestjs/testing": "^11.0.1", - "@types/express": "^5.0.0", - "@types/jest": "^30.0.0", - "@types/node": "^24.0.0", - "@types/supertest": "^7.0.0", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.2", - "globals": "^17.0.0", - "jest": "^30.0.0", - "prettier": "^3.4.2", - "source-map-support": "^0.5.21", - "supertest": "^7.0.0", - "ts-jest": "^29.2.5", - "ts-loader": "^9.5.2", - "ts-node": "^10.9.2", - "tsconfig-paths": "^4.2.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.20.0" - } - }, - "node_modules/@angular-devkit/core": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz", - "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/core/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@angular-devkit/core/node_modules/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, - "license": "MIT" - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz", - "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli": { - "version": "19.2.22", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz", - "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@inquirer/prompts": "7.3.2", - "ansi-colors": "4.1.3", - "symbol-observable": "4.0.0", - "yargs-parser": "21.1.1" - }, - "bin": { - "schematics": "bin/schematics.js" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", - "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.1.2", - "@inquirer/confirm": "^5.1.6", - "@inquirer/editor": "^4.2.7", - "@inquirer/expand": "^4.0.9", - "@inquirer/input": "^4.1.6", - "@inquirer/number": "^3.0.9", - "@inquirer/password": "^4.0.9", - "@inquirer/rawlist": "^4.0.9", - "@inquirer/search": "^3.0.9", - "@inquirer/select": "^4.0.9" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", - "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@borewit/text-codec": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.2.tgz", - "integrity": "sha512-DDaRehssg1aNrH4+2hnj1B7vnUGEjU6OIlyRdkMd0aUdIUvKXrJfXsy8LVtXAy7DRvYVluWbMspsRhz2lcW0mQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@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, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@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, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@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, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@emnapi/core": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.1.tgz", - "integrity": "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", - "integrity": "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.0.tgz", - "integrity": "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", - "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", - "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@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, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "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, - "license": "ISC", - "dependencies": { - "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": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "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.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "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, - "license": "MIT", - "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, - "license": "ISC", - "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/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.3.0.tgz", - "integrity": "sha512-PAwCvFJ4696XP2qZj+LAn1BWjZaJ6RjG6c7/lkMaUJnkyMS34ucuIsfqYvfskVNvUI27R/u4P1HMYFnlVXG/Ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.3.0.tgz", - "integrity": "sha512-U5mVPsBxLSO6xYbf+tgkymLx+iAhvZX43/xI1+ej2ZOPnPdkdO1CzDmFKh2mZBn2s4XZixszHeQnzp1gm/DIxw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.3.0", - "jest-config": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-resolve-dependencies": "30.3.0", - "jest-runner": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "jest-watcher": "30.3.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.3.0.tgz", - "integrity": "sha512-SlLSF4Be735yQXyh2+mctBOzNDx5s5uLv88/j8Qn1wH679PDcwy67+YdADn8NJnGjzlXtN62asGH/T4vWOkfaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-76Nlh4xJxk2D/9URCn3wFi98d2hb19uWE1idLsTt2ywhvdOldbw3S570hBgn25P4ICUZ/cBjybrBex2g17IDbg==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.3.0", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.3.0.tgz", - "integrity": "sha512-WUQDs8SOP9URStX1DzhD425CqbN/HxUYCTwVrT8sTVBfMvFqYt/s61EK5T05qnHu0po6RitXIvP9otZxYDzTGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@sinonjs/fake-timers": "^15.0.0", - "@types/node": "*", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.3.0.tgz", - "integrity": "sha512-+owLCBBdfpgL3HU+BD5etr1SvbXpSitJK0is1kiYjJxAAJggYMRQz5hSdd5pq1sSggfxPbw2ld71pt4x5wwViA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/types": "30.3.0", - "jest-mock": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.3.0.tgz", - "integrity": "sha512-a09z89S+PkQnL055bVj8+pe2Caed2PBOaczHcXCykW5ngxX9EWx/1uAwncxc/HiU0oZqfwseMjyhxgRjS49qPw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.3.0.tgz", - "integrity": "sha512-ORbRN9sf5PP82v3FXNSwmO1OTDR2vzR2YTaR+E3VkSBZ8zadQE6IqYdYEeFH1NIkeB2HIGdF02dapb6K0Mj05g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.3.0.tgz", - "integrity": "sha512-e/52nJGuD74AKTSe0P4y5wFRlaXP0qmrS17rqOMHeSwm278VyNyXE3gFO/4DTGF9w+65ra3lo3VKj0LBrzmgdQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/types": "30.3.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.3.0.tgz", - "integrity": "sha512-dgbWy9b8QDlQeRZcv7LNF+/jFiiYHTKho1xirauZ7kVwY7avjFF6uTT0RqlgudB5OuIPagFdVtfFMosjVbk1eA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.3.0.tgz", - "integrity": "sha512-TLKY33fSLVd/lKB2YI1pH69ijyUblO/BQvCj566YvnwuzoTNr648iE0j22vRvVNk2HsPwByPxATg3MleS3gf5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.3.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@lukeed/csprng": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", - "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nestjs/cli": { - "version": "11.0.17", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz", - "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@angular-devkit/schematics-cli": "19.2.22", - "@inquirer/prompts": "7.10.1", - "@nestjs/schematics": "^11.0.1", - "ansis": "4.2.0", - "chokidar": "4.0.3", - "cli-table3": "0.6.5", - "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "9.1.0", - "glob": "13.0.6", - "node-emoji": "1.11.0", - "ora": "5.4.1", - "tsconfig-paths": "4.2.0", - "tsconfig-paths-webpack-plugin": "4.2.0", - "typescript": "5.9.3", - "webpack": "5.105.4", - "webpack-node-externals": "3.0.0" - }, - "bin": { - "nest": "bin/nest.js" - }, - "engines": { - "node": ">= 20.11" - }, - "peerDependencies": { - "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0", - "@swc/core": "^1.3.62" - }, - "peerDependenciesMeta": { - "@swc/cli": { - "optional": true - }, - "@swc/core": { - "optional": true - } - } - }, - "node_modules/@nestjs/common": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.17.tgz", - "integrity": "sha512-hLODw5Abp8OQgA+mUO4tHou4krKgDtUcM9j5Ihxncst9XeyxYBTt2bwZm4e4EQr5E352S4Fyy6V3iFx9ggxKAg==", - "license": "MIT", - "dependencies": { - "file-type": "21.3.2", - "iterare": "1.2.1", - "load-esm": "1.0.3", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "class-transformer": ">=0.4.1", - "class-validator": ">=0.13.2", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "class-transformer": { - "optional": true - }, - "class-validator": { - "optional": true - } - } - }, - "node_modules/@nestjs/core": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.17.tgz", - "integrity": "sha512-lD5mAYekTTurF3vDaa8C2OKPnjiz4tsfxIc5XlcSUzOhkwWf6Ay3HKvt6FmvuWQam6uIIHX52Clg+e6tAvf/cg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@nuxt/opencollective": "0.4.1", - "fast-safe-stringify": "2.1.1", - "iterare": "1.2.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1", - "uid": "2.0.2" - }, - "engines": { - "node": ">= 20" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - } - } - }, - "node_modules/@nestjs/microservices": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/microservices/-/microservices-11.1.17.tgz", - "integrity": "sha512-rubBPEEXS9PwA3LwdNN/ytjEUmON+d8+4fbiUCIFGW8i+rR/g36vrpwuvoAzcGpxlu45/TpZPfHTb0nJciG9Yw==", - "license": "MIT", - "dependencies": { - "iterare": "1.2.1", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@grpc/grpc-js": "*", - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/websockets": "^11.0.0", - "amqp-connection-manager": "*", - "amqplib": "*", - "cache-manager": "*", - "ioredis": "*", - "kafkajs": "*", - "mqtt": "*", - "nats": "*", - "reflect-metadata": "^0.1.12 || ^0.2.0", - "rxjs": "^7.1.0" - }, - "peerDependenciesMeta": { - "@grpc/grpc-js": { - "optional": true - }, - "@nestjs/websockets": { - "optional": true - }, - "amqp-connection-manager": { - "optional": true - }, - "amqplib": { - "optional": true - }, - "cache-manager": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "kafkajs": { - "optional": true - }, - "mqtt": { - "optional": true - }, - "nats": { - "optional": true - } - } - }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.17.tgz", - "integrity": "sha512-mAf4eOsSBsTOn/VbrUO1gsjW6dVh91qqXPMXun4dN8SnNjf7PTQagM9o8d6ab8ZBpNe6UdZftdrZoDetU+n4Qg==", - "license": "MIT", - "dependencies": { - "cors": "2.8.6", - "express": "5.2.1", - "multer": "2.1.1", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" - } - }, - "node_modules/@nestjs/schematics": { - "version": "11.0.10", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz", - "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "@angular-devkit/schematics": "19.2.23", - "comment-json": "4.6.2", - "jsonc-parser": "3.3.1", - "pluralize": "8.0.0" - }, - "peerDependencies": { - "typescript": ">=4.8.2" - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz", - "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.4", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": { - "version": "19.2.23", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz", - "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.23", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@nestjs/schematics/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@nestjs/schematics/node_modules/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, - "license": "MIT" - }, - "node_modules/@nestjs/schematics/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@nestjs/schematics/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@nestjs/testing": { - "version": "11.1.17", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.17.tgz", - "integrity": "sha512-lNffw+z+2USewmw4W0tsK+Rq94A2N4PiHbcqoRUu5y8fnqxQeIWGHhjo5BFCqj7eivqJBhT7WdRydxVq4rAHzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0", - "@nestjs/microservices": "^11.0.0", - "@nestjs/platform-express": "^11.0.0" - }, - "peerDependenciesMeta": { - "@nestjs/microservices": { - "optional": true - }, - "@nestjs/platform-express": { - "optional": true - } - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nuxt/opencollective": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz", - "integrity": "sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==", - "license": "MIT", - "dependencies": { - "consola": "^3.2.3" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0", - "npm": ">=5.10.0" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", - "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "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, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.2.2.tgz", - "integrity": "sha512-KK6HfcJHaxmQNzHSsCrRzp1igwAWUXEtD64EScEUsaHw3ViNHgpFR/ACgHpesDR/YDbu6IZMzNbQkTDMlnZHGw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@tokenizer/inflate": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", - "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "token-types": "^6.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", - "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@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, - "license": "MIT" - }, - "node_modules/@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, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "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, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.12.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.0.tgz", - "integrity": "sha512-GYDxsZi3ChgmckRT9HPU0WEhKLP08ev/Yfcq2AstjrDASOYCSXeyjDsHg4v5t4jOj7cyDX3vmprafKlWIG9MXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", - "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/supertest": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-7.2.0.tgz", - "integrity": "sha512-uh2Lv57xvggst6lCqNdFAmDSvoMG7M/HDtX4iUCquxQ5EGPtaPM5PL5Hmi7LCvOG8db7YaCPNJEeoI8s/WzIQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz", - "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/type-utils": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.58.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz", - "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.0", - "@typescript-eslint/types": "^8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", - "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.58.0", - "@typescript-eslint/tsconfig-utils": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@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, - "license": "BSD-3-Clause" - }, - "node_modules/@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, - "license": "Apache-2.0" - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", - "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "Python-2.0" - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.3.0.tgz", - "integrity": "sha512-gRpauEU2KRrCox5Z296aeVHR4jQ98BCnu0IO332D/xpHNOsIH/bgSRk9k6GbKIbBw8vFeN6ctuu6tV8WOyVfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.3.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.3.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.3.0.tgz", - "integrity": "sha512-+TRkByhsws6sfPjVaitzadk1I0F5sPvOVUH5tyTSzhePpsGIVrdeunHSw/C36QeocS95OOk8lunc4rlu5Anwsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@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" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.3.0.tgz", - "integrity": "sha512-6ZcUbWHC+dMz2vfzdNwi87Z1gQsLNK2uLuK1Q89R11xdvejcivlYYwDlEv0FHX3VwEXpbBQ9uufB/MUNpZGfhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-json": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz", - "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-timsort": "^1.0.3", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/consola": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", - "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT" - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.330", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz", - "integrity": "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.4", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", - "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "9.39.4", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz", - "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.12" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/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, - "license": "ISC" - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-type": { - "version": "21.3.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.2.tgz", - "integrity": "sha512-DLkUvGwep3poOV2wpzbHCOnSKGk1LzyXTv+aHFgN2VFl96wnp8YA9YjO2qPzg5PuL8q/SW9Pdi6WTkYOIh995w==", - "license": "MIT", - "dependencies": { - "@tokenizer/inflate": "^0.4.1", - "strtok3": "^10.3.4", - "token-types": "^6.1.1", - "uint8array-extras": "^1.4.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.1.0.tgz", - "integrity": "sha512-mpafl89VFPJmhnJ1ssH+8wmM2b50n+Rew5x42NeI2U78aRWgtkEtGmctp7iT16UjquJTjorEmIfESj3DxdW84Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.16.7", - "chalk": "^4.1.2", - "chokidar": "^4.0.1", - "cosmiconfig": "^8.2.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.0.0", - "memfs": "^3.4.1", - "minimatch": "^3.0.4", - "node-abort-controller": "^3.0.1", - "schema-utils": "^3.1.1", - "semver": "^7.3.5", - "tapable": "^2.2.1" - }, - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-monkey": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.1.0.tgz", - "integrity": "sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/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, - "license": "BSD-2-Clause" - }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", - "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "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, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.9", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", - "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterare": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", - "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", - "license": "ISC", - "engines": { - "node": ">=6" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.3.0.tgz", - "integrity": "sha512-AkXIIFcaazymvey2i/+F94XRnM6TsVLZDhBMLsd1Sf/W0wzsvvpjeyUrCZD6HGG4SDYPgDJDBKeiJTBb10WzMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/types": "30.3.0", - "import-local": "^3.2.0", - "jest-cli": "30.3.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.3.0.tgz", - "integrity": "sha512-B/7Cny6cV5At6M25EWDgf9S617lHivamL8vl6KEpJqkStauzcG4e+WPfDgMMF+H4FVH4A2PLRyvgDJan4441QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.3.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.3.0.tgz", - "integrity": "sha512-PyXq5szeSfR/4f1lYqCmmQjh0vqDkURUYi9N6whnHjlRz4IUQfMcXkGLeEoiJtxtyPqgUaUUfyQlApXWBSN1RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/expect": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-runtime": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "p-limit": "^3.1.0", - "pretty-format": "30.3.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.3.0.tgz", - "integrity": "sha512-l6Tqx+j1fDXJEW5bqYykDQQ7mQg+9mhWXtnj+tQZrTWYHyHoi6Be8HPumDSA+UiX2/2buEgjA58iJzdj146uCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.3.0.tgz", - "integrity": "sha512-WPMAkMAtNDY9P/oKObtsRG/6KTrhtgPJoBTmk20uDn4Uy6/3EJnnaZJre/FMT1KVRx8cve1r7/FlMIOfRVWL4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.3.0", - "@jest/types": "30.3.0", - "babel-jest": "30.3.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-circus": "30.3.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-runner": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "parse-json": "^5.2.0", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.3.0.tgz", - "integrity": "sha512-V8eMndg/aZ+3LnCJgSm13IxS5XSBM22QSZc9BtPK8Dek6pm+hfUNfwBdvsB3d342bo1q7wnSkC38zjX259qZNA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "chalk": "^4.1.2", - "jest-util": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.3.0.tgz", - "integrity": "sha512-4i6HItw/JSiJVsC5q0hnKIe/hbYfZLVG9YJ/0pU9Hz2n/9qZe3Rhn5s5CUZA5ORZlcdT/vmAXRMyONXJwPrmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-mock": "30.3.0", - "jest-util": "30.3.0", - "jest-validate": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.3.0.tgz", - "integrity": "sha512-mMi2oqG4KRU0R9QEtscl87JzMXfUhbKaFqOxmjb2CKcbHcUGFrJCBWHmnTiUqi6JcnzoBlO4rWfpdl2k/RfLCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.3.0", - "jest-worker": "30.3.0", - "picomatch": "^4.0.3", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-haste-map/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz", - "integrity": "sha512-cuKmUUGIjfXZAiGJ7TbEMx0bcqNdPPI6P1V+7aF+m/FUJqFDxkFR4JqkTu8ZOiU5AaX/x0hZ20KaaIPXQzbMGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.3.0.tgz", - "integrity": "sha512-NRtTAHQlpd15F9rUR36jqwelbrDV/dY4vzNte3S2kxCKUJRYNd5/6nTSbYiak1VX5g8IoFF23Uj5TURkUW8O5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.3.0", - "jest-validate": "30.3.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.3.0.tgz", - "integrity": "sha512-9ev8s3YN6Hsyz9LV75XUwkCVFlwPbaFn6Wp75qnI0wzAINYWY8Fb3+6y59Rwd3QaS3kKXffHXsZMziMavfz/nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.3.0.tgz", - "integrity": "sha512-gDv6C9LGKWDPLia9TSzZwf4h3kMQCqyTpq+95PODnTRDO0g9os48XIYYkS6D236vjpBir2fF63YmJFtqkS5Duw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.3.0", - "@jest/environment": "30.3.0", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.3.0", - "jest-haste-map": "30.3.0", - "jest-leak-detector": "30.3.0", - "jest-message-util": "30.3.0", - "jest-resolve": "30.3.0", - "jest-runtime": "30.3.0", - "jest-util": "30.3.0", - "jest-watcher": "30.3.0", - "jest-worker": "30.3.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.3.0.tgz", - "integrity": "sha512-CgC+hIBJbuh78HEffkhNKcbXAytQViplcl8xupqeIWyKQF50kCQA8J7GeJCkjisC6hpnC9Muf8jV5RdtdFbGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.3.0", - "@jest/fake-timers": "30.3.0", - "@jest/globals": "30.3.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.5.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.3.0", - "jest-snapshot": "30.3.0", - "jest-util": "30.3.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-snapshot": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.3.0.tgz", - "integrity": "sha512-f14c7atpb4O2DeNhwcvS810Y63wEn8O1HqK/luJ4F6M4NjvxmAKQwBUWjbExUtMxWJQ0wVgmCKymeJK6NZMnfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.3.0", - "@jest/transform": "30.3.0", - "@jest/types": "30.3.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.3.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.3.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-util": "30.3.0", - "pretty-format": "30.3.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz", - "integrity": "sha512-I/xzC8h5G+SHCb2P2gWkJYrNiTbeL47KvKeW5EzplkyxzBRBw1ssSHlI/jXec0ukH2q7x2zAWQm7015iusg62Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.3.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.3.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.3.0.tgz", - "integrity": "sha512-PJ1d9ThtTR8aMiBWUdcownq9mDdLXsQzJayTk4kmaBRHKvwNQn+ANveuhEBUyNI2hR1TVhvQ8D5kHubbzBHR/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.3.0", - "@jest/types": "30.3.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.3.0", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.3.0.tgz", - "integrity": "sha512-DrCKkaQwHexjRUFTmPzs7sHQe0TSj9nvDALKGdwmK5mW9v7j90BudWirKAJHt3QQ9Dhrg1F7DogPzhChppkJpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.3.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kafkajs": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", - "integrity": "sha512-j/YeapB1vfPT2iOIUn/vxdyKEuhuY2PxMBvf5JWux6iSaukAccrMtXEY/Lb7OvavDhOWME589bpLrEdnVHjfjA==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/load-esm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz", - "integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - }, - { - "type": "buymeacoffee", - "url": "https://buymeacoffee.com/borewit" - } - ], - "license": "MIT", - "engines": { - "node": ">=13.2.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", - "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", - "dev": true, - "license": "Unlicense", - "dependencies": { - "fs-monkey": "^1.0.4" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", - "license": "MIT", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "type-is": "^1.6.18" - }, - "engines": { - "node": ">= 10.16.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/multer/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/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==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/node-abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", - "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "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.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "@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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/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, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", - "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", - "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", - "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0" - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/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, - "license": "ISC" - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/rxjs": { - "version": "7.8.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", - "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/schema-utils": { - "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, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.3", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/serve-static": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", - "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 8" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/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, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/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==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "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==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-10.3.5.tgz", - "integrity": "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==", - "license": "MIT", - "dependencies": { - "@tokenizer/token": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/superagent": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.3.0.tgz", - "integrity": "sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "component-emitter": "^1.3.1", - "cookiejar": "^2.1.4", - "debug": "^4.3.7", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.5", - "formidable": "^3.5.4", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.14.1" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/supertest": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.2.2.tgz", - "integrity": "sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cookie-signature": "^1.2.2", - "methods": "^1.1.2", - "superagent": "^10.3.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/synckit": { - "version": "0.11.12", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz", - "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/tapable": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", - "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz", - "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser-webpack-plugin/node_modules/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, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/terser/node_modules/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, - "license": "MIT" - }, - "node_modules/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, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/token-types": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", - "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", - "license": "MIT", - "dependencies": { - "@borewit/text-codec": "^0.2.1", - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-jest": { - "version": "29.4.9", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.9.tgz", - "integrity": "sha512-LTb9496gYPMCqjeDLdPrKuXtncudeV1yRZnF4Wo5l3SFi0RYEnYRNgMrFIdg+FHvfzjCyQk1cLncWVqiSX+EvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.9", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.4", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <7" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-loader": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", - "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@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" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tsconfig-paths-webpack-plugin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz", - "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.7.0", - "tapable": "^2.2.1", - "tsconfig-paths": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/tsconfig-paths/node_modules/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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/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, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/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, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz", - "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.58.0", - "@typescript-eslint/parser": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uid": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", - "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", - "license": "MIT", - "dependencies": { - "@lukeed/csprng": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/uint8array-extras": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", - "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/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, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/watchpack": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", - "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/webpack": { - "version": "5.105.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", - "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.16.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.20.0", - "es-module-lexer": "^2.0.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.17", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.4" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-node-externals": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", - "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-sources": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz", - "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/webpack/node_modules/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, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT" - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/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, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", - "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "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, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -}