From 1b797e2f442bda22467ec5a98140eadcfc6decc5 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Wed, 3 Jan 2024 18:53:11 -0300 Subject: [PATCH 01/60] ref: update utils functions --- .../components/DifferencesModal/index.tsx | 10 ++-- .../PieceForm/PieceFormItem/arrayInput.tsx | 2 +- .../PieceForm/PieceFormItem/index.tsx | 5 +- .../PieceForm/PieceFormItem/objectInput.tsx | 2 +- .../PieceFormItem/selectUpstreamInput.tsx | 2 +- .../SidebarForm/PieceForm/index.tsx | 6 ++- .../components/SidebarForm/index.tsx | 3 +- .../components/WorkflowEditor.tsx | 2 +- .../schemas/containerResourcesSchemas.ts | 50 ------------------- .../PieceForm => utils}/upstreamOptions.ts | 0 .../PieceForm => utils}/validation.ts | 0 11 files changed, 20 insertions(+), 62 deletions(-) delete mode 100644 frontend/src/features/workflowEditor/schemas/containerResourcesSchemas.ts rename frontend/src/features/workflowEditor/{components/SidebarForm/PieceForm => utils}/upstreamOptions.ts (100%) rename frontend/src/features/workflowEditor/{components/SidebarForm/PieceForm => utils}/validation.ts (100%) diff --git a/frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx b/frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx index 16e4e77a..d24c2fa4 100644 --- a/frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx +++ b/frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx @@ -172,11 +172,11 @@ export const DifferencesModal = forwardRef( color: theme.palette.success.main, } : installState === 3 - ? { - borderColor: theme.palette.error.main, - color: theme.palette.error.main, - } - : {} + ? { + borderColor: theme.palette.error.main, + color: theme.palette.error.main, + } + : {} } > {installState === 1 && ( diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx index be6b4510..3b9ec9aa 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx @@ -24,7 +24,7 @@ import { type ComplexArrayOption, type ArrayOption, type Option, -} from "../upstreamOptions"; +} from "../../../../utils/upstreamOptions"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; import ObjectInputComponent from "./objectInput"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx index 78b1fb01..c11e74c1 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx @@ -10,7 +10,10 @@ import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; import React, { useMemo } from "react"; import { type Control, useWatch } from "react-hook-form"; -import { type ArrayOption, type Option } from "../upstreamOptions"; +import { + type ArrayOption, + type Option, +} from "../../../../utils/upstreamOptions"; import ArrayInput from "./arrayInput"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx index c747eb8f..e2a84004 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx @@ -6,7 +6,7 @@ import React, { useCallback, useMemo, useState } from "react"; import { useWatch } from "react-hook-form"; import { getDefinition } from "utils"; -import { type ComplexArrayOption } from "../upstreamOptions"; +import { type ComplexArrayOption } from "../../../../utils/upstreamOptions"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; import SelectUpstreamInput from "./selectUpstreamInput"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx index 23b17da3..1f225066 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx @@ -11,7 +11,7 @@ import React, { useCallback } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { fetchFromObject } from "utils"; -import { type Option } from "../upstreamOptions"; +import { type Option } from "../../../../utils/upstreamOptions"; type ObjectName = `inputs.${string}.value.${number}.upstreamValue.${string}`; type Name = `inputs.${string}`; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx index 63f4076f..7a471df1 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx @@ -3,8 +3,12 @@ import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import { useFormContext } from "react-hook-form"; +import { + type UpstreamOptions, + getUpstreamOptions, +} from "../../../utils/upstreamOptions"; + import PieceFormItem from "./PieceFormItem"; -import { type UpstreamOptions, getUpstreamOptions } from "./upstreamOptions"; interface PieceFormProps { formId: string; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx index 99c3f404..562aaa32 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx @@ -14,11 +14,12 @@ import { FormProvider, useForm } from "react-hook-form"; import { yupResolver } from "utils"; import * as yup from "yup"; +import { createInputsSchemaValidation } from "../../utils/validation"; + import ContainerResourceForm, { ContainerResourceFormSchema, } from "./ContainerResourceForm"; import PieceForm from "./PieceForm"; -import { createInputsSchemaValidation } from "./PieceForm/validation"; import StorageForm, { storageFormSchema } from "./StorageForm"; interface ISidebarPieceFormProps { diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx index 8033a7c5..775cc69d 100644 --- a/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx +++ b/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx @@ -35,13 +35,13 @@ import { validateJsonImported, findDifferencesInJsonImported, } from "../utils/importWorkflow"; +import { createInputsSchemaValidation } from "../utils/validation"; import { DifferencesModal } from "./DifferencesModal"; import { PermanentDrawerRightWorkflows } from "./DrawerMenu"; import { MyWorkflowExamplesGalleryModal } from "./MyWorkflowsGalleryModal"; import SidebarPieceForm from "./SidebarForm"; import { ContainerResourceFormSchema } from "./SidebarForm/ContainerResourceForm"; -import { createInputsSchemaValidation } from "./SidebarForm/PieceForm/validation"; import { storageFormSchema } from "./SidebarForm/StorageForm"; import { SidebarSettingsForm, diff --git a/frontend/src/features/workflowEditor/schemas/containerResourcesSchemas.ts b/frontend/src/features/workflowEditor/schemas/containerResourcesSchemas.ts deleted file mode 100644 index 42e989c2..00000000 --- a/frontend/src/features/workflowEditor/schemas/containerResourcesSchemas.ts +++ /dev/null @@ -1,50 +0,0 @@ -export const containerResourcesSchema = { - type: "object", - properties: { - cpu: { - type: "object", - title: "CPU", - properties: { - min: { - title: "Min - Thousandth of a core (m)", - type: "number", - default: 100, // todo: min value we will accept ? - // "maximum": 10000, // todo: max value we will accept ? - minimum: 50, // todo: min value we will accept ? - }, - max: { - title: "Max - Thousandth of a core (m)", - type: "number", - default: 100, - // "maximum": 10000, // todo: max value we will accept ? - minimum: 50, // todo: min value we will accept ? - }, - }, - }, - memory: { - type: "object", - title: "Memory", - properties: { - min: { - title: "Min - Mebibyte (Mi)", - type: "number", - default: 128, - // 'maximum': 15258, // todo: max value we will accept ? - minimum: 32, - }, - max: { - title: "Max - Mibibyte (Mi)", - type: "number", - default: 128, - // "maximum": 15258, // todo: max value we will accept ? - minimum: 32, - }, - }, - }, - useGpu: { - title: "Use GPU", - type: "boolean", - default: false, - }, - }, -}; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/upstreamOptions.ts b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts similarity index 100% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/upstreamOptions.ts rename to frontend/src/features/workflowEditor/utils/upstreamOptions.ts diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/validation.ts b/frontend/src/features/workflowEditor/utils/validation.ts similarity index 100% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/validation.ts rename to frontend/src/features/workflowEditor/utils/validation.ts From 5db59e4fb99eaec98fafcc519a51753f2c10ee22 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Fri, 5 Jan 2024 18:11:55 -0300 Subject: [PATCH 02/60] refactor: piece and schemas types --- frontend/src/@types/piece/index.d.ts | 20 ++- frontend/src/@types/piece/piece.d.ts | 71 ++------ frontend/src/@types/piece/properties.d.ts | 90 ----------- frontend/src/@types/piece/schema.d.ts | 153 ++++++++++++++++++ .../src/context/workspaces/repositories.tsx | 6 +- .../myWorkflows/api/piece/piece.interface.ts | 2 +- .../PieceForm/PieceFormItem/index.tsx | 7 +- .../SidebarForm/PieceForm/index.tsx | 2 +- 8 files changed, 188 insertions(+), 163 deletions(-) delete mode 100644 frontend/src/@types/piece/properties.d.ts create mode 100644 frontend/src/@types/piece/schema.d.ts diff --git a/frontend/src/@types/piece/index.d.ts b/frontend/src/@types/piece/index.d.ts index cbce8176..6e38ab58 100644 --- a/frontend/src/@types/piece/index.d.ts +++ b/frontend/src/@types/piece/index.d.ts @@ -1,19 +1,17 @@ /* eslint-disable @typescript-eslint/consistent-type-imports */ declare global { type Piece = import("./piece").Piece; - type PieceSchema = import("./piece").PieceSchema; - type Definitions = import("./piece").Definitions; - type Definition = import("./piece").Definition; - type ObjectDefinition = import("./piece").ObjectDefinition; - type EnumDefinition = import("./piece").EnumDefinition; - type SimpleInputSchemaProperty = import("./piece").SimpleInputSchemaProperty; - type ArrayObjectProperty = import("./piece").ArrayObjectProperty; - type InputSchemaProperty = import("./piece").InputSchemaProperty; - type FromUpstream = import("./piece").FromUpstream; - type PieceForageSchema = import("./piece").PieceForageSchema; type PiecesRepository = import("./piece").PiecesRepository; - type PieceRepository = import("./piece").PieceRepository; + type Repository = import("./piece").Repository; + + type Schema = import("./schema").Schema; + type Properties = import("./schema").Properties; + type Property = import("./schema").Property; + type FromUpstream = import("./schema").FromUpstream; + type Definitions = import("./schema").Definitions; + type ObjectDefinition = import("./schema").ObjectDefinition; + type EnumDefinition = import("./schema").EnumDefinition; } export {}; diff --git a/frontend/src/@types/piece/piece.d.ts b/frontend/src/@types/piece/piece.d.ts index f3bc45c9..c80e38e7 100644 --- a/frontend/src/@types/piece/piece.d.ts +++ b/frontend/src/@types/piece/piece.d.ts @@ -1,54 +1,3 @@ -/* eslint-disable @typescript-eslint/consistent-type-imports */ -export type FromUpstream = import("./properties").FromUpstream; - -export type InputSchemaProperty = import("./properties").InputSchemaProperty; -export type ArrayObjectProperty = import("./properties").ArrayObjectProperty; - -export type SimpleInputSchemaProperty = - import("./properties").SimpleInputSchemaProperty; - -export interface EnumDefinition { - title: string; - description: string; - type: "string"; - enum: string[]; -} - -export interface ObjectDefinition { - title: string; - description: string; - type: "object"; - properties: Record; -} - -export type Definition = EnumDefinition | ObjectDefinition; - -export type Definitions = Record; - -export type SchemaProperties = Record; - -export interface PieceSchema { - title: string; - description: string; - - type: "object"; - - properties: SchemaProperties; - $defs: Definitions; -} - -interface ContainerResources { - limits: { - cpu: number; - memory: number; - }; - requests: { - cpu: number; - memory: number; - }; - use_gpu?: boolean; -} - export interface Piece { id: number; name: string; @@ -59,9 +8,9 @@ export interface Piece { repository_id: number; - input_schema: PieceSchema; - output_schema: PieceSchema; - secrets_schema: PieceSchema | null; + input_schema: Schema; + output_schema: Schema; + secrets_schema: Schema | null; source_image: string; source_url: string | null; @@ -85,11 +34,21 @@ export interface Piece { }; } -export type PieceForageSchema = Record; +interface ContainerResources { + limits: { + cpu: number; + memory: number; + }; + requests: { + cpu: number; + memory: number; + }; + use_gpu?: boolean; +} export type PiecesRepository = Record; -export interface PieceRepository { +export interface Repository { id: string; name: string; label: string; diff --git a/frontend/src/@types/piece/properties.d.ts b/frontend/src/@types/piece/properties.d.ts deleted file mode 100644 index 95eb7260..00000000 --- a/frontend/src/@types/piece/properties.d.ts +++ /dev/null @@ -1,90 +0,0 @@ -interface Reference { - $ref: `#/$defs/${string}`; -} -type FromUpstream = "always" | "never" | "allowed"; - -interface DefaultPropertyProps { - title: string; - description: string; - from_upstream?: FromUpstream; -} - -type BooleanProperty = DefaultPropertyProps & { - type: "boolean" | "null"; - default: boolean; -}; - -type NumberProperty = DefaultPropertyProps & { - type: "number" | "integer" | "float" | "null"; - default: number; - exclusiveMaximum?: number; - exclusiveMinimum?: number; -}; - -type StringProperty = DefaultPropertyProps & { - type: "string" | "null"; - default: string; - - widget?: string; - format?: "date" | "time" | "date-time"; -}; - -type EnumProperty = DefaultPropertyProps & { - allOf: Reference[]; - default: string; -}; - -type ArrayStringProperty = DefaultPropertyProps & { - type: "array"; - default: string[]; - items: { - type: "string"; - - widget?: string; - format?: "date" | "time" | "date-time"; - }; -}; - -type ArrayNumberProperty = DefaultPropertyProps & { - type: "array"; - default: number[]; - items: { - type: "number" | "integer"; - }; -}; - -type ArrayBooleanProperty = DefaultPropertyProps & { - type: "array"; - default: boolean[]; - items: { - type: "boolean"; - }; -}; - -type ArrayObjectProperty = DefaultPropertyProps & { - type: "array"; - default: Array>; - items: Reference; -}; - -export type SimpleInputSchemaProperty = - | BooleanProperty - | NumberProperty - | StringProperty - | EnumProperty; - -type AnyOfObjectProperty = DefaultPropertyProps & { - anyOf: StringProperty[]; - default: - | ArrayObjectProperty.default - | NumberProperty.default - | StringProperty.default; -}; - -export type InputSchemaProperty = - | SimpleInputSchemaProperty - | ArrayStringProperty - | ArrayNumberProperty - | ArrayBooleanProperty - | ArrayObjectProperty - | AnyOfObjectProperty; diff --git a/frontend/src/@types/piece/schema.d.ts b/frontend/src/@types/piece/schema.d.ts new file mode 100644 index 00000000..276a3905 --- /dev/null +++ b/frontend/src/@types/piece/schema.d.ts @@ -0,0 +1,153 @@ +export interface Schema { + title: string; + description: string; + + type: "object"; + + properties: Properties; + $defs: Definitions; +} + +export type Properties = Record; + +export type Property = + | BooleanProperty + | NumberProperty + | StringProperty + | EnumProperty + | ArrayStringProperty + | ArrayNumberProperty + | ArrayBooleanProperty + | ArrayObjectProperty + | AnyOfProperty; + +interface DefaultPropertyAttrs { + title: string; + description: string; + from_upstream?: FromUpstream; +} + +export type FromUpstream = "always" | "never" | "allowed"; + +export type BooleanProperty = DefaultPropertyAttrs & { + type: "boolean"; + default: boolean; +}; + +export type NumberProperty = DefaultPropertyAttrs & { + type: "number" | "integer" | "float"; + default: number; + exclusiveMaximum?: number; + exclusiveMinimum?: number; +}; + +export type StringProperty = DefaultPropertyAttrs & { + type: "string"; + default: string; + + widget?: string; + format?: "date" | "time" | "date-time"; +}; + +export type EnumProperty = DefaultPropertyAttrs & { + allOf: Reference[]; + default: string; +}; + +export type ArrayStringProperty = DefaultPropertyAttrs & { + type: "array"; + default: string[]; + items: { + type: "string"; + + widget?: string; + format?: "date" | "time" | "date-time"; + }; +}; + +export type ArrayNumberProperty = DefaultPropertyAttrs & { + type: "array"; + default: number[]; + items: { + type: "number" | "integer"; + }; +}; + +export type ArrayBooleanProperty = DefaultPropertyAttrs & { + type: "array"; + default: boolean[]; + items: { + type: "boolean"; + }; +}; + +export type ArrayObjectProperty = DefaultPropertyAttrs & { + type: "array"; + default: Array>; + items: Reference; +}; + +export interface Reference { + $ref: `#/$defs/${string}`; +} + +export type AnyOfProperty = + | (DefaultPropertyAttrs & { + anyOf: Array<{ + type: "null"; + format?: string; + }>; + default: any; + }) + | (DefaultPropertyAttrs & { + anyOf: Array<{ + type: "number" | "integer" | "float"; + }>; + default: NumberProperty["default"]; + }) + | (DefaultPropertyAttrs & { + anyOf: Array<{ + type: "string"; + format?: string; + }>; + default: StringProperty["default"]; + }) + | (DefaultPropertyAttrs & { + anyOf: Array<{ type: "boolean" }>; + default: BooleanProperty["default"]; + }) + | (DefaultPropertyAttrs & { + anyOf: Array<{ type: "array" }>; + default: + | ArrayStringProperty["default"] + | ArrayNumberProperty["default"] + | ArrayBooleanProperty["default"] + | ArrayObjectProperty["default"]; + }); + +export type Definitions = Record; + +export interface EnumDefinition { + title: string; + description: string; + type: "string"; + enum: string[]; +} + +export interface ObjectDefinition { + title: string; + description: string; + type: "object"; + properties: Record< + string, + | EnumDefinition + | BooleanProperty + | NumberProperty + | StringProperty + | EnumProperty + | AnyOfProperty + >; + required: string[]; +} + +export {}; diff --git a/frontend/src/context/workspaces/repositories.tsx b/frontend/src/context/workspaces/repositories.tsx index 0b09f1bc..c1616d85 100644 --- a/frontend/src/context/workspaces/repositories.tsx +++ b/frontend/src/context/workspaces/repositories.tsx @@ -22,8 +22,8 @@ import { import { useWorkspaces } from "./workspaces"; export interface IPiecesContext { - repositories: PieceRepository[]; - defaultRepositories: PieceRepository[]; + repositories: Repository[]; + defaultRepositories: Repository[]; repositoryPieces: PiecesRepository; repositoriesLoading: boolean; @@ -49,6 +49,8 @@ export interface IPiecesContext { fetchForagePieceById: (id: number) => Promise; } +type PieceForageSchema = Record; + export const [PiecesContext, usesPieces] = createCustomContext("Pieces Context"); diff --git a/frontend/src/features/myWorkflows/api/piece/piece.interface.ts b/frontend/src/features/myWorkflows/api/piece/piece.interface.ts index ddebddcf..1f3ff587 100644 --- a/frontend/src/features/myWorkflows/api/piece/piece.interface.ts +++ b/frontend/src/features/myWorkflows/api/piece/piece.interface.ts @@ -11,7 +11,7 @@ interface IPaginationMetadata { * Get Piece Repositories response interface */ export interface IGetPiecesRepositoriesResponseInterface { - data: PieceRepository[]; + data: Repository[]; metadata: IPaginationMetadata; } diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx index c11e74c1..8664936d 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx @@ -21,7 +21,7 @@ import SelectUpstreamInput from "./selectUpstreamInput"; interface PieceFormItemProps { formId: string; - schema: InputSchemaProperty; + schema: Property; itemKey: string; control: Control; definitions?: Definitions; @@ -52,7 +52,10 @@ const PieceFormItem: React.FC = ({ if (hasNullType) { for (const itemSchema of schema.anyOf) { if (itemSchema.type !== "null") { - anyOfType = itemSchema.format ? itemSchema.format : itemSchema.type; + anyOfType = + "format" in itemSchema && itemSchema.format + ? itemSchema.format + : itemSchema.type; } } } diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx index 7a471df1..2378b1ae 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx @@ -12,7 +12,7 @@ import PieceFormItem from "./PieceFormItem"; interface PieceFormProps { formId: string; - schema: any; + schema: Schema; } const PieceForm: React.FC = ({ formId, schema }) => { From 99dd5b3bf84d0b6a7ede1959059f355417ef63e3 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Sun, 14 Jan 2024 01:33:11 -0300 Subject: [PATCH 03/60] feat: improve schemas types as real json schema --- frontend/src/@types/piece/index.d.ts | 18 +++- frontend/src/@types/piece/schema.d.ts | 116 +++++++++++--------------- 2 files changed, 64 insertions(+), 70 deletions(-) diff --git a/frontend/src/@types/piece/index.d.ts b/frontend/src/@types/piece/index.d.ts index 6e38ab58..5a0bdc46 100644 --- a/frontend/src/@types/piece/index.d.ts +++ b/frontend/src/@types/piece/index.d.ts @@ -1,14 +1,28 @@ /* eslint-disable @typescript-eslint/consistent-type-imports */ declare global { type Piece = import("./piece").Piece; - type PieceForageSchema = import("./piece").PieceForageSchema; type PiecesRepository = import("./piece").PiecesRepository; type Repository = import("./piece").Repository; type Schema = import("./schema").Schema; + type FromUpstream = import("./schema").FromUpstream; + type TypeName = import("./schema").TypeName; + type Properties = import("./schema").Properties; type Property = import("./schema").Property; - type FromUpstream = import("./schema").FromUpstream; + type SimpleProperty = import("./schema").SimpleProperty; + type ArrayProperty = import("./schema").ArrayProperty; + + type StringProperty = import("./schema").StringProperty; + type BooleanProperty = import("./schema").BooleanProperty; + type NumberProperty = import("./schema").NumberProperty; + type EnumProperty = import("./schema").EnumProperty; + + type ArrayStringProperty = import("./schema").ArrayStringProperty; + type ArrayNumberProperty = import("./schema").ArrayNumberProperty; + type ArrayBooleanProperty = import("./schema").ArrayBooleanProperty; + type ArrayObjectProperty = import("./schema").ArrayObjectProperty; + type Definitions = import("./schema").Definitions; type ObjectDefinition = import("./schema").ObjectDefinition; type EnumDefinition = import("./schema").EnumDefinition; diff --git a/frontend/src/@types/piece/schema.d.ts b/frontend/src/@types/piece/schema.d.ts index 276a3905..38423f2c 100644 --- a/frontend/src/@types/piece/schema.d.ts +++ b/frontend/src/@types/piece/schema.d.ts @@ -1,3 +1,12 @@ +export type TypeName = + | "string" + | "number" + | "boolean" + | "object" + | "integer" + | "array" + | "null"; + export interface Schema { title: string; description: string; @@ -10,16 +19,19 @@ export interface Schema { export type Properties = Record; -export type Property = +export type Property = SimpleProperty | ArrayProperty | AnyOfProperty; + +export type SimpleProperty = | BooleanProperty | NumberProperty | StringProperty - | EnumProperty - | ArrayStringProperty - | ArrayNumberProperty + | EnumProperty; + +export type ArrayProperty = | ArrayBooleanProperty - | ArrayObjectProperty - | AnyOfProperty; + | ArrayNumberProperty + | ArrayStringProperty + | ArrayObjectProperty; interface DefaultPropertyAttrs { title: string; @@ -35,7 +47,7 @@ export type BooleanProperty = DefaultPropertyAttrs & { }; export type NumberProperty = DefaultPropertyAttrs & { - type: "number" | "integer" | "float"; + type: "number" | "integer"; default: number; exclusiveMaximum?: number; exclusiveMinimum?: number; @@ -45,7 +57,7 @@ export type StringProperty = DefaultPropertyAttrs & { type: "string"; default: string; - widget?: string; + widget?: `codeeditor-${string}` | "textarea"; format?: "date" | "time" | "date-time"; }; @@ -54,31 +66,22 @@ export type EnumProperty = DefaultPropertyAttrs & { default: string; }; -export type ArrayStringProperty = DefaultPropertyAttrs & { +export type ArrayBooleanProperty = DefaultPropertyAttrs & { type: "array"; - default: string[]; - items: { - type: "string"; - - widget?: string; - format?: "date" | "time" | "date-time"; - }; + default: boolean[]; + items: Omit; }; export type ArrayNumberProperty = DefaultPropertyAttrs & { type: "array"; default: number[]; - items: { - type: "number" | "integer"; - }; + items: Omit; }; -export type ArrayBooleanProperty = DefaultPropertyAttrs & { +export type ArrayStringProperty = DefaultPropertyAttrs & { type: "array"; - default: boolean[]; - items: { - type: "boolean"; - }; + default: string[]; + items: Omit; }; export type ArrayObjectProperty = DefaultPropertyAttrs & { @@ -91,41 +94,26 @@ export interface Reference { $ref: `#/$defs/${string}`; } -export type AnyOfProperty = - | (DefaultPropertyAttrs & { - anyOf: Array<{ - type: "null"; - format?: string; - }>; - default: any; - }) - | (DefaultPropertyAttrs & { - anyOf: Array<{ - type: "number" | "integer" | "float"; - }>; - default: NumberProperty["default"]; - }) - | (DefaultPropertyAttrs & { - anyOf: Array<{ - type: "string"; - format?: string; - }>; - default: StringProperty["default"]; - }) - | (DefaultPropertyAttrs & { - anyOf: Array<{ type: "boolean" }>; - default: BooleanProperty["default"]; - }) - | (DefaultPropertyAttrs & { - anyOf: Array<{ type: "array" }>; - default: - | ArrayStringProperty["default"] - | ArrayNumberProperty["default"] - | ArrayBooleanProperty["default"] - | ArrayObjectProperty["default"]; - }); - -export type Definitions = Record; +type AnyOf = DefaultPropertyAttrs & { + anyOf: Array<{ + type: "null" | "number" | "integer" | "string" | "boolean"; + widget?: `codeeditor-${string}` | "textarea"; + format?: "date" | "time" | "date-time"; + }>; + default: any; +}; + +export type AnyOfArray = DefaultPropertyAttrs & { + anyOf: Array<{ items: AnyOf["anyOf"]; type: "array" } | { type: "null" }>; + default: any[]; +}; + +export type AnyOfProperty = AnyOf | AnyOfArray; + +export type Definitions = Record< + string, + EnumDefinition | ObjectDefinition | SimpleProperty +>; export interface EnumDefinition { title: string; @@ -138,15 +126,7 @@ export interface ObjectDefinition { title: string; description: string; type: "object"; - properties: Record< - string, - | EnumDefinition - | BooleanProperty - | NumberProperty - | StringProperty - | EnumProperty - | AnyOfProperty - >; + properties: Record; required: string[]; } From d209e7557cc9221ac3b7a53a973786f6f2efe1e9 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 18 Jan 2024 18:32:33 -0300 Subject: [PATCH 04/60] add k8s to task deploy mode --- src/domino/task.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/task.py b/src/domino/task.py index af1acd7a..1d31d0f1 100644 --- a/src/domino/task.py +++ b/src/domino/task.py @@ -96,7 +96,7 @@ def _set_operator(self) -> BaseOperator: ) ) - elif self.deploy_mode in ["local-k8s", "local-k8s-dev", "prod"]: + elif self.deploy_mode in ["local-k8s", "local-k8s-dev", "prod", "k8s"]: # References: # - https://airflow.apache.org/docs/apache-airflow/1.10.14/_api/airflow/contrib/operators/kubernetes_pod_operator/index.html # - https://airflow.apache.org/docs/apache-airflow/stable/templates-ref.html From 41f0c503b519c94d17159df652d31d5b8609a676 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Wed, 17 Jan 2024 20:59:38 -0300 Subject: [PATCH 05/60] ref: improve upstream options object --- frontend/src/@types/piece/index.d.ts | 4 + frontend/src/@types/piece/schema.d.ts | 12 +- .../PieceForm/PieceFormItem/arrayInput.tsx | 13 +- .../PieceForm/PieceFormItem/index.tsx | 27 +- .../PieceForm/PieceFormItem/objectInput.tsx | 13 +- .../SidebarForm/PieceForm/index.tsx | 3 +- .../components/SidebarForm/index.tsx | 2 +- .../workflowEditor/utils/jsonSchema.ts | 4 +- .../workflowEditor/utils/upstreamOptions.ts | 249 +++++++++--------- .../src/services/config/endpoints.config.ts | 6 - 10 files changed, 155 insertions(+), 178 deletions(-) diff --git a/frontend/src/@types/piece/index.d.ts b/frontend/src/@types/piece/index.d.ts index 5a0bdc46..25d235ec 100644 --- a/frontend/src/@types/piece/index.d.ts +++ b/frontend/src/@types/piece/index.d.ts @@ -7,11 +7,13 @@ declare global { type Schema = import("./schema").Schema; type FromUpstream = import("./schema").FromUpstream; type TypeName = import("./schema").TypeName; + type Reference = import("./schema").Reference; type Properties = import("./schema").Properties; type Property = import("./schema").Property; type SimpleProperty = import("./schema").SimpleProperty; type ArrayProperty = import("./schema").ArrayProperty; + type AnyOfProperty = import("./schema").AnyOfProperty; type StringProperty = import("./schema").StringProperty; type BooleanProperty = import("./schema").BooleanProperty; @@ -24,6 +26,8 @@ declare global { type ArrayObjectProperty = import("./schema").ArrayObjectProperty; type Definitions = import("./schema").Definitions; + type Definition = import("./schema").Definition; + type SimpleDefinition = import("./schema").SimpleDefinition; type ObjectDefinition = import("./schema").ObjectDefinition; type EnumDefinition = import("./schema").EnumDefinition; } diff --git a/frontend/src/@types/piece/schema.d.ts b/frontend/src/@types/piece/schema.d.ts index 38423f2c..ce72c5a3 100644 --- a/frontend/src/@types/piece/schema.d.ts +++ b/frontend/src/@types/piece/schema.d.ts @@ -110,10 +110,14 @@ export type AnyOfArray = DefaultPropertyAttrs & { export type AnyOfProperty = AnyOf | AnyOfArray; -export type Definitions = Record< - string, - EnumDefinition | ObjectDefinition | SimpleProperty ->; +export type Definition = EnumDefinition | ObjectDefinition | SimpleDefinition; + +export type Definitions = Record; + +export type SimpleDefinition = + | Omit + | Omit + | Omit; export interface EnumDefinition { title: string; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx index 3b9ec9aa..d18f0e8d 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx @@ -20,11 +20,7 @@ import { useWatch, } from "react-hook-form"; -import { - type ComplexArrayOption, - type ArrayOption, - type Option, -} from "../../../../utils/upstreamOptions"; +import { type UpstreamOptions } from "../../../../utils/upstreamOptions"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; import ObjectInputComponent from "./objectInput"; @@ -36,7 +32,7 @@ interface ArrayInputItemProps { schema: any; control: Control; definitions?: any; - upstreamOptions: ArrayOption | ComplexArrayOption; + upstreamOptions: UpstreamOptions; } const ArrayInput: React.FC = ({ @@ -219,7 +215,7 @@ const ArrayInput: React.FC = ({ )} @@ -331,9 +327,10 @@ const ArrayInput: React.FC = ({ )} diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx index 8664936d..fb6ce8a4 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx @@ -11,7 +11,7 @@ import React, { useMemo } from "react"; import { type Control, useWatch } from "react-hook-form"; import { - type ArrayOption, + type UpstreamOptions, type Option, } from "../../../../utils/upstreamOptions"; @@ -25,7 +25,7 @@ interface PieceFormItemProps { itemKey: string; control: Control; definitions?: Definitions; - upstreamOptions: Option[] | ArrayOption; + upstreamOptions: UpstreamOptions; } const PieceFormItem: React.FC = ({ @@ -62,16 +62,7 @@ const PieceFormItem: React.FC = ({ } if (checkedFromUpstream) { - let options: Option[] = []; - if ( - ("type" in schema && schema.type === "array") || - (anyOfType && anyOfType === "array") - ) { - options = (upstreamOptions as ArrayOption).$array; - } else { - options = upstreamOptions as Option[]; - } - + const options: Option[] = upstreamOptions[itemKey] ?? []; inputElement = ( = ({ /> ); } else if ( - ("type" in schema && - (schema.type === "number" || schema.type === "float")) || + ("type" in schema && schema.type === "number") || anyOfType === "float" ) { inputElement = ( @@ -137,7 +127,7 @@ const PieceFormItem: React.FC = ({ inputKey={itemKey} schema={schema} definitions={definitions} - upstreamOptions={upstreamOptions as ArrayOption} + upstreamOptions={upstreamOptions} control={control} /> ); @@ -192,10 +182,9 @@ const PieceFormItem: React.FC = ({ schema.widget?.includes("codeeditor") && anyOfType === "string") ) { - const language = - schema.widget === "codeeditor" - ? "python" - : schema.widget.replace("codeeditor-", ""); + const language = schema.widget.includes("codeeditor-") + ? schema.widget.replace("codeeditor-", "") + : "python"; inputElement = ( diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx index e2a84004..f92220e8 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx @@ -6,21 +6,23 @@ import React, { useCallback, useMemo, useState } from "react"; import { useWatch } from "react-hook-form"; import { getDefinition } from "utils"; -import { type ComplexArrayOption } from "../../../../utils/upstreamOptions"; +import { type UpstreamOptions } from "../../../../utils/upstreamOptions"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; import SelectUpstreamInput from "./selectUpstreamInput"; interface Prop { name: `inputs.${string}.value.${number}`; + inputKey: string; schema: ArrayObjectProperty; definitions: Definitions; - upstreamOptions: ComplexArrayOption; + upstreamOptions: UpstreamOptions; } const ObjectInputComponent: React.FC = ({ schema, name, + inputKey, upstreamOptions, definitions, }) => { @@ -81,6 +83,7 @@ const ObjectInputComponent: React.FC = ({ {Object.entries(elementType).map(([key]) => { const fromUpstream = isFromUpstream(key); const disableUpstream = disableCheckboxOptions(itensSchema[key] as any); + return ( = ({ diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx index 2378b1ae..c716e220 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx @@ -39,6 +39,7 @@ const PieceForm: React.FC = ({ formId, schema }) => { workflowPieces, workflowEdges, ); + setUpstreamOptions(upstreamOptions); }, [ fetchForageWorkflowEdges, @@ -63,7 +64,7 @@ const PieceForm: React.FC = ({ formId, schema }) => { itemKey={key} control={control} definitions={schema?.$defs} - upstreamOptions={upstreamOptions[key] ?? []} + upstreamOptions={upstreamOptions} /> ))} diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx index 562aaa32..01903c53 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx @@ -24,7 +24,7 @@ import StorageForm, { storageFormSchema } from "./StorageForm"; interface ISidebarPieceFormProps { formId: string; - schema: PieceSchema; + schema: Schema; title: string; open: boolean; onClose: (event: any) => void; diff --git a/frontend/src/features/workflowEditor/utils/jsonSchema.ts b/frontend/src/features/workflowEditor/utils/jsonSchema.ts index cd9fec6a..9b35f28e 100644 --- a/frontend/src/features/workflowEditor/utils/jsonSchema.ts +++ b/frontend/src/features/workflowEditor/utils/jsonSchema.ts @@ -86,7 +86,7 @@ export const extractDefaultInputValues = (pieceSchema: Piece) => { }; export const extractDefaultValues = ( - schema: PieceSchema, + schema: Schema, output: any | null = null, ) => { output = output === null ? {} : output; @@ -94,7 +94,7 @@ export const extractDefaultValues = ( if (!isEmpty(schema) && "properties" in schema) { const properties = schema.properties; for (const [key, value] of Object.entries(properties)) { - if (value?.from_upstream === "always") { + if ("from_upstream" in value && value.from_upstream === "always") { output[key] = ""; } diff --git a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts index 980edaf8..6b807499 100644 --- a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts +++ b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts @@ -1,4 +1,5 @@ -import { generateTaskName, getUuidSlice } from "utils"; +import { type Edge } from "reactflow"; +import { generateTaskName, getUuidSlice, isEmpty } from "utils"; export interface Option { id: string; @@ -6,151 +7,139 @@ export interface Option { value: string; } -export interface ArrayOption { - $array: Option[]; - items: Option[]; -} +export type UpstreamOptions = Record; -export type ComplexArrayOption = Record; - -export type UpstreamOptions = Record; - -const getInputType = (schema: Record) => { - let type = schema.format ? schema.format : schema.type; - if ("allOf" in schema || "oneOf" in schema) { - type = "enum"; - } else if ("anyOf" in schema) { - type = []; - for (const item of schema.anyOf) { - let _type = item.format ? item.format : item.type; - _type = _type === "number" ? "float" : (_type as string); - if (_type !== "null") { - type.push(_type); - } +export const getUpstreamOptions = ( + formId: string, + schema: Schema, + workflowPieces: Record, + workflowEdges: Edge[], +) => { + const upstreamPieces: Array = []; + + for (const ed of workflowEdges) { + if (ed.target === formId) { + upstreamPieces.push({ + ...workflowPieces[ed.source], + source: ed.source, + }); } } - return type === "number" ? "float" : (type as string); -}; -const validateUpstreamType = (upType: string, type: string) => { - if (upType === type) { - return true; - } - if (Array.isArray(upType) && !Array.isArray(type)) { - return upType.includes(type); - } - if (Array.isArray(upType) && Array.isArray(type)) { - return upType.some((element) => type.includes(element)); + if (!schema.properties || isEmpty(schema.properties)) { + return {}; } - if (Array.isArray(type) && !Array.isArray(upType)) { - return type.includes(upType); - } - return false; -}; -const getOptions = ( - upstreamPieces: Record, - type: string, -): Option[] | ArrayOption => { - const options: Option[] = []; - - Object.keys(upstreamPieces).forEach((upstreamId) => { - const upPieces = upstreamPieces[upstreamId]; - - for (const upPiece of upPieces) { - const upSchema = upPiece.output_schema.properties; - - for (const property in upSchema) { - const upType = getInputType(upSchema[property]); - - if (validateUpstreamType(upType, type)) { - const value = `${upPiece?.name} (${getUuidSlice(upPiece.id)}) - ${ - upSchema[property].title - }`; - const upstreamArgument = property; - const taskName = generateTaskName(upPiece.name, upPiece.id); - options.push({ id: taskName, argument: upstreamArgument, value }); - } - } - } - }); + const upstreamOptions = generateOptions(schema.$defs, upstreamPieces); - return options; + return upstreamOptions(schema); }; -export const getUpstreamOptions = ( - formId: string, - schema: any, - workflowPieces: any, - workflowEdges: any, -): UpstreamOptions => { - const upstreamPieces: Record = {}; - const upstreamOptions: UpstreamOptions = {}; - - for (const ed of workflowEdges) { - if (ed.target === formId) { - if (Array.isArray(upstreamPieces[formId])) { - upstreamPieces[formId].push({ - ...workflowPieces[ed.source], - id: ed.source, - }); +function generateOptions( + definitions: Definitions, + upstreamPieces: Array, +) { + function generateOptionsForSchema( + schema: Schema | Property | Definition, + ): UpstreamOptions { + const options: UpstreamOptions = {}; + const addOptions = (opts: Option[] | UpstreamOptions, key: string = "") => { + if (Array.isArray(opts)) { + options[key] = opts; } else { - upstreamPieces[formId] = []; - upstreamPieces[formId].push({ - ...workflowPieces[ed.source], - id: ed.source, + Object.entries(opts).forEach(([subKey, subOpts]) => { + if (subKey) { + options[`${key}.${subKey}`] = subOpts; + } else { + options[`${key}`] = subOpts; + } }); } + }; + + function processUpstreamPieces() { + upstreamPieces.forEach(({ name, source, output_schema }) => { + const outputSchema = output_schema.properties; + + const generatedOptions = Object.entries(outputSchema) + .map(([key, prop]) => { + if (compareTypes(schema, prop)) { + return generateOption({ + pieceId: source, + pieceName: name, + propKey: key, + propTitle: prop.title, + }); + } else { + return undefined; + } + }) + .filter((option) => !!option) as Option[]; + addOptions(generatedOptions); + }); } - } - - Object.keys(schema.properties).forEach((key) => { - const currentSchema = schema.properties[key]; - const currentType = getInputType(currentSchema); - - if ( - currentType === "array" || - (Array.isArray(currentType) && currentType.includes("array")) - ) { - if ("anyOf" in currentSchema && currentSchema.anyOf.length === 2) { - const hasNullType = currentSchema.anyOf.some( - (item: any) => item.type === "null", - ); - if (hasNullType) { - const notNullAnyOf = currentSchema.anyOf.find( - (item: any) => item.type !== "null", - ); - currentSchema.items = notNullAnyOf.items; - } - } - - let itemsSchema = currentSchema?.items; - if (currentSchema?.items?.$ref) { - const subItemSchemaName = currentSchema.items.$ref.split("/").pop(); - itemsSchema = schema.$defs?.[subItemSchemaName]; - } - const $array = getOptions(upstreamPieces, currentType); - if (itemsSchema.type === "object" && itemsSchema.properties) { - const __data: any = {}; - Object.keys(itemsSchema.properties).forEach((subKey) => { - const subSchema = itemsSchema.properties[subKey]; - const subType = getInputType(subSchema); - const items = getOptions(upstreamPieces, subType); - __data[subKey] = { items }; + if ("type" in schema && schema.type === "object") { + if (schema.properties) { + Object.entries(schema.properties).forEach(([propKey, property]) => { + if (property) { + addOptions(generateOptionsForSchema(property), propKey); + } }); - upstreamOptions[key] = { ...__data, $array }; - } else { - const itemsType = getInputType(itemsSchema); - const items = getOptions(upstreamPieces, itemsType); - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - upstreamOptions[key] = { $array, items } as ArrayOption; + } + } else if ("type" in schema && schema.type === "array") { + if (schema.items) { + const propSchema = + "$ref" in schema.items + ? getSchemaByRef(schema.items, definitions) + : schema.items; + addOptions(generateOptionsForSchema(propSchema), "__items"); + processUpstreamPieces(); } } else { - const options = getOptions(upstreamPieces, currentType); - upstreamOptions[key] = options; + processUpstreamPieces(); } - }); + return options; + } - return upstreamOptions; -}; + return generateOptionsForSchema; +} + +interface GenerateOptionProps { + pieceId: string; + pieceName: string; + propTitle: string; + propKey: string; +} + +function generateOption({ + pieceId, + pieceName, + propTitle, + propKey, +}: GenerateOptionProps) { + const value = `${pieceName} (${getUuidSlice(pieceId)}) - ${propTitle}`; + const argument = propKey; + const id = generateTaskName(pieceName, pieceId); + return { id, argument, value }; +} + +function getSchemaByRef(ref: Reference, definitions: Definitions) { + return definitions[ref.$ref.split("/").pop() as string]; +} + +function compareTypes(schema: Schema | Property | Definition, prop: Property) { + if ("type" in schema && "type" in prop) { + return schema.type === prop.type; + } else if ("anyOf" in schema && "type" in prop) { + return schema.anyOf.some((s) => s.type === prop.type); + } else if ("type" in schema && "anyOf" in prop) { + return prop.anyOf.some((p) => p.type === schema.type); + } else if ("anyOf" in schema && "anyOf" in prop) { + // Verify if there is any type equal in the two arrays + return schema.anyOf.some((s) => prop.anyOf.some((p) => p.type === s.type)); + } else { + // Handle other cases or return a default value if needed + return false; + } +} diff --git a/frontend/src/services/config/endpoints.config.ts b/frontend/src/services/config/endpoints.config.ts index e145c179..9a31358c 100644 --- a/frontend/src/services/config/endpoints.config.ts +++ b/frontend/src/services/config/endpoints.config.ts @@ -1,11 +1,5 @@ import { environment } from "config/environment.config"; -/** - * Exports all endpoints, already set up by current env - */ - -console.log(environment); - export const endpoint = environment.API_URL ?? "http://localhost:8000/"; export default endpoint; From 0c48b20dd516978782ab18a4aec6a8a1432a2569 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 19 Jan 2024 09:08:21 -0300 Subject: [PATCH 06/60] remove result print --- src/domino/custom_operators/k8s_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/custom_operators/k8s_operator.py b/src/domino/custom_operators/k8s_operator.py index b980df04..f48e248c 100644 --- a/src/domino/custom_operators/k8s_operator.py +++ b/src/domino/custom_operators/k8s_operator.py @@ -543,7 +543,7 @@ def extract_xcom(self, pod: k8s.V1Pod): self.log.info("Result file is empty.") return None else: - self.log.info("xcom result: \n%s", result) + self.log.info('xcom result is not empty, parsing to json') return json.loads(result) def pod_manager_extract_xcom(self, pod: k8s.V1Pod) -> str: From f23fd8b8c2ed3c202691e5a3035f773007c665a8 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Thu, 18 Jan 2024 19:35:30 -0300 Subject: [PATCH 07/60] feat: add debug option for frontend --- .gitignore | 1 - .vscode/launch.json | 18 ++++++++++++++++++ docker-compose-dev.yaml | 5 +++-- frontend/Dockerfile.dev | 7 ++++++- frontend/package.json | 1 + frontend/tsconfig.json | 3 ++- 6 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.gitignore b/.gitignore index d9937602..979ce3bd 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ domino_data/* **/**.swp **/**.swo **/**.swm -.vscode **/__pycache__/** .python-version **/ENV/** diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..fa3dcdac --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "pwa-node", + "name": "Debug Vite", + "request": "attach", + "port": 9229, + "restart": true, + "sourceMapPathOverrides": { + "node_modules/*": "${workspaceRoot}/node_modules/*" + }, + "skipFiles": [ + "/**" + ] + } + ] +} diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 370d20e9..1d803f0b 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -360,14 +360,15 @@ services: context: ./frontend dockerfile: Dockerfile.dev container_name: domino-frontend - command: yarn start + command: yarn debug environment: - DOMINO_DEPLOY_MODE=local-compose - API_URL=http://localhost:8000 ports: - 3000:3000 + - 9229:9229 # Expose debug port volumes: - - ./frontend:/usr/src/app # Enable hot reload for frontend + - ./frontend:/usr/src/app - /usr/src/app/node_modules depends_on: domino_rest: diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 2bc9cf85..228ea99e 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -1,3 +1,8 @@ +# Debug Stage +FROM node:18-alpine as debug +WORKDIR /usr/src/app +EXPOSE 9229 + # Build Stage FROM node:18-alpine as build WORKDIR /usr/src/app @@ -11,4 +16,4 @@ COPY --from=build /usr/src/app/node_modules ./node_modules COPY . . RUN chmod -R 777 node_modules/ USER node -CMD ["yarn", "start"] +CMD ["yarn", "debug"] diff --git a/frontend/package.json b/frontend/package.json index bdac0a12..8e13eaa5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -53,6 +53,7 @@ "yup": "^1.2.0" }, "scripts": { + "debug": "NODE_OPTIONS=--inspect=0.0.0.0:9229 vite", "start": "vite", "start:mock": "cross-env NODE_OPTIONS=--openssl-legacy-provider VITE_USE_MOCK=true vite", "build": "tsc && vite build", diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index f660d6db..d2efaaae 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -20,7 +20,8 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "sourceMap": true }, "include": [ "src" From 204fa4d8e8f0fe8f0893bcf245404b7689fb3dfd Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Mon, 22 Jan 2024 05:22:11 -0300 Subject: [PATCH 08/60] fix: textarea optional input --- .../SidebarForm/PieceForm/PieceFormItem/index.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx index fb6ce8a4..5da1f1cd 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx @@ -194,10 +194,13 @@ const PieceFormItem: React.FC = ({ /> ); } else if ( - "type" in schema && - "widget" in schema && - schema.type === "string" && - schema.widget === "textarea" + ("type" in schema && + "widget" in schema && + schema.type === "string" && + schema.widget === "textarea") || + (anyOfType === "string" && + "widget" in schema && + schema?.widget === "textarea") ) { inputElement = ( From ad0e674d9f03cbb67dbd06118acc77cff6b5c059 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Tue, 23 Jan 2024 11:49:07 -0300 Subject: [PATCH 09/60] fix: make debug work --- .vscode/launch.json | 44 ++- docker-compose-dev.yaml | 2 +- frontend/Dockerfile.dev | 2 +- frontend/package.json | 10 +- frontend/tsconfig.json | 3 +- frontend/vite.config.js | 12 +- frontend/yarn.lock | 760 ++++++++++++++++++++++------------------ 7 files changed, 468 insertions(+), 365 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index fa3dcdac..4da30ada 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,18 +1,40 @@ { + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { - "type": "pwa-node", - "name": "Debug Vite", - "request": "attach", - "port": 9229, - "restart": true, + "type": "chrome", + "request": "launch", + "name": "Chrome Debug", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}/frontend/src", + "enableContentValidation": false, "sourceMapPathOverrides": { - "node_modules/*": "${workspaceRoot}/node_modules/*" + "webpack:///./src/*": "${webRoot}/*" }, - "skipFiles": [ - "/**" - ] - } + "runtimeArgs": [ + "--remote-debugging-port=9222" + ], + "sourceMaps": true, + "pathMapping": {"url": "/src/", "path": "${webRoot}/"} + }, + { + "type": "msedge", + "request": "launch", + "name": "Edge Debug", + "url": "http://localhost:3000", + "webRoot": "${workspaceFolder}/frontend/src", + "enableContentValidation": false, + "sourceMapPathOverrides": { + "webpack:///./src/*": "${webRoot}/*" + }, + "runtimeArgs": [ + "--remote-debugging-port=9222" + ], + "sourceMaps": true, + "pathMapping": {"url": "/src/", "path": "${webRoot}/"} + }, ] -} +} \ No newline at end of file diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 1d803f0b..1b2667f4 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -366,7 +366,7 @@ services: - API_URL=http://localhost:8000 ports: - 3000:3000 - - 9229:9229 # Expose debug port + - 9222:9222 # Expose debug port volumes: - ./frontend:/usr/src/app - /usr/src/app/node_modules diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 228ea99e..4bbde5df 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -1,7 +1,7 @@ # Debug Stage FROM node:18-alpine as debug WORKDIR /usr/src/app -EXPOSE 9229 +EXPOSE 9222 # Build Stage FROM node:18-alpine as build diff --git a/frontend/package.json b/frontend/package.json index 8e13eaa5..c9442db1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,7 +22,7 @@ "@types/react-plotly.js": "^2.6.3", "@types/uuid": "^9.0.0", "@uiw/react-textarea-code-editor": "^2.1.1", - "@vitejs/plugin-react": "^4.1.0", + "@vitejs/plugin-react": "^4.2.1", "axios": "^1.2.1", "axios-mock-adapter": "^1.21.2", "cross-env": "^7.0.3", @@ -46,14 +46,14 @@ "swr": "^2.0.0", "typescript": "*", "uuid": "^9.0.0", - "vite": "^4.4.11", - "vite-plugin-svgr": "^2.2.1", - "vite-tsconfig-paths": "^3.5.0", + "vite": "^5.0.12", + "vite-plugin-svgr": "^4.2.0", + "vite-tsconfig-paths": "^4.3.1", "web-worker": "^1.2.0", "yup": "^1.2.0" }, "scripts": { - "debug": "NODE_OPTIONS=--inspect=0.0.0.0:9229 vite", + "debug": "VITE_CJS_IGNORE_WARNING=true vite dev", "start": "vite", "start:mock": "cross-env NODE_OPTIONS=--openssl-legacy-provider VITE_USE_MOCK=true vite", "build": "tsc && vite build", diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index d2efaaae..cd18756e 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -24,7 +24,8 @@ "sourceMap": true }, "include": [ - "src" + "src", + "./vite.config.js" ], "exclude": [ "node_modules" diff --git a/frontend/vite.config.js b/frontend/vite.config.js index 24c7903f..aec926d2 100644 --- a/frontend/vite.config.js +++ b/frontend/vite.config.js @@ -1,22 +1,22 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react"; -import viteTsconfigPaths from "vite-tsconfig-paths"; import importMetaEnv from "@import-meta-env/unplugin"; +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; import svgrPlugin from "vite-plugin-svgr"; +import viteTsconfigPaths from "vite-tsconfig-paths"; // https://vitejs.dev/config/ export default defineConfig({ server: { - host: '0.0.0.0', + host: "0.0.0.0", port: 3000, }, plugins: [ react(), viteTsconfigPaths(), svgrPlugin(), - importMetaEnv.vite({ example: ".env.production" }) + importMetaEnv.vite({ example: ".env.production" }), ], build: { outDir: "build", - } + }, }); diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5dacaeee..15375ae1 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -28,7 +28,28 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@^7.19.6", "@babel/core@^7.23.5": +"@babel/core@^7.21.3": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" + integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helpers" "^7.23.7" + "@babel/parser" "^7.23.6" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/core@^7.23.5": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== @@ -151,6 +172,15 @@ "@babel/traverse" "^7.23.6" "@babel/types" "^7.23.6" +"@babel/helpers@^7.23.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" + integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.7" + "@babel/types" "^7.23.6" + "@babel/highlight@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" @@ -211,7 +241,23 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": +"@babel/traverse@^7.23.7": + version "7.23.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" + integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/generator" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== @@ -227,11 +273,6 @@ dependencies: commander "^2.15.1" -"@cush/relative@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@cush/relative/-/relative-1.0.0.tgz#8cd1769bf9bde3bb27dac356b1bc94af40f6cc16" - integrity sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA== - "@emotion/babel-plugin@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" @@ -339,115 +380,120 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== -"@esbuild/android-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" - integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== - -"@esbuild/android-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" - integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== - -"@esbuild/android-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" - integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== - -"@esbuild/darwin-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" - integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== - -"@esbuild/darwin-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" - integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== - -"@esbuild/freebsd-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" - integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== - -"@esbuild/freebsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" - integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== - -"@esbuild/linux-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" - integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== - -"@esbuild/linux-arm@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" - integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== - -"@esbuild/linux-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" - integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== - -"@esbuild/linux-loong64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" - integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== - -"@esbuild/linux-mips64el@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" - integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== - -"@esbuild/linux-ppc64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" - integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== - -"@esbuild/linux-riscv64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" - integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== - -"@esbuild/linux-s390x@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" - integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== - -"@esbuild/linux-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" - integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== - -"@esbuild/netbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" - integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== - -"@esbuild/openbsd-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" - integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== - -"@esbuild/sunos-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" - integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== - -"@esbuild/win32-arm64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" - integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== - -"@esbuild/win32-ia32@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" - integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== - -"@esbuild/win32-x64@0.18.20": - version "0.18.20" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" - integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/aix-ppc64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" + integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== + +"@esbuild/android-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" + integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== + +"@esbuild/android-arm@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" + integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== + +"@esbuild/android-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" + integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== + +"@esbuild/darwin-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" + integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== + +"@esbuild/darwin-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" + integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== + +"@esbuild/freebsd-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" + integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== + +"@esbuild/freebsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" + integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== + +"@esbuild/linux-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" + integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== + +"@esbuild/linux-arm@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" + integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== + +"@esbuild/linux-ia32@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" + integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== + +"@esbuild/linux-loong64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" + integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== + +"@esbuild/linux-mips64el@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" + integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== + +"@esbuild/linux-ppc64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" + integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== + +"@esbuild/linux-riscv64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" + integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== + +"@esbuild/linux-s390x@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" + integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== + +"@esbuild/linux-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" + integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== + +"@esbuild/netbsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" + integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== + +"@esbuild/openbsd-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" + integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== + +"@esbuild/sunos-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" + integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== + +"@esbuild/win32-arm64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" + integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== + +"@esbuild/win32-ia32@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" + integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== + +"@esbuild/win32-x64@0.19.11": + version "0.19.11" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" + integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== "@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -950,7 +996,7 @@ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.0.tgz#9bc39a5a3a71b81bdb310eba6def5bc3966695b7" integrity sha512-WOHih+ClN7N8oHk9N4JUiMxQJmRVaOxcg8w7F/oHUXzJt920ekASLI/7cYX8XkntDWRhLZtsk6LbGrkgOAvi5A== -"@rollup/pluginutils@^5.0.2": +"@rollup/pluginutils@^5.0.5": version "5.1.0" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== @@ -959,87 +1005,152 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" - integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== + +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== + +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== -"@svgr/babel-plugin-remove-jsx-attribute@*": +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== -"@svgr/babel-plugin-remove-jsx-empty-expression@*": +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== -"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" - integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== - -"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" - integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== - -"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" - integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== - -"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" - integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== - -"@svgr/babel-plugin-transform-svg-component@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" - integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== - -"@svgr/babel-preset@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" - integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" - "@svgr/babel-plugin-remove-jsx-attribute" "*" - "@svgr/babel-plugin-remove-jsx-empty-expression" "*" - "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" - "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" - "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" - "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" - "@svgr/babel-plugin-transform-svg-component" "^6.5.1" - -"@svgr/core@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" - integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== - dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/plugin-jsx" "^6.5.1" +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" camelcase "^6.2.0" - cosmiconfig "^7.0.1" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" -"@svgr/hast-util-to-babel-ast@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" - integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== dependencies: - "@babel/types" "^7.20.0" + "@babel/types" "^7.21.3" entities "^4.4.0" -"@svgr/plugin-jsx@^6.5.1": - version "6.5.1" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" - integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== +"@svgr/plugin-jsx@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== dependencies: - "@babel/core" "^7.19.6" - "@svgr/babel-preset" "^6.5.1" - "@svgr/hast-util-to-babel-ast" "^6.5.1" + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" svg-parser "^2.0.4" "@turf/area@^6.4.0": @@ -1342,7 +1453,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@^1.0.0": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -1621,7 +1732,7 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== -"@vitejs/plugin-react@^4.1.0": +"@vitejs/plugin-react@^4.2.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== @@ -1708,11 +1819,6 @@ ansi-styles@^6.1.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -2256,11 +2362,6 @@ commander@2, commander@^2.15.1: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2296,7 +2397,7 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: +cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== @@ -2307,6 +2408,16 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + country-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/country-regex/-/country-regex-1.1.0.tgz#51c333dcdf12927b7e5eeb9c10ac8112a6120896" @@ -2691,6 +2802,14 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + dotenv@^16.3.1: version "16.3.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" @@ -2919,33 +3038,34 @@ es6-weak-map@^2.0.3: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -esbuild@^0.18.10: - version "0.18.20" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" - integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== +esbuild@^0.19.3: + version "0.19.11" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96" + integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== optionalDependencies: - "@esbuild/android-arm" "0.18.20" - "@esbuild/android-arm64" "0.18.20" - "@esbuild/android-x64" "0.18.20" - "@esbuild/darwin-arm64" "0.18.20" - "@esbuild/darwin-x64" "0.18.20" - "@esbuild/freebsd-arm64" "0.18.20" - "@esbuild/freebsd-x64" "0.18.20" - "@esbuild/linux-arm" "0.18.20" - "@esbuild/linux-arm64" "0.18.20" - "@esbuild/linux-ia32" "0.18.20" - "@esbuild/linux-loong64" "0.18.20" - "@esbuild/linux-mips64el" "0.18.20" - "@esbuild/linux-ppc64" "0.18.20" - "@esbuild/linux-riscv64" "0.18.20" - "@esbuild/linux-s390x" "0.18.20" - "@esbuild/linux-x64" "0.18.20" - "@esbuild/netbsd-x64" "0.18.20" - "@esbuild/openbsd-x64" "0.18.20" - "@esbuild/sunos-x64" "0.18.20" - "@esbuild/win32-arm64" "0.18.20" - "@esbuild/win32-ia32" "0.18.20" - "@esbuild/win32-x64" "0.18.20" + "@esbuild/aix-ppc64" "0.19.11" + "@esbuild/android-arm" "0.19.11" + "@esbuild/android-arm64" "0.19.11" + "@esbuild/android-x64" "0.19.11" + "@esbuild/darwin-arm64" "0.19.11" + "@esbuild/darwin-x64" "0.19.11" + "@esbuild/freebsd-arm64" "0.19.11" + "@esbuild/freebsd-x64" "0.19.11" + "@esbuild/linux-arm" "0.19.11" + "@esbuild/linux-arm64" "0.19.11" + "@esbuild/linux-ia32" "0.19.11" + "@esbuild/linux-loong64" "0.19.11" + "@esbuild/linux-mips64el" "0.19.11" + "@esbuild/linux-ppc64" "0.19.11" + "@esbuild/linux-riscv64" "0.19.11" + "@esbuild/linux-s390x" "0.19.11" + "@esbuild/linux-x64" "0.19.11" + "@esbuild/netbsd-x64" "0.19.11" + "@esbuild/openbsd-x64" "0.19.11" + "@esbuild/sunos-x64" "0.19.11" + "@esbuild/win32-arm64" "0.19.11" + "@esbuild/win32-ia32" "0.19.11" + "@esbuild/win32-x64" "0.19.11" escalade@^3.1.1: version "3.1.1" @@ -3455,7 +3575,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: +fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -3600,11 +3720,6 @@ glob-parent@^6.0.2: dependencies: is-glob "^4.0.3" -glob-regex@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/glob-regex/-/glob-regex-0.3.2.tgz#27348f2f60648ec32a4a53137090b9fb934f3425" - integrity sha512-m5blUd3/OqDTWwzBBtWBPrGlAzatRywHameHeekAZyZrskYouOGdNB8T/q6JucucvJXtOuyHIn0/Yia7iDasDw== - glob@10.3.10: version "10.3.10" resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" @@ -3616,18 +3731,6 @@ glob@10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -4069,7 +4172,7 @@ immediate@~3.0.5: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== -import-fresh@^3.2.1: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -4493,7 +4596,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.2.2, json5@^2.2.3: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -4579,6 +4682,13 @@ loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -5170,7 +5280,7 @@ mimic-response@^2.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -5272,15 +5382,6 @@ murmurhash-js@^1.0.0: resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw== -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - nan@^2.17.0: version "2.18.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" @@ -5315,6 +5416,14 @@ next-tick@^1.1.0: resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + node-fetch@^2.6.7: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -5382,7 +5491,7 @@ number-is-integer@^1.0.1: dependencies: is-finite "^1.0.1" -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -5559,7 +5668,7 @@ parse-entities@^4.0.0: is-decimal "^2.0.0" is-hexadecimal "^2.0.0" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== @@ -5675,11 +5784,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - plotly.js@^2.27.1: version "2.27.1" resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-2.27.1.tgz#064d80d17ad8f9cde400d6f7df45926f520dac06" @@ -5745,10 +5849,10 @@ polybooljs@^1.2.0: resolved "https://registry.yarnpkg.com/polybooljs/-/polybooljs-1.2.0.tgz#b4390c2e079d4c262d3b2504c6288d95ba7a4758" integrity sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ== -postcss@^8.4.27: - version "8.4.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9" - integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw== +postcss@^8.4.32: + version "8.4.33" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" @@ -6022,17 +6126,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -recrawl-sync@^2.0.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recrawl-sync/-/recrawl-sync-2.2.3.tgz#757adcdaae4799466dde5b8ee52122ff9636dfb1" - integrity sha512-vSaTR9t+cpxlskkdUFrsEpnf67kSmPk66yAGT1fZPrDudxQjoMzPgQhSMImQ0pAw5k0NPirefQfhopSjhdUtpQ== - dependencies: - "@cush/relative" "^1.0.0" - glob-regex "^0.3.0" - slash "^3.0.0" - sucrase "^3.20.3" - tslib "^1.9.3" - reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" @@ -6290,11 +6383,26 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^3.27.1: - version "3.29.4" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" - integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== +rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + dependencies: + "@types/estree" "1.0.5" optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" fsevents "~2.3.2" run-applescript@^5.0.0: @@ -6465,6 +6573,14 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -6656,19 +6772,6 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -sucrase@^3.20.3: - version "3.34.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" - integrity sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "7.1.6" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - supercluster@^7.0.0: version "7.1.5" resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" @@ -6769,20 +6872,6 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - through2@^0.6.3: version "0.6.5" resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" @@ -6892,10 +6981,10 @@ ts-api-utils@^1.0.1: resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== +tsconfck@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.1.tgz#803ca0ed8f2f2075639e4061238f04b99ba85e85" + integrity sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg== tsconfig-paths@^3.15.0: version "3.15.0" @@ -6907,21 +6996,12 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tsconfig-paths@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" - integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== - dependencies: - json5 "^2.2.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1, tslib@^1.9.3: +tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.6.0, tslib@^2.6.2: +tslib@^2.0.3, tslib@^2.6.0, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -7251,34 +7331,34 @@ vfile@^6.0.0: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" -vite-plugin-svgr@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6" - integrity sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA== +vite-plugin-svgr@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b" + integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA== dependencies: - "@rollup/pluginutils" "^5.0.2" - "@svgr/core" "^6.5.1" + "@rollup/pluginutils" "^5.0.5" + "@svgr/core" "^8.1.0" + "@svgr/plugin-jsx" "^8.1.0" -vite-tsconfig-paths@^3.5.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-3.6.0.tgz#9e6363051b2caaf7c7cec6f9f85ad71feee77920" - integrity sha512-UfsPYonxLqPD633X8cWcPFVuYzx/CMNHAjZTasYwX69sXpa4gNmQkR0XCjj82h7zhLGdTWagMjC1qfb9S+zv0A== +vite-tsconfig-paths@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz#28762938151e7c80aec9d70c57e65ddce43a576f" + integrity sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw== dependencies: debug "^4.1.1" globrex "^0.1.2" - recrawl-sync "^2.0.3" - tsconfig-paths "^4.0.0" + tsconfck "^3.0.1" -vite@^4.4.11: - version "4.5.1" - resolved "https://registry.yarnpkg.com/vite/-/vite-4.5.1.tgz#3370986e1ed5dbabbf35a6c2e1fb1e18555b968a" - integrity sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA== +vite@^5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== dependencies: - esbuild "^0.18.10" - postcss "^8.4.27" - rollup "^3.27.1" + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" optionalDependencies: - fsevents "~2.3.2" + fsevents "~2.3.3" vt-pbf@^3.1.1: version "3.1.3" From f7677ebf45e748fce0e3c28d53bd2f4eb7939b64 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 29 Jan 2024 06:54:48 -0300 Subject: [PATCH 10/60] quickfix --- media/diagram/diagram | 0 media/diagram/domino-diagrams | 378 ++++++++++++++++++++++ rest/services/piece_repository_service.py | 2 +- 3 files changed, 379 insertions(+), 1 deletion(-) create mode 100644 media/diagram/diagram create mode 100644 media/diagram/domino-diagrams diff --git a/media/diagram/diagram b/media/diagram/diagram new file mode 100644 index 00000000..e69de29b diff --git a/media/diagram/domino-diagrams b/media/diagram/domino-diagrams new file mode 100644 index 00000000..03029625 --- /dev/null +++ b/media/diagram/domino-diagrams @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/rest/services/piece_repository_service.py b/rest/services/piece_repository_service.py index c16b0775..8dd5f5c6 100644 --- a/rest/services/piece_repository_service.py +++ b/rest/services/piece_repository_service.py @@ -66,7 +66,7 @@ def get_pieces_repositories( workspace_id=workspace_id, page=page, page_size=page_size, - filters=filters.dict(exclude_none=True) + filters=filters.model_dump(exclude_none=True) ) data = [] for piece_repository in pieces_repositories: From afb10f6d454348c5420213e5b0cfea4f6c25d996 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 29 Jan 2024 07:04:54 -0300 Subject: [PATCH 11/60] add warning when no releases returned --- .../components/workspaceSettings/RepositoriesCard.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/features/workspaces/components/workspaceSettings/RepositoriesCard.tsx b/frontend/src/features/workspaces/components/workspaceSettings/RepositoriesCard.tsx index 8456f871..062701df 100644 --- a/frontend/src/features/workspaces/components/workspaceSettings/RepositoriesCard.tsx +++ b/frontend/src/features/workspaces/components/workspaceSettings/RepositoriesCard.tsx @@ -120,7 +120,7 @@ export const RepositoriesCard: FC = () => { source: source as repositorySource, }) .then((data) => { - if (data) { + if (data && data.length > 0) { const devVersion = data.find( (item) => item.version === "dev" || item.version === "development", @@ -141,6 +141,9 @@ export const RepositoriesCard: FC = () => { : sortedVersions; setAvailableVersions(sortedData); + } else { + toast.warning("No releases found for this repository"); + return; } setStep("SELECT_VERSION"); }) From 9b8904577caacbea0879fe60500045d6228fd527 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 29 Jan 2024 16:44:53 -0300 Subject: [PATCH 12/60] add workflow_run with path dependency to action --- .github/workflows/release-airflow-images.yaml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release-airflow-images.yaml b/.github/workflows/release-airflow-images.yaml index 65ef2225..02529390 100644 --- a/.github/workflows/release-airflow-images.yaml +++ b/.github/workflows/release-airflow-images.yaml @@ -5,21 +5,19 @@ on: branches: - main paths: - - src/domino/** - Dockerfile-airflow-domino.prod - Dockerfile-domino-piece.gpu-prod - Dockerfile-domino-piece.prod - # workflow_run: - # workflows: - # - "Build and publish domino-py package" - # branches: - # - main - # types: - # - completed + workflow_run: + workflows: ["Build and publish domino-py package"] + branches: [main] + types: + - completed + paths: + - src/domino/** jobs: domino-airflow-base: - #if: ${{ github.event.workflow_run.conclusion == 'success' }} name: Domino Airflow Base Image runs-on: ubuntu-latest steps: @@ -44,7 +42,6 @@ jobs: file: Dockerfile-airflow-domino.prod domino-base-piece: - #if: ${{ github.event.workflow_run.conclusion == 'success' }} name: Domino Base Piece Image runs-on: ubuntu-latest steps: @@ -69,7 +66,6 @@ jobs: file: Dockerfile-domino-piece.prod domino-base-piece-gpu: - #if: ${{ github.event.workflow_run.conclusion == 'success' }} name: Domino Base Piece GPU Image runs-on: ubuntu-latest steps: @@ -94,7 +90,6 @@ jobs: file: Dockerfile-domino-piece.gpu-prod domino-storage-sidecar: - #if: ${{ github.event.workflow_run.conclusion == 'success' }} name: Domino Storage Sidecar Image runs-on: ubuntu-latest steps: From 06c1f584e7bdae7a4992586d191de96215e5f98e Mon Sep 17 00:00:00 2001 From: tdari Date: Fri, 2 Feb 2024 18:26:58 +0300 Subject: [PATCH 13/60] refactor: update workspace card view --- .../workspaces/WorkspaceListItem.tsx | 116 ++++++++++++++---- 1 file changed, 89 insertions(+), 27 deletions(-) diff --git a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx index 7992fe77..1d075bf5 100644 --- a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx +++ b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx @@ -1,3 +1,8 @@ +import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank"; +import CheckBoxOutlinedIcon from "@mui/icons-material/CheckBoxOutlined"; +import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; +import LogoutIcon from "@mui/icons-material/Logout"; +import SettingsIcon from "@mui/icons-material/Settings"; import { Card, CardActionArea, @@ -7,7 +12,11 @@ import { CardActions, Button, Grid, + Divider, + Tooltip, + Chip, } from "@mui/material"; +import Stack from "@mui/material/Stack"; import { type IWorkspaceSummary } from "context/workspaces/types"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; @@ -43,7 +52,7 @@ export const WorkspaceListItem: FC<{ sx={{ display: "flex", flexDirection: "column", - borderColor: isSelected ? "darkgray" : "primary.main", + borderColor: isSelected ? "green" : "primary", }} > + + Selected + + ) : ( + + + Select + + ) + } + sx={{ py: 1, width: "100%" }} /> - - - - + + + + Permission: - {workspace.user_permission} + - - + + + + + Status: - - {workspace.status === "accepted" - ? "Collaborating" - : "Refused"} - + @@ -85,27 +138,36 @@ export const WorkspaceListItem: FC<{ - - - From 3bbd2bc47d3aea31e12a0cd349156ed61db35d66 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Tue, 6 Feb 2024 18:01:29 -0300 Subject: [PATCH 14/60] refactor: use pnpm --- docker-compose-dev.yaml | 2 +- frontend/Dockerfile.dev | 7 +- frontend/Dockerfile.prod | 10 +- frontend/README.md | 6 +- frontend/pnpm-lock.yaml | 8081 +++++++++++++++++ frontend/yarn.lock | 7566 --------------- .../templates/domino-frontend-deployment.yml | 2 +- .../deprecated/docker_compose_constants.py | 4 +- 8 files changed, 8096 insertions(+), 7582 deletions(-) create mode 100644 frontend/pnpm-lock.yaml delete mode 100644 frontend/yarn.lock diff --git a/docker-compose-dev.yaml b/docker-compose-dev.yaml index 1b2667f4..7e0a2d38 100644 --- a/docker-compose-dev.yaml +++ b/docker-compose-dev.yaml @@ -360,7 +360,7 @@ services: context: ./frontend dockerfile: Dockerfile.dev container_name: domino-frontend - command: yarn debug + command: pnpm debug environment: - DOMINO_DEPLOY_MODE=local-compose - API_URL=http://localhost:8000 diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 4bbde5df..38af4df3 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -6,8 +6,9 @@ EXPOSE 9222 # Build Stage FROM node:18-alpine as build WORKDIR /usr/src/app -COPY package.json yarn.lock ./ -RUN yarn install --frozen-lockfile +RUN npm i -g pnpm +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install # Final Stage FROM node:18-alpine @@ -16,4 +17,4 @@ COPY --from=build /usr/src/app/node_modules ./node_modules COPY . . RUN chmod -R 777 node_modules/ USER node -CMD ["yarn", "debug"] +CMD ["pnpm", "run", "debug"] diff --git a/frontend/Dockerfile.prod b/frontend/Dockerfile.prod index 470efe6c..6d9a4519 100644 --- a/frontend/Dockerfile.prod +++ b/frontend/Dockerfile.prod @@ -4,11 +4,9 @@ FROM node:18-slim as build # Set the working directory WORKDIR /app -# Copy package.json and yarn.lock files -COPY package.json yarn.lock ./ - -# Install dependencies -RUN yarn install --production --frozen-lockfile && yarn cache clean +RUN npm i -g pnpm +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ -o import-meta-env -y @@ -17,7 +15,7 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ COPY . . # Build the app for production -RUN yarn build +RUN pnpm build # Stage 2: Create a minimal NGINX image FROM nginx:1.25.2 diff --git a/frontend/README.md b/frontend/README.md index 4a845002..23a68bf9 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -3,7 +3,7 @@ ### Recommended This config allow you to ensure code style every time you save a file in frontend folder, -alternatively you can just run the command `yarn lint:fix` +alternatively you can just run the command `pnpm run lint:fix` - [ESlint extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - Add to settings.json ([Ctrl + Shift + P] to open 'Open Settings (JSON)') @@ -29,13 +29,13 @@ alternatively you can just run the command `yarn lint:fix` #### Install dependencies ```bash -yarn install +pnpm install ``` #### Run the application Running Domino frontend locally: ```bash -yarn start +pnpm start ``` ### Build image diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml new file mode 100644 index 00000000..3b0bab5e --- /dev/null +++ b/frontend/pnpm-lock.yaml @@ -0,0 +1,8081 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@emotion/react': + specifier: ^11.11.1 + version: 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': + specifier: ^11.11.0 + version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@iconify/react': + specifier: ^4.1.1 + version: 4.1.1(react@18.2.0) + '@import-meta-env/cli': + specifier: ^0.6.6 + version: 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1) + '@import-meta-env/unplugin': + specifier: ^0.4.10 + version: 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1) + '@mui/icons-material': + specifier: ^5.11.0 + version: 5.15.0(@mui/material@5.15.0)(@types/react@18.2.45)(react@18.2.0) + '@mui/lab': + specifier: ^5.0.0-alpha.155 + version: 5.0.0-alpha.156(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': + specifier: ^5.14.20 + version: 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-data-grid': + specifier: ^6.15.0 + version: 6.18.5(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/x-date-pickers': + specifier: ^6.5.0 + version: 6.18.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) + '@nathan-vm/use-storage': + specifier: ^0.2.1 + version: 0.2.1(react@18.2.0) + '@types/dompurify': + specifier: ^3.0.5 + version: 3.0.5 + '@types/react': + specifier: '>=18' + version: 18.2.45 + '@types/react-dom': + specifier: ^18.0.9 + version: 18.2.17 + '@types/react-plotly.js': + specifier: ^2.6.3 + version: 2.6.3 + '@types/uuid': + specifier: ^9.0.0 + version: 9.0.7 + '@uiw/react-textarea-code-editor': + specifier: ^2.1.1 + version: 2.1.9(@babel/runtime@7.23.6)(react-dom@18.2.0)(react@18.2.0) + '@vitejs/plugin-react': + specifier: ^4.2.1 + version: 4.2.1(vite@5.0.12) + axios: + specifier: ^1.2.1 + version: 1.6.2 + axios-mock-adapter: + specifier: ^1.21.2 + version: 1.22.0(axios@1.6.2) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + dayjs: + specifier: ^1.11.7 + version: 1.11.10 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + elkjs: + specifier: ^0.8.2 + version: 0.8.2 + localforage: + specifier: ^1.10.0 + version: 1.10.0 + plotly.js: + specifier: ^2.27.1 + version: 2.27.1 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-draggable: + specifier: ^4.4.5 + version: 4.4.6(react-dom@18.2.0)(react@18.2.0) + react-hook-form: + specifier: ^7.45.1 + version: 7.49.2(react@18.2.0) + react-markdown: + specifier: 9.0.0 + version: 9.0.0(@types/react@18.2.45)(react@18.2.0) + react-pdf: + specifier: ^7.6.0 + version: 7.6.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + react-plotly.js: + specifier: ^2.6.0 + version: 2.6.0(plotly.js@2.27.1)(react@18.2.0) + react-router-dom: + specifier: ^6.6.0 + version: 6.21.0(react-dom@18.2.0)(react@18.2.0) + react-to-print: + specifier: ^2.14.15 + version: 2.14.15(react-dom@18.2.0)(react@18.2.0) + react-toastify: + specifier: ^9.1.1 + version: 9.1.3(react-dom@18.2.0)(react@18.2.0) + reactflow: + specifier: ^11.4.0 + version: 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + remark-gfm: + specifier: ^4.0.0 + version: 4.0.0 + swr: + specifier: ^2.0.0 + version: 2.2.4(react@18.2.0) + typescript: + specifier: '*' + version: 5.3.3 + uuid: + specifier: ^9.0.0 + version: 9.0.1 + vite: + specifier: ^5.0.12 + version: 5.0.12 + vite-plugin-svgr: + specifier: ^4.2.0 + version: 4.2.0(typescript@5.3.3)(vite@5.0.12) + vite-tsconfig-paths: + specifier: ^4.3.1 + version: 4.3.1(typescript@5.3.3)(vite@5.0.12) + web-worker: + specifier: ^1.2.0 + version: 1.2.0 + yup: + specifier: ^1.2.0 + version: 1.3.3 + +devDependencies: + '@typescript-eslint/eslint-plugin': + specifier: ^6.4.0 + version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^6.5.0 + version: 6.14.0(eslint@8.55.0)(typescript@5.3.3) + eslint: + specifier: ^8.0.1 + version: 8.55.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.1.0(eslint@8.55.0) + eslint-config-standard-with-typescript: + specifier: ^39.0.0 + version: 39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3) + eslint-import-resolver-typescript: + specifier: ^3.6.0 + version: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0) + eslint-plugin-import: + specifier: ^2.25.2 + version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-plugin-n: + specifier: '^15.0.0 || ^16.0.0 ' + version: 16.4.0(eslint@8.55.0) + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.1) + eslint-plugin-promise: + specifier: ^6.0.0 + version: 6.1.1(eslint@8.55.0) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.33.2(eslint@8.55.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.55.0) + eslint-plugin-testing-library: + specifier: ^6.0.1 + version: 6.2.0(eslint@8.55.0)(typescript@5.3.3) + prettier: + specifier: ^3.0.3 + version: 3.1.1 + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: false + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/core@7.23.7: + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.8 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: false + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: false + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: false + + /@babel/helpers@7.23.8: + resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: false + + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: false + + /@babel/runtime@7.23.6: + resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + dev: false + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: false + + /@babel/traverse@7.23.7: + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: false + + /@choojs/findup@0.2.1: + resolution: {integrity: sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.22.15 + '@babel/runtime': 7.23.6 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.2 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + dev: false + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + dev: false + + /@emotion/react@11.11.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + '@types/react': 18.2.45 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + dev: false + + /@emotion/serialize@1.1.2: + resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.3 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/babel-plugin': 11.11.0 + '@emotion/is-prop-valid': 1.2.1 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/serialize': 1.1.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) + '@emotion/utils': 1.2.1 + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + dev: false + + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + dev: false + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.55.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.55.0: + resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.5.2: + resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@iconify/react@4.1.1(react@18.2.0): + resolution: {integrity: sha512-jed14EjvKjee8mc0eoscGxlg7mSQRkwQG3iX3cPBCO7UlOjz0DtlvTqxqEcHUJGh+z1VJ31Yhu5B9PxfO0zbdg==} + peerDependencies: + react: '>=16' + dependencies: + '@iconify/types': 2.0.0 + react: 18.2.0 + dev: false + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: false + + /@import-meta-env/cli@0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1): + resolution: {integrity: sha512-Lunsmlj02yVtI5drlhNwIUFAQ0wsIUYIrz0Nm5jbvmYvyEUsxC8Qotnf3gXTfvM9Yuutvuc2+dx4uXpa3DajTg==} + engines: {node: '>= 14'} + hasBin: true + peerDependencies: + '@import-meta-env/babel': ^0.4.3 + '@import-meta-env/swc': ^0.4.5 + '@import-meta-env/unplugin': ^0.4.8 || ^0.5.0 + dotenv: ^11.0.0 || ^12.0.4 || ^13.0.1 || ^14.3.2 || ^15.0.1 || ^16.0.0 + peerDependenciesMeta: + '@import-meta-env/babel': + optional: true + '@import-meta-env/swc': + optional: true + '@import-meta-env/unplugin': + optional: true + dependencies: + '@import-meta-env/unplugin': 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1) + commander: 11.1.0 + dotenv: 16.3.1 + glob: 10.3.10 + picocolors: 1.0.0 + serialize-javascript: 6.0.1 + dev: false + + /@import-meta-env/unplugin@0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1): + resolution: {integrity: sha512-KA/JjnhHp2vrPA27J+IFj/XVDMJz7+jUmyukDAmMoF2uW5q8F3pJySrfl/vySLV1SVxa2b4zg2kuAe5CTIs+Bg==} + engines: {node: '>= 14'} + requiresBuild: true + peerDependencies: + '@import-meta-env/cli': ^0.5.1 || ^0.6.0 + dotenv: ^11.0.0 || ^12.0.4 || ^13.0.1 || ^14.3.2 || ^15.0.1 || ^16.0.0 + peerDependenciesMeta: + '@import-meta-env/cli': + optional: true + dependencies: + '@import-meta-env/cli': 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1) + dotenv: 16.3.1 + magic-string: 0.30.5 + object-hash: 3.0.0 + picocolors: 1.0.0 + unplugin: 1.5.1 + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /@mapbox/geojson-rewind@0.5.2: + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + dependencies: + get-stream: 6.0.1 + minimist: 1.2.8 + dev: false + + /@mapbox/geojson-types@1.0.2: + resolution: {integrity: sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==} + dev: false + + /@mapbox/jsonlint-lines-primitives@2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + + /@mapbox/mapbox-gl-supported@1.5.0(mapbox-gl@1.10.1): + resolution: {integrity: sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==} + peerDependencies: + mapbox-gl: '>=0.32.1 <2.0.0' + dependencies: + mapbox-gl: 1.10.1 + dev: false + + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + requiresBuild: true + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.7.0 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.5.4 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + optional: true + + /@mapbox/point-geometry@0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf@1.2.5: + resolution: {integrity: sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==} + dev: false + + /@mapbox/unitbezier@0.0.0: + resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} + dev: false + + /@mapbox/vector-tile@1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js@3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + dev: false + + /@mui/base@5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) + '@mui/types': 7.2.11(@types/react@18.2.45) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@popperjs/core': 2.11.8 + '@types/react': 18.2.45 + clsx: 2.0.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@mui/core-downloads-tracker@5.15.0: + resolution: {integrity: sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ==} + dev: false + + /@mui/icons-material@5.15.0(@mui/material@5.15.0)(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: false + + /@mui/lab@5.0.0-alpha.156(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@mui/material': '>=5.10.11' + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) + '@mui/types': 7.2.11(@types/react@18.2.45) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + clsx: 2.0.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@mui/material@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.0 + '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) + '@mui/types': 7.2.11(@types/react@18.2.45) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-transition-group': 4.4.10 + clsx: 2.0.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + dev: false + + /@mui/private-theming@5.15.0(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/styled-engine@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/cache': 11.11.0 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/system@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@mui/private-theming': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@mui/styled-engine': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.11(@types/react@18.2.45) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + clsx: 2.0.0 + csstype: 3.1.3 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /@mui/types@7.2.11(@types/react@18.2.45): + resolution: {integrity: sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.45 + dev: false + + /@mui/utils@5.15.0(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/prop-types': 15.7.11 + '@types/react': 18.2.45 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 18.2.0 + dev: false + + /@mui/x-data-grid@6.18.5(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EEVJfQGXNmfLMVgj30ZpUSwx9Q8CZ/qGAYzLoARpLFOvrkGtbG8q5t4/WClkQ8MoDi7kO7TWOQ0AZz1C9/sh5g==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@mui/material': ^5.4.1 + '@mui/system': ^5.4.1 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.23.6 + '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + clsx: 2.0.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + reselect: 4.1.8 + transitivePeerDependencies: + - '@types/react' + dev: false + + /@mui/x-date-pickers@6.18.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3jImYIWP2Xgi608yzm/Sz1v0MTjQQYdZSQOEIi3dWBfSAU9B06KXDpqlXfRSpTV+rtsnfYIIyiWlz6Ltk7sUWw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@emotion/react': ^11.9.0 + '@emotion/styled': ^11.8.1 + '@mui/material': ^5.8.6 + '@mui/system': ^5.8.0 + date-fns: ^2.25.0 + date-fns-jalali: ^2.13.0-0 + dayjs: ^1.10.7 + luxon: ^3.0.2 + moment: ^2.29.4 + moment-hijri: ^2.1.2 + moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + date-fns: + optional: true + date-fns-jalali: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + moment-hijri: + optional: true + moment-jalaali: + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) + '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@types/react-transition-group': 4.4.10 + clsx: 2.0.0 + dayjs: 1.11.10 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + dev: false + + /@nathan-vm/use-storage@0.2.1(react@18.2.0): + resolution: {integrity: sha512-Im1u/XYG9T4mOsXQk1DAnpVWNU2unw/n4AzWzzAJTE+Nt8kT1iP130w1+1Gj4lI7sNTS0dkwzRxUQYTa4EqvjA==} + engines: {node: '>=14'} + requiresBuild: true + peerDependencies: + react: '>=16' + dependencies: + react: 18.2.0 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@plotly/d3-sankey-circular@0.33.1: + resolution: {integrity: sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ==} + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-shape: 1.3.7 + elementary-circuits-directed-graph: 1.3.1 + dev: false + + /@plotly/d3-sankey@0.7.2: + resolution: {integrity: sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==} + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-shape: 1.3.7 + dev: false + + /@plotly/d3@3.8.1: + resolution: {integrity: sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==} + dev: false + + /@plotly/point-cluster@3.1.9: + resolution: {integrity: sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw==} + dependencies: + array-bounds: 1.0.1 + binary-search-bounds: 2.0.5 + clamp: 1.0.1 + defined: 1.0.1 + dtype: 2.0.0 + flatten-vertex-data: 1.0.2 + is-obj: 1.0.1 + math-log2: 1.0.1 + parse-rect: 1.2.0 + pick-by-alias: 1.2.0 + dev: false + + /@plotly/regl@2.1.2: + resolution: {integrity: sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw==} + dev: false + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@reactflow/background@11.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@reactflow/controls@11.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-4QHT92/ACVlZkvV+Hq44bAPV8WbMhkJl+/J0EbXcqQ1+an7cWJsF84eeelJw7R5J76RoaSSpKdsWsL2v7HAVlw==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@reactflow/core@11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GIh3usY1W3eVobx//OO9+Cwm+5evQBBdPGxDaeXwm25UqPMWRI240nXQA5F/5gL5Mwpf0DUC7DR2EmrKNQy+Rw==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@types/d3': 7.4.3 + '@types/d3-drag': 3.0.7 + '@types/d3-selection': 3.0.10 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.4 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@reactflow/minimap@11.7.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kJEtyeQkTZYViLGebVWHVUJROMAGcvejvT+iX4DqKnFb5yK8E8LWlXQpRx2FrL9gDy80mJJaciy7IxnnQKE1bg==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/d3-selection': 3.0.10 + '@types/d3-zoom': 3.0.8 + classcat: 5.0.4 + d3-selection: 3.0.0 + d3-zoom: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@reactflow/node-resizer@2.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1Xb6q97uP7hRBLpog9sRCNfnsHdDgFRGEiU+lQqGgPEAeYwl4nRjWa/sXwH6ajniKxBhGEvrdzOgEFn6CRMcpQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + classcat: 5.0.4 + d3-drag: 3.0.0 + d3-selection: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@reactflow/node-toolbar@1.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JXDEuZ0wKjZ8z7qK2bIst0eZPzNyVEsiHL0e93EyuqT4fA9icoyE0fLq2ryNOOp7MXgId1h7LusnH6ta45F0yQ==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + classcat: 5.0.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /@remix-run/router@1.14.0: + resolution: {integrity: sha512-WOHih+ClN7N8oHk9N4JUiMxQJmRVaOxcg8w7F/oHUXzJt920ekASLI/7cYX8XkntDWRhLZtsk6LbGrkgOAvi5A==} + engines: {node: '>=14.0.0'} + dev: false + + /@rollup/pluginutils@5.1.0: + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + + /@rollup/rollup-android-arm-eabi@4.9.6: + resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-android-arm64@4.9.6: + resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-arm64@4.9.6: + resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-darwin-x64@4.9.6: + resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.6: + resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.6: + resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.6: + resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.6: + resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.6: + resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.6: + resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.6: + resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.6: + resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.6: + resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.7): + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.7): + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + dev: false + + /@svgr/babel-preset@8.1.0(@babel/core@7.23.7): + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.7) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.7) + dev: false + + /@svgr/core@8.1.0(typescript@5.3.3): + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.3.3) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@svgr/hast-util-to-babel-ast@8.0.0: + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + dependencies: + '@babel/types': 7.23.6 + entities: 4.5.0 + dev: false + + /@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0): + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@babel/core': 7.23.7 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + '@svgr/core': 8.1.0(typescript@5.3.3) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@turf/area@6.5.0: + resolution: {integrity: sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/bbox@6.5.0: + resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/centroid@6.5.0: + resolution: {integrity: sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/helpers@6.5.0: + resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} + dev: false + + /@turf/meta@6.5.0: + resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.7 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + dev: false + + /@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: false + + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.6 + dev: false + + /@types/d3-array@3.2.1: + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + dev: false + + /@types/d3-axis@3.0.6: + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: false + + /@types/d3-brush@3.0.6: + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: false + + /@types/d3-chord@3.0.6: + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + dev: false + + /@types/d3-color@3.1.3: + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + dev: false + + /@types/d3-contour@3.0.6: + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.13 + dev: false + + /@types/d3-delaunay@6.0.4: + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + dev: false + + /@types/d3-dispatch@3.0.6: + resolution: {integrity: sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==} + dev: false + + /@types/d3-drag@3.0.7: + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: false + + /@types/d3-dsv@3.0.7: + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + dev: false + + /@types/d3-ease@3.0.2: + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + dev: false + + /@types/d3-fetch@3.0.7: + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + dependencies: + '@types/d3-dsv': 3.0.7 + dev: false + + /@types/d3-force@3.0.9: + resolution: {integrity: sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==} + dev: false + + /@types/d3-format@3.0.4: + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + dev: false + + /@types/d3-geo@3.1.0: + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + dependencies: + '@types/geojson': 7946.0.13 + dev: false + + /@types/d3-hierarchy@3.1.6: + resolution: {integrity: sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw==} + dev: false + + /@types/d3-interpolate@3.0.4: + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + dependencies: + '@types/d3-color': 3.1.3 + dev: false + + /@types/d3-path@3.0.2: + resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + dev: false + + /@types/d3-polygon@3.0.2: + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + dev: false + + /@types/d3-quadtree@3.0.6: + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + dev: false + + /@types/d3-random@3.0.3: + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + dev: false + + /@types/d3-scale-chromatic@3.0.3: + resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} + dev: false + + /@types/d3-scale@4.0.8: + resolution: {integrity: sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==} + dependencies: + '@types/d3-time': 3.0.3 + dev: false + + /@types/d3-selection@3.0.10: + resolution: {integrity: sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==} + dev: false + + /@types/d3-shape@3.1.6: + resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} + dependencies: + '@types/d3-path': 3.0.2 + dev: false + + /@types/d3-time-format@4.0.3: + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + dev: false + + /@types/d3-time@3.0.3: + resolution: {integrity: sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==} + dev: false + + /@types/d3-timer@3.0.2: + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + dev: false + + /@types/d3-transition@3.0.8: + resolution: {integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==} + dependencies: + '@types/d3-selection': 3.0.10 + dev: false + + /@types/d3-zoom@3.0.8: + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.10 + dev: false + + /@types/d3@7.4.3: + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.6 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.9 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.6 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.0.2 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.8 + '@types/d3-scale-chromatic': 3.0.3 + '@types/d3-selection': 3.0.10 + '@types/d3-shape': 3.1.6 + '@types/d3-time': 3.0.3 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.8 + '@types/d3-zoom': 3.0.8 + dev: false + + /@types/debug@4.1.12: + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + dependencies: + '@types/ms': 0.7.34 + dev: false + + /@types/dompurify@3.0.5: + resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==} + dependencies: + '@types/trusted-types': 2.0.7 + dev: false + + /@types/estree-jsx@1.0.3: + resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + dependencies: + '@types/estree': 1.0.5 + dev: false + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: false + + /@types/geojson@7946.0.13: + resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + dev: false + + /@types/hast@2.3.8: + resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /@types/hast@3.0.3: + resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/mdast@4.0.3: + resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /@types/ms@0.7.34: + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + dev: false + + /@types/parse-json@4.0.2: + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + dev: false + + /@types/parse5@6.0.3: + resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} + dev: false + + /@types/plotly.js@2.12.31: + resolution: {integrity: sha512-FmzZQquzgTnQnywzyg7zlTTD4UFOroJ6/ac2KAueLCMQF7c+dwjZxgRohHB7Qzz0dZpFgic0VSkC2re7j6oluQ==} + dev: false + + /@types/prismjs@1.26.3: + resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} + dev: false + + /@types/prop-types@15.7.11: + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + dev: false + + /@types/react-dom@18.2.17: + resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} + dependencies: + '@types/react': 18.2.45 + dev: false + + /@types/react-plotly.js@2.6.3: + resolution: {integrity: sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ==} + dependencies: + '@types/plotly.js': 2.12.31 + '@types/react': 18.2.45 + dev: false + + /@types/react-transition-group@4.4.10: + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + dependencies: + '@types/react': 18.2.45 + dev: false + + /@types/react@18.2.45: + resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + dependencies: + '@types/prop-types': 15.7.11 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + dev: false + + /@types/scheduler@0.16.8: + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + dev: false + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@types/trusted-types@2.0.7: + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + dev: false + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false + + /@types/unist@3.0.2: + resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} + dev: false + + /@types/uuid@9.0.7: + resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + dev: false + + /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/type-utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.14.0 + debug: 4.3.4 + eslint: 8.55.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.14.0 + debug: 4.3.4 + eslint: 8.55.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.14.0: + resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/visitor-keys': 6.14.0 + dev: true + + /@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.55.0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.14.0: + resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3): + resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/visitor-keys': 6.14.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) + eslint: 8.55.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.14.0 + '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) + eslint: 8.55.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.14.0: + resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.14.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@uiw/react-textarea-code-editor@2.1.9(@babel/runtime@7.23.6)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fby8oencLyF1BMAMDVIe4zErb01Qf97G25vJld6mJmgFAbK5TwFW0XUvkxAuNKaLp+EccKf5pejCVHcS/jZ3eA==} + peerDependencies: + '@babel/runtime': '>=7.10.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.23.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehype: 12.0.1 + rehype-prism-plus: 1.6.3 + dev: false + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + /@vitejs/plugin-react@4.2.1(vite@5.0.12): + resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.0 + vite: 5.0.12 + transitivePeerDependencies: + - supports-color + dev: false + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + requiresBuild: true + dev: false + optional: true + + /abs-svg-path@0.1.1: + resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + dev: true + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + requiresBuild: true + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /almost-equal@1.1.0: + resolution: {integrity: sha512-0V/PkoculFl5+0Lp47JoxUcO0xSxhIBvm+BxHdD/OgXNmdRpRHCFnKVuUoWyS9EzQP+otSGv0m9Lb4yVkQBn2A==} + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + requiresBuild: true + dev: false + optional: true + + /are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: false + optional: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /array-bounds@1.0.1: + resolution: {integrity: sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==} + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + dev: false + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-normalize@1.1.4: + resolution: {integrity: sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg==} + dependencies: + array-bounds: 1.0.1 + dev: false + + /array-range@1.0.1: + resolution: {integrity: sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==} + dev: false + + /array-rearrange@2.2.2: + resolution: {integrity: sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==} + dev: false + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.tosorted@1.1.2: + resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /asynciterator.prototype@1.0.0: + resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} + dependencies: + has-symbols: 1.0.3 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axios-mock-adapter@1.22.0(axios@1.6.2): + resolution: {integrity: sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==} + peerDependencies: + axios: '>= 0.17.0' + dependencies: + axios: 1.6.2 + fast-deep-equal: 3.1.3 + is-buffer: 2.0.5 + dev: false + + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.23.6 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + dev: false + + /bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: false + + /binary-search-bounds@2.0.5: + resolution: {integrity: sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==} + dev: false + + /bit-twiddle@1.0.2: + resolution: {integrity: sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==} + dev: false + + /bitmap-sdf@1.0.4: + resolution: {integrity: sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==} + dev: false + + /bl@2.2.1: + resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==} + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + dev: false + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.52 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001570 + electron-to-chromium: 1.4.613 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: false + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: false + + /caniuse-lite@1.0.30001570: + resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} + dev: false + + /canvas-fit@1.5.0: + resolution: {integrity: sha512-onIcjRpz69/Hx5bB5HGbYKUF2uC6QT6Gp+pfpGm3A7mPfcluSLV5v4Zu+oflDUwLdUw0rLIBhUbi0v8hM4FJQQ==} + dependencies: + element-size: 1.1.1 + dev: false + + /canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + nan: 2.18.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + optional: true + + /ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + dev: false + + /character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + dev: false + + /character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + dev: false + + /character-reference-invalid@2.0.1: + resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + dev: false + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + requiresBuild: true + dev: false + optional: true + + /clamp@1.0.1: + resolution: {integrity: sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==} + dev: false + + /classcat@5.0.4: + resolution: {integrity: sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g==} + dev: false + + /client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + dev: false + + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + + /color-alpha@1.0.4: + resolution: {integrity: sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A==} + dependencies: + color-parse: 1.4.3 + dev: false + + /color-alpha@1.1.3: + resolution: {integrity: sha512-krPYBO1RSO5LH4AGb/b6z70O1Ip2o0F0+0cVFN5FN99jfQtZFT08rQyg+9oOBNJYAn3SRwJIFC8jUEOKz7PisA==} + dependencies: + color-parse: 1.4.3 + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-id@1.1.0: + resolution: {integrity: sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==} + dependencies: + clamp: 1.0.1 + dev: false + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-normalize@1.5.0: + resolution: {integrity: sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==} + dependencies: + clamp: 1.0.1 + color-rgba: 2.4.0 + dtype: 2.0.0 + dev: false + + /color-normalize@1.5.2: + resolution: {integrity: sha512-yYMIoyFJmUoKbCK6sBShljBWfkt8DXVfaZJn9/zvRJkF9eQJDbZhcYC6LdOVy40p4tfVwYYb9cXl8oqpu7pzBw==} + dependencies: + color-rgba: 2.4.0 + dtype: 2.0.0 + dev: false + + /color-parse@1.3.8: + resolution: {integrity: sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA==} + dependencies: + color-name: 1.1.4 + defined: 1.0.1 + is-plain-obj: 1.1.0 + dev: false + + /color-parse@1.4.3: + resolution: {integrity: sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==} + dependencies: + color-name: 1.1.4 + dev: false + + /color-rgba@2.1.1: + resolution: {integrity: sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw==} + dependencies: + clamp: 1.0.1 + color-parse: 1.4.3 + color-space: 1.16.0 + dev: false + + /color-rgba@2.4.0: + resolution: {integrity: sha512-Nti4qbzr/z2LbUWySr7H9dk3Rl7gZt7ihHAxlgT4Ho90EXWkjtkL1avTleu9yeGuqrt/chxTB6GKK8nZZ6V0+Q==} + dependencies: + color-parse: 1.4.3 + color-space: 2.0.1 + dev: false + + /color-space@1.16.0: + resolution: {integrity: sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg==} + dependencies: + hsluv: 0.0.3 + mumath: 3.3.4 + dev: false + + /color-space@2.0.1: + resolution: {integrity: sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==} + dev: false + + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + requiresBuild: true + dev: false + optional: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + dev: false + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: false + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: false + + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + requiresBuild: true + dev: false + optional: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: false + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.3.3 + dev: false + + /country-regex@1.1.0: + resolution: {integrity: sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==} + dev: false + + /cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-font-size-keywords@1.0.0: + resolution: {integrity: sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==} + dev: false + + /css-font-stretch-keywords@1.0.1: + resolution: {integrity: sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==} + dev: false + + /css-font-style-keywords@1.0.1: + resolution: {integrity: sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==} + dev: false + + /css-font-weight-keywords@1.0.0: + resolution: {integrity: sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==} + dev: false + + /css-font@1.2.0: + resolution: {integrity: sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==} + dependencies: + css-font-size-keywords: 1.0.0 + css-font-stretch-keywords: 1.0.1 + css-font-style-keywords: 1.0.1 + css-font-weight-keywords: 1.0.0 + css-global-keywords: 1.0.1 + css-system-font-keywords: 1.0.0 + pick-by-alias: 1.2.0 + string-split-by: 1.0.0 + unquote: 1.1.1 + dev: false + + /css-global-keywords@1.0.1: + resolution: {integrity: sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==} + dev: false + + /css-system-font-keywords@1.0.0: + resolution: {integrity: sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==} + dev: false + + /csscolorparser@1.0.3: + resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==} + dev: false + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + dev: false + + /d3-array@1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + dev: false + + /d3-collection@1.0.7: + resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-dispatch@1.0.6: + resolution: {integrity: sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==} + dev: false + + /d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + dev: false + + /d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + dev: false + + /d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + dev: false + + /d3-force@1.2.1: + resolution: {integrity: sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==} + dependencies: + d3-collection: 1.0.7 + d3-dispatch: 1.0.6 + d3-quadtree: 1.0.7 + d3-timer: 1.0.10 + dev: false + + /d3-format@1.4.5: + resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} + dev: false + + /d3-geo-projection@2.9.0: + resolution: {integrity: sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==} + hasBin: true + dependencies: + commander: 2.20.3 + d3-array: 1.2.4 + d3-geo: 1.12.1 + resolve: 1.22.8 + dev: false + + /d3-geo@1.12.1: + resolution: {integrity: sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==} + dependencies: + d3-array: 1.2.4 + dev: false + + /d3-hierarchy@1.1.9: + resolution: {integrity: sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==} + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + dev: false + + /d3-quadtree@1.0.7: + resolution: {integrity: sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==} + dev: false + + /d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + dev: false + + /d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + dependencies: + d3-path: 1.0.9 + dev: false + + /d3-time-format@2.3.0: + resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} + dependencies: + d3-time: 1.1.0 + dev: false + + /d3-time@1.1.0: + resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} + dev: false + + /d3-timer@1.0.10: + resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + dev: false + + /d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + dev: false + + /d3-transition@3.0.1(d3-selection@3.0.0): + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + dev: false + + /d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + dev: false + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: false + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: false + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + dependencies: + character-entities: 2.0.2 + dev: false + + /decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + mimic-response: 2.1.0 + dev: false + optional: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + requiresBuild: true + dev: false + optional: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + dev: false + + /detect-kerning@2.1.2: + resolution: {integrity: sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==} + dev: false + + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + requiresBuild: true + dev: false + optional: true + + /devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + dependencies: + dequal: 2.0.3 + dev: false + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dependencies: + '@babel/runtime': 7.23.6 + csstype: 3.1.3 + dev: false + + /dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: false + + /dotenv@16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + engines: {node: '>=12'} + dev: false + + /draw-svg-path@1.0.0: + resolution: {integrity: sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg==} + dependencies: + abs-svg-path: 0.1.1 + normalize-svg-path: 0.1.0 + dev: false + + /dtype@2.0.0: + resolution: {integrity: sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==} + engines: {node: '>= 0.8.0'} + dev: false + + /dup@1.0.0: + resolution: {integrity: sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==} + dev: false + + /duplexify@3.7.1: + resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 2.3.8 + stream-shift: 1.0.1 + dev: false + + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /electron-to-chromium@1.4.613: + resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} + dev: false + + /element-size@1.1.1: + resolution: {integrity: sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ==} + dev: false + + /elementary-circuits-directed-graph@1.3.1: + resolution: {integrity: sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ==} + dependencies: + strongly-connected-components: 1.0.1 + dev: false + + /elkjs@0.8.2: + resolution: {integrity: sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==} + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + requiresBuild: true + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: false + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: false + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-iterator-helpers@1.0.15: + resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-set-tostringtag: 2.0.2 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + iterator.prototype: 1.1.2 + safe-array-concat: 1.0.1 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext@0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: false + + /es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: false + + /es6-symbol@3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: false + + /es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: false + + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + dev: false + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: false + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: false + + /escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: false + + /eslint-compat-utils@0.1.2(eslint@8.55.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.55.0 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.55.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.55.0 + dev: true + + /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^6.4.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + typescript: '*' + dependencies: + '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + eslint: 8.55.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-plugin-n: 16.4.0(eslint@8.55.0) + eslint-plugin-promise: 6.1.1(eslint@8.55.0) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.55.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-plugin-n: 16.4.0(eslint@8.55.0) + eslint-plugin-promise: 6.1.1(eslint@8.55.0) + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.55.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + debug: 3.2.7 + eslint: 8.55.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es-x@7.5.0(eslint@8.55.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.55.0 + eslint-compat-utils: 0.1.2(eslint@8.55.0) + dev: true + + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.55.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-n@16.4.0(eslint@8.55.0): + resolution: {integrity: sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + builtins: 5.0.1 + eslint: 8.55.0 + eslint-plugin-es-x: 7.5.0(eslint@8.55.0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.1): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.55.0 + eslint-config-prettier: 9.1.0(eslint@8.55.0) + prettier: 3.1.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.6 + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.55.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.55.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.55.0): + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.55.0 + dev: true + + /eslint-plugin-react@7.33.2(eslint@8.55.0): + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.7 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.2 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.15 + eslint: 8.55.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.7 + object.fromentries: 2.0.7 + object.hasown: 1.1.3 + object.values: 1.1.7 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.10 + dev: true + + /eslint-plugin-testing-library@6.2.0(eslint@8.55.0)(typescript@5.3.3): + resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) + eslint: 8.55.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.55.0: + resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.55.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-util-is-identifier-name@3.0.0: + resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} + dev: false + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: false + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: false + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: false + + /falafel@2.2.5: + resolution: {integrity: sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==} + engines: {node: '>=0.4.0'} + dependencies: + acorn: 7.4.1 + isarray: 2.0.5 + dev: false + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-isnumeric@1.1.4: + resolution: {integrity: sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==} + dependencies: + is-string-blank: 1.0.1 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /flatten-vertex-data@1.0.2: + resolution: {integrity: sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==} + dependencies: + dtype: 2.0.0 + dev: false + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /font-atlas@2.1.0: + resolution: {integrity: sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==} + dependencies: + css-font: 1.2.0 + dev: false + + /font-measure@1.2.2: + resolution: {integrity: sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA==} + dependencies: + css-font: 1.2.0 + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /from2@2.3.0: + resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + dev: false + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + requiresBuild: true + dependencies: + minipass: 3.3.6 + dev: false + optional: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + optional: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: false + + /geojson-vt@3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} + dev: false + + /get-canvas-context@1.0.2: + resolution: {integrity: sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==} + dev: false + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + + /gl-mat4@1.2.0: + resolution: {integrity: sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==} + dev: false + + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false + + /gl-text@1.3.1: + resolution: {integrity: sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w==} + dependencies: + bit-twiddle: 1.0.2 + color-normalize: 1.5.2 + css-font: 1.2.0 + detect-kerning: 2.1.2 + es6-weak-map: 2.0.3 + flatten-vertex-data: 1.0.2 + font-atlas: 2.1.0 + font-measure: 1.2.2 + gl-util: 3.1.3 + is-plain-obj: 1.1.0 + object-assign: 4.1.1 + parse-rect: 1.2.0 + parse-unit: 1.0.1 + pick-by-alias: 1.2.0 + regl: 2.1.0 + to-px: 1.1.0 + typedarray-pool: 1.2.0 + dev: false + + /gl-util@3.1.3: + resolution: {integrity: sha512-dvRTggw5MSkJnCbh74jZzSoTOGnVYK+Bt+Ckqm39CVcl6+zSsxqWk4lr5NKhkqXHL6qvZAU9h17ZF8mIskY9mA==} + dependencies: + is-browser: 2.1.0 + is-firefox: 1.0.3 + is-plain-obj: 1.1.0 + number-is-integer: 1.0.1 + object-assign: 4.1.1 + pick-by-alias: 1.2.0 + weak-map: 1.0.8 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: false + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false + + /glsl-inject-defines@1.0.3: + resolution: {integrity: sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==} + dependencies: + glsl-token-inject-block: 1.1.0 + glsl-token-string: 1.0.1 + glsl-tokenizer: 2.1.5 + dev: false + + /glsl-resolve@0.0.1: + resolution: {integrity: sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==} + dependencies: + resolve: 0.6.3 + xtend: 2.2.0 + dev: false + + /glsl-token-assignments@2.0.2: + resolution: {integrity: sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==} + dev: false + + /glsl-token-defines@1.0.0: + resolution: {integrity: sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==} + dependencies: + glsl-tokenizer: 2.1.5 + dev: false + + /glsl-token-depth@1.1.2: + resolution: {integrity: sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==} + dev: false + + /glsl-token-descope@1.0.2: + resolution: {integrity: sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==} + dependencies: + glsl-token-assignments: 2.0.2 + glsl-token-depth: 1.1.2 + glsl-token-properties: 1.0.1 + glsl-token-scope: 1.1.2 + dev: false + + /glsl-token-inject-block@1.1.0: + resolution: {integrity: sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==} + dev: false + + /glsl-token-properties@1.0.1: + resolution: {integrity: sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==} + dev: false + + /glsl-token-scope@1.1.2: + resolution: {integrity: sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==} + dev: false + + /glsl-token-string@1.0.1: + resolution: {integrity: sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==} + dev: false + + /glsl-token-whitespace-trim@1.0.0: + resolution: {integrity: sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==} + dev: false + + /glsl-tokenizer@2.1.5: + resolution: {integrity: sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==} + dependencies: + through2: 0.6.5 + dev: false + + /glslify-bundle@5.1.1: + resolution: {integrity: sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==} + dependencies: + glsl-inject-defines: 1.0.3 + glsl-token-defines: 1.0.0 + glsl-token-depth: 1.1.2 + glsl-token-descope: 1.0.2 + glsl-token-scope: 1.1.2 + glsl-token-string: 1.0.1 + glsl-token-whitespace-trim: 1.0.0 + glsl-tokenizer: 2.1.5 + murmurhash-js: 1.0.0 + shallow-copy: 0.0.1 + dev: false + + /glslify-deps@1.3.2: + resolution: {integrity: sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==} + dependencies: + '@choojs/findup': 0.2.1 + events: 3.3.0 + glsl-resolve: 0.0.1 + glsl-tokenizer: 2.1.5 + graceful-fs: 4.2.11 + inherits: 2.0.4 + map-limit: 0.0.1 + resolve: 1.22.8 + dev: false + + /glslify@7.1.1: + resolution: {integrity: sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog==} + hasBin: true + dependencies: + bl: 2.2.1 + concat-stream: 1.6.2 + duplexify: 3.7.1 + falafel: 2.2.5 + from2: 2.3.0 + glsl-resolve: 0.0.1 + glsl-token-whitespace-trim: 1.0.0 + glslify-bundle: 5.1.1 + glslify-deps: 1.3.2 + minimist: 1.2.8 + resolve: 1.22.8 + stack-trace: 0.0.9 + static-eval: 2.1.0 + through2: 2.0.5 + xtend: 4.0.2 + dev: false + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /grid-index@1.1.0: + resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-hover@1.0.1: + resolution: {integrity: sha512-0G6w7LnlcpyDzpeGUTuT0CEw05+QlMuGVk1IHNAlHrGJITGodjZu3x8BNDUMfKJSZXNB2ZAclqc1bvrd+uUpfg==} + dependencies: + is-browser: 2.1.0 + dev: false + + /has-passive-events@1.0.0: + resolution: {integrity: sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==} + dependencies: + is-browser: 2.1.0 + dev: false + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + requiresBuild: true + dev: false + optional: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hast-util-from-parse5@7.1.2: + resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} + dependencies: + '@types/hast': 2.3.8 + '@types/unist': 2.0.10 + hastscript: 7.2.0 + property-information: 6.4.0 + vfile: 5.3.7 + vfile-location: 4.1.0 + web-namespaces: 2.0.1 + dev: false + + /hast-util-parse-selector@3.1.1: + resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} + dependencies: + '@types/hast': 2.3.8 + dev: false + + /hast-util-raw@7.2.3: + resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} + dependencies: + '@types/hast': 2.3.8 + '@types/parse5': 6.0.3 + hast-util-from-parse5: 7.1.2 + hast-util-to-parse5: 7.1.0 + html-void-elements: 2.0.1 + parse5: 6.0.1 + unist-util-position: 4.0.4 + unist-util-visit: 4.1.2 + vfile: 5.3.7 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-html@8.0.4: + resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} + dependencies: + '@types/hast': 2.3.8 + '@types/unist': 2.0.10 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-raw: 7.2.3 + hast-util-whitespace: 2.0.1 + html-void-elements: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.3 + zwitch: 2.0.4 + dev: false + + /hast-util-to-jsx-runtime@2.3.0: + resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} + dependencies: + '@types/estree': 1.0.5 + '@types/hast': 3.0.3 + '@types/unist': 3.0.2 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 1.0.5 + unist-util-position: 5.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /hast-util-to-parse5@7.1.0: + resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} + dependencies: + '@types/hast': 2.3.8 + comma-separated-tokens: 2.0.3 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + web-namespaces: 2.0.1 + zwitch: 2.0.4 + dev: false + + /hast-util-to-string@2.0.0: + resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} + dependencies: + '@types/hast': 2.3.8 + dev: false + + /hast-util-whitespace@2.0.1: + resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} + dev: false + + /hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + dependencies: + '@types/hast': 3.0.3 + dev: false + + /hastscript@7.2.0: + resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} + dependencies: + '@types/hast': 2.3.8 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 3.1.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + dev: false + + /hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: false + + /hsluv@0.0.3: + resolution: {integrity: sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ==} + dev: false + + /html-url-attributes@3.0.0: + resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} + dev: false + + /html-void-elements@2.0.1: + resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==} + dev: false + + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + requiresBuild: true + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: false + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /inline-style-parser@0.2.2: + resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} + dev: false + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /is-alphabetical@2.0.1: + resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} + dev: false + + /is-alphanumerical@2.0.1: + resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} + dependencies: + is-alphabetical: 2.0.1 + is-decimal: 2.0.1 + dev: false + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: false + + /is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-browser@2.1.0: + resolution: {integrity: sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==} + dev: false + + /is-buffer@2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: false + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal@2.0.1: + resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} + dev: false + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-finite@1.1.0: + resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} + engines: {node: '>=0.10.0'} + dev: false + + /is-firefox@1.0.3: + resolution: {integrity: sha512-6Q9ITjvWIm0Xdqv+5U12wgOKEM2KoBw4Y926m0OFkvlCxnbG94HKAsVz8w3fWcfAS5YA2fJORXX1dLrkprCCxA==} + engines: {node: '>=0.10.0'} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + requiresBuild: true + dev: false + + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal@2.0.1: + resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + dev: false + + /is-iexplorer@1.0.0: + resolution: {integrity: sha512-YeLzceuwg3K6O0MLM3UyUUjKAlyULetwryFp1mHy1I5PfArK0AEqlfa+MR4gkJjcbuJXoDJCvXbyqZVf5CR2Sg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-mobile@4.0.0: + resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} + dev: false + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: false + + /is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + dev: false + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string-blank@1.0.1: + resolution: {integrity: sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==} + dev: false + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-svg-path@1.0.2: + resolution: {integrity: sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==} + dev: false + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: false + + /jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.7 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.1.7 + dev: true + + /kdbush@3.0.0: + resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lie@3.1.1: + resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} + dependencies: + immediate: 3.0.6 + dev: false + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: false + + /localforage@1.10.0: + resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} + dependencies: + lie: 3.1.1 + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + dev: false + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: false + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: false + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + + /make-cancellable-promise@1.3.2: + resolution: {integrity: sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==} + dev: false + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + semver: 6.3.1 + dev: false + optional: true + + /make-event-props@1.6.2: + resolution: {integrity: sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==} + dev: false + + /map-limit@0.0.1: + resolution: {integrity: sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==} + dependencies: + once: 1.3.3 + dev: false + + /mapbox-gl@1.10.1: + resolution: {integrity: sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg==} + engines: {node: '>=6.4.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/geojson-types': 1.0.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.10.1) + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 1.2.5 + '@mapbox/unitbezier': 0.0.0 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + csscolorparser: 1.0.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + grid-index: 1.1.0 + minimist: 1.2.8 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 1.0.2 + quickselect: 2.0.0 + rw: 1.3.3 + supercluster: 7.1.5 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + dev: false + + /markdown-table@3.0.3: + resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} + dev: false + + /math-log2@1.0.1: + resolution: {integrity: sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA==} + engines: {node: '>=0.10.0'} + dev: false + + /mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + dependencies: + '@types/mdast': 4.0.3 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /mdast-util-from-markdown@2.0.0: + resolution: {integrity: sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==} + dependencies: + '@types/mdast': 4.0.3 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.0.1 + dev: false + + /mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + markdown-table: 3.0.3 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + dependencies: + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-gfm-autolink-literal: 2.0.0 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-expression@2.0.0: + resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdx-jsx@3.0.0: + resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + parse-entities: 4.0.1 + stringify-entities: 4.0.3 + unist-util-remove-position: 5.0.0 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-mdxjs-esm@2.0.1: + resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /mdast-util-phrasing@4.0.0: + resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + dependencies: + '@types/mdast': 4.0.3 + unist-util-is: 6.0.0 + dev: false + + /mdast-util-to-hast@13.0.2: + resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + dependencies: + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + '@ungap/structured-clone': 1.2.0 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.0 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.0.0 + dev: false + + /mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + dependencies: + '@types/mdast': 4.0.3 + '@types/unist': 3.0.2 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.0.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + dev: false + + /mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + dependencies: + '@types/mdast': 4.0.3 + dev: false + + /merge-refs@1.2.2(@types/react@18.2.45): + resolution: {integrity: sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.45 + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromark-core-commonmark@2.0.0: + resolution: {integrity: sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA==} + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-autolink-literal@2.0.0: + resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-footnote@2.0.0: + resolution: {integrity: sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg==} + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-table@2.0.0: + resolution: {integrity: sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm-task-list-item@2.0.1: + resolution: {integrity: sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw==} + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + dependencies: + micromark-extension-gfm-autolink-literal: 2.0.0 + micromark-extension-gfm-footnote: 2.0.0 + micromark-extension-gfm-strikethrough: 2.0.0 + micromark-extension-gfm-table: 2.0.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.0.1 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-character@2.0.1: + resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + dev: false + + /micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + dev: false + + /micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + dependencies: + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + dependencies: + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + dependencies: + micromark-util-character: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + dev: false + + /micromark-util-subtokenize@2.0.0: + resolution: {integrity: sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg==} + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: false + + /micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + dev: false + + /micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + dev: false + + /micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + requiresBuild: true + dev: false + optional: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + yallist: 4.0.0 + dev: false + optional: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + requiresBuild: true + dev: false + optional: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + requiresBuild: true + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: false + optional: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + requiresBuild: true + dev: false + optional: true + + /mouse-change@1.4.0: + resolution: {integrity: sha512-vpN0s+zLL2ykyyUDh+fayu9Xkor5v/zRD9jhSqjRS1cJTGS0+oakVZzNm5n19JvvEj0you+MXlYTpNxUDQUjkQ==} + dependencies: + mouse-event: 1.0.5 + dev: false + + /mouse-event-offset@3.0.2: + resolution: {integrity: sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w==} + dev: false + + /mouse-event@1.0.5: + resolution: {integrity: sha512-ItUxtL2IkeSKSp9cyaX2JLUuKk2uMoxBg4bbOWVd29+CskYJR9BGsUqtXenNzKbnDshvupjUewDIYVrOB6NmGw==} + dev: false + + /mouse-wheel@1.2.0: + resolution: {integrity: sha512-+OfYBiUOCTWcTECES49neZwL5AoGkXE+lFjIvzwNCnYRlso+EnfvovcBxGoyQ0yQt806eSPjS675K0EwWknXmw==} + dependencies: + right-now: 1.0.0 + signum: 1.0.0 + to-px: 1.1.0 + dev: false + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /mumath@3.3.4: + resolution: {integrity: sha512-VAFIOG6rsxoc7q/IaY3jdjmrsuX9f15KlRLYTHmixASBZkZEKC1IFqE2BC5CdhXmK6WLM1Re33z//AGmeRI6FA==} + deprecated: Redundant dependency in your project. + dependencies: + almost-equal: 1.1.0 + dev: false + + /murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + requiresBuild: true + dev: false + optional: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /native-promise-only@0.8.1: + resolution: {integrity: sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==} + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /needle@2.9.1: + resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.4.24 + sax: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: false + + /next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: false + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: false + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + requiresBuild: true + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + optional: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: false + + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + requiresBuild: true + dependencies: + abbrev: 1.1.1 + dev: false + optional: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + + /normalize-svg-path@0.1.0: + resolution: {integrity: sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA==} + dev: false + + /normalize-svg-path@1.1.0: + resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==} + dependencies: + svg-arc-to-cubic-bezier: 3.2.0 + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + requiresBuild: true + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: false + optional: true + + /number-is-integer@1.0.1: + resolution: {integrity: sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg==} + engines: {node: '>=0.10.0'} + dependencies: + is-finite: 1.1.0 + dev: false + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: false + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries@1.1.7: + resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + dependencies: + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /once@1.3.3: + resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} + dependencies: + wrappy: 1.0.2 + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + dev: false + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parenthesis@3.1.8: + resolution: {integrity: sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==} + dev: false + + /parse-entities@4.0.1: + resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} + dependencies: + '@types/unist': 2.0.10 + character-entities: 2.0.2 + character-entities-legacy: 3.0.0 + character-reference-invalid: 2.0.1 + decode-named-character-reference: 1.0.2 + is-alphanumerical: 2.0.1 + is-decimal: 2.0.1 + is-hexadecimal: 2.0.1 + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: false + + /parse-numeric-range@1.3.0: + resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} + dev: false + + /parse-rect@1.2.0: + resolution: {integrity: sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==} + dependencies: + pick-by-alias: 1.2.0 + dev: false + + /parse-svg-path@0.1.2: + resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} + dev: false + + /parse-unit@1.0.1: + resolution: {integrity: sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==} + dev: false + + /parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /path2d-polyfill@2.0.1: + resolution: {integrity: sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA==} + engines: {node: '>=8'} + requiresBuild: true + dev: false + optional: true + + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false + + /pdfjs-dist@3.11.174: + resolution: {integrity: sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA==} + engines: {node: '>=18'} + optionalDependencies: + canvas: 2.11.2 + path2d-polyfill: 2.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: false + + /pick-by-alias@1.2.0: + resolution: {integrity: sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /plotly.js@2.27.1: + resolution: {integrity: sha512-XeE0zTJWTxURYrUJqzf73l8lTb+HnyRvvhHkoSIEvWf58ins4saopo9l25kCm+xHAGz8E/2EOncE4DyXsJ34kA==} + dependencies: + '@plotly/d3': 3.8.1 + '@plotly/d3-sankey': 0.7.2 + '@plotly/d3-sankey-circular': 0.33.1 + '@turf/area': 6.5.0 + '@turf/bbox': 6.5.0 + '@turf/centroid': 6.5.0 + canvas-fit: 1.5.0 + color-alpha: 1.0.4 + color-normalize: 1.5.0 + color-parse: 1.3.8 + color-rgba: 2.1.1 + country-regex: 1.1.0 + d3-force: 1.2.1 + d3-format: 1.4.5 + d3-geo: 1.12.1 + d3-geo-projection: 2.9.0 + d3-hierarchy: 1.1.9 + d3-interpolate: 3.0.1 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + fast-isnumeric: 1.1.4 + gl-mat4: 1.2.0 + gl-text: 1.3.1 + glslify: 7.1.1 + has-hover: 1.0.1 + has-passive-events: 1.0.0 + is-mobile: 4.0.0 + mapbox-gl: 1.10.1 + mouse-change: 1.4.0 + mouse-event-offset: 3.0.2 + mouse-wheel: 1.2.0 + native-promise-only: 0.8.1 + parse-svg-path: 0.1.2 + point-in-polygon: 1.1.0 + polybooljs: 1.2.0 + probe-image-size: 7.2.3 + regl: /@plotly/regl@2.1.2 + regl-error2d: 2.0.12 + regl-line2d: 3.1.2 + regl-scatter2d: 3.2.9 + regl-splom: 1.0.14 + strongly-connected-components: 1.0.1 + superscript-text: 1.0.0 + svg-path-sdf: 1.1.3 + tinycolor2: 1.6.0 + to-px: 1.0.1 + topojson-client: 3.1.0 + webgl-context: 2.2.0 + world-calendars: 1.0.3 + transitivePeerDependencies: + - supports-color + dev: false + + /point-in-polygon@1.1.0: + resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==} + dev: false + + /polybooljs@1.2.0: + resolution: {integrity: sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ==} + dev: false + + /postcss@8.4.33: + resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /potpack@1.0.2: + resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} + dev: false + + /prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /probe-image-size@7.2.3: + resolution: {integrity: sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==} + dependencies: + lodash.merge: 4.6.2 + needle: 2.9.1 + stream-parser: 0.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + dev: false + + /property-information@6.4.0: + resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} + dev: false + + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: false + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /react-dom@18.2.0(react@18.2.0): + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-draggable@4.4.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw==} + peerDependencies: + react: '>= 16.3.0' + react-dom: '>= 16.3.0' + dependencies: + clsx: 1.2.1 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-hook-form@7.49.2(react@18.2.0): + resolution: {integrity: sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA==} + engines: {node: '>=18', pnpm: '8'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + react: 18.2.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: false + + /react-markdown@9.0.0(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA==} + peerDependencies: + '@types/react': '>=18' + react: '>=18' + dependencies: + '@types/hast': 3.0.3 + '@types/react': 18.2.45 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.0 + html-url-attributes: 3.0.0 + mdast-util-to-hast: 13.0.2 + micromark-util-sanitize-uri: 2.0.0 + react: 18.2.0 + remark-parse: 11.0.0 + remark-rehype: 11.0.0 + unified: 11.0.4 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: false + + /react-pdf@7.6.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-b2/8V6xhe5pn4Y01ELKTQZ+RhdZl1KpSAMGbN+HCZ/kwhYTIc4Pn5ctz1wRQUu1gOJbIEG4CcjMD9vTCzNdwjw==} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 18.2.45 + clsx: 2.0.0 + make-cancellable-promise: 1.3.2 + make-event-props: 1.6.2 + merge-refs: 1.2.2(@types/react@18.2.45) + pdfjs-dist: 3.11.174 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + + /react-plotly.js@2.6.0(plotly.js@2.27.1)(react@18.2.0): + resolution: {integrity: sha512-g93xcyhAVCSt9kV1svqG1clAEdL6k3U+jjuSzfTV7owaSU9Go6Ph8bl25J+jKfKvIGAEYpe4qj++WHJuc9IaeA==} + peerDependencies: + plotly.js: '>1.34.0' + react: '>0.13.0' + dependencies: + plotly.js: 2.27.1 + prop-types: 15.8.1 + react: 18.2.0 + dev: false + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: false + + /react-router-dom@6.21.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1dUdVj3cwc1npzJaf23gulB562ESNvxf7E4x8upNJycqyUm5BRRZ6dd3LrlzhtLaMrwOCO8R0zoiYxdaJx4LlQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.14.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.21.0(react@18.2.0) + dev: false + + /react-router@6.21.0(react@18.2.0): + resolution: {integrity: sha512-hGZ0HXbwz3zw52pLZV3j3+ec+m/PQ9cTpBvqjFQmy2XVUWGn5MD+31oXHb6dVTxYzmAeaiUBYjkoNz66n3RGCg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.14.0 + react: 18.2.0 + dev: false + + /react-to-print@2.14.15(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-SKnwOzU2cJ8eaAkoJO7+gNhvfEDmm+Y34IdcHsjtHioUevUPhprqbVtvNJlZ2JkGJ8ExK2QNWM9pXECTDR5D8w==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-toastify@9.1.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg==} + peerDependencies: + react: '>=16' + react-dom: '>=16' + dependencies: + clsx: 1.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + dependencies: + '@babel/runtime': 7.23.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: false + + /reactflow@11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Q616fElAc5/N37tMwjuRkkgm/VgmnLLTNNCj61z5mvJxae+/VXZQMfot1K6a5LLz9G3SVKqU97PMb9Ga1PRXew==} + peerDependencies: + react: '>=17' + react-dom: '>=17' + dependencies: + '@reactflow/background': 11.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/controls': 11.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/minimap': 11.7.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-resizer': 2.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-toolbar': 1.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - immer + dev: false + + /readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + requiresBuild: true + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + optional: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + + /reflect.getprototypeof@1.0.4: + resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /refractor@4.8.1: + resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} + dependencies: + '@types/hast': 2.3.8 + '@types/prismjs': 1.26.3 + hastscript: 7.2.0 + parse-entities: 4.0.1 + dev: false + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + dev: false + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regl-error2d@2.0.12: + resolution: {integrity: sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==} + dependencies: + array-bounds: 1.0.1 + color-normalize: 1.5.2 + flatten-vertex-data: 1.0.2 + object-assign: 4.1.1 + pick-by-alias: 1.2.0 + to-float32: 1.1.0 + update-diff: 1.1.0 + dev: false + + /regl-line2d@3.1.2: + resolution: {integrity: sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ==} + dependencies: + array-bounds: 1.0.1 + array-find-index: 1.0.2 + array-normalize: 1.1.4 + color-normalize: 1.5.2 + earcut: 2.2.4 + es6-weak-map: 2.0.3 + flatten-vertex-data: 1.0.2 + glslify: 7.1.1 + object-assign: 4.1.1 + parse-rect: 1.2.0 + pick-by-alias: 1.2.0 + to-float32: 1.1.0 + dev: false + + /regl-scatter2d@3.2.9: + resolution: {integrity: sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg==} + dependencies: + '@plotly/point-cluster': 3.1.9 + array-range: 1.0.1 + array-rearrange: 2.2.2 + clamp: 1.0.1 + color-id: 1.1.0 + color-normalize: 1.5.2 + color-rgba: 2.4.0 + flatten-vertex-data: 1.0.2 + glslify: 7.1.1 + is-iexplorer: 1.0.0 + object-assign: 4.1.1 + parse-rect: 1.2.0 + pick-by-alias: 1.2.0 + to-float32: 1.1.0 + update-diff: 1.1.0 + dev: false + + /regl-splom@1.0.14: + resolution: {integrity: sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==} + dependencies: + array-bounds: 1.0.1 + array-range: 1.0.1 + color-alpha: 1.1.3 + flatten-vertex-data: 1.0.2 + parse-rect: 1.2.0 + pick-by-alias: 1.2.0 + raf: 3.4.1 + regl-scatter2d: 3.2.9 + dev: false + + /regl@2.1.0: + resolution: {integrity: sha512-oWUce/aVoEvW5l2V0LK7O5KJMzUSKeiOwFuJehzpSFd43dO5spP9r+sSUfhKtsky4u6MCqWJaRL+abzExynfTg==} + dev: false + + /rehype-parse@8.0.5: + resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} + dependencies: + '@types/hast': 2.3.8 + hast-util-from-parse5: 7.1.2 + parse5: 6.0.1 + unified: 10.1.2 + dev: false + + /rehype-prism-plus@1.6.3: + resolution: {integrity: sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw==} + dependencies: + hast-util-to-string: 2.0.0 + parse-numeric-range: 1.3.0 + refractor: 4.8.1 + rehype-parse: 8.0.5 + unist-util-filter: 4.0.1 + unist-util-visit: 4.1.2 + dev: false + + /rehype-stringify@9.0.4: + resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} + dependencies: + '@types/hast': 2.3.8 + hast-util-to-html: 8.0.4 + unified: 10.1.2 + dev: false + + /rehype@12.0.1: + resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} + dependencies: + '@types/hast': 2.3.8 + rehype-parse: 8.0.5 + rehype-stringify: 9.0.4 + unified: 10.1.2 + dev: false + + /remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-from-markdown: 2.0.0 + micromark-util-types: 2.0.0 + unified: 11.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /remark-rehype@11.0.0: + resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + dependencies: + '@types/hast': 3.0.3 + '@types/mdast': 4.0.3 + mdast-util-to-hast: 13.0.2 + unified: 11.0.4 + vfile: 6.0.1 + dev: false + + /remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + dependencies: + '@types/mdast': 4.0.3 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.4 + dev: false + + /reselect@4.1.8: + resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + dev: false + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false + + /resolve@0.6.3: + resolution: {integrity: sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==} + dev: false + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /right-now@1.0.0: + resolution: {integrity: sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg==} + dev: false + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup@4.9.6: + resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.6 + '@rollup/rollup-android-arm64': 4.9.6 + '@rollup/rollup-darwin-arm64': 4.9.6 + '@rollup/rollup-darwin-x64': 4.9.6 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 + '@rollup/rollup-linux-arm64-gnu': 4.9.6 + '@rollup/rollup-linux-arm64-musl': 4.9.6 + '@rollup/rollup-linux-riscv64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-gnu': 4.9.6 + '@rollup/rollup-linux-x64-musl': 4.9.6 + '@rollup/rollup-win32-arm64-msvc': 4.9.6 + '@rollup/rollup-win32-ia32-msvc': 4.9.6 + '@rollup/rollup-win32-x64-msvc': 4.9.6 + fsevents: 2.3.3 + dev: false + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + + /scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + dev: false + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + requiresBuild: true + dev: false + optional: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /shallow-copy@0.0.1: + resolution: {integrity: sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==} + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /signum@1.0.0: + resolution: {integrity: sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==} + dev: false + + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + requiresBuild: true + dev: false + optional: true + + /simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + requiresBuild: true + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + optional: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + dependencies: + dot-case: 3.0.4 + tslib: 2.6.2 + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + requiresBuild: true + dev: false + optional: true + + /space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + dev: false + + /stack-trace@0.0.9: + resolution: {integrity: sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==} + dev: false + + /static-eval@2.1.0: + resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} + dependencies: + escodegen: 1.14.3 + dev: false + + /stream-parser@0.3.1: + resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} + dependencies: + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /stream-shift@1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: false + + /string-split-by@1.0.0: + resolution: {integrity: sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==} + dependencies: + parenthesis: 3.1.8 + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 + set-function-name: 2.0.1 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + requiresBuild: true + dependencies: + safe-buffer: 5.2.1 + dev: false + optional: true + + /stringify-entities@4.0.3: + resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==} + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strongly-connected-components@1.0.1: + resolution: {integrity: sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==} + dev: false + + /style-to-object@1.0.5: + resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==} + dependencies: + inline-style-parser: 0.2.2 + dev: false + + /stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + dev: false + + /supercluster@7.1.5: + resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} + dependencies: + kdbush: 3.0.0 + dev: false + + /superscript-text@1.0.0: + resolution: {integrity: sha512-gwu8l5MtRZ6koO0icVTlmN5pm7Dhh1+Xpe9O4x6ObMAsW+3jPbW14d1DsBq1F4wiI+WOFjXF35pslgec/G8yCQ==} + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-arc-to-cubic-bezier@3.2.0: + resolution: {integrity: sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==} + dev: false + + /svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: false + + /svg-path-bounds@1.0.2: + resolution: {integrity: sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ==} + dependencies: + abs-svg-path: 0.1.1 + is-svg-path: 1.0.2 + normalize-svg-path: 1.1.0 + parse-svg-path: 0.1.2 + dev: false + + /svg-path-sdf@1.1.3: + resolution: {integrity: sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg==} + dependencies: + bitmap-sdf: 1.0.4 + draw-svg-path: 1.0.0 + is-svg-path: 1.0.2 + parse-svg-path: 0.1.2 + svg-path-bounds: 1.0.2 + dev: false + + /swr@2.2.4(react@18.2.0): + resolution: {integrity: sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + client-only: 0.0.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /synckit@0.8.6: + resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + optional: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /through2@0.6.5: + resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==} + dependencies: + readable-stream: 1.0.34 + xtend: 4.0.2 + dev: false + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + dev: false + + /tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + dev: false + + /tiny-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: false + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: false + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: false + + /to-float32@1.1.0: + resolution: {integrity: sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg==} + dev: false + + /to-px@1.0.1: + resolution: {integrity: sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw==} + dependencies: + parse-unit: 1.0.1 + dev: false + + /to-px@1.1.0: + resolution: {integrity: sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw==} + dependencies: + parse-unit: 1.0.1 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /topojson-client@3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + requiresBuild: true + dev: false + optional: true + + /trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + dev: false + + /trough@2.1.0: + resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + dev: false + + /ts-api-utils@1.0.3(typescript@5.3.3): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /tsconfck@3.0.1(typescript@5.3.3): + resolution: {integrity: sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg==} + engines: {node: ^18 || >=20} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 5.3.3 + dev: false + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tsutils@3.21.0(typescript@5.3.3): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.3.3 + dev: true + + /type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: false + + /type@1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: false + + /type@2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: false + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typedarray-pool@1.2.0: + resolution: {integrity: sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==} + dependencies: + bit-twiddle: 1.0.2 + dup: 1.0.0 + dev: false + + /typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: false + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /unified@10.1.2: + resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} + dependencies: + '@types/unist': 2.0.10 + bail: 2.0.2 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 5.3.7 + dev: false + + /unified@11.0.4: + resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==} + dependencies: + '@types/unist': 3.0.2 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.1.0 + vfile: 6.0.1 + dev: false + + /unist-util-filter@4.0.1: + resolution: {integrity: sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /unist-util-is@5.2.1: + resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-position@4.0.4: + resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + dependencies: + '@types/unist': 3.0.2 + unist-util-visit: 5.0.0 + dev: false + + /unist-util-stringify-position@3.0.3: + resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + dependencies: + '@types/unist': 3.0.2 + dev: false + + /unist-util-visit-parents@5.1.3: + resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + dev: false + + /unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + dev: false + + /unist-util-visit@4.1.2: + resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} + dependencies: + '@types/unist': 2.0.10 + unist-util-is: 5.2.1 + unist-util-visit-parents: 5.1.3 + dev: false + + /unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + dependencies: + '@types/unist': 3.0.2 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + dev: false + + /unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: false + + /unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + dev: false + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + + /update-diff@1.1.0: + resolution: {integrity: sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==} + dev: false + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /vfile-location@4.1.0: + resolution: {integrity: sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==} + dependencies: + '@types/unist': 2.0.10 + vfile: 5.3.7 + dev: false + + /vfile-message@3.1.4: + resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} + dependencies: + '@types/unist': 2.0.10 + unist-util-stringify-position: 3.0.3 + dev: false + + /vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + dev: false + + /vfile@5.3.7: + resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} + dependencies: + '@types/unist': 2.0.10 + is-buffer: 2.0.5 + unist-util-stringify-position: 3.0.3 + vfile-message: 3.1.4 + dev: false + + /vfile@6.0.1: + resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} + dependencies: + '@types/unist': 3.0.2 + unist-util-stringify-position: 4.0.0 + vfile-message: 4.0.2 + dev: false + + /vite-plugin-svgr@4.2.0(typescript@5.3.3)(vite@5.0.12): + resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} + peerDependencies: + vite: ^2.6.0 || 3 || 4 || 5 + dependencies: + '@rollup/pluginutils': 5.1.0 + '@svgr/core': 8.1.0(typescript@5.3.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) + vite: 5.0.12 + transitivePeerDependencies: + - rollup + - supports-color + - typescript + dev: false + + /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.12): + resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} + peerDependencies: + vite: '*' + peerDependenciesMeta: + vite: + optional: true + dependencies: + debug: 4.3.4 + globrex: 0.1.2 + tsconfck: 3.0.1(typescript@5.3.3) + vite: 5.0.12 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /vite@5.0.12: + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.19.11 + postcss: 8.4.33 + rollup: 4.9.6 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 + dev: false + + /weak-map@1.0.8: + resolution: {integrity: sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==} + dev: false + + /web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + dev: false + + /web-worker@1.2.0: + resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + dev: false + + /webgl-context@2.2.0: + resolution: {integrity: sha512-q/fGIivtqTT7PEoF07axFIlHNk/XCPaYpq64btnepopSWvKNFkoORlQYgqDigBIuGA1ExnFd/GnSUnBNEPQY7Q==} + dependencies: + get-canvas-context: 1.0.2 + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + requiresBuild: true + dev: false + optional: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + requiresBuild: true + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + optional: true + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.13 + dev: true + + /which-collection@1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + requiresBuild: true + dependencies: + string-width: 4.2.3 + dev: false + optional: true + + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: false + + /world-calendars@1.0.3: + resolution: {integrity: sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==} + dependencies: + object-assign: 4.1.1 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /xtend@2.2.0: + resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} + engines: {node: '>=0.4'} + dev: false + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: false + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /yup@1.3.3: + resolution: {integrity: sha512-v8QwZSsHH2K3/G9WSkp6mZKO+hugKT1EmnMqLNUcfu51HU9MDyhlETT/JgtzprnrnQHPWsjc6MUDMBp/l9fNnw==} + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + dev: false + + /zustand@4.4.7(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.2.45 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: false + + /zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + dev: false diff --git a/frontend/yarn.lock b/frontend/yarn.lock deleted file mode 100644 index 15375ae1..00000000 --- a/frontend/yarn.lock +++ /dev/null @@ -1,7566 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@aashutoshrathi/word-wrap@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" - integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== - -"@ampproject/remapping@^2.2.0": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== - dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" - -"@babel/compat-data@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" - integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== - -"@babel/core@^7.21.3": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.7.tgz#4d8016e06a14b5f92530a13ed0561730b5c6483f" - integrity sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.7" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/core@^7.23.5": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.6.tgz#8be77cd77c55baadcc1eae1c33df90ab6d2151d4" - integrity sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.23.6" - "@babel/parser" "^7.23.6" - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.6" - "@babel/types" "^7.23.6" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== - dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" - jsesc "^2.5.1" - -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== - dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" - integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== - dependencies: - "@babel/types" "^7.22.15" - -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" - -"@babel/helper-plugin-utils@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" - integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== - -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" - integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.6.tgz#d03af2ee5fb34691eec0cda90f5ecbb4d4da145a" - integrity sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.6" - "@babel/types" "^7.23.6" - -"@babel/helpers@^7.23.7": - version "7.23.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.8.tgz#fc6b2d65b16847fd50adddbd4232c76378959e34" - integrity sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ== - dependencies: - "@babel/template" "^7.22.15" - "@babel/traverse" "^7.23.7" - "@babel/types" "^7.23.6" - -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.6.tgz#ba1c9e512bda72a47e285ae42aff9d2a635a9e3b" - integrity sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ== - -"@babel/plugin-transform-react-jsx-self@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz#ed3e7dadde046cce761a8e3cf003a13d1a7972d9" - integrity sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/plugin-transform-react-jsx-source@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz#03527006bdc8775247a78643c51d4e715fe39a3e" - integrity sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g== - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - -"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.6.tgz#c05e610dc228855dc92ef1b53d07389ed8ab521d" - integrity sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" - integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/parser" "^7.22.15" - "@babel/types" "^7.22.15" - -"@babel/traverse@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.6.tgz#b53526a2367a0dd6edc423637f3d2d0f2521abc5" - integrity sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.23.7": - version "7.23.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.7.tgz#9a7bf285c928cb99b5ead19c3b1ce5b310c9c305" - integrity sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.6" - "@babel/types" "^7.23.6" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.21.3", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.6.tgz#be33fdb151e1f5a56877d704492c240fc71c7ccd" - integrity sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@choojs/findup@^0.2.0": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3" - integrity sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw== - dependencies: - commander "^2.15.1" - -"@emotion/babel-plugin@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c" - integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/runtime" "^7.18.3" - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/serialize" "^1.1.2" - babel-plugin-macros "^3.1.0" - convert-source-map "^1.5.0" - escape-string-regexp "^4.0.0" - find-root "^1.1.0" - source-map "^0.5.7" - stylis "4.2.0" - -"@emotion/cache@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" - integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ== - dependencies: - "@emotion/memoize" "^0.8.1" - "@emotion/sheet" "^1.2.2" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - stylis "4.2.0" - -"@emotion/hash@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" - integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== - -"@emotion/is-prop-valid@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz#23116cf1ed18bfeac910ec6436561ecb1a3885cc" - integrity sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw== - dependencies: - "@emotion/memoize" "^0.8.1" - -"@emotion/memoize@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" - integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== - -"@emotion/react@^11.11.1": - version "11.11.1" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157" - integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.2" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" - hoist-non-react-statics "^3.3.1" - -"@emotion/serialize@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.2.tgz#017a6e4c9b8a803bd576ff3d52a0ea6fa5a62b51" - integrity sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA== - dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" - csstype "^3.0.2" - -"@emotion/sheet@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" - integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== - -"@emotion/styled@^11.11.0": - version "11.11.0" - resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" - integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng== - dependencies: - "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/is-prop-valid" "^1.2.1" - "@emotion/serialize" "^1.1.2" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - -"@emotion/unitless@^0.8.1": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" - integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== - -"@emotion/use-insertion-effect-with-fallbacks@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" - integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== - -"@emotion/utils@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" - integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== - -"@emotion/weak-memoize@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" - integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== - -"@esbuild/aix-ppc64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" - integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== - -"@esbuild/android-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" - integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== - -"@esbuild/android-arm@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" - integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== - -"@esbuild/android-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" - integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== - -"@esbuild/darwin-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" - integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== - -"@esbuild/darwin-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" - integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== - -"@esbuild/freebsd-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" - integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== - -"@esbuild/freebsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" - integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== - -"@esbuild/linux-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" - integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== - -"@esbuild/linux-arm@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" - integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== - -"@esbuild/linux-ia32@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" - integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== - -"@esbuild/linux-loong64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" - integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== - -"@esbuild/linux-mips64el@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" - integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== - -"@esbuild/linux-ppc64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" - integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== - -"@esbuild/linux-riscv64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" - integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== - -"@esbuild/linux-s390x@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" - integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== - -"@esbuild/linux-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" - integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== - -"@esbuild/netbsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" - integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== - -"@esbuild/openbsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" - integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== - -"@esbuild/sunos-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" - integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== - -"@esbuild/win32-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" - integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== - -"@esbuild/win32-ia32@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" - integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== - -"@esbuild/win32-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" - integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== - -"@eslint-community/eslint-utils@^4.1.2", "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== - dependencies: - eslint-visitor-keys "^3.3.0" - -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" - integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA== - -"@eslint/eslintrc@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" - integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.6.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@8.55.0": - version "8.55.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.55.0.tgz#b721d52060f369aa259cf97392403cb9ce892ec6" - integrity sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA== - -"@floating-ui/core@^1.4.2": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.2.tgz#53a0f7a98c550e63134d504f26804f6b83dbc071" - integrity sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A== - dependencies: - "@floating-ui/utils" "^0.1.3" - -"@floating-ui/dom@^1.5.1": - version "1.5.3" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" - integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== - dependencies: - "@floating-ui/core" "^1.4.2" - "@floating-ui/utils" "^0.1.3" - -"@floating-ui/react-dom@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.4.tgz#b076fafbdfeb881e1d86ae748b7ff95150e9f3ec" - integrity sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ== - dependencies: - "@floating-ui/dom" "^1.5.1" - -"@floating-ui/utils@^0.1.3": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" - integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== - -"@humanwhocodes/config-array@^0.11.13": - version "0.11.13" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" - integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== - dependencies: - "@humanwhocodes/object-schema" "^2.0.1" - debug "^4.1.1" - minimatch "^3.0.5" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/object-schema@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" - integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== - -"@iconify/react@^4.1.1": - version "4.1.1" - resolved "https://registry.yarnpkg.com/@iconify/react/-/react-4.1.1.tgz#da1bf03cdca9427f07cf22cf5b63fa8f02db4722" - integrity sha512-jed14EjvKjee8mc0eoscGxlg7mSQRkwQG3iX3cPBCO7UlOjz0DtlvTqxqEcHUJGh+z1VJ31Yhu5B9PxfO0zbdg== - dependencies: - "@iconify/types" "^2.0.0" - -"@iconify/types@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" - integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== - -"@import-meta-env/cli@^0.6.6": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@import-meta-env/cli/-/cli-0.6.8.tgz#85e932ba53f85755aafb18a906525be834965593" - integrity sha512-Lunsmlj02yVtI5drlhNwIUFAQ0wsIUYIrz0Nm5jbvmYvyEUsxC8Qotnf3gXTfvM9Yuutvuc2+dx4uXpa3DajTg== - dependencies: - commander "11.1.0" - glob "10.3.10" - picocolors "1.0.0" - serialize-javascript "6.0.1" - -"@import-meta-env/unplugin@^0.4.10": - version "0.4.10" - resolved "https://registry.yarnpkg.com/@import-meta-env/unplugin/-/unplugin-0.4.10.tgz#f01e9ddd497b0ee9dad8d96921009705869eb812" - integrity sha512-KA/JjnhHp2vrPA27J+IFj/XVDMJz7+jUmyukDAmMoF2uW5q8F3pJySrfl/vySLV1SVxa2b4zg2kuAe5CTIs+Bg== - dependencies: - magic-string "^0.30.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - unplugin "^1.5.0" - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - 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" - -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.20" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" - integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@mapbox/geojson-rewind@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz#591a5d71a9cd1da1a0bf3420b3bea31b0fc7946a" - integrity sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA== - dependencies: - get-stream "^6.0.1" - minimist "^1.2.6" - -"@mapbox/geojson-types@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz#9aecf642cb00eab1080a57c4f949a65b4a5846d6" - integrity sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw== - -"@mapbox/jsonlint-lines-primitives@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" - integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ== - -"@mapbox/mapbox-gl-supported@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" - integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== - -"@mapbox/node-pre-gyp@^1.0.0": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz#417db42b7f5323d79e93b34a6d7a2a12c0df43fa" - integrity sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ== - dependencies: - detect-libc "^2.0.0" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.7" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" - -"@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" - integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ== - -"@mapbox/tiny-sdf@^1.1.1": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" - integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== - -"@mapbox/unitbezier@^0.0.0": - version "0.0.0" - resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" - integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA== - -"@mapbox/vector-tile@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz#d3a74c90402d06e89ec66de49ec817ff53409666" - integrity sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw== - dependencies: - "@mapbox/point-geometry" "~0.1.0" - -"@mapbox/whoots-js@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" - integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== - -"@mui/base@5.0.0-beta.27", "@mui/base@^5.0.0-beta.22": - version "5.0.0-beta.27" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.27.tgz#21a9c7d954a5f88f6706dfee630154c651ee73af" - integrity sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA== - dependencies: - "@babel/runtime" "^7.23.5" - "@floating-ui/react-dom" "^2.0.4" - "@mui/types" "^7.2.11" - "@mui/utils" "^5.15.0" - "@popperjs/core" "^2.11.8" - clsx "^2.0.0" - prop-types "^15.8.1" - -"@mui/core-downloads-tracker@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.0.tgz#6b45d5bff38f305402d24d3bf86075b56c578909" - integrity sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ== - -"@mui/icons-material@^5.11.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.15.0.tgz#fdc93611ca77ce3b79128be02fb6c1ae79b972b8" - integrity sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ== - dependencies: - "@babel/runtime" "^7.23.5" - -"@mui/lab@^5.0.0-alpha.155": - version "5.0.0-alpha.156" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.156.tgz#9fee3a408ded367ab4fe84275789155b65dee7e7" - integrity sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog== - dependencies: - "@babel/runtime" "^7.23.5" - "@mui/base" "5.0.0-beta.27" - "@mui/system" "^5.15.0" - "@mui/types" "^7.2.11" - "@mui/utils" "^5.15.0" - clsx "^2.0.0" - prop-types "^15.8.1" - -"@mui/material@^5.14.20": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.0.tgz#f801cf56d505cc52dca225438360ab9c62057285" - integrity sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA== - dependencies: - "@babel/runtime" "^7.23.5" - "@mui/base" "5.0.0-beta.27" - "@mui/core-downloads-tracker" "^5.15.0" - "@mui/system" "^5.15.0" - "@mui/types" "^7.2.11" - "@mui/utils" "^5.15.0" - "@types/react-transition-group" "^4.4.9" - clsx "^2.0.0" - csstype "^3.1.2" - prop-types "^15.8.1" - react-is "^18.2.0" - react-transition-group "^4.4.5" - -"@mui/private-theming@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.0.tgz#96de66ce097ba417e1b6b769cd67cbf516bd8876" - integrity sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA== - dependencies: - "@babel/runtime" "^7.23.5" - "@mui/utils" "^5.15.0" - prop-types "^15.8.1" - -"@mui/styled-engine@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.15.0.tgz#44e068dbb855699053b9e6e4e6d3ed5efe98b7d9" - integrity sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ== - dependencies: - "@babel/runtime" "^7.23.5" - "@emotion/cache" "^11.11.0" - csstype "^3.1.2" - prop-types "^15.8.1" - -"@mui/system@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.0.tgz#d4f6fd65ad8e404d4d7c7b56d755d2a63b0edddb" - integrity sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ== - dependencies: - "@babel/runtime" "^7.23.5" - "@mui/private-theming" "^5.15.0" - "@mui/styled-engine" "^5.15.0" - "@mui/types" "^7.2.11" - "@mui/utils" "^5.15.0" - clsx "^2.0.0" - csstype "^3.1.2" - prop-types "^15.8.1" - -"@mui/types@^7.2.11": - version "7.2.11" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.11.tgz#36b99a88f8010dc716128e568dc05681a69dc7ae" - integrity sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w== - -"@mui/utils@^5.14.16", "@mui/utils@^5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.0.tgz#87b4db92dd2ddf3e2676377427f50662124013b4" - integrity sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA== - dependencies: - "@babel/runtime" "^7.23.5" - "@types/prop-types" "^15.7.11" - prop-types "^15.8.1" - react-is "^18.2.0" - -"@mui/x-data-grid@^6.15.0": - version "6.18.5" - resolved "https://registry.yarnpkg.com/@mui/x-data-grid/-/x-data-grid-6.18.5.tgz#b8d866cb9eebb379148b90f4acea7b4095573ae7" - integrity sha512-EEVJfQGXNmfLMVgj30ZpUSwx9Q8CZ/qGAYzLoARpLFOvrkGtbG8q5t4/WClkQ8MoDi7kO7TWOQ0AZz1C9/sh5g== - dependencies: - "@babel/runtime" "^7.23.2" - "@mui/utils" "^5.14.16" - clsx "^2.0.0" - prop-types "^15.8.1" - reselect "^4.1.8" - -"@mui/x-date-pickers@^6.5.0": - version "6.18.5" - resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-6.18.5.tgz#a2a70ce2926f0acb8ee414b546ba1f7daf399c21" - integrity sha512-3jImYIWP2Xgi608yzm/Sz1v0MTjQQYdZSQOEIi3dWBfSAU9B06KXDpqlXfRSpTV+rtsnfYIIyiWlz6Ltk7sUWw== - dependencies: - "@babel/runtime" "^7.23.2" - "@mui/base" "^5.0.0-beta.22" - "@mui/utils" "^5.14.16" - "@types/react-transition-group" "^4.4.8" - clsx "^2.0.0" - prop-types "^15.8.1" - react-transition-group "^4.4.5" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@pkgr/utils@^2.4.2": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@pkgr/utils/-/utils-2.4.2.tgz#9e638bbe9a6a6f165580dc943f138fd3309a2cbc" - integrity sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw== - dependencies: - cross-spawn "^7.0.3" - fast-glob "^3.3.0" - is-glob "^4.0.3" - open "^9.1.0" - picocolors "^1.0.0" - tslib "^2.6.0" - -"@plotly/d3-sankey-circular@0.33.1": - version "0.33.1" - resolved "https://registry.yarnpkg.com/@plotly/d3-sankey-circular/-/d3-sankey-circular-0.33.1.tgz#15d1e0337e0e4b1135bdf0e2195c88adacace1a7" - integrity sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ== - dependencies: - d3-array "^1.2.1" - d3-collection "^1.0.4" - d3-shape "^1.2.0" - elementary-circuits-directed-graph "^1.0.4" - -"@plotly/d3-sankey@0.7.2": - version "0.7.2" - resolved "https://registry.yarnpkg.com/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz#ddd5290d3b02c60037ced018a162644a2ccef33b" - integrity sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw== - dependencies: - d3-array "1" - d3-collection "1" - d3-shape "^1.2.0" - -"@plotly/d3@3.8.1": - version "3.8.1" - resolved "https://registry.yarnpkg.com/@plotly/d3/-/d3-3.8.1.tgz#674bf19809ffcc359e0ab388a1051f2dac5e6877" - integrity sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg== - -"@plotly/point-cluster@^3.1.9": - version "3.1.9" - resolved "https://registry.yarnpkg.com/@plotly/point-cluster/-/point-cluster-3.1.9.tgz#8ffec77fbf5041bf15401079e4fdf298220291c1" - integrity sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw== - dependencies: - array-bounds "^1.0.1" - binary-search-bounds "^2.0.4" - clamp "^1.0.1" - defined "^1.0.0" - dtype "^2.0.0" - flatten-vertex-data "^1.0.2" - is-obj "^1.0.1" - math-log2 "^1.0.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - -"@popperjs/core@^2.11.8": - version "2.11.8" - resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" - integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== - -"@reactflow/background@11.3.6": - version "11.3.6" - resolved "https://registry.yarnpkg.com/@reactflow/background/-/background-11.3.6.tgz#10f51a8915903cf5cf4a447963e5a01831498f79" - integrity sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg== - dependencies: - "@reactflow/core" "11.10.1" - classcat "^5.0.3" - zustand "^4.4.1" - -"@reactflow/controls@11.2.6": - version "11.2.6" - resolved "https://registry.yarnpkg.com/@reactflow/controls/-/controls-11.2.6.tgz#20ef4f14550b43cceec39350132dbdd3f849bb6c" - integrity sha512-4QHT92/ACVlZkvV+Hq44bAPV8WbMhkJl+/J0EbXcqQ1+an7cWJsF84eeelJw7R5J76RoaSSpKdsWsL2v7HAVlw== - dependencies: - "@reactflow/core" "11.10.1" - classcat "^5.0.3" - zustand "^4.4.1" - -"@reactflow/core@11.10.1": - version "11.10.1" - resolved "https://registry.yarnpkg.com/@reactflow/core/-/core-11.10.1.tgz#c2b46cb166a883562d2f751e1d3e9f867a7b0424" - integrity sha512-GIh3usY1W3eVobx//OO9+Cwm+5evQBBdPGxDaeXwm25UqPMWRI240nXQA5F/5gL5Mwpf0DUC7DR2EmrKNQy+Rw== - dependencies: - "@types/d3" "^7.4.0" - "@types/d3-drag" "^3.0.1" - "@types/d3-selection" "^3.0.3" - "@types/d3-zoom" "^3.0.1" - classcat "^5.0.3" - d3-drag "^3.0.0" - d3-selection "^3.0.0" - d3-zoom "^3.0.0" - zustand "^4.4.1" - -"@reactflow/minimap@11.7.6": - version "11.7.6" - resolved "https://registry.yarnpkg.com/@reactflow/minimap/-/minimap-11.7.6.tgz#99c6dc511252e0dd2afa8db62f1594a6d30da935" - integrity sha512-kJEtyeQkTZYViLGebVWHVUJROMAGcvejvT+iX4DqKnFb5yK8E8LWlXQpRx2FrL9gDy80mJJaciy7IxnnQKE1bg== - dependencies: - "@reactflow/core" "11.10.1" - "@types/d3-selection" "^3.0.3" - "@types/d3-zoom" "^3.0.1" - classcat "^5.0.3" - d3-selection "^3.0.0" - d3-zoom "^3.0.0" - zustand "^4.4.1" - -"@reactflow/node-resizer@2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@reactflow/node-resizer/-/node-resizer-2.2.6.tgz#7cc23c2774980a76e488621453076e9a35b7e37a" - integrity sha512-1Xb6q97uP7hRBLpog9sRCNfnsHdDgFRGEiU+lQqGgPEAeYwl4nRjWa/sXwH6ajniKxBhGEvrdzOgEFn6CRMcpQ== - dependencies: - "@reactflow/core" "11.10.1" - classcat "^5.0.4" - d3-drag "^3.0.0" - d3-selection "^3.0.0" - zustand "^4.4.1" - -"@reactflow/node-toolbar@1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@reactflow/node-toolbar/-/node-toolbar-1.3.6.tgz#ec9f5cb89575d58c2f1a5b610022159d2fcf6dfe" - integrity sha512-JXDEuZ0wKjZ8z7qK2bIst0eZPzNyVEsiHL0e93EyuqT4fA9icoyE0fLq2ryNOOp7MXgId1h7LusnH6ta45F0yQ== - dependencies: - "@reactflow/core" "11.10.1" - classcat "^5.0.3" - zustand "^4.4.1" - -"@remix-run/router@1.14.0": - version "1.14.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.0.tgz#9bc39a5a3a71b81bdb310eba6def5bc3966695b7" - integrity sha512-WOHih+ClN7N8oHk9N4JUiMxQJmRVaOxcg8w7F/oHUXzJt920ekASLI/7cYX8XkntDWRhLZtsk6LbGrkgOAvi5A== - -"@rollup/pluginutils@^5.0.5": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - -"@rollup/rollup-android-arm-eabi@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" - integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== - -"@rollup/rollup-android-arm64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" - integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== - -"@rollup/rollup-darwin-arm64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" - integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== - -"@rollup/rollup-darwin-x64@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" - integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== - -"@rollup/rollup-linux-arm-gnueabihf@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" - integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== - -"@rollup/rollup-linux-arm64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" - integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== - -"@rollup/rollup-linux-arm64-musl@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" - integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== - -"@rollup/rollup-linux-riscv64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" - integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== - -"@rollup/rollup-linux-x64-gnu@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" - integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== - -"@rollup/rollup-linux-x64-musl@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" - integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== - -"@rollup/rollup-win32-arm64-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" - integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== - -"@rollup/rollup-win32-ia32-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" - integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== - -"@rollup/rollup-win32-x64-msvc@4.9.6": - version "4.9.6" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" - integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== - -"@svgr/babel-plugin-add-jsx-attribute@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" - integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== - -"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" - integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== - -"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" - integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== - -"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" - integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== - -"@svgr/babel-plugin-svg-dynamic-title@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" - integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== - -"@svgr/babel-plugin-svg-em-dimensions@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" - integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== - -"@svgr/babel-plugin-transform-react-native-svg@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" - integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== - -"@svgr/babel-plugin-transform-svg-component@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" - integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== - -"@svgr/babel-preset@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" - integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== - dependencies: - "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" - "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" - "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" - "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" - "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" - "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" - "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" - "@svgr/babel-plugin-transform-svg-component" "8.0.0" - -"@svgr/core@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" - integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== - dependencies: - "@babel/core" "^7.21.3" - "@svgr/babel-preset" "8.1.0" - camelcase "^6.2.0" - cosmiconfig "^8.1.3" - snake-case "^3.0.4" - -"@svgr/hast-util-to-babel-ast@8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" - integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== - dependencies: - "@babel/types" "^7.21.3" - entities "^4.4.0" - -"@svgr/plugin-jsx@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" - integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== - dependencies: - "@babel/core" "^7.21.3" - "@svgr/babel-preset" "8.1.0" - "@svgr/hast-util-to-babel-ast" "8.0.0" - svg-parser "^2.0.4" - -"@turf/area@^6.4.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/area/-/area-6.5.0.tgz#1d0d7aee01d8a4a3d4c91663ed35cc615f36ad56" - integrity sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/meta" "^6.5.0" - -"@turf/bbox@^6.4.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.5.0.tgz#bec30a744019eae420dac9ea46fb75caa44d8dc5" - integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/meta" "^6.5.0" - -"@turf/centroid@^6.0.2": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/centroid/-/centroid-6.5.0.tgz#ecaa365412e5a4d595bb448e7dcdacfb49eb0009" - integrity sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/meta" "^6.5.0" - -"@turf/helpers@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e" - integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== - -"@turf/meta@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.5.0.tgz#b725c3653c9f432133eaa04d3421f7e51e0418ca" - integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA== - dependencies: - "@turf/helpers" "^6.5.0" - -"@types/babel__core@^7.20.5": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" - integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.7" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.7.tgz#a7aebf15c7bc0eb9abd638bdb5c0b8700399c9d0" - integrity sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" - integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.20.4" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.4.tgz#ec2c06fed6549df8bc0eb4615b683749a4a92e1b" - integrity sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA== - dependencies: - "@babel/types" "^7.20.7" - -"@types/d3-array@*": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" - integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== - -"@types/d3-axis@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" - integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-brush@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" - integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-chord@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" - integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== - -"@types/d3-color@*": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" - integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== - -"@types/d3-contour@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" - integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== - dependencies: - "@types/d3-array" "*" - "@types/geojson" "*" - -"@types/d3-delaunay@*": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" - integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== - -"@types/d3-dispatch@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz#096efdf55eb97480e3f5621ff9a8da552f0961e7" - integrity sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ== - -"@types/d3-drag@*", "@types/d3-drag@^3.0.1": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" - integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-dsv@*": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" - integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== - -"@types/d3-ease@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" - integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== - -"@types/d3-fetch@*": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" - integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== - dependencies: - "@types/d3-dsv" "*" - -"@types/d3-force@*": - version "3.0.9" - resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.9.tgz#dd96ccefba4386fe4ff36b8e4ee4e120c21fcf29" - integrity sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA== - -"@types/d3-format@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" - integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== - -"@types/d3-geo@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" - integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== - dependencies: - "@types/geojson" "*" - -"@types/d3-hierarchy@*": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.6.tgz#8d3638df273ec90da34b3ac89d8784c59708cb0d" - integrity sha512-qlmD/8aMk5xGorUvTUWHCiumvgaUXYldYjNVOWtYoTYY/L+WwIEAmJxUmTgr9LoGNG0PPAOmqMDJVDPc7DOpPw== - -"@types/d3-interpolate@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" - integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.0.2.tgz#4327f4a05d475cf9be46a93fc2e0f8d23380805a" - integrity sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA== - -"@types/d3-polygon@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" - integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== - -"@types/d3-quadtree@*": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" - integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== - -"@types/d3-random@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.3.tgz#ed995c71ecb15e0cd31e22d9d5d23942e3300cfb" - integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== - -"@types/d3-scale-chromatic@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz#fc0db9c10e789c351f4c42d96f31f2e4df8f5644" - integrity sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw== - -"@types/d3-scale@*": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" - integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== - dependencies: - "@types/d3-time" "*" - -"@types/d3-selection@*", "@types/d3-selection@^3.0.3": - version "3.0.10" - resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.10.tgz#98cdcf986d0986de6912b5892e7c015a95ca27fe" - integrity sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg== - -"@types/d3-shape@*": - version "3.1.6" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.6.tgz#65d40d5a548f0a023821773e39012805e6e31a72" - integrity sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA== - dependencies: - "@types/d3-path" "*" - -"@types/d3-time-format@*": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" - integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== - -"@types/d3-time@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" - integrity sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== - -"@types/d3-timer@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" - integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== - -"@types/d3-transition@*": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.8.tgz#677707f5eed5b24c66a1918cde05963021351a8f" - integrity sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ== - dependencies: - "@types/d3-selection" "*" - -"@types/d3-zoom@*", "@types/d3-zoom@^3.0.1": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" - integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== - dependencies: - "@types/d3-interpolate" "*" - "@types/d3-selection" "*" - -"@types/d3@^7.4.0": - version "7.4.3" - resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" - integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== - dependencies: - "@types/d3-array" "*" - "@types/d3-axis" "*" - "@types/d3-brush" "*" - "@types/d3-chord" "*" - "@types/d3-color" "*" - "@types/d3-contour" "*" - "@types/d3-delaunay" "*" - "@types/d3-dispatch" "*" - "@types/d3-drag" "*" - "@types/d3-dsv" "*" - "@types/d3-ease" "*" - "@types/d3-fetch" "*" - "@types/d3-force" "*" - "@types/d3-format" "*" - "@types/d3-geo" "*" - "@types/d3-hierarchy" "*" - "@types/d3-interpolate" "*" - "@types/d3-path" "*" - "@types/d3-polygon" "*" - "@types/d3-quadtree" "*" - "@types/d3-random" "*" - "@types/d3-scale" "*" - "@types/d3-scale-chromatic" "*" - "@types/d3-selection" "*" - "@types/d3-shape" "*" - "@types/d3-time" "*" - "@types/d3-time-format" "*" - "@types/d3-timer" "*" - "@types/d3-transition" "*" - "@types/d3-zoom" "*" - -"@types/debug@^4.0.0": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/dompurify@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-3.0.5.tgz#02069a2fcb89a163bacf1a788f73cb415dd75cb7" - integrity sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg== - dependencies: - "@types/trusted-types" "*" - -"@types/estree-jsx@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.3.tgz#f8aa833ec986d82b8271a294a92ed1565bf2c66a" - integrity sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w== - dependencies: - "@types/estree" "*" - -"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -"@types/geojson@*": - version "7946.0.13" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.13.tgz#e6e77ea9ecf36564980a861e24e62a095988775e" - integrity sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ== - -"@types/hast@^2.0.0": - version "2.3.8" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.8.tgz#4ac5caf38b262b7bd5ca3202dda71f0271635660" - integrity sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ== - dependencies: - "@types/unist" "^2" - -"@types/hast@^3.0.0": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.3.tgz#7f75e6b43bc3f90316046a287d9ad3888309f7e1" - integrity sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ== - dependencies: - "@types/unist" "*" - -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/mdast@^4.0.0": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.3.tgz#1e011ff013566e919a4232d1701ad30d70cab333" - integrity sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg== - dependencies: - "@types/unist" "*" - -"@types/ms@*": - version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== - -"@types/parse-json@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" - integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== - -"@types/parse5@^6.0.0": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" - integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== - -"@types/plotly.js@*": - version "2.12.31" - resolved "https://registry.yarnpkg.com/@types/plotly.js/-/plotly.js-2.12.31.tgz#fb4651bdd819baf746bd0a793dd4de35e30d0ccd" - integrity sha512-FmzZQquzgTnQnywzyg7zlTTD4UFOroJ6/ac2KAueLCMQF7c+dwjZxgRohHB7Qzz0dZpFgic0VSkC2re7j6oluQ== - -"@types/prismjs@^1.0.0": - version "1.26.3" - resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.3.tgz#47fe8e784c2dee24fe636cab82e090d3da9b7dec" - integrity sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw== - -"@types/prop-types@*", "@types/prop-types@^15.7.11": - version "15.7.11" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" - integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== - -"@types/react-dom@^18.0.9": - version "18.2.17" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.17.tgz#375c55fab4ae671bd98448dcfa153268d01d6f64" - integrity sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg== - dependencies: - "@types/react" "*" - -"@types/react-plotly.js@^2.6.3": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/react-plotly.js/-/react-plotly.js-2.6.3.tgz#49829a5c4f011345d09f6cab692f7ddbf558cbfb" - integrity sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ== - dependencies: - "@types/plotly.js" "*" - "@types/react" "*" - -"@types/react-transition-group@^4.4.8", "@types/react-transition-group@^4.4.9": - version "4.4.10" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.10.tgz#6ee71127bdab1f18f11ad8fb3322c6da27c327ac" - integrity sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q== - dependencies: - "@types/react" "*" - -"@types/react@*", "@types/react@>=18": - version "18.2.45" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.45.tgz#253f4fac288e7e751ab3dc542000fb687422c15c" - integrity sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg== - dependencies: - "@types/prop-types" "*" - "@types/scheduler" "*" - csstype "^3.0.2" - -"@types/scheduler@*": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - -"@types/semver@^7.3.12", "@types/semver@^7.5.0": - version "7.5.6" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" - integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== - -"@types/trusted-types@*": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" - integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== - -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" - integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== - -"@types/unist@^2", "@types/unist@^2.0.0": - version "2.0.10" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" - integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== - -"@types/uuid@^9.0.0": - version "9.0.7" - resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.7.tgz#b14cebc75455eeeb160d5fe23c2fcc0c64f724d8" - integrity sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g== - -"@typescript-eslint/eslint-plugin@^6.4.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz#fc1ab5f23618ba590c87e8226ff07a760be3dd7b" - integrity sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw== - dependencies: - "@eslint-community/regexpp" "^4.5.1" - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/type-utils" "6.14.0" - "@typescript-eslint/utils" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - graphemer "^1.4.0" - ignore "^5.2.4" - natural-compare "^1.4.0" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/parser@^6.4.0", "@typescript-eslint/parser@^6.5.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.14.0.tgz#a2d6a732e0d2b95c73f6a26ae7362877cc1b4212" - integrity sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA== - dependencies: - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/typescript-estree" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/scope-manager@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz#53d24363fdb5ee0d1d8cda4ed5e5321272ab3d48" - integrity sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg== - dependencies: - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - -"@typescript-eslint/type-utils@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz#ac9cb5ba0615c837f1a6b172feeb273d36e4f8af" - integrity sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw== - dependencies: - "@typescript-eslint/typescript-estree" "6.14.0" - "@typescript-eslint/utils" "6.14.0" - debug "^4.3.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/types@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.14.0.tgz#935307f7a931016b7a5eb25d494ea3e1f613e929" - integrity sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/typescript-estree@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz#90c7ddd45cd22139adf3d4577580d04c9189ac13" - integrity sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw== - dependencies: - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/visitor-keys" "6.14.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.5.4" - ts-api-utils "^1.0.1" - -"@typescript-eslint/utils@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.14.0.tgz#856a9e274367d99ffbd39c48128b93a86c4261e3" - integrity sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@types/json-schema" "^7.0.12" - "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.14.0" - "@typescript-eslint/types" "6.14.0" - "@typescript-eslint/typescript-estree" "6.14.0" - semver "^7.5.4" - -"@typescript-eslint/utils@^5.58.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@types/json-schema" "^7.0.9" - "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - eslint-scope "^5.1.1" - semver "^7.3.7" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - -"@typescript-eslint/visitor-keys@6.14.0": - version "6.14.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz#1d1d486581819287de824a56c22f32543561138e" - integrity sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw== - dependencies: - "@typescript-eslint/types" "6.14.0" - eslint-visitor-keys "^3.4.1" - -"@uiw/react-textarea-code-editor@^2.1.1": - version "2.1.9" - resolved "https://registry.yarnpkg.com/@uiw/react-textarea-code-editor/-/react-textarea-code-editor-2.1.9.tgz#228305a2ed5029eb2cafc82589f3fa186cc85693" - integrity sha512-fby8oencLyF1BMAMDVIe4zErb01Qf97G25vJld6mJmgFAbK5TwFW0XUvkxAuNKaLp+EccKf5pejCVHcS/jZ3eA== - dependencies: - "@babel/runtime" "^7.18.6" - rehype "~12.0.1" - rehype-prism-plus "1.6.3" - -"@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" - integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== - -"@vitejs/plugin-react@^4.2.1": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" - integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== - dependencies: - "@babel/core" "^7.23.5" - "@babel/plugin-transform-react-jsx-self" "^7.23.3" - "@babel/plugin-transform-react-jsx-source" "^7.23.3" - "@types/babel__core" "^7.20.5" - react-refresh "^0.14.0" - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abs-svg-path@^0.1.1, abs-svg-path@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/abs-svg-path/-/abs-svg-path-0.1.1.tgz#df601c8e8d2ba10d4a76d625e236a9a39c2723bf" - integrity sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.11.2, acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - 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" - -almost-equal@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/almost-equal/-/almost-equal-1.1.0.tgz#f851c631138757994276aa2efbe8dfa3066cccdd" - integrity sha512-0V/PkoculFl5+0Lp47JoxUcO0xSxhIBvm+BxHdD/OgXNmdRpRHCFnKVuUoWyS9EzQP+otSGv0m9Lb4yVkQBn2A== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -"aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== - -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== - dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-bounds@^1.0.0, array-bounds@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-bounds/-/array-bounds-1.0.1.tgz#da11356b4e18e075a4f0c86e1f179a67b7d7ea31" - integrity sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ== - -array-buffer-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" - integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== - dependencies: - call-bind "^1.0.2" - is-array-buffer "^3.0.1" - -array-find-index@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw== - -array-includes@^3.1.6, array-includes@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" - integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-string "^1.0.7" - -array-normalize@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/array-normalize/-/array-normalize-1.1.4.tgz#d75cec57383358af38efdf6a78071aa36ae4174c" - integrity sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg== - dependencies: - array-bounds "^1.0.0" - -array-range@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-range/-/array-range-1.0.1.tgz#f56e46591843611c6a56f77ef02eda7c50089bfc" - integrity sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA== - -array-rearrange@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/array-rearrange/-/array-rearrange-2.2.2.tgz#fa1a2acf8d02e88dd0c9602aa0e06a79158b2283" - integrity sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.findlastindex@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz#b37598438f97b579166940814e2c0493a4f50207" - integrity sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" - integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.1, array.prototype.flatmap@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" - integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - -array.prototype.tosorted@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" - integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - es-shim-unscopables "^1.0.0" - get-intrinsic "^1.2.1" - -arraybuffer.prototype.slice@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" - integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== - dependencies: - array-buffer-byte-length "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - is-array-buffer "^3.0.2" - is-shared-array-buffer "^1.0.2" - -asynciterator.prototype@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" - integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== - dependencies: - has-symbols "^1.0.3" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -axios-mock-adapter@^1.21.2: - version "1.22.0" - resolved "https://registry.yarnpkg.com/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz#0f3e6be0fc9b55baab06f2d49c0b71157e7c053d" - integrity sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw== - dependencies: - fast-deep-equal "^3.1.3" - is-buffer "^2.0.5" - -axios@^1.2.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2" - integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - -babel-plugin-macros@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -bail@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" - integrity sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -big-integer@^1.6.44: - version "1.6.52" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" - integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -binary-search-bounds@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz#125e5bd399882f71e6660d4bf1186384e989fba7" - integrity sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA== - -bit-twiddle@^1.0.0, bit-twiddle@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bit-twiddle/-/bit-twiddle-1.0.2.tgz#0c6c1fabe2b23d17173d9a61b7b7093eb9e1769e" - integrity sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA== - -bitmap-sdf@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz#e87b8b1d84ee846567cfbb29d60eedd34bca5b6f" - integrity sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg== - -bl@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/bl/-/bl-2.2.1.tgz#8c11a7b730655c5d56898cdc871224f40fd901d5" - integrity sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - -bplist-parser@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e" - integrity sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw== - dependencies: - big-integer "^1.6.44" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.22.2: - version "4.22.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.2.tgz#704c4943072bd81ea18997f3bd2180e89c77874b" - integrity sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A== - dependencies: - caniuse-lite "^1.0.30001565" - electron-to-chromium "^1.4.601" - node-releases "^2.0.14" - update-browserslist-db "^1.0.13" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -builtin-modules@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -builtins@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9" - integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ== - dependencies: - semver "^7.0.0" - -bundle-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a" - integrity sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw== - dependencies: - run-applescript "^5.0.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" - integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== - dependencies: - function-bind "^1.1.2" - get-intrinsic "^1.2.1" - set-function-length "^1.1.1" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-lite@^1.0.30001565: - version "1.0.30001570" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz#b4e5c1fa786f733ab78fc70f592df6b3f23244ca" - integrity sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw== - -canvas-fit@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/canvas-fit/-/canvas-fit-1.5.0.tgz#ae13be66ade42f5be0e487e345fce30a5e5b5e5f" - integrity sha512-onIcjRpz69/Hx5bB5HGbYKUF2uC6QT6Gp+pfpGm3A7mPfcluSLV5v4Zu+oflDUwLdUw0rLIBhUbi0v8hM4FJQQ== - dependencies: - element-size "^1.1.1" - -canvas@^2.11.2: - version "2.11.2" - resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.11.2.tgz#553d87b1e0228c7ac0fc72887c3adbac4abbd860" - integrity sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.0" - nan "^2.17.0" - simple-get "^3.0.3" - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-2.1.0.tgz#1f1adb940c971a4b22ba39ddca6b618dc6e56b2b" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -character-entities@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" - integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== - -character-reference-invalid@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" - integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== - -chokidar@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -clamp@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634" - integrity sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA== - -classcat@^5.0.3, classcat@^5.0.4: - version "5.0.4" - resolved "https://registry.yarnpkg.com/classcat/-/classcat-5.0.4.tgz#e12d1dfe6df6427f260f03b80dc63571a5107ba6" - integrity sha512-sbpkOw6z413p+HDGcBENe498WM9woqWHiJxCq7nvmxe9WmrUmqfAcxpIwAiMtM5Q3AhYkzXcNQHqsWq0mND51g== - -client-only@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1" - integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA== - -clsx@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" - integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== - -clsx@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b" - integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q== - -color-alpha@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/color-alpha/-/color-alpha-1.0.4.tgz#c141dc926e95fc3db647d0e14e5bc3651c29e040" - integrity sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A== - dependencies: - color-parse "^1.3.8" - -color-alpha@^1.0.4: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-alpha/-/color-alpha-1.1.3.tgz#71250189e9f02bba8261a94d5e7d5f5606d1749a" - integrity sha512-krPYBO1RSO5LH4AGb/b6z70O1Ip2o0F0+0cVFN5FN99jfQtZFT08rQyg+9oOBNJYAn3SRwJIFC8jUEOKz7PisA== - dependencies: - color-parse "^1.4.1" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-id@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/color-id/-/color-id-1.1.0.tgz#5e9159b99a73ac98f74820cb98a15fde3d7e034c" - integrity sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g== - dependencies: - clamp "^1.0.1" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@^1.0.0, color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-normalize@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/color-normalize/-/color-normalize-1.5.0.tgz#ee610af9acb15daf73e77a945a847b18e40772da" - integrity sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw== - dependencies: - clamp "^1.0.1" - color-rgba "^2.1.1" - dtype "^2.0.0" - -color-normalize@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/color-normalize/-/color-normalize-1.5.2.tgz#d6c8beb02966849548f91a6ac0274c6f19924509" - integrity sha512-yYMIoyFJmUoKbCK6sBShljBWfkt8DXVfaZJn9/zvRJkF9eQJDbZhcYC6LdOVy40p4tfVwYYb9cXl8oqpu7pzBw== - dependencies: - color-rgba "^2.2.0" - dtype "^2.0.0" - -color-parse@1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/color-parse/-/color-parse-1.3.8.tgz#eaf54cd385cb34c0681f18c218aca38478082fa3" - integrity sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA== - dependencies: - color-name "^1.0.0" - defined "^1.0.0" - is-plain-obj "^1.1.0" - -color-parse@^1.3.8, color-parse@^1.4.1, color-parse@^1.4.2: - version "1.4.3" - resolved "https://registry.yarnpkg.com/color-parse/-/color-parse-1.4.3.tgz#6dadfb49128c554c60c49d63f3d025f2c5a7ff22" - integrity sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A== - dependencies: - color-name "^1.0.0" - -color-rgba@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/color-rgba/-/color-rgba-2.1.1.tgz#4633b83817c7406c90b3d7bf4d1acfa48dde5c83" - integrity sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw== - dependencies: - clamp "^1.0.1" - color-parse "^1.3.8" - color-space "^1.14.6" - -color-rgba@^2.1.1, color-rgba@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/color-rgba/-/color-rgba-2.4.0.tgz#ae85819c530262c29fc2da129fc7c8f9efc57015" - integrity sha512-Nti4qbzr/z2LbUWySr7H9dk3Rl7gZt7ihHAxlgT4Ho90EXWkjtkL1avTleu9yeGuqrt/chxTB6GKK8nZZ6V0+Q== - dependencies: - color-parse "^1.4.2" - color-space "^2.0.0" - -color-space@^1.14.6: - version "1.16.0" - resolved "https://registry.yarnpkg.com/color-space/-/color-space-1.16.0.tgz#611781bca41cd8582a1466fd9e28a7d3d89772a2" - integrity sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg== - dependencies: - hsluv "^0.0.3" - mumath "^3.3.4" - -color-space@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-space/-/color-space-2.0.1.tgz#da39871175baf4a5785ba519397df04b8d67e0fa" - integrity sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA== - -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" - integrity sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ== - -commander@2, commander@^2.15.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -console-control-strings@^1.0.0, console-control-strings@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== - -convert-source-map@^1.5.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.1.3: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -country-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/country-regex/-/country-regex-1.1.0.tgz#51c333dcdf12927b7e5eeb9c10ac8112a6120896" - integrity sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA== - -cross-env@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" - integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== - dependencies: - cross-spawn "^7.0.1" - -cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-font-size-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz#854875ace9aca6a8d2ee0d345a44aae9bb6db6cb" - integrity sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q== - -css-font-stretch-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz#50cee9b9ba031fb5c952d4723139f1e107b54b10" - integrity sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg== - -css-font-style-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz#5c3532813f63b4a1de954d13cea86ab4333409e4" - integrity sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg== - -css-font-weight-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz#9bc04671ac85bc724b574ef5d3ac96b0d604fd97" - integrity sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA== - -css-font@^1.0.0, css-font@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-font/-/css-font-1.2.0.tgz#e73cbdc11fd87c8e6c928ad7098a9771c8c2b6e3" - integrity sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA== - dependencies: - css-font-size-keywords "^1.0.0" - css-font-stretch-keywords "^1.0.1" - css-font-style-keywords "^1.0.1" - css-font-weight-keywords "^1.0.0" - css-global-keywords "^1.0.1" - css-system-font-keywords "^1.0.0" - pick-by-alias "^1.2.0" - string-split-by "^1.0.0" - unquote "^1.1.0" - -css-global-keywords@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/css-global-keywords/-/css-global-keywords-1.0.1.tgz#72a9aea72796d019b1d2a3252de4e5aaa37e4a69" - integrity sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ== - -css-system-font-keywords@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz#85c6f086aba4eb32c571a3086affc434b84823ed" - integrity sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA== - -csscolorparser@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" - integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w== - -csstype@^3.0.2, csstype@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -d3-array@1, d3-array@^1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-1.2.4.tgz#635ce4d5eea759f6f605863dbcfc30edc737f71f" - integrity sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw== - -d3-collection@1, d3-collection@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e" - integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A== - -"d3-color@1 - 3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -d3-dispatch@1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" - integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== - -"d3-dispatch@1 - 3": - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" - integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== - -"d3-drag@2 - 3", d3-drag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" - integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== - dependencies: - d3-dispatch "1 - 3" - d3-selection "3" - -"d3-ease@1 - 3": - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" - integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== - -d3-force@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-1.2.1.tgz#fd29a5d1ff181c9e7f0669e4bd72bdb0e914ec0b" - integrity sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg== - dependencies: - d3-collection "1" - d3-dispatch "1" - d3-quadtree "1" - d3-timer "1" - -d3-format@^1.4.5: - version "1.4.5" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.5.tgz#374f2ba1320e3717eb74a9356c67daee17a7edb4" - integrity sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ== - -d3-geo-projection@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz#826db62f748e8ecd67cd00aced4c26a236ec030c" - integrity sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ== - dependencies: - commander "2" - d3-array "1" - d3-geo "^1.12.0" - resolve "^1.1.10" - -d3-geo@^1.12.0, d3-geo@^1.12.1: - version "1.12.1" - resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-1.12.1.tgz#7fc2ab7414b72e59fbcbd603e80d9adc029b035f" - integrity sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg== - dependencies: - d3-array "1" - -d3-hierarchy@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" - integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== - -"d3-interpolate@1 - 3", d3-interpolate@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@1: - version "1.0.9" - resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" - integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== - -d3-quadtree@1: - version "1.0.7" - resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-1.0.7.tgz#ca8b84df7bb53763fe3c2f24bd435137f4e53135" - integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA== - -"d3-selection@2 - 3", d3-selection@3, d3-selection@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" - integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== - -d3-shape@^1.2.0: - version "1.3.7" - resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" - integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== - dependencies: - d3-path "1" - -d3-time-format@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.3.0.tgz#107bdc028667788a8924ba040faf1fbccd5a7850" - integrity sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ== - dependencies: - d3-time "1" - -d3-time@1, d3-time@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-1.1.0.tgz#b1e19d307dae9c900b7e5b25ffc5dcc249a8a0f1" - integrity sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA== - -d3-timer@1: - version "1.0.10" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5" - integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw== - -"d3-timer@1 - 3": - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" - integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== - -"d3-transition@2 - 3": - version "3.0.1" - resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" - integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== - dependencies: - d3-color "1 - 3" - d3-dispatch "1 - 3" - d3-ease "1 - 3" - d3-interpolate "1 - 3" - d3-timer "1 - 3" - -d3-zoom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" - integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== - dependencies: - d3-dispatch "1 - 3" - d3-drag "2 - 3" - d3-interpolate "1 - 3" - d3-selection "2 - 3" - d3-transition "2 - 3" - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -dayjs@^1.11.7: - version "1.11.10" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" - integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== - -debug@2: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== - dependencies: - character-entities "^2.0.0" - -decompress-response@^4.2.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" - integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== - dependencies: - mimic-response "^2.0.0" - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -default-browser-id@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-browser-id/-/default-browser-id-3.0.0.tgz#bee7bbbef1f4e75d31f98f4d3f1556a14cea790c" - integrity sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA== - dependencies: - bplist-parser "^0.2.0" - untildify "^4.0.0" - -default-browser@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/default-browser/-/default-browser-4.0.0.tgz#53c9894f8810bf86696de117a6ce9085a3cbc7da" - integrity sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA== - dependencies: - bundle-name "^3.0.0" - default-browser-id "^3.0.0" - execa "^7.1.1" - titleize "^3.0.0" - -define-data-property@^1.0.1, define-data-property@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" - integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== - dependencies: - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -define-lazy-prop@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz#dbb19adfb746d7fc6d734a06b72f4a00d021255f" - integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== - -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" - integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== - dependencies: - define-data-property "^1.0.1" - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -defined@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf" - integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -detect-kerning@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/detect-kerning/-/detect-kerning-2.1.2.tgz#4ecd548e4a5a3fc880fe2a50609312d000fa9fc2" - integrity sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw== - -detect-libc@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" - integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== - -devlop@^1.0.0, devlop@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-helpers@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" - integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== - dependencies: - "@babel/runtime" "^7.8.7" - csstype "^3.0.2" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv@^16.3.1: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - -draw-svg-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/draw-svg-path/-/draw-svg-path-1.0.0.tgz#6f116d962dd314b99ea534d6f58dd66cdbd69379" - integrity sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg== - dependencies: - abs-svg-path "~0.1.1" - normalize-svg-path "~0.1.0" - -dtype@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dtype/-/dtype-2.0.0.tgz#cd052323ce061444ecd2e8f5748f69a29be28434" - integrity sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg== - -dup@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dup/-/dup-1.0.0.tgz#51fc5ac685f8196469df0b905e934b20af5b4029" - integrity sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA== - -duplexify@^3.4.5: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -earcut@^2.1.5, earcut@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" - integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.4.601: - version "1.4.613" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.613.tgz#529e4fc65576ecfd055d7d4619fade4fac446af2" - integrity sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w== - -element-size@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/element-size/-/element-size-1.1.1.tgz#64e5f159d97121631845bcbaecaf279c39b5e34e" - integrity sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ== - -elementary-circuits-directed-graph@^1.0.4: - version "1.3.1" - resolved "https://registry.yarnpkg.com/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.3.1.tgz#31c5a1c69517de833127247e5460472168e9e1c1" - integrity sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ== - dependencies: - strongly-connected-components "^1.0.1" - -elkjs@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" - integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -end-of-stream@^1.0.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.12.0: - version "5.15.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" - integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -entities@^4.4.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.22.1: - version "1.22.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" - integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== - dependencies: - array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.2" - available-typed-arrays "^1.0.5" - call-bind "^1.0.5" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function.prototype.name "^1.1.6" - get-intrinsic "^1.2.2" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - internal-slot "^1.0.5" - is-array-buffer "^3.0.2" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.12" - is-weakref "^1.0.2" - object-inspect "^1.13.1" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.5.1" - safe-array-concat "^1.0.1" - safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.8" - string.prototype.trimend "^1.0.7" - string.prototype.trimstart "^1.0.7" - typed-array-buffer "^1.0.0" - typed-array-byte-length "^1.0.0" - typed-array-byte-offset "^1.0.0" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.13" - -es-iterator-helpers@^1.0.12: - version "1.0.15" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" - integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== - dependencies: - asynciterator.prototype "^1.0.0" - call-bind "^1.0.2" - define-properties "^1.2.1" - es-abstract "^1.22.1" - es-set-tostringtag "^2.0.1" - function-bind "^1.1.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - iterator.prototype "^1.1.2" - safe-array-concat "^1.0.1" - -es-set-tostringtag@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" - integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== - dependencies: - get-intrinsic "^1.2.2" - has-tostringtag "^1.0.0" - hasown "^2.0.0" - -es-shim-unscopables@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== - dependencies: - hasown "^2.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -esbuild@^0.19.3: - version "0.19.11" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96" - integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.19.11" - "@esbuild/android-arm" "0.19.11" - "@esbuild/android-arm64" "0.19.11" - "@esbuild/android-x64" "0.19.11" - "@esbuild/darwin-arm64" "0.19.11" - "@esbuild/darwin-x64" "0.19.11" - "@esbuild/freebsd-arm64" "0.19.11" - "@esbuild/freebsd-x64" "0.19.11" - "@esbuild/linux-arm" "0.19.11" - "@esbuild/linux-arm64" "0.19.11" - "@esbuild/linux-ia32" "0.19.11" - "@esbuild/linux-loong64" "0.19.11" - "@esbuild/linux-mips64el" "0.19.11" - "@esbuild/linux-ppc64" "0.19.11" - "@esbuild/linux-riscv64" "0.19.11" - "@esbuild/linux-s390x" "0.19.11" - "@esbuild/linux-x64" "0.19.11" - "@esbuild/netbsd-x64" "0.19.11" - "@esbuild/openbsd-x64" "0.19.11" - "@esbuild/sunos-x64" "0.19.11" - "@esbuild/win32-arm64" "0.19.11" - "@esbuild/win32-ia32" "0.19.11" - "@esbuild/win32-x64" "0.19.11" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8" - integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw== - -escodegen@^1.11.1: - version "1.14.3" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" - integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== - dependencies: - esprima "^4.0.1" - estraverse "^4.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-compat-utils@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz#f45e3b5ced4c746c127cf724fb074cd4e730d653" - integrity sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg== - -eslint-config-prettier@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz#31af3d94578645966c082fcb71a5846d3c94867f" - integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== - -eslint-config-standard-with-typescript@^39.0.0: - version "39.1.1" - resolved "https://registry.yarnpkg.com/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.1.1.tgz#d682bd1fc8f1ee996940f85c9b0a833d7cfa5fee" - integrity sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A== - dependencies: - "@typescript-eslint/parser" "^6.4.0" - eslint-config-standard "17.1.0" - -eslint-config-standard@17.1.0: - version "17.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz#40ffb8595d47a6b242e07cbfd49dc211ed128975" - integrity sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q== - -eslint-import-resolver-node@^0.3.9: - version "0.3.9" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" - integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== - dependencies: - debug "^3.2.7" - is-core-module "^2.13.0" - resolve "^1.22.4" - -eslint-import-resolver-typescript@^3.6.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa" - integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg== - dependencies: - debug "^4.3.4" - enhanced-resolve "^5.12.0" - eslint-module-utils "^2.7.4" - fast-glob "^3.3.1" - get-tsconfig "^4.5.0" - is-core-module "^2.11.0" - is-glob "^4.0.3" - -eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" - integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== - dependencies: - debug "^3.2.7" - -eslint-plugin-es-x@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz#d08d9cd155383e35156c48f736eb06561d07ba92" - integrity sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ== - dependencies: - "@eslint-community/eslint-utils" "^4.1.2" - "@eslint-community/regexpp" "^4.6.0" - eslint-compat-utils "^0.1.2" - -eslint-plugin-import@^2.25.2: - version "2.29.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643" - integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw== - dependencies: - array-includes "^3.1.7" - array.prototype.findlastindex "^1.2.3" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" - debug "^3.2.7" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.8.0" - hasown "^2.0.0" - is-core-module "^2.13.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.fromentries "^2.0.7" - object.groupby "^1.0.1" - object.values "^1.1.7" - semver "^6.3.1" - tsconfig-paths "^3.15.0" - -"eslint-plugin-n@^15.0.0 || ^16.0.0 ": - version "16.4.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-n/-/eslint-plugin-n-16.4.0.tgz#02ff70d2b164319b6d566672969a9c24688a43df" - integrity sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - builtins "^5.0.1" - eslint-plugin-es-x "^7.5.0" - get-tsconfig "^4.7.0" - ignore "^5.2.4" - is-builtin-module "^3.2.1" - is-core-module "^2.12.1" - minimatch "^3.1.2" - resolve "^1.22.2" - semver "^7.5.3" - -eslint-plugin-prettier@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz#a3b399f04378f79f066379f544e42d6b73f11515" - integrity sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.5" - -eslint-plugin-promise@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" - integrity sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig== - -eslint-plugin-react-hooks@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" - integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== - -eslint-plugin-react@^7.33.2: - version "7.33.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" - integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== - dependencies: - array-includes "^3.1.6" - array.prototype.flatmap "^1.3.1" - array.prototype.tosorted "^1.1.1" - doctrine "^2.1.0" - es-iterator-helpers "^1.0.12" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.6" - object.fromentries "^2.0.6" - object.hasown "^1.1.2" - object.values "^1.1.6" - prop-types "^15.8.1" - resolve "^2.0.0-next.4" - semver "^6.3.1" - string.prototype.matchall "^4.0.8" - -eslint-plugin-testing-library@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-6.2.0.tgz#af3340b783c881eb19ec5ac6b3a4bfe8ab4a1f74" - integrity sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw== - dependencies: - "@typescript-eslint/utils" "^5.58.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.2.2: - version "7.2.2" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint@^8.0.1: - version "8.55.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.55.0.tgz#078cb7b847d66f2c254ea1794fa395bf8e7e03f8" - integrity sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.4" - "@eslint/js" "8.55.0" - "@humanwhocodes/config-array" "^0.11.13" - "@humanwhocodes/module-importer" "^1.0.1" - "@nodelib/fs.walk" "^1.2.8" - "@ungap/structured-clone" "^1.2.0" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.2.2" - eslint-visitor-keys "^3.4.3" - espree "^9.6.1" - esquery "^1.4.2" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - graphemer "^1.4.0" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - -espree@^9.6.0, espree@^9.6.1: - version "9.6.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.2: - version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1, estraverse@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-util-is-identifier-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz#0b5ef4c4ff13508b34dcd01ecfa945f61fce5dbd" - integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -falafel@^2.1.0: - version "2.2.5" - resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.2.5.tgz#3ccb4970a09b094e9e54fead2deee64b4a589d56" - integrity sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ== - dependencies: - acorn "^7.1.1" - isarray "^2.0.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" - integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== - -fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-isnumeric@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz#e165786ff471c439e9ace2b8c8e66cceb47e2ea4" - integrity sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw== - dependencies: - is-string-blank "^1.0.1" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-root@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" - integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.3" - rimraf "^3.0.2" - -flatted@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" - integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== - -flatten-vertex-data@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz#889fd60bea506006ca33955ee1105175fb620219" - integrity sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw== - dependencies: - dtype "^2.0.0" - -follow-redirects@^1.15.0: - version "1.15.3" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" - integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== - -font-atlas@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/font-atlas/-/font-atlas-2.1.0.tgz#aa2d6dcf656a6c871d66abbd3dfbea2f77178348" - integrity sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg== - dependencies: - css-font "^1.0.0" - -font-measure@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/font-measure/-/font-measure-1.2.2.tgz#41dbdac5d230dbf4db08865f54da28a475e83026" - integrity sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA== - dependencies: - css-font "^1.2.0" - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -from2@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.1, function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" - integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - functions-have-names "^1.2.3" - -functions-have-names@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== - dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -geojson-vt@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" - integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== - -get-canvas-context@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-canvas-context/-/get-canvas-context-1.0.2.tgz#d6e7b50bc4e4c86357cd39f22647a84b73601e93" - integrity sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" - integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== - dependencies: - function-bind "^1.1.2" - has-proto "^1.0.1" - has-symbols "^1.0.3" - hasown "^2.0.0" - -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-tsconfig@^4.5.0, get-tsconfig@^4.7.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.2.tgz#0dcd6fb330391d46332f4c6c1bf89a6514c2ddce" - integrity sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A== - dependencies: - resolve-pkg-maps "^1.0.0" - -gl-mat4@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gl-mat4/-/gl-mat4-1.2.0.tgz#49d8a7636b70aa00819216635f4a3fd3f4669b26" - integrity sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA== - -gl-matrix@^3.2.1: - version "3.4.3" - resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" - integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== - -gl-text@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/gl-text/-/gl-text-1.3.1.tgz#f36594464101b5b053178d6d219c3d08fb9144c8" - integrity sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w== - dependencies: - bit-twiddle "^1.0.2" - color-normalize "^1.5.0" - css-font "^1.2.0" - detect-kerning "^2.1.2" - es6-weak-map "^2.0.3" - flatten-vertex-data "^1.0.2" - font-atlas "^2.1.0" - font-measure "^1.2.2" - gl-util "^3.1.2" - is-plain-obj "^1.1.0" - object-assign "^4.1.1" - parse-rect "^1.2.0" - parse-unit "^1.0.1" - pick-by-alias "^1.2.0" - regl "^2.0.0" - to-px "^1.0.1" - typedarray-pool "^1.1.0" - -gl-util@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/gl-util/-/gl-util-3.1.3.tgz#1e9a724f844b802597c6e30565d4c1e928546861" - integrity sha512-dvRTggw5MSkJnCbh74jZzSoTOGnVYK+Bt+Ckqm39CVcl6+zSsxqWk4lr5NKhkqXHL6qvZAU9h17ZF8mIskY9mA== - dependencies: - is-browser "^2.0.1" - is-firefox "^1.0.3" - is-plain-obj "^1.1.0" - number-is-integer "^1.0.1" - object-assign "^4.1.0" - pick-by-alias "^1.2.0" - weak-map "^1.0.5" - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@10.3.10: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== - dependencies: - foreground-child "^3.1.0" - jackspeak "^2.3.5" - minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" - -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - 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" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.24.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -glsl-inject-defines@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz#dd1aacc2c17fcb2bd3fc32411c6633d0d7b60fd4" - integrity sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A== - dependencies: - glsl-token-inject-block "^1.0.0" - glsl-token-string "^1.0.1" - glsl-tokenizer "^2.0.2" - -glsl-resolve@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/glsl-resolve/-/glsl-resolve-0.0.1.tgz#894bef73910d792c81b5143180035d0a78af76d3" - integrity sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA== - dependencies: - resolve "^0.6.1" - xtend "^2.1.2" - -glsl-token-assignments@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f" - integrity sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ== - -glsl-token-defines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d" - integrity sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ== - dependencies: - glsl-tokenizer "^2.0.0" - -glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84" - integrity sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg== - -glsl-token-descope@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076" - integrity sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw== - dependencies: - glsl-token-assignments "^2.0.0" - glsl-token-depth "^1.1.0" - glsl-token-properties "^1.0.0" - glsl-token-scope "^1.1.0" - -glsl-token-inject-block@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034" - integrity sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA== - -glsl-token-properties@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e" - integrity sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA== - -glsl-token-scope@^1.1.0, glsl-token-scope@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1" - integrity sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A== - -glsl-token-string@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/glsl-token-string/-/glsl-token-string-1.0.1.tgz#59441d2f857de7c3449c945666021ece358e48ec" - integrity sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg== - -glsl-token-whitespace-trim@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz#46d1dfe98c75bd7d504c05d7d11b1b3e9cc93b10" - integrity sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ== - -glsl-tokenizer@^2.0.0, glsl-tokenizer@^2.0.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a" - integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA== - dependencies: - through2 "^0.6.3" - -glslify-bundle@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glslify-bundle/-/glslify-bundle-5.1.1.tgz#30d2ddf2e6b935bf44d1299321e3b729782c409a" - integrity sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A== - dependencies: - glsl-inject-defines "^1.0.1" - glsl-token-defines "^1.0.0" - glsl-token-depth "^1.1.1" - glsl-token-descope "^1.0.2" - glsl-token-scope "^1.1.1" - glsl-token-string "^1.0.1" - glsl-token-whitespace-trim "^1.0.0" - glsl-tokenizer "^2.0.2" - murmurhash-js "^1.0.0" - shallow-copy "0.0.1" - -glslify-deps@^1.2.5: - version "1.3.2" - resolved "https://registry.yarnpkg.com/glslify-deps/-/glslify-deps-1.3.2.tgz#c09ee945352bfc07ac2d8a1cc9e3de776328c72b" - integrity sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag== - dependencies: - "@choojs/findup" "^0.2.0" - events "^3.2.0" - glsl-resolve "0.0.1" - glsl-tokenizer "^2.0.0" - graceful-fs "^4.1.2" - inherits "^2.0.1" - map-limit "0.0.1" - resolve "^1.0.0" - -glslify@^7.0.0, glslify@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glslify/-/glslify-7.1.1.tgz#454d9172b410cb49864029c86d5613947fefd30b" - integrity sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog== - dependencies: - bl "^2.2.1" - concat-stream "^1.5.2" - duplexify "^3.4.5" - falafel "^2.1.0" - from2 "^2.3.0" - glsl-resolve "0.0.1" - glsl-token-whitespace-trim "^1.0.0" - glslify-bundle "^5.0.0" - glslify-deps "^1.2.5" - minimist "^1.2.5" - resolve "^1.1.5" - stack-trace "0.0.9" - static-eval "^2.0.5" - through2 "^2.0.1" - xtend "^4.0.0" - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -graceful-fs@^4.1.2, graceful-fs@^4.2.4: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -grid-index@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/grid-index/-/grid-index-1.1.0.tgz#97f8221edec1026c8377b86446a7c71e79522ea7" - integrity sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA== - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-hover@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-hover/-/has-hover-1.0.1.tgz#3d97437aeb199c62b8ac08acbdc53d3bc52c17f7" - integrity sha512-0G6w7LnlcpyDzpeGUTuT0CEw05+QlMuGVk1IHNAlHrGJITGodjZu3x8BNDUMfKJSZXNB2ZAclqc1bvrd+uUpfg== - dependencies: - is-browser "^2.0.1" - -has-passive-events@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-passive-events/-/has-passive-events-1.0.0.tgz#75fc3dc6dada182c58f24ebbdc018276d1ea3515" - integrity sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw== - dependencies: - is-browser "^2.0.1" - -has-property-descriptors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" - integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== - dependencies: - get-intrinsic "^1.2.2" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-unicode@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== - -hasown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" - integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== - dependencies: - function-bind "^1.1.2" - -hast-util-from-parse5@^7.0.0: - version "7.1.2" - resolved "https://registry.yarnpkg.com/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz#aecfef73e3ceafdfa4550716443e4eb7b02e22b0" - integrity sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw== - dependencies: - "@types/hast" "^2.0.0" - "@types/unist" "^2.0.0" - hastscript "^7.0.0" - property-information "^6.0.0" - vfile "^5.0.0" - vfile-location "^4.0.0" - web-namespaces "^2.0.0" - -hast-util-parse-selector@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz#25ab00ae9e75cbc62cf7a901f68a247eade659e2" - integrity sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA== - dependencies: - "@types/hast" "^2.0.0" - -hast-util-raw@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/hast-util-raw/-/hast-util-raw-7.2.3.tgz#dcb5b22a22073436dbdc4aa09660a644f4991d99" - integrity sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg== - dependencies: - "@types/hast" "^2.0.0" - "@types/parse5" "^6.0.0" - hast-util-from-parse5 "^7.0.0" - hast-util-to-parse5 "^7.0.0" - html-void-elements "^2.0.0" - parse5 "^6.0.0" - unist-util-position "^4.0.0" - unist-util-visit "^4.0.0" - vfile "^5.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-to-html@^8.0.0: - version "8.0.4" - resolved "https://registry.yarnpkg.com/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz#0269ef33fa3f6599b260a8dc94f733b8e39e41fc" - integrity sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA== - dependencies: - "@types/hast" "^2.0.0" - "@types/unist" "^2.0.0" - ccount "^2.0.0" - comma-separated-tokens "^2.0.0" - hast-util-raw "^7.0.0" - hast-util-whitespace "^2.0.0" - html-void-elements "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - stringify-entities "^4.0.0" - zwitch "^2.0.4" - -hast-util-to-jsx-runtime@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz#3ed27caf8dc175080117706bf7269404a0aa4f7c" - integrity sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ== - dependencies: - "@types/estree" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - comma-separated-tokens "^2.0.0" - devlop "^1.0.0" - estree-util-is-identifier-name "^3.0.0" - hast-util-whitespace "^3.0.0" - mdast-util-mdx-expression "^2.0.0" - mdast-util-mdx-jsx "^3.0.0" - mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" - unist-util-position "^5.0.0" - vfile-message "^4.0.0" - -hast-util-to-parse5@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz#c49391bf8f151973e0c9adcd116b561e8daf29f3" - integrity sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw== - dependencies: - "@types/hast" "^2.0.0" - comma-separated-tokens "^2.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - web-namespaces "^2.0.0" - zwitch "^2.0.0" - -hast-util-to-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/hast-util-to-string/-/hast-util-to-string-2.0.0.tgz#b008b0a4ea472bf34dd390b7eea1018726ae152a" - integrity sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A== - dependencies: - "@types/hast" "^2.0.0" - -hast-util-whitespace@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz#0ec64e257e6fc216c7d14c8a1b74d27d650b4557" - integrity sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng== - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz#7778ed9d3c92dd9e8c5c8f648a49c21fc51cb621" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -hastscript@^7.0.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/hastscript/-/hastscript-7.2.0.tgz#0eafb7afb153d047077fa2a833dc9b7ec604d10b" - integrity sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw== - dependencies: - "@types/hast" "^2.0.0" - comma-separated-tokens "^2.0.0" - hast-util-parse-selector "^3.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - -hoist-non-react-statics@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" - integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== - dependencies: - react-is "^16.7.0" - -hsluv@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/hsluv/-/hsluv-0.0.3.tgz#829107dafb4a9f8b52a1809ed02e091eade6754c" - integrity sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ== - -html-url-attributes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/html-url-attributes/-/html-url-attributes-3.0.0.tgz#fc4abf0c3fb437e2329c678b80abb3c62cff6f08" - integrity sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow== - -html-void-elements@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-2.0.1.tgz#29459b8b05c200b6c5ee98743c41b979d577549f" - integrity sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A== - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.12: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0, ignore@^5.2.4: - version "5.3.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78" - integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg== - -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - -import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inline-style-parser@0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633" - integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ== - -internal-slot@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" - integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== - dependencies: - get-intrinsic "^1.2.2" - hasown "^2.0.0" - side-channel "^1.0.4" - -is-alphabetical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-2.0.1.tgz#01072053ea7c1036df3c7d19a6daaec7f19e789b" - integrity sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ== - -is-alphanumerical@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz#7c03fbe96e3e931113e57f964b0a368cc2dfd875" - integrity sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw== - dependencies: - is-alphabetical "^2.0.0" - is-decimal "^2.0.0" - -is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== - dependencies: - has-tostringtag "^1.0.0" - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-browser@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-browser/-/is-browser-2.1.0.tgz#fc084d59a5fced307d6708c59356bad7007371a9" - integrity sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ== - -is-buffer@^2.0.0, is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-builtin-module@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.1.tgz#f03271717d8654cfcaf07ab0463faa3571581169" - integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== - dependencies: - builtin-modules "^3.3.0" - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.11.0, is-core-module@^2.12.1, is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1, is-date-object@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-decimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" - integrity sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A== - -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-docker@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" - integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finalizationregistry@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" - integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== - dependencies: - call-bind "^1.0.2" - -is-finite@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-firefox@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-firefox/-/is-firefox-1.0.3.tgz#2a2a1567783a417f6e158323108f3861b0918562" - integrity sha512-6Q9ITjvWIm0Xdqv+5U12wgOKEM2KoBw4Y926m0OFkvlCxnbG94HKAsVz8w3fWcfAS5YA2fJORXX1dLrkprCCxA== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hexadecimal@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" - integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== - -is-iexplorer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-iexplorer/-/is-iexplorer-1.0.0.tgz#1d72bc66d3fe22eaf6170dda8cf10943248cfc76" - integrity sha512-YeLzceuwg3K6O0MLM3UyUUjKAlyULetwryFp1mHy1I5PfArK0AEqlfa+MR4gkJjcbuJXoDJCvXbyqZVf5CR2Sg== - -is-inside-container@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-inside-container/-/is-inside-container-1.0.0.tgz#e81fba699662eb31dbdaf26766a61d4814717ea4" - integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== - dependencies: - is-docker "^3.0.0" - -is-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" - integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== - -is-mobile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-mobile/-/is-mobile-4.0.0.tgz#bba396eb9656e2739afde3053d7191da310fc758" - integrity sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-4.1.0.tgz#d65025edec3657ce032fd7db63c97883eaed71f0" - integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg== - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-set@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" - integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -is-string-blank@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-string-blank/-/is-string-blank-1.0.1.tgz#866dca066d41d2894ebdfd2d8fe93e586e583a03" - integrity sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-svg-path@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-svg-path/-/is-svg-path-1.0.2.tgz#77ab590c12b3d20348e5c7a13d0040c87784dda0" - integrity sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg== - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: - version "1.1.12" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" - integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== - dependencies: - which-typed-array "^1.1.11" - -is-weakmap@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" - integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-weakset@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" - integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@^2.0.1, isarray@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -iterator.prototype@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" - integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== - dependencies: - define-properties "^1.2.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.4" - set-function-name "^2.0.1" - -jackspeak@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" - integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json5@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" - integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== - dependencies: - minimist "^1.2.0" - -json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -"jsx-ast-utils@^2.4.1 || ^3.0.0": - version "3.3.5" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" - integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== - dependencies: - array-includes "^3.1.6" - array.prototype.flat "^1.3.1" - object.assign "^4.1.4" - object.values "^1.1.6" - -kdbush@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/kdbush/-/kdbush-3.0.0.tgz#f8484794d47004cc2d85ed3a79353dbe0abc2bf0" - integrity sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew== - -keyv@^4.5.3: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lie@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e" - integrity sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw== - dependencies: - immediate "~3.0.5" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -localforage@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4" - integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg== - dependencies: - lie "3.1.1" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -longest-streak@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" - integrity sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g== - -loose-envify@^1.1.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -"lru-cache@^9.1.1 || ^10.0.0": - version "10.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" - integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== - -magic-string@^0.30.0: - version "0.30.5" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" - integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.15" - -make-cancellable-promise@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz#993c8c8b79cff13c74fa93de0bd8a17fe66685c1" - integrity sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww== - -make-dir@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-event-props@^1.6.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/make-event-props/-/make-event-props-1.6.2.tgz#c8e0e48eb28b9b808730de38359f6341de7ec5a2" - integrity sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA== - -map-limit@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/map-limit/-/map-limit-0.0.1.tgz#eb7961031c0f0e8d001bf2d56fab685d58822f38" - integrity sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg== - dependencies: - once "~1.3.0" - -mapbox-gl@1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/mapbox-gl/-/mapbox-gl-1.10.1.tgz#7dbd53bdf2f78e45e125c1115e94dea286ef663c" - integrity sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg== - dependencies: - "@mapbox/geojson-rewind" "^0.5.0" - "@mapbox/geojson-types" "^1.0.2" - "@mapbox/jsonlint-lines-primitives" "^2.0.2" - "@mapbox/mapbox-gl-supported" "^1.5.0" - "@mapbox/point-geometry" "^0.1.0" - "@mapbox/tiny-sdf" "^1.1.1" - "@mapbox/unitbezier" "^0.0.0" - "@mapbox/vector-tile" "^1.3.1" - "@mapbox/whoots-js" "^3.1.0" - csscolorparser "~1.0.3" - earcut "^2.2.2" - geojson-vt "^3.2.1" - gl-matrix "^3.2.1" - grid-index "^1.1.0" - minimist "^1.2.5" - murmurhash-js "^1.0.0" - pbf "^3.2.1" - potpack "^1.0.1" - quickselect "^2.0.0" - rw "^1.3.3" - supercluster "^7.0.0" - tinyqueue "^2.0.3" - vt-pbf "^3.1.1" - -markdown-table@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" - integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== - -math-log2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/math-log2/-/math-log2-1.0.1.tgz#fb8941be5f5ebe8979e718e6273b178e58694565" - integrity sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA== - -mdast-util-find-and-replace@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz#a6fc7b62f0994e973490e45262e4bc07607b04e0" - integrity sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA== - dependencies: - "@types/mdast" "^4.0.0" - escape-string-regexp "^5.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -mdast-util-from-markdown@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.0.tgz#52f14815ec291ed061f2922fd14d6689c810cb88" - integrity sha512-n7MTOr/z+8NAX/wmhhDji8O3bRvPTV/U0oTCaZJkjhPSKTPhS3xufVhKGF8s1pJ7Ox4QgoIU7KHseh09S+9rTA== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - mdast-util-to-string "^4.0.0" - micromark "^4.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-decode-string "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - unist-util-stringify-position "^4.0.0" - -mdast-util-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz#5baf35407421310a08e68c15e5d8821e8898ba2a" - integrity sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg== - dependencies: - "@types/mdast" "^4.0.0" - ccount "^2.0.0" - devlop "^1.0.0" - mdast-util-find-and-replace "^3.0.0" - micromark-util-character "^2.0.0" - -mdast-util-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" - integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - -mdast-util-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz#d44ef9e8ed283ac8c1165ab0d0dfd058c2764c16" - integrity sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz#7a435fb6223a72b0862b33afbd712b6dae878d38" - integrity sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - markdown-table "^3.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm-task-list-item@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz#e68095d2f8a4303ef24094ab642e1047b991a936" - integrity sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ== - dependencies: - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" - integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== - dependencies: - mdast-util-from-markdown "^2.0.0" - mdast-util-gfm-autolink-literal "^2.0.0" - mdast-util-gfm-footnote "^2.0.0" - mdast-util-gfm-strikethrough "^2.0.0" - mdast-util-gfm-table "^2.0.0" - mdast-util-gfm-task-list-item "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-expression@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz#4968b73724d320a379110d853e943a501bfd9d87" - integrity sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-mdx-jsx@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz#f73631fa5bb7a36712ff1e9cedec0cafed03401c" - integrity sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - devlop "^1.1.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - parse-entities "^4.0.0" - stringify-entities "^4.0.0" - unist-util-remove-position "^5.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -mdast-util-mdxjs-esm@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz#019cfbe757ad62dd557db35a695e7314bcc9fa97" - integrity sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg== - dependencies: - "@types/estree-jsx" "^1.0.0" - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - devlop "^1.0.0" - mdast-util-from-markdown "^2.0.0" - mdast-util-to-markdown "^2.0.0" - -mdast-util-phrasing@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz#468cbbb277375523de807248b8ad969feb02a5c7" - integrity sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA== - dependencies: - "@types/mdast" "^4.0.0" - unist-util-is "^6.0.0" - -mdast-util-to-hast@^13.0.0: - version "13.0.2" - resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz#74c0a9f014bb2340cae6118f6fccd75467792be7" - integrity sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - -mdast-util-to-markdown@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz#9813f1d6e0cdaac7c244ec8c6dabfdb2102ea2b4" - integrity sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ== - dependencies: - "@types/mdast" "^4.0.0" - "@types/unist" "^3.0.0" - longest-streak "^3.0.0" - mdast-util-phrasing "^4.0.0" - mdast-util-to-string "^4.0.0" - micromark-util-decode-string "^2.0.0" - unist-util-visit "^5.0.0" - zwitch "^2.0.0" - -mdast-util-to-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" - integrity sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg== - dependencies: - "@types/mdast" "^4.0.0" - -merge-refs@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/merge-refs/-/merge-refs-1.2.2.tgz#6142633398dd0d10a37626cae77ddeb1db26db0c" - integrity sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromark-core-commonmark@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.0.tgz#50740201f0ee78c12a675bf3e68ffebc0bf931a3" - integrity sha512-jThOz/pVmAYUtkroV3D5c1osFXAMv9e0ypGDOIZuCeAe91/sD6BoE2Sjzt30yuXtwOYUmySOhMas/PVyh02itA== - dependencies: - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-factory-destination "^2.0.0" - micromark-factory-label "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-factory-title "^2.0.0" - micromark-factory-whitespace "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-html-tag-name "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-autolink-literal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.0.0.tgz#f1e50b42e67d441528f39a67133eddde2bbabfd9" - integrity sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.0.0.tgz#91afad310065a94b636ab1e9dab2c60d1aab953c" - integrity sha512-6Rzu0CYRKDv3BfLAUnZsSlzx3ak6HAoI85KTiijuKIz5UxZxbUI+pD6oHgw+6UtQuiRwnGRhzMmPRv4smcz0fg== - dependencies: - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-strikethrough@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.0.0.tgz#6917db8e320da70e39ffbf97abdbff83e6783e61" - integrity sha512-c3BR1ClMp5fxxmwP6AoOY2fXO9U8uFMKs4ADD66ahLTNcwzSCyRVU4k7LPV5Nxo/VJiR4TdzxRQY2v3qIUceCw== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-classify-character "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.0.0.tgz#2cf3fe352d9e089b7ef5fff003bdfe0da29649b7" - integrity sha512-PoHlhypg1ItIucOaHmKE8fbin3vTLpDOUg8KAr8gRCF1MOZI9Nquq2i/44wFvviM4WuxJzc3demT8Y3dkfvYrw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm-tagfilter@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz#f26d8a7807b5985fba13cf61465b58ca5ff7dc57" - integrity sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg== - dependencies: - micromark-util-types "^2.0.0" - -micromark-extension-gfm-task-list-item@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.0.1.tgz#ee8b208f1ced1eb9fb11c19a23666e59d86d4838" - integrity sha512-cY5PzGcnULaN5O7T+cOzfMoHjBW7j+T9D2sucA5d/KbsBTPcYdebm9zUd9zzdgJGCwahV+/W78Z3nbulBYVbTw== - dependencies: - devlop "^1.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-extension-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz#3e13376ab95dd7a5cfd0e29560dfe999657b3c5b" - integrity sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w== - dependencies: - micromark-extension-gfm-autolink-literal "^2.0.0" - micromark-extension-gfm-footnote "^2.0.0" - micromark-extension-gfm-strikethrough "^2.0.0" - micromark-extension-gfm-table "^2.0.0" - micromark-extension-gfm-tagfilter "^2.0.0" - micromark-extension-gfm-task-list-item "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-destination@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" - integrity sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-label@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" - integrity sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw== - dependencies: - devlop "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-space@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz#5e7afd5929c23b96566d0e1ae018ae4fcf81d030" - integrity sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-title@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" - integrity sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-factory-whitespace@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" - integrity sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA== - dependencies: - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-character@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-2.0.1.tgz#52b824c2e2633b6fb33399d2ec78ee2a90d6b298" - integrity sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-chunked@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" - integrity sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-classify-character@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" - integrity sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-combine-extensions@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" - integrity sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ== - dependencies: - micromark-util-chunked "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-decode-numeric-character-reference@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" - integrity sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-decode-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" - integrity sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" - integrity sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA== - -micromark-util-html-tag-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" - integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== - -micromark-util-normalize-identifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" - integrity sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w== - dependencies: - micromark-util-symbol "^2.0.0" - -micromark-util-resolve-all@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" - integrity sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA== - dependencies: - micromark-util-types "^2.0.0" - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" - integrity sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-subtokenize@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.0.tgz#9f412442d77e0c5789ffdf42377fa8a2bcbdf581" - integrity sha512-vc93L1t+gpR3p8jxeVdaYlbV2jTYteDje19rNSS/H5dlhxUYll5Fy6vJ2cDwP8RnsXi818yGty1ayP55y3W6fg== - dependencies: - devlop "^1.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-symbol@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" - integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== - -micromark-util-types@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" - integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== - -micromark@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" - integrity sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - devlop "^1.0.0" - micromark-core-commonmark "^2.0.0" - micromark-factory-space "^2.0.0" - micromark-util-character "^2.0.0" - micromark-util-chunked "^2.0.0" - micromark-util-combine-extensions "^2.0.0" - micromark-util-decode-numeric-character-reference "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-normalize-identifier "^2.0.0" - micromark-util-resolve-all "^2.0.0" - micromark-util-sanitize-uri "^2.0.0" - micromark-util-subtokenize "^2.0.0" - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -mimic-response@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" - integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== - -minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.1: - version "9.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" - integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== - dependencies: - brace-expansion "^2.0.1" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^3.0.0: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" - integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mouse-change@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/mouse-change/-/mouse-change-1.4.0.tgz#c2b77e5bfa34a43ce1445c8157a4e4dc9895c14f" - integrity sha512-vpN0s+zLL2ykyyUDh+fayu9Xkor5v/zRD9jhSqjRS1cJTGS0+oakVZzNm5n19JvvEj0you+MXlYTpNxUDQUjkQ== - dependencies: - mouse-event "^1.0.0" - -mouse-event-offset@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz#dfd86a6e248c6ba8cad53b905d5037a2063e9984" - integrity sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w== - -mouse-event@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/mouse-event/-/mouse-event-1.0.5.tgz#b3789edb7109997d5a932d1d01daa1543a501732" - integrity sha512-ItUxtL2IkeSKSp9cyaX2JLUuKk2uMoxBg4bbOWVd29+CskYJR9BGsUqtXenNzKbnDshvupjUewDIYVrOB6NmGw== - -mouse-wheel@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mouse-wheel/-/mouse-wheel-1.2.0.tgz#6d2903b1ea8fb48e61f1b53b9036773f042cdb5c" - integrity sha512-+OfYBiUOCTWcTECES49neZwL5AoGkXE+lFjIvzwNCnYRlso+EnfvovcBxGoyQ0yQt806eSPjS675K0EwWknXmw== - dependencies: - right-now "^1.0.0" - signum "^1.0.0" - to-px "^1.0.1" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mumath@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/mumath/-/mumath-3.3.4.tgz#48d4a0f0fd8cad4e7b32096ee89b161a63d30bbf" - integrity sha512-VAFIOG6rsxoc7q/IaY3jdjmrsuX9f15KlRLYTHmixASBZkZEKC1IFqE2BC5CdhXmK6WLM1Re33z//AGmeRI6FA== - dependencies: - almost-equal "^1.1.0" - -murmurhash-js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" - integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw== - -nan@^2.17.0: - version "2.18.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554" - integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w== - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -native-promise-only@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/native-promise-only/-/native-promise-only-0.8.1.tgz#20a318c30cb45f71fe7adfbf7b21c99c1472ef11" - integrity sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -needle@^2.5.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-fetch@^2.6.7: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-releases@^2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" - integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== - -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-svg-path@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz#0e614eca23c39f0cffe821d6be6cd17e569a766c" - integrity sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg== - dependencies: - svg-arc-to-cubic-bezier "^3.0.0" - -normalize-svg-path@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz#456360e60ece75fbef7b5d7e160480e7ffd16fe5" - integrity sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -npm-run-path@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00" - integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q== - dependencies: - path-key "^4.0.0" - -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== - dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" - -number-is-integer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-integer/-/number-is-integer-1.0.1.tgz#e59bca172ffed27318e79c7ceb6cb72c095b2152" - integrity sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg== - dependencies: - is-finite "^1.0.1" - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -object-inspect@^1.13.1, object-inspect@^1.9.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.4: - version "4.1.5" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0" - integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ== - dependencies: - call-bind "^1.0.5" - define-properties "^1.2.1" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.entries@^1.1.6: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" - integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.fromentries@^2.0.6, object.fromentries@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" - integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.groupby@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.1.tgz#d41d9f3c8d6c778d9cbac86b4ee9f5af103152ee" - integrity sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - -object.hasown@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" - integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== - dependencies: - define-properties "^1.2.0" - es-abstract "^1.22.1" - -object.values@^1.1.6, object.values@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" - integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -once@~1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" - integrity sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w== - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -open@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/open/-/open-9.1.0.tgz#684934359c90ad25742f5a26151970ff8c6c80b6" - integrity sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg== - dependencies: - default-browser "^4.0.0" - define-lazy-prop "^3.0.0" - is-inside-container "^1.0.0" - is-wsl "^2.2.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" - integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== - dependencies: - "@aashutoshrathi/word-wrap" "^1.2.3" - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parenthesis@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/parenthesis/-/parenthesis-3.1.8.tgz#3457fccb8f05db27572b841dad9d2630b912f125" - integrity sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw== - -parse-entities@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-4.0.1.tgz#4e2a01111fb1c986549b944af39eeda258fc9e4e" - integrity sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w== - dependencies: - "@types/unist" "^2.0.0" - character-entities "^2.0.0" - character-entities-legacy "^3.0.0" - character-reference-invalid "^2.0.0" - decode-named-character-reference "^1.0.0" - is-alphanumerical "^2.0.0" - is-decimal "^2.0.0" - is-hexadecimal "^2.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - 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" - -parse-numeric-range@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz#7c63b61190d61e4d53a1197f0c83c47bb670ffa3" - integrity sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ== - -parse-rect@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parse-rect/-/parse-rect-1.2.0.tgz#e0a5b0dbaaaee637a0a1eb9779969e19399d8dec" - integrity sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA== - dependencies: - pick-by-alias "^1.2.0" - -parse-svg-path@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/parse-svg-path/-/parse-svg-path-0.1.2.tgz#7a7ec0d1eb06fa5325c7d3e009b859a09b5d49eb" - integrity sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ== - -parse-unit@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-unit/-/parse-unit-1.0.1.tgz#7e1bb6d5bef3874c28e392526a2541170291eecf" - integrity sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg== - -parse5@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== - dependencies: - lru-cache "^9.1.1 || ^10.0.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -path2d-polyfill@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path2d-polyfill/-/path2d-polyfill-2.0.1.tgz#24c554a738f42700d6961992bf5f1049672f2391" - integrity sha512-ad/3bsalbbWhmBo0D6FZ4RNMwsLsPpL6gnvhuSaU5Vm7b06Kr5ubSltQQ0T7YKsiJQO+g22zJ4dJKNTXIyOXtA== - -pbf@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" - integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== - dependencies: - ieee754 "^1.1.12" - resolve-protobuf-schema "^2.1.0" - -pdfjs-dist@3.11.174: - version "3.11.174" - resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-3.11.174.tgz#5ff47b80f2d58c8dd0d74f615e7c6a7e7e704c4b" - integrity sha512-TdTZPf1trZ8/UFu5Cx/GXB7GZM30LT+wWUNfsi6Bq8ePLnb+woNKtDymI2mxZYBpMbonNFqKmiz684DIfnd8dA== - optionalDependencies: - canvas "^2.11.2" - path2d-polyfill "^2.0.1" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -pick-by-alias@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pick-by-alias/-/pick-by-alias-1.2.0.tgz#5f7cb2b1f21a6e1e884a0c87855aa4a37361107b" - integrity sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw== - -picocolors@1.0.0, picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -plotly.js@^2.27.1: - version "2.27.1" - resolved "https://registry.yarnpkg.com/plotly.js/-/plotly.js-2.27.1.tgz#064d80d17ad8f9cde400d6f7df45926f520dac06" - integrity sha512-XeE0zTJWTxURYrUJqzf73l8lTb+HnyRvvhHkoSIEvWf58ins4saopo9l25kCm+xHAGz8E/2EOncE4DyXsJ34kA== - dependencies: - "@plotly/d3" "3.8.1" - "@plotly/d3-sankey" "0.7.2" - "@plotly/d3-sankey-circular" "0.33.1" - "@turf/area" "^6.4.0" - "@turf/bbox" "^6.4.0" - "@turf/centroid" "^6.0.2" - canvas-fit "^1.5.0" - color-alpha "1.0.4" - color-normalize "1.5.0" - color-parse "1.3.8" - color-rgba "2.1.1" - country-regex "^1.1.0" - d3-force "^1.2.1" - d3-format "^1.4.5" - d3-geo "^1.12.1" - d3-geo-projection "^2.9.0" - d3-hierarchy "^1.1.9" - d3-interpolate "^3.0.1" - d3-time "^1.1.0" - d3-time-format "^2.2.3" - fast-isnumeric "^1.1.4" - gl-mat4 "^1.2.0" - gl-text "^1.3.1" - glslify "^7.1.1" - has-hover "^1.0.1" - has-passive-events "^1.0.0" - is-mobile "^4.0.0" - mapbox-gl "1.10.1" - mouse-change "^1.4.0" - mouse-event-offset "^3.0.2" - mouse-wheel "^1.2.0" - native-promise-only "^0.8.1" - parse-svg-path "^0.1.2" - point-in-polygon "^1.1.0" - polybooljs "^1.2.0" - probe-image-size "^7.2.3" - regl "npm:@plotly/regl@^2.1.2" - regl-error2d "^2.0.12" - regl-line2d "^3.1.2" - regl-scatter2d "^3.2.9" - regl-splom "^1.0.14" - strongly-connected-components "^1.0.1" - superscript-text "^1.0.0" - svg-path-sdf "^1.1.3" - tinycolor2 "^1.4.2" - to-px "1.0.1" - topojson-client "^3.1.0" - webgl-context "^2.2.0" - world-calendars "^1.0.3" - -point-in-polygon@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/point-in-polygon/-/point-in-polygon-1.1.0.tgz#b0af2616c01bdee341cbf2894df643387ca03357" - integrity sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw== - -polybooljs@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/polybooljs/-/polybooljs-1.2.0.tgz#b4390c2e079d4c262d3b2504c6288d95ba7a4758" - integrity sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ== - -postcss@^8.4.32: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -potpack@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" - integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" - integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== - -probe-image-size@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/probe-image-size/-/probe-image-size-7.2.3.tgz#d49c64be540ec8edea538f6f585f65a9b3ab4309" - integrity sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w== - dependencies: - lodash.merge "^4.6.2" - needle "^2.5.2" - stream-parser "~0.3.1" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -property-expr@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8" - integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA== - -property-information@^6.0.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.4.0.tgz#6bc4c618b0c2d68b3bb8b552cbb97f8e300a0f82" - integrity sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ== - -protocol-buffers-schema@^3.3.1: - version "3.6.0" - resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" - integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quickselect@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" - integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== - -raf@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" - integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== - dependencies: - performance-now "^2.1.0" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -react-dom@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react-draggable@^4.4.5: - version "4.4.6" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.6.tgz#63343ee945770881ca1256a5b6fa5c9f5983fe1e" - integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== - dependencies: - clsx "^1.1.1" - prop-types "^15.8.1" - -react-hook-form@^7.45.1: - version "7.49.2" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.49.2.tgz#6fb2742e1308020f26cb1915c7012b6c07b11ade" - integrity sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA== - -react-is@^16.13.1, react-is@^16.7.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -react-markdown@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-9.0.0.tgz#7a41bde9e1b0b1d6911f6f9f8c3cdb4a3e9f9328" - integrity sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA== - dependencies: - "@types/hast" "^3.0.0" - devlop "^1.0.0" - hast-util-to-jsx-runtime "^2.0.0" - html-url-attributes "^3.0.0" - mdast-util-to-hast "^13.0.0" - micromark-util-sanitize-uri "^2.0.0" - remark-parse "^11.0.0" - remark-rehype "^11.0.0" - unified "^11.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -react-pdf@^7.6.0: - version "7.6.0" - resolved "https://registry.yarnpkg.com/react-pdf/-/react-pdf-7.6.0.tgz#e77ad78c02602149f199ad7cfbc411e8ddb10a60" - integrity sha512-b2/8V6xhe5pn4Y01ELKTQZ+RhdZl1KpSAMGbN+HCZ/kwhYTIc4Pn5ctz1wRQUu1gOJbIEG4CcjMD9vTCzNdwjw== - dependencies: - clsx "^2.0.0" - make-cancellable-promise "^1.3.1" - make-event-props "^1.6.0" - merge-refs "^1.2.1" - pdfjs-dist "3.11.174" - prop-types "^15.6.2" - tiny-invariant "^1.0.0" - tiny-warning "^1.0.0" - -react-plotly.js@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/react-plotly.js/-/react-plotly.js-2.6.0.tgz#ad6b68ee64f1b5cfa142ee92c59687f9c2c09209" - integrity sha512-g93xcyhAVCSt9kV1svqG1clAEdL6k3U+jjuSzfTV7owaSU9Go6Ph8bl25J+jKfKvIGAEYpe4qj++WHJuc9IaeA== - dependencies: - prop-types "^15.8.1" - -react-refresh@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e" - integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ== - -react-router-dom@^6.6.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.21.0.tgz#aa4c6bc046a8e8723095bc09b3c0ab2254532712" - integrity sha512-1dUdVj3cwc1npzJaf23gulB562ESNvxf7E4x8upNJycqyUm5BRRZ6dd3LrlzhtLaMrwOCO8R0zoiYxdaJx4LlQ== - dependencies: - "@remix-run/router" "1.14.0" - react-router "6.21.0" - -react-router@6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.21.0.tgz#6fe3e59877aca3dccceec1801d26991ddf42d12b" - integrity sha512-hGZ0HXbwz3zw52pLZV3j3+ec+m/PQ9cTpBvqjFQmy2XVUWGn5MD+31oXHb6dVTxYzmAeaiUBYjkoNz66n3RGCg== - dependencies: - "@remix-run/router" "1.14.0" - -react-to-print@^2.14.15: - version "2.14.15" - resolved "https://registry.yarnpkg.com/react-to-print/-/react-to-print-2.14.15.tgz#edb4ce8a92205cf37fd8c3d57de829034aa5c911" - integrity sha512-SKnwOzU2cJ8eaAkoJO7+gNhvfEDmm+Y34IdcHsjtHioUevUPhprqbVtvNJlZ2JkGJ8ExK2QNWM9pXECTDR5D8w== - -react-toastify@^9.1.1: - version "9.1.3" - resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-9.1.3.tgz#1e798d260d606f50e0fab5ee31daaae1d628c5ff" - integrity sha512-fPfb8ghtn/XMxw3LkxQBk3IyagNpF/LIKjOBflbexr2AWxAH1MJgvnESwEwBn9liLFXgTKWgBSdZpw9m4OTHTg== - dependencies: - clsx "^1.1.1" - -react-transition-group@^4.4.5: - version "4.4.5" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1" - integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g== - dependencies: - "@babel/runtime" "^7.5.5" - dom-helpers "^5.0.1" - loose-envify "^1.4.0" - prop-types "^15.6.2" - -react@^18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -reactflow@^11.4.0: - version "11.10.1" - resolved "https://registry.yarnpkg.com/reactflow/-/reactflow-11.10.1.tgz#8f8c75a7c7d07f44eeb8c0dcb3a757c5f4e95b03" - integrity sha512-Q616fElAc5/N37tMwjuRkkgm/VgmnLLTNNCj61z5mvJxae+/VXZQMfot1K6a5LLz9G3SVKqU97PMb9Ga1PRXew== - dependencies: - "@reactflow/background" "11.3.6" - "@reactflow/controls" "11.2.6" - "@reactflow/core" "11.10.1" - "@reactflow/minimap" "11.7.6" - "@reactflow/node-resizer" "2.2.6" - "@reactflow/node-toolbar" "1.3.6" - -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@^2.3.5, readable-stream@~2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -reflect.getprototypeof@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" - integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - globalthis "^1.0.3" - which-builtin-type "^1.1.3" - -refractor@^4.8.0: - version "4.8.1" - resolved "https://registry.yarnpkg.com/refractor/-/refractor-4.8.1.tgz#fbdd889333a3d86c9c864479622855c9b38e9d42" - integrity sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg== - dependencies: - "@types/hast" "^2.0.0" - "@types/prismjs" "^1.0.0" - hastscript "^7.0.0" - parse-entities "^4.0.0" - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" - integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - set-function-name "^2.0.0" - -regl-error2d@^2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/regl-error2d/-/regl-error2d-2.0.12.tgz#3b976e13fe641d5242a154fcacc80aecfa0a9881" - integrity sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA== - dependencies: - array-bounds "^1.0.1" - color-normalize "^1.5.0" - flatten-vertex-data "^1.0.2" - object-assign "^4.1.1" - pick-by-alias "^1.2.0" - to-float32 "^1.1.0" - update-diff "^1.1.0" - -regl-line2d@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/regl-line2d/-/regl-line2d-3.1.2.tgz#2bedef7f44c1f7fae75c90f9918258723ca84c1c" - integrity sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ== - dependencies: - array-bounds "^1.0.1" - array-find-index "^1.0.2" - array-normalize "^1.1.4" - color-normalize "^1.5.0" - earcut "^2.1.5" - es6-weak-map "^2.0.3" - flatten-vertex-data "^1.0.2" - glslify "^7.0.0" - object-assign "^4.1.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - to-float32 "^1.1.0" - -regl-scatter2d@^3.2.3, regl-scatter2d@^3.2.9: - version "3.2.9" - resolved "https://registry.yarnpkg.com/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz#cd27b014c355e80d96fb2f273b563fd8f1b094f0" - integrity sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg== - dependencies: - "@plotly/point-cluster" "^3.1.9" - array-range "^1.0.1" - array-rearrange "^2.2.2" - clamp "^1.0.1" - color-id "^1.1.0" - color-normalize "^1.5.0" - color-rgba "^2.1.1" - flatten-vertex-data "^1.0.2" - glslify "^7.0.0" - is-iexplorer "^1.0.0" - object-assign "^4.1.1" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - to-float32 "^1.1.0" - update-diff "^1.1.0" - -regl-splom@^1.0.14: - version "1.0.14" - resolved "https://registry.yarnpkg.com/regl-splom/-/regl-splom-1.0.14.tgz#58800b7bbd7576aa323499a1966868a6c9ea1456" - integrity sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw== - dependencies: - array-bounds "^1.0.1" - array-range "^1.0.1" - color-alpha "^1.0.4" - flatten-vertex-data "^1.0.2" - parse-rect "^1.2.0" - pick-by-alias "^1.2.0" - raf "^3.4.1" - regl-scatter2d "^3.2.3" - -regl@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/regl/-/regl-2.1.0.tgz#7dae71e9ff20f29c4f42f510c70cd92ebb6b657c" - integrity sha512-oWUce/aVoEvW5l2V0LK7O5KJMzUSKeiOwFuJehzpSFd43dO5spP9r+sSUfhKtsky4u6MCqWJaRL+abzExynfTg== - -"regl@npm:@plotly/regl@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@plotly/regl/-/regl-2.1.2.tgz#fd31e3e820ed8824d59a67ab5e766bb101b810b6" - integrity sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw== - -rehype-parse@^8.0.0, rehype-parse@^8.0.2: - version "8.0.5" - resolved "https://registry.yarnpkg.com/rehype-parse/-/rehype-parse-8.0.5.tgz#ccffc21e08e288c7846614f8dc1dc23d603a4a80" - integrity sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A== - dependencies: - "@types/hast" "^2.0.0" - hast-util-from-parse5 "^7.0.0" - parse5 "^6.0.0" - unified "^10.0.0" - -rehype-prism-plus@1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/rehype-prism-plus/-/rehype-prism-plus-1.6.3.tgz#8bf23a4cfc3419349770bb9064a91bdab04fae86" - integrity sha512-F6tn376zimnvy+xW0bSnryul+rvVL7NhDIkavc9kAuzDx5zIZW04A6jdXPkcFBhojcqZB8b6pHt6CLqiUx+Tbw== - dependencies: - hast-util-to-string "^2.0.0" - parse-numeric-range "^1.3.0" - refractor "^4.8.0" - rehype-parse "^8.0.2" - unist-util-filter "^4.0.0" - unist-util-visit "^4.0.0" - -rehype-stringify@^9.0.0: - version "9.0.4" - resolved "https://registry.yarnpkg.com/rehype-stringify/-/rehype-stringify-9.0.4.tgz#31dbb9de6f5034c6964760a1b1083218059c4343" - integrity sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ== - dependencies: - "@types/hast" "^2.0.0" - hast-util-to-html "^8.0.0" - unified "^10.0.0" - -rehype@~12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/rehype/-/rehype-12.0.1.tgz#68a317662576dcaa2565a3952e149d6900096bf6" - integrity sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw== - dependencies: - "@types/hast" "^2.0.0" - rehype-parse "^8.0.0" - rehype-stringify "^9.0.0" - unified "^10.0.0" - -remark-gfm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" - integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-gfm "^3.0.0" - micromark-extension-gfm "^3.0.0" - remark-parse "^11.0.0" - remark-stringify "^11.0.0" - unified "^11.0.0" - -remark-parse@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-11.0.0.tgz#aa60743fcb37ebf6b069204eb4da304e40db45a1" - integrity sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-from-markdown "^2.0.0" - micromark-util-types "^2.0.0" - unified "^11.0.0" - -remark-rehype@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.0.0.tgz#7f21c08738bde024be5f16e4a8b13e5d7a04cf6b" - integrity sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - mdast-util-to-hast "^13.0.0" - unified "^11.0.0" - vfile "^6.0.0" - -remark-stringify@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-11.0.0.tgz#4c5b01dd711c269df1aaae11743eb7e2e7636fd3" - integrity sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw== - dependencies: - "@types/mdast" "^4.0.0" - mdast-util-to-markdown "^2.0.0" - unified "^11.0.0" - -reselect@^4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.8.tgz#3f5dc671ea168dccdeb3e141236f69f02eaec524" - integrity sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -resolve-protobuf-schema@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" - integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== - dependencies: - protocol-buffers-schema "^3.3.1" - -resolve@^0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" - integrity sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg== - -resolve@^1.0.0, resolve@^1.1.10, resolve@^1.1.5, resolve@^1.19.0, resolve@^1.22.2, resolve@^1.22.4: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.4: - version "2.0.0-next.5" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" - integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -right-now@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/right-now/-/right-now-1.0.0.tgz#6e89609deebd7dcdaf8daecc9aea39cf585a0918" - integrity sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rollup@^4.2.0: - version "4.9.6" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" - integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== - dependencies: - "@types/estree" "1.0.5" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.9.6" - "@rollup/rollup-android-arm64" "4.9.6" - "@rollup/rollup-darwin-arm64" "4.9.6" - "@rollup/rollup-darwin-x64" "4.9.6" - "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" - "@rollup/rollup-linux-arm64-gnu" "4.9.6" - "@rollup/rollup-linux-arm64-musl" "4.9.6" - "@rollup/rollup-linux-riscv64-gnu" "4.9.6" - "@rollup/rollup-linux-x64-gnu" "4.9.6" - "@rollup/rollup-linux-x64-musl" "4.9.6" - "@rollup/rollup-win32-arm64-msvc" "4.9.6" - "@rollup/rollup-win32-ia32-msvc" "4.9.6" - "@rollup/rollup-win32-x64-msvc" "4.9.6" - fsevents "~2.3.2" - -run-applescript@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-5.0.0.tgz#e11e1c932e055d5c6b40d98374e0268d9b11899c" - integrity sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg== - dependencies: - execa "^5.0.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rw@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" - integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== - -safe-array-concat@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" - integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - isarray "^2.0.5" - -safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.3.0" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" - integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.0" - -semver@^6.0.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.0.0, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -serialize-javascript@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== - dependencies: - randombytes "^2.1.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-function-length@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" - integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== - dependencies: - define-data-property "^1.1.1" - get-intrinsic "^1.2.1" - gopd "^1.0.1" - has-property-descriptors "^1.0.0" - -set-function-name@^2.0.0, set-function-name@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" - integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== - dependencies: - define-data-property "^1.0.1" - functions-have-names "^1.2.3" - has-property-descriptors "^1.0.0" - -shallow-copy@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" - integrity sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -signum@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/signum/-/signum-1.0.0.tgz#74a7d2bf2a20b40eba16a92b152124f1d559fa77" - integrity sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" - integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== - dependencies: - decompress-response "^4.2.0" - once "^1.3.1" - simple-concat "^1.0.0" - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -stack-trace@0.0.9: - version "0.0.9" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.9.tgz#a8f6eaeca90674c333e7c43953f275b451510695" - integrity sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ== - -static-eval@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.1.0.tgz#a16dbe54522d7fa5ef1389129d813fd47b148014" - integrity sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw== - dependencies: - escodegen "^1.11.1" - -stream-parser@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" - integrity sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ== - dependencies: - debug "2" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -string-split-by@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string-split-by/-/string-split-by-1.0.0.tgz#53895fb3397ebc60adab1f1e3a131f5372586812" - integrity sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A== - dependencies: - parenthesis "^3.1.5" - -"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.3: - name string-width-cjs - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.8: - version "4.0.10" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" - integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - get-intrinsic "^1.2.1" - has-symbols "^1.0.3" - internal-slot "^1.0.5" - regexp.prototype.flags "^1.5.0" - set-function-name "^2.0.0" - side-channel "^1.0.4" - -string.prototype.trim@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" - integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimend@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" - integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string.prototype.trimstart@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" - integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.2.0" - es-abstract "^1.22.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-entities@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.3.tgz#cfabd7039d22ad30f3cc435b0ca2c1574fc88ef8" - integrity sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strongly-connected-components@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz#0920e2b4df67c8eaee96c6b6234fe29e873dba99" - integrity sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA== - -style-to-object@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.5.tgz#5e918349bc3a39eee3a804497d97fcbbf2f0d7c0" - integrity sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ== - dependencies: - inline-style-parser "0.2.2" - -stylis@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" - integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== - -supercluster@^7.0.0: - version "7.1.5" - resolved "https://registry.yarnpkg.com/supercluster/-/supercluster-7.1.5.tgz#65a6ce4a037a972767740614c19051b64b8be5a3" - integrity sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg== - dependencies: - kdbush "^3.0.0" - -superscript-text@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/superscript-text/-/superscript-text-1.0.0.tgz#e7cb2752567360df50beb0610ce8df3d71d8dfd8" - integrity sha512-gwu8l5MtRZ6koO0icVTlmN5pm7Dhh1+Xpe9O4x6ObMAsW+3jPbW14d1DsBq1F4wiI+WOFjXF35pslgec/G8yCQ== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svg-arc-to-cubic-bezier@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz#390c450035ae1c4a0104d90650304c3bc814abe6" - integrity sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g== - -svg-parser@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" - integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== - -svg-path-bounds@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/svg-path-bounds/-/svg-path-bounds-1.0.2.tgz#00312f672b08afc432a66ddfbd06db40cec8d0d0" - integrity sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ== - dependencies: - abs-svg-path "^0.1.1" - is-svg-path "^1.0.1" - normalize-svg-path "^1.0.0" - parse-svg-path "^0.1.2" - -svg-path-sdf@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/svg-path-sdf/-/svg-path-sdf-1.1.3.tgz#92957a31784c0eaf68945472c8dc6bf9e6d126fc" - integrity sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg== - dependencies: - bitmap-sdf "^1.0.0" - draw-svg-path "^1.0.0" - is-svg-path "^1.0.1" - parse-svg-path "^0.1.2" - svg-path-bounds "^1.0.1" - -swr@^2.0.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/swr/-/swr-2.2.4.tgz#03ec4c56019902fbdc904d78544bd7a9a6fa3f07" - integrity sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ== - dependencies: - client-only "^0.0.1" - use-sync-external-store "^1.2.0" - -synckit@^0.8.5: - version "0.8.6" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.6.tgz#b69b7fbce3917c2673cbdc0d87fb324db4a5b409" - integrity sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA== - dependencies: - "@pkgr/utils" "^2.4.2" - tslib "^2.6.2" - -tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tar@^6.1.11: - version "6.2.0" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" - integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^5.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -through2@^0.6.3: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - integrity sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg== - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - -through2@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -tiny-case@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" - integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== - -tiny-invariant@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" - integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== - -tiny-warning@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -tinycolor2@^1.4.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" - integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== - -tinyqueue@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" - integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== - -titleize@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53" - integrity sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-float32@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/to-float32/-/to-float32-1.1.0.tgz#39bd3b11eadccd490c08f5f9171da5127b6f3946" - integrity sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg== - -to-px@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.0.1.tgz#5bbaed5e5d4f76445bcc903c293a2307dd324646" - integrity sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw== - dependencies: - parse-unit "^1.0.1" - -to-px@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/to-px/-/to-px-1.1.0.tgz#b6b269ed5db0cc9aefc15272a4c8bcb2ca1e99ca" - integrity sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw== - dependencies: - parse-unit "^1.0.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -topojson-client@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/topojson-client/-/topojson-client-3.1.0.tgz#22e8b1ed08a2b922feeb4af6f53b6ef09a467b99" - integrity sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw== - dependencies: - commander "2" - -toposort@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" - integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -trough@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" - integrity sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g== - -ts-api-utils@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" - integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== - -tsconfck@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tsconfck/-/tsconfck-3.0.1.tgz#803ca0ed8f2f2075639e4061238f04b99ba85e85" - integrity sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg== - -tsconfig-paths@^3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" - integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.2" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.3, tslib@^2.6.0, tslib@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - -typed-array-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" - integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.1" - is-typed-array "^1.1.10" - -typed-array-byte-length@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" - integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" - integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - has-proto "^1.0.1" - is-typed-array "^1.1.10" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typedarray-pool@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typedarray-pool/-/typedarray-pool-1.2.0.tgz#e7e90720144ba02b9ed660438af6f3aacfe33ac3" - integrity sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ== - dependencies: - bit-twiddle "^1.0.0" - dup "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@*: - version "5.3.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" - integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unified@^10.0.0: - version "10.1.2" - resolved "https://registry.yarnpkg.com/unified/-/unified-10.1.2.tgz#b1d64e55dafe1f0b98bb6c719881103ecf6c86df" - integrity sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q== - dependencies: - "@types/unist" "^2.0.0" - bail "^2.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^5.0.0" - -unified@^11.0.0: - version "11.0.4" - resolved "https://registry.yarnpkg.com/unified/-/unified-11.0.4.tgz#f4be0ac0fe4c88cb873687c07c64c49ed5969015" - integrity sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ== - dependencies: - "@types/unist" "^3.0.0" - bail "^2.0.0" - devlop "^1.0.0" - extend "^3.0.0" - is-plain-obj "^4.0.0" - trough "^2.0.0" - vfile "^6.0.0" - -unist-util-filter@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/unist-util-filter/-/unist-util-filter-4.0.1.tgz#fd885dd48adaad345de5f5dc706ec4ff44a8d074" - integrity sha512-RynicUM/vbOSTSiUK+BnaK9XMfmQUh6gyi7L6taNgc7FIf84GukXVV3ucGzEN/PhUUkdP5hb1MmXc+3cvPUm5Q== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - unist-util-visit-parents "^5.0.0" - -unist-util-is@^5.0.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-5.2.1.tgz#b74960e145c18dcb6226bc57933597f5486deae9" - integrity sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-6.0.0.tgz#b775956486aff107a9ded971d996c173374be424" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-4.0.4.tgz#93f6d8c7d6b373d9b825844645877c127455f037" - integrity sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-5.0.0.tgz#678f20ab5ca1207a97d7ea8a388373c9cf896be4" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-remove-position@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz#fea68a25658409c9460408bc6b4991b965b52163" - integrity sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q== - dependencies: - "@types/unist" "^3.0.0" - unist-util-visit "^5.0.0" - -unist-util-stringify-position@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" - integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== - dependencies: - "@types/unist" "^2.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^5.0.0, unist-util-visit-parents@^5.1.1: - version "5.1.3" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz#b4520811b0ca34285633785045df7a8d6776cfeb" - integrity sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz#4d5f85755c3b8f0dc69e21eca5d6d82d22162815" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^4.0.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-4.1.2.tgz#125a42d1eb876283715a3cb5cceaa531828c72e2" - integrity sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-is "^5.0.0" - unist-util-visit-parents "^5.1.1" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-5.0.0.tgz#a7de1f31f72ffd3519ea71814cccf5fd6a9217d6" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -unplugin@^1.5.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.5.1.tgz#806688376fa3dcca4d2fa2c5d27cf6cd0370fbef" - integrity sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew== - dependencies: - acorn "^8.11.2" - chokidar "^3.5.3" - webpack-sources "^3.2.3" - webpack-virtual-modules "^0.6.0" - -unquote@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" - integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== - -untildify@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" - integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== - -update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-diff@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/update-diff/-/update-diff-1.1.0.tgz#f510182d81ee819fb82c3a6b22b62bbdeda7808f" - integrity sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A== - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -use-sync-external-store@1.2.0, use-sync-external-store@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -vfile-location@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-4.1.0.tgz#69df82fb9ef0a38d0d02b90dd84620e120050dd0" - integrity sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw== - dependencies: - "@types/unist" "^2.0.0" - vfile "^5.0.0" - -vfile-message@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-3.1.4.tgz#15a50816ae7d7c2d1fa87090a7f9f96612b59dea" - integrity sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position "^3.0.0" - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^5.0.0: - version "5.3.7" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-5.3.7.tgz#de0677e6683e3380fafc46544cfe603118826ab7" - integrity sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g== - dependencies: - "@types/unist" "^2.0.0" - is-buffer "^2.0.0" - unist-util-stringify-position "^3.0.0" - vfile-message "^3.0.0" - -vfile@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.1.tgz#1e8327f41eac91947d4fe9d237a2dd9209762536" - integrity sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - vfile-message "^4.0.0" - -vite-plugin-svgr@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-4.2.0.tgz#9f3bf5206b0ec510287e56d16f1915e729bb4e6b" - integrity sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA== - dependencies: - "@rollup/pluginutils" "^5.0.5" - "@svgr/core" "^8.1.0" - "@svgr/plugin-jsx" "^8.1.0" - -vite-tsconfig-paths@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/vite-tsconfig-paths/-/vite-tsconfig-paths-4.3.1.tgz#28762938151e7c80aec9d70c57e65ddce43a576f" - integrity sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw== - dependencies: - debug "^4.1.1" - globrex "^0.1.2" - tsconfck "^3.0.1" - -vite@^5.0.12: - version "5.0.12" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" - integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== - dependencies: - esbuild "^0.19.3" - postcss "^8.4.32" - rollup "^4.2.0" - optionalDependencies: - fsevents "~2.3.3" - -vt-pbf@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vt-pbf/-/vt-pbf-3.1.3.tgz#68fd150756465e2edae1cc5c048e063916dcfaac" - integrity sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA== - dependencies: - "@mapbox/point-geometry" "0.1.0" - "@mapbox/vector-tile" "^1.3.1" - pbf "^3.2.1" - -weak-map@^1.0.5: - version "1.0.8" - resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.8.tgz#394c18a9e8262e790544ed8b55c6a4ddad1cb1a3" - integrity sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw== - -web-namespaces@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" - integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== - -web-worker@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" - integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== - -webgl-context@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webgl-context/-/webgl-context-2.2.0.tgz#8f37d7257cf6df1cd0a49e6a7b1b721b94cc86a0" - integrity sha512-q/fGIivtqTT7PEoF07axFIlHNk/XCPaYpq64btnepopSWvKNFkoORlQYgqDigBIuGA1ExnFd/GnSUnBNEPQY7Q== - dependencies: - get-canvas-context "^1.0.1" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack-virtual-modules@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz#ac6fdb9c5adb8caecd82ec241c9631b7a3681b6f" - integrity sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-builtin-type@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" - integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== - dependencies: - function.prototype.name "^1.1.5" - has-tostringtag "^1.0.0" - is-async-function "^2.0.0" - is-date-object "^1.0.5" - is-finalizationregistry "^1.0.2" - is-generator-function "^1.0.10" - is-regex "^1.1.4" - is-weakref "^1.0.2" - isarray "^2.0.5" - which-boxed-primitive "^1.0.2" - which-collection "^1.0.1" - which-typed-array "^1.1.9" - -which-collection@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" - integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== - dependencies: - is-map "^2.0.1" - is-set "^2.0.1" - is-weakmap "^2.0.1" - is-weakset "^2.0.1" - -which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: - version "1.1.13" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" - integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.4" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== - dependencies: - string-width "^1.0.2 || 2 || 3 || 4" - -word-wrap@~1.2.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -world-calendars@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/world-calendars/-/world-calendars-1.0.3.tgz#b25c5032ba24128ffc41d09faf4a5ec1b9c14335" - integrity sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ== - dependencies: - object-assign "^4.1.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" - integrity sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yup@^1.2.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.3.tgz#d2f6020ad1679754c5f8178a29243d5447dead04" - integrity sha512-v8QwZSsHH2K3/G9WSkp6mZKO+hugKT1EmnMqLNUcfu51HU9MDyhlETT/JgtzprnrnQHPWsjc6MUDMBp/l9fNnw== - dependencies: - property-expr "^2.0.5" - tiny-case "^1.0.3" - toposort "^2.0.2" - type-fest "^2.19.0" - -zustand@^4.4.1: - version "4.4.7" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.4.7.tgz#355406be6b11ab335f59a66d2cf9815e8f24038c" - integrity sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw== - dependencies: - use-sync-external-store "1.2.0" - -zwitch@^2.0.0, zwitch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== diff --git a/helm/domino/templates/domino-frontend-deployment.yml b/helm/domino/templates/domino-frontend-deployment.yml index b4158b1a..7b4909f9 100644 --- a/helm/domino/templates/domino-frontend-deployment.yml +++ b/helm/domino/templates/domino-frontend-deployment.yml @@ -25,7 +25,7 @@ spec: command: {{ toYaml .Values.frontend.entrypointCommand | indent 12 }} args: - ["-c","yarn start"] + ["-c","pnpm start"] {{- end }} env: - name: DOMINO_DEPLOY_MODE diff --git a/src/domino/scripts/deprecated/docker_compose_constants.py b/src/domino/scripts/deprecated/docker_compose_constants.py index 915fc277..b1d7dfdd 100644 --- a/src/domino/scripts/deprecated/docker_compose_constants.py +++ b/src/domino/scripts/deprecated/docker_compose_constants.py @@ -395,7 +395,7 @@ flowui_frontend = { "image": "taufferconsulting/flowui-frontend:latest", "container_name": "flowui-frontend", - "command": "yarn start", + "command": "pnpm start", "ports": [ "3000:3000" ] @@ -408,7 +408,7 @@ "dockerfile": "Dockerfile" }, "container_name": "flowui-frontend", - "command": "yarn start", + "command": "pnpm start", "ports": [ "3000:3000" ], From 0a66d441716abef68c8478aaeb3a2a6d0055e67a Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Tue, 6 Feb 2024 18:01:53 -0300 Subject: [PATCH 15/60] refactor: improve workflow editor page --- .vscode/launch.json | 2 + frontend/package.json | 12 +- .../WorkflowPanel/WorkflowPanel.tsx | 8 + .../src/context/workspaces/repositories.tsx | 14 +- .../features/myWorkflows/types/workflow.ts | 13 +- .../components/ButtonsMenu/index.tsx | 220 +++++++ .../ContainerResourceForm.tsx | 0 .../PieceForm/PieceFormItem/arrayInput.tsx | 7 +- .../PieceFormItem/disableCheckboxOptions.ts | 4 +- .../PieceForm/PieceFormItem/index.tsx | 9 +- .../PieceForm/PieceFormItem/objectInput.tsx | 3 +- .../PieceFormItem/selectUpstreamInput.tsx | 3 +- .../PieceFormDrawer}/PieceForm/index.tsx | 17 +- .../PieceFormDrawer}/StorageForm.tsx | 0 .../PieceFormDrawer}/index.tsx | 23 +- .../PiecesDrawer}/index.tsx | 9 +- .../PiecesDrawer}/pieceDocsPopover.tsx | 0 .../PiecesDrawer}/sidebarAddNode.tsx | 6 +- .../PiecesDrawer}/sidebarNode.tsx | 7 +- .../SettingsFormDrawer}/index.tsx | 34 +- .../components/Drawers/index.ts | 3 + .../index.tsx => Modals/DifferencesModal.tsx} | 0 .../MyWorkflowsGalleryModal.tsx} | 0 .../WorkflowExamplesGalleryModal.tsx} | 0 .../workflowEditor/components/Modals/index.ts | 3 + .../WorkflowPanel/ConnectionLine/index.tsx | 35 ++ .../Panel/WorkflowPanel/DefaultEdge/index.tsx | 34 + .../Panel/WorkflowPanel/DefaultNode/index.tsx | 173 +++++ .../Panel/WorkflowPanel/WorkflowPanel.tsx | 353 +++++++++++ .../components/Panel/WorkflowPanel/index.ts | 2 + .../components/Panel/WorkflowPanel/types.ts | 26 + .../components/WorkflowEditor.tsx | 594 ------------------ .../components/WorkflowEditor/index.tsx | 270 ++++++++ .../context/reactWorkflowPersistence.tsx | 36 +- .../workflowEditor/context/workflowPieces.tsx | 47 +- .../context/workflowPiecesData.tsx | 54 +- .../context/workflowSettingsData.tsx | 6 +- .../context/workflowsEditor.tsx | 46 +- .../workflowEditor/utils/getFromUpstream.ts | 21 +- .../workflowEditor/utils/importWorkflow.ts | 14 +- .../features/workflowEditor/utils/index.ts | 3 + .../workflowEditor/utils/jsonSchema.ts | 2 +- .../workflowEditor/utils/upstreamOptions.ts | 1 + frontend/src/providers/app.tsx | 17 +- 44 files changed, 1328 insertions(+), 803 deletions(-) create mode 100644 frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/ContainerResourceForm.tsx (100%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/PieceFormItem/arrayInput.tsx (98%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/PieceFormItem/disableCheckboxOptions.ts (74%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/PieceFormItem/index.tsx (99%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/PieceFormItem/objectInput.tsx (98%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/PieceFormItem/selectUpstreamInput.tsx (97%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/PieceForm/index.tsx (86%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/StorageForm.tsx (100%) rename frontend/src/features/workflowEditor/components/{SidebarForm => Drawers/PieceFormDrawer}/index.tsx (92%) rename frontend/src/features/workflowEditor/components/{DrawerMenu => Drawers/PiecesDrawer}/index.tsx (91%) rename frontend/src/features/workflowEditor/components/{DrawerMenu => Drawers/PiecesDrawer}/pieceDocsPopover.tsx (100%) rename frontend/src/features/workflowEditor/components/{DrawerMenu => Drawers/PiecesDrawer}/sidebarAddNode.tsx (96%) rename frontend/src/features/workflowEditor/components/{DrawerMenu => Drawers/PiecesDrawer}/sidebarNode.tsx (90%) rename frontend/src/features/workflowEditor/components/{SidebarSettingsForm => Drawers/SettingsFormDrawer}/index.tsx (92%) create mode 100644 frontend/src/features/workflowEditor/components/Drawers/index.ts rename frontend/src/features/workflowEditor/components/{DifferencesModal/index.tsx => Modals/DifferencesModal.tsx} (100%) rename frontend/src/features/workflowEditor/components/{MyWorkflowsGalleryModal/index.tsx => Modals/MyWorkflowsGalleryModal.tsx} (100%) rename frontend/src/features/workflowEditor/components/{WorkflowExamplesGalleryModal/index.tsx => Modals/WorkflowExamplesGalleryModal.tsx} (100%) create mode 100644 frontend/src/features/workflowEditor/components/Modals/index.ts create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/ConnectionLine/index.tsx create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultEdge/index.tsx create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultNode/index.tsx create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/index.ts create mode 100644 frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/types.ts delete mode 100644 frontend/src/features/workflowEditor/components/WorkflowEditor.tsx create mode 100644 frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx diff --git a/.vscode/launch.json b/.vscode/launch.json index 4da30ada..9ac5fd20 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -8,6 +8,7 @@ "type": "chrome", "request": "launch", "name": "Chrome Debug", + "userDataDir": false, "url": "http://localhost:3000", "webRoot": "${workspaceFolder}/frontend/src", "enableContentValidation": false, @@ -24,6 +25,7 @@ "type": "msedge", "request": "launch", "name": "Edge Debug", + "userDataDir": false, "url": "http://localhost:3000", "webRoot": "${workspaceFolder}/frontend/src", "enableContentValidation": false, diff --git a/frontend/package.json b/frontend/package.json index c9442db1..2acef0f1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,6 +16,7 @@ "@mui/material": "^5.14.20", "@mui/x-data-grid": "^6.15.0", "@mui/x-date-pickers": "^6.5.0", + "@nathan-vm/use-storage": "^0.2.1", "@types/dompurify": "^3.0.5", "@types/react": ">=18", "@types/react-dom": "^18.0.9", @@ -61,16 +62,9 @@ "lint:fix": "eslint . --ext js,jsx,ts,tsx --fix" }, "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] + "extends": ["react-app", "react-app/jest"] }, - "browserslist": [ - ">0.2%", - "not dead", - "not op_mini all" - ], + "browserslist": [">0.2%", "not dead", "not op_mini all"], "devDependencies": { "@typescript-eslint/eslint-plugin": "^6.4.0", "@typescript-eslint/parser": "^6.5.0", diff --git a/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx index 5276cd2f..e6cd4e8a 100644 --- a/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx +++ b/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx @@ -10,6 +10,7 @@ import React, { useImperativeHandle, type ForwardedRef, useMemo, + useEffect, } from "react"; import ReactFlow, { type Node, @@ -276,6 +277,13 @@ const WorkflowPanel = forwardRef( }; }, [rawNodes, rawEdges]); + useEffect(() => { + console.log("aqui sempre"); + if (edges && props.editable && props.onConnect) { + props.onConnect(edges[0] as any); + } + }, [edges]); + useImperativeHandle( ref, () => { diff --git a/frontend/src/context/workspaces/repositories.tsx b/frontend/src/context/workspaces/repositories.tsx index c1616d85..87720546 100644 --- a/frontend/src/context/workspaces/repositories.tsx +++ b/frontend/src/context/workspaces/repositories.tsx @@ -1,3 +1,4 @@ +import { useStorage } from "@nathan-vm/use-storage"; import { type IGetRepoPiecesResponseInterface, useAuthenticatedGetPieceRepositories, @@ -10,7 +11,6 @@ import { } from "features/myWorkflows/api"; import React, { useCallback, useEffect, useState } from "react"; import { toast } from "react-toastify"; -import localForage from "services/config/localForage.config"; import { type KeyedMutator } from "swr"; import { createCustomContext } from "utils"; @@ -46,7 +46,7 @@ export interface IPiecesContext { fetchRepoById: (params: { id: string; }) => Promise; - fetchForagePieceById: (id: number) => Promise; + fetchForagePieceById: (id: number) => Piece | undefined; } type PieceForageSchema = Record; @@ -57,6 +57,8 @@ export const [PiecesContext, usesPieces] = const PiecesProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { + const localStorage = useStorage(); + const [selectedRepositoryId, setSelectedRepositoryId] = useState< number | null >(null); @@ -89,7 +91,7 @@ const PiecesProvider: React.FC<{ children: React.ReactNode }> = ({ return; } if (!repositories?.data?.length) { - void localForage.setItem("pieces", foragePieces); + localStorage.setItem("pieces", foragePieces); setRepositoryPieces(repositoryPiecesAux); } else { for (const repo of repositories.data) { @@ -100,7 +102,7 @@ const PiecesProvider: React.FC<{ children: React.ReactNode }> = ({ repositoryPiecesAux[repo.id].push(op); foragePieces[op.id] = op; } - void localForage.setItem("pieces", foragePieces); + localStorage.setItem("pieces", foragePieces); }) .catch((e) => { console.log(e); @@ -115,8 +117,8 @@ const PiecesProvider: React.FC<{ children: React.ReactNode }> = ({ source: "default", }); - const fetchForagePieceById = useCallback(async (id: number) => { - const pieces = await localForage.getItem("pieces"); + const fetchForagePieceById = useCallback((id: number) => { + const pieces = localStorage.getItem("pieces"); if (pieces !== null) { return pieces[id]; } diff --git a/frontend/src/features/myWorkflows/types/workflow.ts b/frontend/src/features/myWorkflows/types/workflow.ts index d6f52690..dc583498 100644 --- a/frontend/src/features/myWorkflows/types/workflow.ts +++ b/frontend/src/features/myWorkflows/types/workflow.ts @@ -1,13 +1,6 @@ -export interface IWorkflowElement { - id: string; - type?: string; - data: { - name: string; - handleOrientation: "horizontal" | "vertical"; - style: any; - }; - position: { x: number; y: number }; -} +import { type DefaultNode } from "features/workflowEditor/components/Panel/WorkflowPanel"; + +export type IWorkflowElement = DefaultNode; enum workflowStatus { creating = "creating", diff --git a/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx new file mode 100644 index 00000000..c77812ca --- /dev/null +++ b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx @@ -0,0 +1,220 @@ +import ClearIcon from "@mui/icons-material/Clear"; +import DownloadIcon from "@mui/icons-material/Download"; +import IosShareIcon from "@mui/icons-material/IosShare"; +import SaveIcon from "@mui/icons-material/Save"; +import SettingsSuggestIcon from "@mui/icons-material/Settings"; +import { Button, Grid, Menu, MenuItem, styled } from "@mui/material"; +import { useStorage } from "@nathan-vm/use-storage"; +import { type ModalRef } from "components/Modal"; +import { + type Differences, + findDifferencesInJsonImported, + importJsonWorkflow, + validateJsonImported, +} from "features/workflowEditor/utils"; +import React, { useCallback, useRef, useState } from "react"; +import { toast } from "react-toastify"; +import * as yup from "yup"; + +import { + DifferencesModal, + MyWorkflowExamplesGalleryModal, + WorkflowExamplesGalleryModal, +} from "../Modals"; + +interface Props { + handleSettings: () => void; + handleSave: () => void; + handleExport: () => void; + handleImported: (json: any) => void; + handleClear: () => void; +} + +const VisuallyHiddenInput = styled("input")({ + clip: "rect(0 0 0 0)", + clipPath: "inset(50%)", + height: 1, + overflow: "hidden", + position: "absolute", + bottom: 0, + left: 0, + whiteSpace: "nowrap", + width: 1, +}); + +export const ButtonsMenu: React.FC = ({ + handleSettings, + handleSave, + handleExport, + handleImported, + handleClear, +}) => { + const fileInputRef = useRef(null); + const incompatiblePiecesModalRef = useRef(null); + const workflowsGalleryModalRef = useRef(null); + const myWorkflowsGalleryModalRef = useRef(null); + const localStorage = useStorage(); + + const [menuElement, setMenuElement] = useState(null); + const importMenuOpen = Boolean(menuElement); + + const handleClickImportMenu = useCallback( + (event: React.MouseEvent) => { + setMenuElement(event.currentTarget); + }, + [], + ); + + const handleImportFromFile = useCallback(() => { + if (fileInputRef.current) { + fileInputRef.current.click(); + } + setMenuElement(null); + }, [fileInputRef]); + + const handleImportFromExamples = useCallback(() => { + setMenuElement(null); + workflowsGalleryModalRef.current?.open(); + }, [workflowsGalleryModalRef]); + + const [incompatiblesPieces, setIncompatiblesPieces] = useState( + [], + ); + + const handleImportedJson = useCallback((json: any) => { + try { + validateJsonImported(json); + const pieces = localStorage.getItem("pieces"); + const differences = findDifferencesInJsonImported( + json, + pieces as Piece[], + ); + + if (differences.length) { + toast.error("Some repositories are missing or incompatible version"); + + setIncompatiblesPieces(differences); + incompatiblePiecesModalRef.current?.open(); + } + + handleImported(json); + } catch (e: any) { + if (e instanceof yup.ValidationError) { + toast.error("This JSON file is incompatible or corrupted"); + } else { + console.log(e); + } + } + if (fileInputRef.current) { + fileInputRef.current.value = ""; + } + }, []); + + return ( + + + + + + + + + + + + + { + setMenuElement(null); + }} + MenuListProps={{ + "aria-labelledby": "import-button", + }} + > + from file + + from examples gallery + + { + myWorkflowsGalleryModalRef.current?.open(); + }} + > + from my workflows + + + + + + + + + + + ); +}; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/ContainerResourceForm.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/ContainerResourceForm.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/SidebarForm/ContainerResourceForm.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/ContainerResourceForm.tsx diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx similarity index 98% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx index d18f0e8d..2a247bf9 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/arrayInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx @@ -11,7 +11,10 @@ import { type InputArray, type IWorkflowPieceData, } from "features/workflowEditor/context/types"; -import { getFromUpstream } from "features/workflowEditor/utils"; +import { + type UpstreamOptions, + getFromUpstream, +} from "features/workflowEditor/utils"; import React, { useCallback, useMemo, useState } from "react"; import { type Control, @@ -20,8 +23,6 @@ import { useWatch, } from "react-hook-form"; -import { type UpstreamOptions } from "../../../../utils/upstreamOptions"; - import { disableCheckboxOptions } from "./disableCheckboxOptions"; import ObjectInputComponent from "./objectInput"; import SelectUpstreamInput from "./selectUpstreamInput"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/disableCheckboxOptions.ts b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/disableCheckboxOptions.ts similarity index 74% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/disableCheckboxOptions.ts rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/disableCheckboxOptions.ts index e3d7aa2e..b93eb4b5 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/disableCheckboxOptions.ts +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/disableCheckboxOptions.ts @@ -1,4 +1,4 @@ -function getFromUpstreamType(schema: InputSchemaProperty): FromUpstream { +function getFromUpstreamType(schema: Property): FromUpstream { if (schema?.from_upstream) { return schema?.from_upstream; } @@ -6,7 +6,7 @@ function getFromUpstreamType(schema: InputSchemaProperty): FromUpstream { return "allowed"; } -export function disableCheckboxOptions(schema: InputSchemaProperty): boolean { +export function disableCheckboxOptions(schema: Property): boolean { let disable: boolean = false; const fromUpstream = getFromUpstreamType(schema); diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx similarity index 99% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx index 5da1f1cd..a8fcc26f 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx @@ -7,13 +7,12 @@ import SelectInput from "components/SelectInput"; import TextAreaInput from "components/TextAreaInput"; import TextInput from "components/TextInput"; import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; -import React, { useMemo } from "react"; -import { type Control, useWatch } from "react-hook-form"; - import { - type UpstreamOptions, type Option, -} from "../../../../utils/upstreamOptions"; + type UpstreamOptions, +} from "features/workflowEditor/utils"; +import React, { useMemo } from "react"; +import { type Control, useWatch } from "react-hook-form"; import ArrayInput from "./arrayInput"; import { disableCheckboxOptions } from "./disableCheckboxOptions"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx similarity index 98% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx index f92220e8..b801552b 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/objectInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx @@ -2,12 +2,11 @@ import { Grid } from "@mui/material"; import CheckboxInput from "components/CheckboxInput"; import SelectInput from "components/SelectInput"; import TextInput from "components/TextInput"; +import { type UpstreamOptions } from "features/workflowEditor/utils"; import React, { useCallback, useMemo, useState } from "react"; import { useWatch } from "react-hook-form"; import { getDefinition } from "utils"; -import { type UpstreamOptions } from "../../../../utils/upstreamOptions"; - import { disableCheckboxOptions } from "./disableCheckboxOptions"; import SelectUpstreamInput from "./selectUpstreamInput"; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx similarity index 97% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx index 1f225066..fed09f50 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/PieceFormItem/selectUpstreamInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx @@ -7,12 +7,11 @@ import { type SelectChangeEvent, } from "@mui/material"; import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type Option } from "features/workflowEditor/utils"; import React, { useCallback } from "react"; import { Controller, useFormContext } from "react-hook-form"; import { fetchFromObject } from "utils"; -import { type Option } from "../../../../utils/upstreamOptions"; - type ObjectName = `inputs.${string}.value.${number}.upstreamValue.${string}`; type Name = `inputs.${string}`; type Props = diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx similarity index 86% rename from frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx index c716e220..aedbf914 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx @@ -1,12 +1,11 @@ import { useWorkflowsEditor } from "features/workflowEditor/context"; import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; -import React, { useCallback, useEffect, useMemo, useState } from "react"; -import { useFormContext } from "react-hook-form"; - import { - type UpstreamOptions, getUpstreamOptions, -} from "../../../utils/upstreamOptions"; + type UpstreamOptions, +} from "features/workflowEditor/utils"; +import React, { useCallback, useEffect, useMemo, useState } from "react"; +import { useFormContext } from "react-hook-form"; import PieceFormItem from "./PieceFormItem"; @@ -25,13 +24,13 @@ const PieceForm: React.FC = ({ formId, schema }) => { return schema?.properties; }, [schema]); - const handleUpstreamOptions = useCallback(async () => { + const handleUpstreamOptions = useCallback(() => { if (!shouldRender) { return; } - const workflowPieces = await getForageWorkflowPieces(); - const workflowEdges = await fetchForageWorkflowEdges(); + const workflowPieces = getForageWorkflowPieces(); + const workflowEdges = fetchForageWorkflowEdges(); const upstreamOptions = getUpstreamOptions( formId, @@ -50,7 +49,7 @@ const PieceForm: React.FC = ({ formId, schema }) => { ]); useEffect(() => { - void handleUpstreamOptions(); + handleUpstreamOptions(); }, [handleUpstreamOptions]); if (!shouldRender) return null; diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/StorageForm.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/SidebarForm/StorageForm.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx diff --git a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx similarity index 92% rename from frontend/src/features/workflowEditor/components/SidebarForm/index.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx index 01903c53..a753cebe 100644 --- a/frontend/src/features/workflowEditor/components/SidebarForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx @@ -9,13 +9,12 @@ import { } from "@mui/material"; import { useWorkflowsEditor } from "features/workflowEditor/context"; import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { createInputsSchemaValidation } from "features/workflowEditor/utils/validation"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; import { yupResolver } from "utils"; import * as yup from "yup"; -import { createInputsSchemaValidation } from "../../utils/validation"; - import ContainerResourceForm, { ContainerResourceFormSchema, } from "./ContainerResourceForm"; @@ -30,7 +29,7 @@ interface ISidebarPieceFormProps { onClose: (event: any) => void; } -const SidebarPieceForm: React.FC = (props) => { +export const PieceFormDrawer: React.FC = (props) => { const { schema, formId, open, onClose, title } = props; const { @@ -40,7 +39,7 @@ const SidebarPieceForm: React.FC = (props) => { clearDownstreamDataById, } = useWorkflowsEditor(); - const SidebarPieceFormSchema = useMemo(() => { + const PieceFormSchema = useMemo(() => { return yup.object().shape({ storage: storageFormSchema, containerResources: ContainerResourceFormSchema, @@ -48,7 +47,7 @@ const SidebarPieceForm: React.FC = (props) => { }); }, [schema]); - const resolver = yupResolver(SidebarPieceFormSchema); + const resolver = yupResolver(PieceFormSchema); const [formLoaded, setFormLoaded] = useState(false); @@ -61,7 +60,7 @@ const SidebarPieceForm: React.FC = (props) => { const loadData = useCallback(async () => { setFormLoaded(false); - const data = await fetchForageWorkflowPiecesDataById(formId); + const data = fetchForageWorkflowPiecesDataById(formId); if (data) { reset(data); // put forage data on form if exist } else { @@ -71,7 +70,7 @@ const SidebarPieceForm: React.FC = (props) => { setFormLoaded(true); }, [formId, fetchForageWorkflowPiecesDataById, reset, trigger]); - const updateOutputSchema = useCallback(async () => { + const updateOutputSchema = useCallback(() => { if (schema?.properties) { const outputSchemaProperty = Object.keys(schema.properties).find( (key) => { @@ -128,8 +127,8 @@ const SidebarPieceForm: React.FC = (props) => { {}, ); - await setForageWorkflowPiecesOutputSchema(formId, newProperties); - await clearDownstreamDataById(formId); + setForageWorkflowPiecesOutputSchema(formId, newProperties); + clearDownstreamDataById(formId); } } }, [ @@ -142,8 +141,8 @@ const SidebarPieceForm: React.FC = (props) => { const saveData = useCallback(async () => { if (formId && open) { - await setForageWorkflowPiecesDataById(formId, data as IWorkflowPieceData); - await updateOutputSchema(); + setForageWorkflowPiecesDataById(formId, data as IWorkflowPieceData); + updateOutputSchema(); } }, [formId, open, setForageWorkflowPiecesDataById, data, updateOutputSchema]); @@ -270,5 +269,3 @@ const SidebarPieceForm: React.FC = (props) => { ); }; - -export default SidebarPieceForm; diff --git a/frontend/src/features/workflowEditor/components/DrawerMenu/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/index.tsx similarity index 91% rename from frontend/src/features/workflowEditor/components/DrawerMenu/index.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/index.tsx index 45565532..1c81b4f5 100644 --- a/frontend/src/features/workflowEditor/components/DrawerMenu/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/index.tsx @@ -18,7 +18,7 @@ import { type FC, type ReactNode, useState } from "react"; import SidebarAddNode from "./sidebarAddNode"; -interface PermanentDrawerRightWorkflowsProps { +interface PiecesDrawerProps { isOpen?: boolean; handleClose: () => void; children?: ReactNode; @@ -29,9 +29,10 @@ interface PermanentDrawerRightWorkflowsProps { orientation: "vertical" | "horizontal"; } -export const PermanentDrawerRightWorkflows: FC< - PermanentDrawerRightWorkflowsProps -> = ({ setOrientation, orientation }) => { +export const PiecesDrawer: FC = ({ + setOrientation, + orientation, +}) => { const theme = useTheme(); const [openDrawer, setOpenDrawer] = useState(true); diff --git a/frontend/src/features/workflowEditor/components/DrawerMenu/pieceDocsPopover.tsx b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/pieceDocsPopover.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/DrawerMenu/pieceDocsPopover.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/pieceDocsPopover.tsx diff --git a/frontend/src/features/workflowEditor/components/DrawerMenu/sidebarAddNode.tsx b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarAddNode.tsx similarity index 96% rename from frontend/src/features/workflowEditor/components/DrawerMenu/sidebarAddNode.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarAddNode.tsx index 9ea310b4..23d6046e 100644 --- a/frontend/src/features/workflowEditor/components/DrawerMenu/sidebarAddNode.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarAddNode.tsx @@ -144,7 +144,11 @@ const SidebarAddNode: FC = ({ setOrientation, orientation }) => { {Boolean(filteredRepositoryPieces[repo.id]?.length) && filteredRepositoryPieces[repo.id].map((piece) => ( - + ))} diff --git a/frontend/src/features/workflowEditor/components/DrawerMenu/sidebarNode.tsx b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarNode.tsx similarity index 90% rename from frontend/src/features/workflowEditor/components/DrawerMenu/sidebarNode.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarNode.tsx index fcb4d7ce..5b0431c9 100644 --- a/frontend/src/features/workflowEditor/components/DrawerMenu/sidebarNode.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PiecesDrawer/sidebarNode.tsx @@ -4,7 +4,10 @@ import React, { type FC, useState } from "react"; import PieceDocsPopover from "./pieceDocsPopover"; -const PiecesSidebarNode: FC<{ piece: Piece }> = ({ piece }) => { +const PiecesSidebarNode: FC<{ + piece: Piece; + orientation: "horizontal" | "vertical"; +}> = ({ piece, orientation }) => { const [popoverOpen, setPopoverOpen] = useState(false); // Drag and drop from sidebar to Workflow area @@ -12,7 +15,7 @@ const PiecesSidebarNode: FC<{ piece: Piece }> = ({ piece }) => { event: React.DragEvent, nodeData: any, ) => { - const data = JSON.stringify(nodeData.nodeData); + const data = JSON.stringify({ ...nodeData.nodeData, orientation }); event.dataTransfer.setData("application/reactflow", data); event.dataTransfer.effectAllowed = "move"; }; diff --git a/frontend/src/features/workflowEditor/components/SidebarSettingsForm/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx similarity index 92% rename from frontend/src/features/workflowEditor/components/SidebarSettingsForm/index.tsx rename to frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx index 093da384..8a383d84 100644 --- a/frontend/src/features/workflowEditor/components/SidebarSettingsForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx @@ -27,7 +27,7 @@ import { FormProvider, useForm } from "react-hook-form"; import { yupResolver } from "utils"; import * as yup from "yup"; -interface ISidebarSettingsFormProps { +interface ISettingsFormDrawerProps { open: boolean; onClose: (event: any) => void; } @@ -107,17 +107,17 @@ export const WorkflowSettingsFormSchema: ValidationSchema = yup.object().shape({ }), }); -export interface SidebarSettingsFormRef { - loadData: () => Promise; +export interface SettingsFormDrawerRef { + loadData: () => void; } -const SidebarSettingsForm = forwardRef< - SidebarSettingsFormRef, - ISidebarSettingsFormProps +const SettingsFormDrawer = forwardRef< + SettingsFormDrawerRef, + ISettingsFormDrawerProps >( ( - props: ISidebarSettingsFormProps, - ref: ForwardedRef, + props: ISettingsFormDrawerProps, + ref: ForwardedRef, ) => { const { open, onClose } = props; @@ -139,29 +139,29 @@ const SidebarSettingsForm = forwardRef< validate(); }, [validate]); - const loadData = useCallback(async () => { - const data = await fetchWorkflowSettingsData(); + const loadData = useCallback(() => { + const data = fetchWorkflowSettingsData(); if (Object.keys(data).length === 0) { reset(defaultSettingsData); - await setWorkflowSettingsData(defaultSettingsData); + setWorkflowSettingsData(defaultSettingsData); } else { reset(data); } setLoaded(true); }, [reset, fetchWorkflowSettingsData, setWorkflowSettingsData]); - const saveData = useCallback(async () => { + const saveData = useCallback(() => { if (open) { - await setWorkflowSettingsData(formData); + setWorkflowSettingsData(formData); } }, [formData, open, setWorkflowSettingsData]); useEffect(() => { - void loadData(); + loadData(); }, [open, loadData]); useEffect(() => { - void saveData(); + saveData(); }, [saveData]); useImperativeHandle( @@ -305,5 +305,5 @@ const SidebarSettingsForm = forwardRef< ); }, ); -SidebarSettingsForm.displayName = "SidebarSettingsForm"; -export { SidebarSettingsForm }; +SettingsFormDrawer.displayName = "SettingsFormDrawer"; +export { SettingsFormDrawer }; diff --git a/frontend/src/features/workflowEditor/components/Drawers/index.ts b/frontend/src/features/workflowEditor/components/Drawers/index.ts new file mode 100644 index 00000000..d0bacca3 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/index.ts @@ -0,0 +1,3 @@ +export * from "./PieceFormDrawer"; +export * from "./PiecesDrawer"; +export * from "./SettingsFormDrawer"; diff --git a/frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx b/frontend/src/features/workflowEditor/components/Modals/DifferencesModal.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/DifferencesModal/index.tsx rename to frontend/src/features/workflowEditor/components/Modals/DifferencesModal.tsx diff --git a/frontend/src/features/workflowEditor/components/MyWorkflowsGalleryModal/index.tsx b/frontend/src/features/workflowEditor/components/Modals/MyWorkflowsGalleryModal.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/MyWorkflowsGalleryModal/index.tsx rename to frontend/src/features/workflowEditor/components/Modals/MyWorkflowsGalleryModal.tsx diff --git a/frontend/src/features/workflowEditor/components/WorkflowExamplesGalleryModal/index.tsx b/frontend/src/features/workflowEditor/components/Modals/WorkflowExamplesGalleryModal.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/WorkflowExamplesGalleryModal/index.tsx rename to frontend/src/features/workflowEditor/components/Modals/WorkflowExamplesGalleryModal.tsx diff --git a/frontend/src/features/workflowEditor/components/Modals/index.ts b/frontend/src/features/workflowEditor/components/Modals/index.ts new file mode 100644 index 00000000..7838a11a --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Modals/index.ts @@ -0,0 +1,3 @@ +export * from "./DifferencesModal"; +export * from "./WorkflowExamplesGalleryModal"; +export * from "./MyWorkflowsGalleryModal"; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/ConnectionLine/index.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/ConnectionLine/index.tsx new file mode 100644 index 00000000..a27caa35 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/ConnectionLine/index.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { + getBezierPath, + type ConnectionLineComponentProps, + BaseEdge, +} from "reactflow"; + +export const CustomConnectionLine: React.FC = ({ + fromX, + fromY, + fromPosition, + toX, + toY, + toPosition, +}) => { + const [linePath] = getBezierPath({ + sourceX: fromX, + sourceY: fromY, + sourcePosition: fromPosition, + targetX: toX, + targetY: toY, + targetPosition: toPosition, + }); + + return ( + + + + ); +}; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultEdge/index.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultEdge/index.tsx new file mode 100644 index 00000000..bab95a5a --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultEdge/index.tsx @@ -0,0 +1,34 @@ +import { BaseEdge, type EdgeProps, getBezierPath } from "reactflow"; + +const DefaultEdge: React.FC = ({ + id, + sourceX, + sourceY, + targetX, + targetY, + sourcePosition, + targetPosition, + markerEnd, +}: EdgeProps) => { + const [edgePath] = getBezierPath({ + sourceX, + sourceY, + sourcePosition, + targetX, + targetY, + targetPosition, + }); + + return ( + + ); +}; + +export default DefaultEdge; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultNode/index.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultNode/index.tsx new file mode 100644 index 00000000..e30c310a --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/DefaultNode/index.tsx @@ -0,0 +1,173 @@ +import { Icon } from "@iconify/react"; +import { Paper, Typography } from "@mui/material"; +import theme from "providers/theme.config"; +import React, { type CSSProperties, memo, useMemo } from "react"; +import { Handle, Position } from "reactflow"; +import { getUuidSlice, useMouseProximity } from "utils"; + +import { type DefaultNodeProps } from "../types"; + +export const CustomNode = memo(({ id, data, selected }) => { + const [isNear, ElementRef] = useMouseProximity(150); + + const handleStyle = useMemo( + () => + isNear + ? { + border: 0, + borderRadius: "16px", + backgroundColor: theme.palette.info.main, + transition: "ease 100", + zIndex: 2, + width: "12px", + height: "12px", + } + : { + border: 0, + borderRadius: "16px", + backgroundColor: "transparent", + transition: "ease 100", + zIndex: 2, + }, + [isNear], + ); + + const extendedClassExt = useMemo<"input" | "default" | "output">(() => { + const dominoReactflowClassTypeMap = Object.freeze({ + source: "input", + default: "default", + sink: "output", + }); + if ( + !data?.style.nodeType || + !["default", "source", "sink"].includes(data?.style.nodeType) + ) { + return "default"; + } else { + return dominoReactflowClassTypeMap[data.style.nodeType]; + } + }, [data]); + + const nodeTypeRenderHandleMap = useMemo( + () => ({ + input: { + renderTargetHandle: false, + renderSourceHandle: true, + }, + output: { + renderTargetHandle: true, + renderSourceHandle: false, + }, + default: { + renderTargetHandle: true, + renderSourceHandle: true, + }, + }), + [], + ); + + const nodeStyle = useMemo(() => { + return { + ...data.style.nodeStyle, + display: "flex", + flexDirection: "row", + justifyContent: "space-evenly", + alignItems: "center", + + position: "relative", + padding: 1, + textAlign: "center", + width: 150, + height: 70, + lineHeight: "60px", + border: selected ? "2px" : "", + borderStyle: selected ? "solid" : "", + borderColor: selected ? theme.palette.info.dark : "", + borderRadius: selected ? "3px" : "", + ...(data.validationError && { + backgroundColor: theme.palette.error.light, + color: theme.palette.error.contrastText, + }), + } satisfies CSSProperties; + }, [data, selected]); + + const { sourcePosition, targetPosition } = useMemo( + () => ({ + ...(data.orientation === "horizontal" + ? { + targetPosition: Position.Left, + sourcePosition: Position.Right, + } + : { + targetPosition: Position.Top, + sourcePosition: Position.Bottom, + }), + }), + [data], + ); + + const icon = useMemo(() => { + if (data.style.useIcon) { + const name = data.style.iconClassName; + return { + name, + style: { + width: "20px", + height: "20px", + margin: "5px", + ...data.style.iconStyle, + }, + }; + } + }, [data]); + + return ( + <> + {nodeTypeRenderHandleMap[extendedClassExt].renderSourceHandle && ( + + )} + {nodeTypeRenderHandleMap[extendedClassExt].renderTargetHandle && ( + + )} + + {icon && } +
+ + {data?.style?.label ? data?.style?.label : data?.name} + + + {getUuidSlice(id)} + +
+
+ + ); +}); + +CustomNode.displayName = "CustomNode"; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx new file mode 100644 index 00000000..e3244836 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx @@ -0,0 +1,353 @@ +import AutoFixHighIcon from "@mui/icons-material/AutoFixHigh"; +import { Paper } from "@mui/material"; +import { usesPieces } from "context/workspaces"; +import Elk from "elkjs"; +import { useWorkflowsEditor } from "features/workflowEditor/context"; +import { + storageAccessModes, + type IWorkflowPieceData, +} from "features/workflowEditor/context/types"; +import theme from "providers/theme.config"; +import React, { + useCallback, + type DragEvent, + useState, + useRef, + forwardRef, + useImperativeHandle, + useMemo, +} from "react"; +import ReactFlow, { + type Node, + addEdge, + Background, + Controls, + type Connection, + type Edge, + useNodesState, + useEdgesState, + type NodeMouseHandler, + type ReactFlowInstance, + type XYPosition, + ControlButton, + MarkerType, + type EdgeTypes, + type NodeTypes, +} from "reactflow"; +import "reactflow/dist/style.css"; +import { v4 as uuidv4 } from "uuid"; + +import { + extractDefaultContainerResources, + extractDefaultInputValues, +} from "../../../utils"; + +import { CustomConnectionLine } from "./ConnectionLine"; +import DefaultEdge from "./DefaultEdge"; +import { CustomNode } from "./DefaultNode"; +import { type DefaultNode } from "./types"; + +const getId = (module_name: string) => { + return `${module_name}_${uuidv4()}`; +}; + +const DEFAULT_NODE_TYPES: NodeTypes = { + CustomNode, +}; + +const EDGE_TYPES: EdgeTypes = { + default: DefaultEdge, +}; + +interface Props { + onNodeDoubleClick: NodeMouseHandler; +} + +export interface WorkflowPanelRef { + edges: Edge[]; + nodes: DefaultNode[]; + setNodes: React.Dispatch>; + setEdges: React.Dispatch>; +} + +const WorkflowPanel = forwardRef( + ({ onNodeDoubleClick }, ref) => { + const reactFlowWrapper = useRef(null); + const [instance, setInstance] = useState(null); + const [rawNodes, setNodes, onNodesChange] = useNodesState([]); + const [rawEdges, setEdges, onEdgesChange] = useEdgesState([]); + + const { + fetchForageWorkflowNodes, + fetchForageWorkflowEdges, + setForageWorkflowPieces, + getForageWorkflowPieces, + removeForageWorkflowPiecesById, + removeForageWorkflowPieceDataById, + setForageWorkflowPiecesDataById, + clearDownstreamDataById, + setWorkflowEdges, + setWorkflowNodes, + } = useWorkflowsEditor(); + + const { fetchForagePieceById } = usesPieces(); + + const onInit = useCallback( + (instance: ReactFlowInstance) => { + setInstance(instance); + const edges = fetchForageWorkflowEdges(); + const nodes = fetchForageWorkflowNodes(); + setNodes(nodes); + setEdges(edges); + window.requestAnimationFrame(() => instance.fitView()); + }, + [fetchForageWorkflowEdges, fetchForageWorkflowNodes, setNodes, setEdges], + ); + + const createNewNode = useCallback( + (event: DragEvent, position: XYPosition) => { + event.preventDefault(); + const nodeData = event.dataTransfer.getData("application/reactflow"); + const { ...data } = JSON.parse(nodeData); + + const newNodeData: DefaultNode["data"] = { + name: data.name, + style: data.style, + validationError: false, + orientation: data?.orientation ?? "horizontal", + }; + + const newNode = { + id: getId(data.id), + type: "CustomNode", + position, + data: newNodeData, + }; + + const piece = fetchForagePieceById(data.id); + const defaultInputs = extractDefaultInputValues( + piece as unknown as Piece, + ); + + const defaultContainerResources = extractDefaultContainerResources( + piece?.container_resources, + ); + + const currentWorkflowPieces = getForageWorkflowPieces(); + const newWorkflowPieces = { + ...currentWorkflowPieces, + [newNode.id]: piece, + }; + setForageWorkflowPieces(newWorkflowPieces); + + const defaultWorkflowPieceData: IWorkflowPieceData = { + storage: { storageAccessMode: storageAccessModes.ReadWrite }, + containerResources: defaultContainerResources, + inputs: defaultInputs, + }; + + setForageWorkflowPiecesDataById(newNode.id, defaultWorkflowPieceData); + return newNode; + }, + [ + fetchForagePieceById, + setForageWorkflowPieces, + getForageWorkflowPieces, + setForageWorkflowPiecesDataById, + ], + ); + + const onDrop = useCallback( + async (event: DragEvent) => { + event.preventDefault(); + if (reactFlowWrapper?.current === null || instance === null) { + return; + } + const reactFlowBounds = + reactFlowWrapper.current.getBoundingClientRect(); + + const position = instance.project({ + x: event.clientX - reactFlowBounds.left, + y: event.clientY - reactFlowBounds.top, + }); + + const newNode = createNewNode(event, position); + if (newNode) { + setNodes((ns: Node[]) => { + const nodes = ns.concat(newNode); + setWorkflowNodes(nodes); + return nodes; + }); + } + }, + [instance, setNodes, createNewNode], + ); + + const onDragOver = (event: DragEvent) => { + event.preventDefault(); + event.dataTransfer.dropEffect = "move"; + }; + + const onConnect = useCallback( + (connection: Connection) => { + setEdges((prevEdges: Edge[]) => { + const edges = addEdge(connection, prevEdges); + setWorkflowEdges(edges); + return edges; + }); + }, + [setEdges, setWorkflowEdges], + ); + + const onNodesDelete = useCallback( + (nodes: any) => { + for (const node of nodes) { + removeForageWorkflowPiecesById(node.id); + removeForageWorkflowPieceDataById(node.id); + } + }, + [removeForageWorkflowPieceDataById, removeForageWorkflowPiecesById], + ); + + const onEdgesDelete = useCallback( + (edges: Edge[]) => { + for (const edge of edges) { + clearDownstreamDataById(edge.source); + // TODO remover a edge no localStorage + } + }, + [clearDownstreamDataById], + ); + + const autoLayout = useCallback(async () => { + const elkGraph = { + id: "root", + children: rawNodes.map((node) => ({ + id: node.id, + width: 230, + height: 140, + })), + edges: rawEdges.map((edge) => ({ + id: edge.id, + sources: [edge.source], + targets: [edge.target], + })), + }; + + const elk = new Elk(); + + try { + const elkLayout = await elk.layout(elkGraph); + + if (elkLayout?.children && elkLayout.edges) { + const updatedNodes = elkLayout.children.map((elkNode) => { + const node = rawNodes.find((node) => node.id === elkNode.id); + if ( + node && + elkNode.x !== undefined && + elkNode.width !== undefined && + elkNode.y !== undefined && + elkNode.height !== undefined + ) { + return { + ...node, + position: { + x: elkNode.x - elkNode.width / 2, + y: elkNode.y - elkNode.height / 2, + }, + }; + } + return node; + }); + + const updatedEdges = elkLayout.edges.map((elkEdge) => ({ + ...rawEdges.find((edge) => edge.id === elkEdge.id), + })); + + setNodes(updatedNodes as Node[]); + setEdges(updatedEdges as Edge[]); + window.requestAnimationFrame(() => instance?.fitView()); + } + } catch (error) { + console.error("Error during layout:", error); + } + }, [rawNodes, rawEdges]); + + const { nodes, edges } = useMemo(() => { + const nodes = [...rawNodes].map((node: Node) => ({ + ...node, + data: { + ...node.data, + }, + })); + + const edges = [...rawEdges].map((edge: Edge) => { + return { + ...edge, + markerEnd: { + type: MarkerType.ArrowClosed, + width: 20, + height: 20, + }, + }; + }); + + return { + nodes, + edges, + }; + }, [rawNodes, rawEdges]); + + useImperativeHandle( + ref, + () => { + return { + edges, + nodes, + setEdges, + setNodes, + }; + }, + [rawEdges, rawNodes, setEdges, setNodes], + ); + + return ( + + + + + + + + + + + ); + }, +); + +WorkflowPanel.displayName = "WorkflowPanel"; + +export { WorkflowPanel }; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/index.ts b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/index.ts new file mode 100644 index 00000000..26db2a52 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/index.ts @@ -0,0 +1,2 @@ +export * from "./WorkflowPanel"; +export * from "./types"; diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/types.ts b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/types.ts new file mode 100644 index 00000000..17ec44b5 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/types.ts @@ -0,0 +1,26 @@ +import { type CSSProperties } from "react"; +import { type Node, type NodeProps } from "reactflow"; + +export type DefaultNode = Node; + +export interface DefaultNodeProps extends NodeProps { + data: DefaultNodeData; +} + +interface DefaultNodeData { + name: string; + style: IStyleData; + validationError: boolean; + orientation: "vertical" | "horizontal"; +} + +interface IStyleData { + nodeType: "default" | "source" | "sink"; + nodeStyle: CSSProperties; + useIcon: boolean; + iconId: string; + iconClassName: string; + iconStyle: CSSProperties; + label: string; + module: string; +} diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx deleted file mode 100644 index 775cc69d..00000000 --- a/frontend/src/features/workflowEditor/components/WorkflowEditor.tsx +++ /dev/null @@ -1,594 +0,0 @@ -import { Settings as SettingsSuggestIcon } from "@mui/icons-material"; -import ClearIcon from "@mui/icons-material/Clear"; -import DownloadIcon from "@mui/icons-material/Download"; -import IosShareIcon from "@mui/icons-material/IosShare"; -import SaveIcon from "@mui/icons-material/Save"; -import { Button, Grid, Paper, styled } from "@mui/material"; -import Menu from "@mui/material/Menu"; -import MenuItem from "@mui/material/MenuItem"; -import { AxiosError } from "axios"; -import Loading from "components/Loading"; -import { type ModalRef } from "components/Modal"; -import { - type WorkflowPanelRef, - WorkflowPanel, - type DefaultNode, -} from "components/WorkflowPanel"; -import { useWorkspaces, usesPieces } from "context/workspaces"; -import { useWorkflowsEditor } from "features/workflowEditor/context"; -import React, { type DragEvent, useCallback, useRef, useState } from "react"; -import { toast } from "react-toastify"; -import { type Edge, type Node, type XYPosition } from "reactflow"; -import { yupResolver, useInterval, exportToJson } from "utils"; -import { v4 as uuidv4 } from "uuid"; -import * as yup from "yup"; - -import { type IWorkflowPieceData, storageAccessModes } from "../context/types"; -import { type GenerateWorkflowsParams } from "../context/workflowsEditor"; -import { - extractDefaultContainerResources, - extractDefaultInputValues, -} from "../utils"; -import { - type Differences, - importJsonWorkflow, - validateJsonImported, - findDifferencesInJsonImported, -} from "../utils/importWorkflow"; -import { createInputsSchemaValidation } from "../utils/validation"; - -import { DifferencesModal } from "./DifferencesModal"; -import { PermanentDrawerRightWorkflows } from "./DrawerMenu"; -import { MyWorkflowExamplesGalleryModal } from "./MyWorkflowsGalleryModal"; -import SidebarPieceForm from "./SidebarForm"; -import { ContainerResourceFormSchema } from "./SidebarForm/ContainerResourceForm"; -import { storageFormSchema } from "./SidebarForm/StorageForm"; -import { - SidebarSettingsForm, - WorkflowSettingsFormSchema, - type SidebarSettingsFormRef, -} from "./SidebarSettingsForm"; -import { WorkflowExamplesGalleryModal } from "./WorkflowExamplesGalleryModal"; - -/** - * Create workflow tab - // TODO refactor/simplify inner files - // TODO handle runtime errors - // TODO make it look good - */ -const getId = (module_name: string) => { - return `${module_name}_${uuidv4()}`; -}; - -const VisuallyHiddenInput = styled("input")({ - clip: "rect(0 0 0 0)", - clipPath: "inset(50%)", - height: 1, - overflow: "hidden", - position: "absolute", - bottom: 0, - left: 0, - whiteSpace: "nowrap", - width: 1, -}); - -export const WorkflowsEditorComponent: React.FC = () => { - const workflowPanelRef = useRef(null); - const sidebarSettingsRef = useRef(null); - const [sidebarSettingsDrawer, setSidebarSettingsDrawer] = useState(false); - const [sidebarPieceDrawer, setSidebarPieceDrawer] = useState(false); - const [formId, setFormId] = useState(""); - const [formTitle, setFormTitle] = useState(""); - const [formSchema, setFormSchema] = useState({}); - const [menuOpen, setMenuOpen] = useState(false); - const [loading, setBackdropIsOpen] = useState(false); - const [orientation, setOrientation] = useState<"horizontal" | "vertical">( - "horizontal", - ); - - const [anchorEl, setAnchorEl] = React.useState(null); - const importMenuOpen = Boolean(anchorEl); - - const incompatiblePiecesModalRef = useRef(null); - const workflowsGalleryModalRef = useRef(null); - const myWorkflowsGalleryModalRef = useRef(null); - const [incompatiblesPieces, setIncompatiblesPieces] = useState( - [], - ); - - const { workspace } = useWorkspaces(); - - const saveDataToLocalForage = useCallback(async () => { - if (workflowPanelRef?.current) { - await Promise.allSettled([ - setWorkflowEdges(workflowPanelRef.current.edges ?? []), - setWorkflowNodes(workflowPanelRef.current.nodes ?? []), - ]); - } - }, [workflowPanelRef.current]); - - useInterval(saveDataToLocalForage, 3000); - - const { - clearForageData, - generateWorkflowsEditorBodyParams, - fetchWorkflowForage, - handleCreateWorkflow, - fetchForageWorkflowNodes, - fetchForageWorkflowEdges, - setForageWorkflowPieces, - getForageWorkflowPieces, - removeForageWorkflowPiecesById, - removeForageWorkflowPieceDataById, - fetchWorkflowPieceById, - setForageWorkflowPiecesDataById, - importWorkflowToForage, - clearDownstreamDataById, - setWorkflowEdges, - setWorkflowNodes, - } = useWorkflowsEditor(); - - const { fetchForagePieceById } = usesPieces(); - - const validateWorkflowSettings = useCallback(async (payload: any) => { - const resolver = yupResolver(WorkflowSettingsFormSchema); - const validatedData = await resolver(payload.workflowSettingsData); - if (!Object.keys(validatedData.errors).length) { - // do something - } else { - throw new Error("Please review your workflow settings."); - } - }, []); - - const validateWorkflowPiecesData = useCallback( - async (payload: any) => { - const validationSchema = yup.object().shape( - Object.entries(payload.workflowPieces).reduce((acc, [key, value]) => { - return { - [key]: yup.object({ - storage: storageFormSchema, - containerResources: ContainerResourceFormSchema, - inputs: createInputsSchemaValidation((value as any).input_schema), - }), - ...acc, - }; - }, {}), - ) as any; - - const resolver = yupResolver(validationSchema); - - const validatedData = await resolver(payload.workflowPiecesData); - - if (!Object.keys(validatedData.errors).length) { - workflowPanelRef?.current?.setNodes((nodes) => - nodes.map((n) => { - n = { ...n, data: { ...n.data, validationError: false } }; - return n; - }), - ); - } else { - const nodeIds = Object.keys(validatedData.errors); - workflowPanelRef?.current?.setNodes((nodes) => [ - ...nodes.map((n) => { - if (nodeIds.includes(n.id)) { - n = { ...n, data: { ...n.data, validationError: true } }; - } - - return n; - }), - ]); - - throw new Error("Please review the errors on your workflow."); - } - }, - [workflowPanelRef], - ); - - const handleSaveWorkflow = useCallback(async () => { - try { - await saveDataToLocalForage(); - setBackdropIsOpen(true); - if (!workspace?.id) { - throw new Error("No selected Workspace"); - } - const payload = await fetchWorkflowForage(); - - await validateWorkflowPiecesData(payload); - await validateWorkflowSettings(payload); - - const data = await generateWorkflowsEditorBodyParams(payload); - - await handleCreateWorkflow({ workspace_id: workspace?.id, ...data }); - - toast.success("Workflow created successfully."); - setBackdropIsOpen(false); - } catch (err) { - setBackdropIsOpen(false); - if (err instanceof AxiosError) { - console.log(err); - } else if (err instanceof Error) { - console.log(err); - toast.error( - "Error while creating workflow, check your workflow settings and tasks.", - ); - } - } - }, [ - fetchWorkflowForage, - handleCreateWorkflow, - validateWorkflowPiecesData, - validateWorkflowSettings, - generateWorkflowsEditorBodyParams, - workspace?.id, - ]); - - const handleClear = useCallback(async () => { - await clearForageData(); - workflowPanelRef.current?.setEdges([]); - workflowPanelRef.current?.setNodes([]); - await sidebarSettingsRef.current?.loadData(); - }, [clearForageData]); - - const handleExport = useCallback(async () => { - await saveDataToLocalForage(); - const payload = await fetchWorkflowForage(); - if (Object.keys(payload.workflowPieces).length === 0) { - toast.error("Workflow must have at least one piece to be exported."); - return; - } - const name = payload.workflowSettingsData?.config?.name; - - const exportedJson: any = { ...payload }; - - delete exportedJson.workflowSettingsData; - - exportToJson(exportedJson, name); - }, []); - - const fileInputRef = useRef(null); - - const handleImportedJson = useCallback( - async (json: GenerateWorkflowsParams) => { - try { - if (json) { - await validateJsonImported(json); - - const differences = await findDifferencesInJsonImported(json); - - if (differences.length) { - toast.error( - "Some repositories are missing or incompatible version", - ); - - setIncompatiblesPieces(differences); - incompatiblePiecesModalRef.current?.open(); - } else { - workflowPanelRef?.current?.setNodes(json.workflowNodes); - workflowPanelRef?.current?.setEdges(json.workflowEdges); - void importWorkflowToForage(json); - } - } - } catch (e: any) { - if (e instanceof yup.ValidationError) { - toast.error("This JSON file is incompatible or corrupted"); - } else { - console.log(e); - } - } - if (fileInputRef.current) { - fileInputRef.current.value = ""; - } - }, - [ - importJsonWorkflow, - workflowPanelRef, - importWorkflowToForage, - setIncompatiblesPieces, - incompatiblePiecesModalRef, - fileInputRef, - ], - ); - - const onNodesDelete = useCallback( - async (nodes: any) => { - for (const node of nodes) { - await removeForageWorkflowPiecesById(node.id); - await removeForageWorkflowPieceDataById(node.id); - } - }, - [removeForageWorkflowPieceDataById, removeForageWorkflowPiecesById], - ); - - const onEdgesDelete = useCallback( - async (edges: Edge[]) => { - for (const edge of edges) { - await clearDownstreamDataById(edge.source); - } - }, - [clearDownstreamDataById], - ); - - // Node double click open drawer with forms - const onNodeDoubleClick = useCallback( - async (_e: any, node: Node) => { - const pieceNode = await fetchWorkflowPieceById(node.id); - setFormSchema(pieceNode?.input_schema); - setFormId(node.id); - setFormTitle(() => { - return pieceNode?.name ? pieceNode.name : ""; - }); - setSidebarPieceDrawer(true); - }, - [fetchWorkflowPieceById], - ); - - const onLoad = useCallback(async () => { - // // Fetch old state from forage to avoid loosing flowchart when refreshing/leaving page - const workflowNodes = await fetchForageWorkflowNodes(); - const workflowEdges = await fetchForageWorkflowEdges(); - - return { nodes: workflowNodes, edges: workflowEdges }; - }, [fetchForageWorkflowNodes, fetchForageWorkflowEdges]); - - const onDrop = useCallback( - async (event: DragEvent, position: XYPosition) => { - event.preventDefault(); - const nodeData = event.dataTransfer.getData("application/reactflow"); - const { ...data } = JSON.parse(nodeData); - - const newNodeData: DefaultNode["data"] = { - name: data.name, - style: data.style, - validationError: false, - orientation, - }; - - const newNode = { - id: getId(data.id), - type: "CustomNode", - position, - data: newNodeData, - }; - - const piece = await fetchForagePieceById(data.id); - const defaultInputs = extractDefaultInputValues( - piece as unknown as Piece, - ); - - const defaultContainerResources = extractDefaultContainerResources( - piece?.container_resources, - ); - - const currentWorkflowPieces = await getForageWorkflowPieces(); - const newWorkflowPieces = { - ...currentWorkflowPieces, - [newNode.id]: piece, - }; - await setForageWorkflowPieces(newWorkflowPieces); - - const defaultWorkflowPieceData: IWorkflowPieceData = { - storage: { storageAccessMode: storageAccessModes.ReadWrite }, - containerResources: defaultContainerResources, - inputs: defaultInputs, - }; - - await setForageWorkflowPiecesDataById( - newNode.id, - defaultWorkflowPieceData, - ); - return newNode; - }, - [ - orientation, - fetchForagePieceById, - setForageWorkflowPieces, - getForageWorkflowPieces, - setForageWorkflowPiecesDataById, - ], - ); - - const onConnect = useCallback(() => { - void saveDataToLocalForage(); - }, [saveDataToLocalForage]); - - // Left drawers controls - const toggleSidebarPieceDrawer = (open: boolean) => (event: any) => { - if ( - event.type === "keydown" && - (event.key === "Tab" || event.key === "Shift") - ) { - return; - } - setSidebarPieceDrawer(open); - }; - - const toggleSidebarSettingsDrawer = (open: boolean) => (event: any) => { - if ( - event.type === "keydown" && - (event.key === "Tab" || event.key === "Shift") - ) { - return; - } - setSidebarSettingsDrawer(open); - }; - - const handleClickImportMenu = useCallback( - (event: React.MouseEvent) => { - setAnchorEl(event.currentTarget); - }, - [], - ); - - const handleImportFromFile = useCallback(() => { - if (fileInputRef.current) { - fileInputRef.current.click(); - } - setAnchorEl(null); - }, [fileInputRef]); - - const handleImportFromExamples = useCallback(() => { - setAnchorEl(null); - workflowsGalleryModalRef.current?.open(); - }, [workflowsGalleryModalRef]); - - return ( - <> - {loading && } - - - - - - - - - - - - - - - { - setAnchorEl(null); - }} - MenuListProps={{ - "aria-labelledby": "import-button", - }} - > - from file - - from examples gallery - - { - myWorkflowsGalleryModalRef.current?.open(); - }} - > - from my workflows - - - { - void handleImportedJson(json); - }} - /> - { - void handleImportedJson(json); - }} - /> - - - - - - - - - - - - { - setMenuOpen(!menuOpen); - }} - /> - - - - - - ); -}; diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx new file mode 100644 index 00000000..9b85d2c5 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx @@ -0,0 +1,270 @@ +import { Grid, Paper } from "@mui/material"; +import { AxiosError } from "axios"; +import Loading from "components/Loading"; +import { useWorkspaces } from "context/workspaces"; +import { useWorkflowsEditor } from "features/workflowEditor/context"; +import React, { useCallback, useRef, useState } from "react"; +import { toast } from "react-toastify"; +import { type Node } from "reactflow"; +import { exportToJson, useInterval, yupResolver } from "utils"; +import * as yup from "yup"; + +import { type GenerateWorkflowsParams } from "../../context/workflowsEditor"; +import { createInputsSchemaValidation } from "../../utils/validation"; +import { ButtonsMenu } from "../ButtonsMenu"; +import { + PiecesDrawer, + SettingsFormDrawer, + type SettingsFormDrawerRef, + WorkflowSettingsFormSchema, + PieceFormDrawer, +} from "../Drawers"; +import { ContainerResourceFormSchema } from "../Drawers/PieceFormDrawer/ContainerResourceForm"; +import { storageFormSchema } from "../Drawers/PieceFormDrawer/StorageForm"; +import { type WorkflowPanelRef, WorkflowPanel } from "../Panel/WorkflowPanel"; + +export const WorkflowsEditorComponent: React.FC = () => { + const workflowPanelRef = useRef(null); + const sidebarSettingsRef = useRef(null); + const [sidebarSettingsDrawer, setSidebarSettingsDrawer] = useState(false); + const [sidebarPieceDrawer, setSidebarPieceDrawer] = useState(false); + const [formId, setFormId] = useState(""); + const [formTitle, setFormTitle] = useState(""); + const [formSchema, setFormSchema] = useState({}); + const [menuOpen, setMenuOpen] = useState(false); + const [loading, setBackdropIsOpen] = useState(false); + const [orientation, setOrientation] = useState<"horizontal" | "vertical">( + "horizontal", + ); + + const { workspace } = useWorkspaces(); + + const saveDataToLocalForage = useCallback(() => { + if (workflowPanelRef?.current) { + setWorkflowEdges(workflowPanelRef.current.edges ?? []); + setWorkflowNodes(workflowPanelRef.current.nodes ?? []); + } + }, [workflowPanelRef.current]); + + useInterval(saveDataToLocalForage, 40000); + + const { + clearForageData, + generateWorkflowsEditorBodyParams, + fetchWorkflowForage, + handleCreateWorkflow, + fetchWorkflowPieceById, + importWorkflowToForage, + setWorkflowEdges, + setWorkflowNodes, + } = useWorkflowsEditor(); + + const validateWorkflowSettings = useCallback(async (payload: any) => { + const resolver = yupResolver(WorkflowSettingsFormSchema); + const validatedData = await resolver(payload.workflowSettingsData); + if (!Object.keys(validatedData.errors).length) { + // do something + } else { + throw new Error("Please review your workflow settings."); + } + }, []); + + const validateWorkflowPiecesData = useCallback( + async (payload: any) => { + const validationSchema = yup.object().shape( + Object.entries(payload.workflowPieces).reduce((acc, [key, value]) => { + return { + [key]: yup.object({ + storage: storageFormSchema, + containerResources: ContainerResourceFormSchema, + inputs: createInputsSchemaValidation((value as any).input_schema), + }), + ...acc, + }; + }, {}), + ) as any; + + const resolver = yupResolver(validationSchema); + + const validatedData = await resolver(payload.workflowPiecesData); + + if (!Object.keys(validatedData.errors).length) { + workflowPanelRef?.current?.setNodes((nodes) => + nodes.map((n) => { + n = { ...n, data: { ...n.data, validationError: false } }; + return n; + }), + ); + } else { + const nodeIds = Object.keys(validatedData.errors); + workflowPanelRef?.current?.setNodes((nodes) => [ + ...nodes.map((n) => { + if (nodeIds.includes(n.id)) { + n = { ...n, data: { ...n.data, validationError: true } }; + } + + return n; + }), + ]); + + throw new Error("Please review the errors on your workflow."); + } + }, + [workflowPanelRef], + ); + + const handleSaveWorkflow = useCallback(async () => { + try { + saveDataToLocalForage(); + setBackdropIsOpen(true); + if (!workspace?.id) { + throw new Error("No selected Workspace"); + } + const payload = fetchWorkflowForage(); + + await validateWorkflowPiecesData(payload); + await validateWorkflowSettings(payload); + + const data = generateWorkflowsEditorBodyParams(payload); + + await handleCreateWorkflow({ workspace_id: workspace?.id, ...data }); + + toast.success("Workflow created successfully."); + setBackdropIsOpen(false); + } catch (err) { + setBackdropIsOpen(false); + if (err instanceof AxiosError) { + console.log(err); + } else if (err instanceof Error) { + console.log(err); + toast.error( + "Error while creating workflow, check your workflow settings and tasks.", + ); + } + } + }, [ + fetchWorkflowForage, + handleCreateWorkflow, + validateWorkflowPiecesData, + validateWorkflowSettings, + generateWorkflowsEditorBodyParams, + workspace?.id, + ]); + + const handleClear = useCallback(() => { + clearForageData(); + workflowPanelRef.current?.setEdges([]); + workflowPanelRef.current?.setNodes([]); + sidebarSettingsRef.current?.loadData(); + }, [clearForageData]); + + const handleExport = useCallback(() => { + saveDataToLocalForage(); + const payload = fetchWorkflowForage(); + if (Object.keys(payload.workflowPieces).length === 0) { + toast.error("Workflow must have at least one piece to be exported."); + return; + } + const name = payload.workflowSettingsData?.config?.name; + + const exportedJson: any = { ...payload }; + + delete exportedJson.workflowSettingsData; + + exportToJson(exportedJson, name); + }, []); + + const handleImportedJson = useCallback( + (json: GenerateWorkflowsParams) => { + workflowPanelRef?.current?.setNodes(json.workflowNodes); + workflowPanelRef?.current?.setEdges(json.workflowEdges); + importWorkflowToForage(json); + }, + [workflowPanelRef, importWorkflowToForage], + ); + + // Node double click open drawer with forms + const onNodeDoubleClick = useCallback( + (_e: any, node: Node) => { + const pieceNode = fetchWorkflowPieceById(node.id); + setFormSchema(pieceNode?.input_schema); + setFormId(node.id); + setFormTitle(() => { + return pieceNode?.name ? pieceNode.name : ""; + }); + setSidebarPieceDrawer(true); + }, + [fetchWorkflowPieceById], + ); + + // Left drawers controls + const toggleSidebarPieceDrawer = (open: boolean) => (event: any) => { + if ( + event.type === "keydown" && + (event.key === "Tab" || event.key === "Shift") + ) { + return; + } + setSidebarPieceDrawer(open); + }; + + const toggleSidebarSettingsDrawer = (open: boolean) => (event: any) => { + if ( + event.type === "keydown" && + (event.key === "Tab" || event.key === "Shift") + ) { + return; + } + setSidebarSettingsDrawer(open); + }; + + return ( + <> + {loading && } + + + toggleSidebarSettingsDrawer(true)} + /> + + + + + + { + setMenuOpen(!menuOpen); + }} + /> + + + + + + ); +}; diff --git a/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx b/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx index 3557d7e1..a67ad877 100644 --- a/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx +++ b/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx @@ -1,15 +1,15 @@ +import { useStorage } from "@nathan-vm/use-storage"; import { type IWorkflowElement } from "features/myWorkflows/types"; import React, { useCallback } from "react"; import { type Node, type Edge } from "reactflow"; -import localForage from "services/config/localForage.config"; import { createCustomContext } from "utils"; export interface IReactWorkflowPersistenceContext { - setWorkflowEdges: (edges: Edge[]) => Promise; - setWorkflowNodes: (edges: Node[]) => Promise; - fetchForageWorkflowEdges: () => Promise; - fetchForageWorkflowNodes: () => Promise; - clearReactWorkflowPersistence: () => Promise; + setWorkflowEdges: (edges: Edge[]) => void; + setWorkflowNodes: (edges: Node[]) => void; + fetchForageWorkflowEdges: () => Edge[]; + fetchForageWorkflowNodes: () => IWorkflowElement[]; + clearReactWorkflowPersistence: () => void; } export const [ReactWorkflowPersistenceContext, useReactWorkflowPersistence] = @@ -20,31 +20,33 @@ export const [ReactWorkflowPersistenceContext, useReactWorkflowPersistence] = const ReactWorkflowPersistenceProvider: React.FC<{ children: React.ReactNode; }> = ({ children }) => { - const setWorkflowEdges = useCallback(async (edges: Edge[]) => { - await localForage.setItem("workflowEdges", edges); + const localStorage = useStorage(); + + const setWorkflowEdges = useCallback((edges: Edge[]) => { + localStorage.setItem("workflowEdges", edges); }, []); - const setWorkflowNodes = useCallback(async (nodes: Node[]) => { - await localForage.setItem("workflowNodes", nodes); + const setWorkflowNodes = useCallback((nodes: Node[]) => { + localStorage.setItem("workflowNodes", nodes); }, []); - const fetchForageWorkflowEdges = useCallback(async () => { - let workflowEdges = await localForage.getItem("workflowEdges"); + const fetchForageWorkflowEdges = useCallback(() => { + let workflowEdges = localStorage.getItem("workflowEdges"); if (!workflowEdges || workflowEdges.length === 0) { workflowEdges = []; } return workflowEdges; }, []); - const fetchForageWorkflowNodes = useCallback(async () => { - let workflowEdges = await localForage.getItem("workflowNodes"); + const fetchForageWorkflowNodes = useCallback(() => { + let workflowEdges = localStorage.getItem("workflowNodes"); if (!workflowEdges || workflowEdges.length === 0) { workflowEdges = []; } return workflowEdges; }, []); - const clearReactWorkflowPersistence = useCallback(async () => { - await localForage.setItem("workflowEdges", []); - await localForage.setItem("workflowNodes", []); + const clearReactWorkflowPersistence = useCallback(() => { + localStorage.setItem("workflowEdges", []); + localStorage.setItem("workflowNodes", []); }, []); const value: IReactWorkflowPersistenceContext = { diff --git a/frontend/src/features/workflowEditor/context/workflowPieces.tsx b/frontend/src/features/workflowEditor/context/workflowPieces.tsx index 8d0f92f2..55bc35e1 100644 --- a/frontend/src/features/workflowEditor/context/workflowPieces.tsx +++ b/frontend/src/features/workflowEditor/context/workflowPieces.tsx @@ -1,17 +1,14 @@ +import { useStorage } from "@nathan-vm/use-storage"; import React, { useCallback } from "react"; -import localForage from "services/config/localForage.config"; import { createCustomContext } from "utils"; export interface IWorkflowPieceContext { - setForageWorkflowPieces: (workflowPieces: any) => Promise; // TODO add type - getForageWorkflowPieces: () => Promise>; // TODO add type - removeForageWorkflowPiecesById: (id: string) => Promise; - fetchWorkflowPieceById: (id: string) => Promise; // TODO add type - clearForageWorkflowPieces: () => Promise; - setForageWorkflowPiecesOutputSchema: ( - id: string, - properties: any, - ) => Promise; + setForageWorkflowPieces: (workflowPieces: any) => void; // TODO add type + getForageWorkflowPieces: () => Record; // TODO add type + removeForageWorkflowPiecesById: (id: string) => void; + fetchWorkflowPieceById: (id: string) => Piece; // TODO add type + clearForageWorkflowPieces: () => void; + setForageWorkflowPiecesOutputSchema: (id: string, properties: any) => void; } export const [WorkflowPiecesContext, useWorkflowPiece] = @@ -20,45 +17,47 @@ export const [WorkflowPiecesContext, useWorkflowPiece] = const WorkflowPiecesProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { - const setForageWorkflowPieces = useCallback(async (workflowPieces: any) => { - await localForage.setItem("workflowPieces", workflowPieces); + const localStorage = useStorage(); + + const setForageWorkflowPieces = useCallback((workflowPieces: any) => { + localStorage.setItem("workflowPieces", workflowPieces); }, []); const setForageWorkflowPiecesOutputSchema = useCallback( - async (id: any, properties: any) => { - const workflowPieces = await localForage.getItem("workflowPieces"); + (id: any, properties: any) => { + const workflowPieces = localStorage.getItem("workflowPieces"); if (workflowPieces?.[id]) { workflowPieces[id].output_schema.properties = properties; - void localForage.setItem("workflowPieces", workflowPieces); + localStorage.setItem("workflowPieces", workflowPieces); } }, [], ); - const clearForageWorkflowPieces = useCallback(async () => { - await localForage.setItem("workflowPieces", {}); + const clearForageWorkflowPieces = useCallback(() => { + localStorage.setItem("workflowPieces", {}); }, []); - const getForageWorkflowPieces = useCallback(async () => { - const workflowPieces = await localForage.getItem("workflowPieces"); + const getForageWorkflowPieces = useCallback(() => { + const workflowPieces = localStorage.getItem("workflowPieces"); if (!workflowPieces) { return {}; } return workflowPieces; }, []); - const removeForageWorkflowPiecesById = useCallback(async (id: string) => { - const workflowPieces = await localForage.getItem("workflowPieces"); + const removeForageWorkflowPiecesById = useCallback((id: string) => { + const workflowPieces = localStorage.getItem("workflowPieces"); if (!workflowPieces) { return; } // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete workflowPieces[id]; - await localForage.setItem("workflowPieces", workflowPieces); + localStorage.setItem("workflowPieces", workflowPieces); }, []); - const fetchWorkflowPieceById = useCallback(async (id: string) => { - const workflowPieces = await localForage.getItem("workflowPieces"); + const fetchWorkflowPieceById = useCallback((id: string) => { + const workflowPieces = localStorage.getItem("workflowPieces"); if (workflowPieces !== null) { return workflowPieces[id]; } diff --git a/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx b/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx index 578ab218..4d56dc1a 100644 --- a/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx +++ b/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx @@ -1,5 +1,5 @@ +import { useStorage } from "@nathan-vm/use-storage"; import React, { useCallback } from "react"; -import localForage from "services/config/localForage.config"; import { createCustomContext, getUuid } from "utils"; import { type IWorkflowPieceData } from "./types"; @@ -10,15 +10,15 @@ export interface IWorkflowPiecesDataContext { setForageWorkflowPiecesDataById: ( id: string, pieceData: IWorkflowPieceData, - ) => Promise; - setForageWorkflowPiecesData: (pieceData: ForagePiecesData) => Promise; - fetchForageWorkflowPiecesData: () => Promise; + ) => void; + setForageWorkflowPiecesData: (pieceData: ForagePiecesData) => void; + fetchForageWorkflowPiecesData: () => ForagePiecesData; fetchForageWorkflowPiecesDataById: ( id: string, - ) => Promise; - removeForageWorkflowPieceDataById: (id: string) => Promise; - clearForageWorkflowPiecesData: () => Promise; - clearDownstreamDataById: (id: string) => Promise; + ) => IWorkflowPieceData | undefined; + removeForageWorkflowPieceDataById: (id: string) => void; + clearForageWorkflowPiecesData: () => void; + clearDownstreamDataById: (id: string) => void; } export const [WorkflowPiecesDataContext, useWorkflowPiecesData] = @@ -27,35 +27,37 @@ export const [WorkflowPiecesDataContext, useWorkflowPiecesData] = const WorkflowPiecesDataProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { + const localStorage = useStorage(); + const setForageWorkflowPiecesDataById = useCallback( - async (id: string, pieceData: IWorkflowPieceData) => { + (id: string, pieceData: IWorkflowPieceData) => { let currentData = - await localForage.getItem("workflowPiecesData"); + localStorage.getItem("workflowPiecesData"); if (!currentData) { currentData = {}; } currentData[id] = pieceData; - await localForage.setItem("workflowPiecesData", currentData); + localStorage.setItem("workflowPiecesData", currentData); }, [], ); const setForageWorkflowPiecesData = useCallback( - async (pieceData: ForagePiecesData) => { - await localForage.setItem("workflowPiecesData", pieceData); + (pieceData: ForagePiecesData) => { + localStorage.setItem("workflowPiecesData", pieceData); }, [], ); - const fetchForageWorkflowPiecesData = useCallback(async () => { + const fetchForageWorkflowPiecesData = useCallback(() => { const workflowPiecesData = - await localForage.getItem("workflowPiecesData"); + localStorage.getItem("workflowPiecesData"); return workflowPiecesData ?? {}; }, []); - const fetchForageWorkflowPiecesDataById = useCallback(async (id: string) => { + const fetchForageWorkflowPiecesDataById = useCallback((id: string) => { const workflowPiecesData = - await localForage.getItem("workflowPiecesData"); + localStorage.getItem("workflowPiecesData"); if (!workflowPiecesData?.[id]) { return; @@ -64,10 +66,10 @@ const WorkflowPiecesDataProvider: React.FC<{ children: React.ReactNode }> = ({ return workflowPiecesData[id]; }, []); - const clearDownstreamDataById = useCallback(async (id: string) => { + const clearDownstreamDataById = useCallback((id: string) => { const hashId = getUuid(id).replaceAll("-", ""); const workflowPieceData = - await localForage.getItem("workflowPiecesData"); + localStorage.getItem("workflowPiecesData"); if (!workflowPieceData) { return; @@ -102,28 +104,28 @@ const WorkflowPiecesDataProvider: React.FC<{ children: React.ReactNode }> = ({ } }); }); - await localForage.setItem("workflowPiecesData", workflowPieceData); + localStorage.setItem("workflowPiecesData", workflowPieceData); }, []); const removeForageWorkflowPieceDataById = useCallback( - async (id: string) => { + (id: string) => { const workflowPieceData = - await localForage.getItem("workflowPiecesData"); + localStorage.getItem("workflowPiecesData"); if (!workflowPieceData) { return; } // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete workflowPieceData[id]; - await localForage.setItem("workflowPiecesData", workflowPieceData); + localStorage.setItem("workflowPiecesData", workflowPieceData); - await clearDownstreamDataById(id); + clearDownstreamDataById(id); }, [clearDownstreamDataById], ); - const clearForageWorkflowPiecesData = useCallback(async () => { - await localForage.setItem("workflowPiecesData", {}); + const clearForageWorkflowPiecesData = useCallback(() => { + localStorage.setItem("workflowPiecesData", {}); }, []); const value: IWorkflowPiecesDataContext = { diff --git a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx index d8fd2ed0..113bffcb 100644 --- a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx +++ b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx @@ -5,9 +5,9 @@ import { createCustomContext } from "utils"; import { type IWorkflowSettings } from "./types"; export interface IWorkflowSettingsContext { - fetchWorkflowSettingsData: () => Promise; - setWorkflowSettingsData: (data: any) => Promise; - clearWorkflowSettingsData: () => Promise; + fetchWorkflowSettingsData: () => IWorkflowSettings; + setWorkflowSettingsData: (data: any) => void; + clearWorkflowSettingsData: () => void; } export const [WorkflowSettingsDataContext, useWorkflowSettings] = diff --git a/frontend/src/features/workflowEditor/context/workflowsEditor.tsx b/frontend/src/features/workflowEditor/context/workflowsEditor.tsx index f0483675..6575d362 100644 --- a/frontend/src/features/workflowEditor/context/workflowsEditor.tsx +++ b/frontend/src/features/workflowEditor/context/workflowsEditor.tsx @@ -45,17 +45,15 @@ interface IWorkflowsEditorContext IWorkflowSettingsContext, IWorkflowPieceContext, IWorkflowPiecesDataContext { - fetchWorkflowForage: () => Promise; - importWorkflowToForage: ( - importedWorkflow: GenerateWorkflowsParams, - ) => Promise; + fetchWorkflowForage: () => GenerateWorkflowsParams; + importWorkflowToForage: (importedWorkflow: GenerateWorkflowsParams) => void; generateWorkflowsEditorBodyParams: ( p: GenerateWorkflowsParams, - ) => Promise; + ) => CreateWorkflowRequest; handleCreateWorkflow: ( params: IPostWorkflowParams, ) => Promise; - clearForageData: () => Promise; + clearForageData: () => void; } export const [WorkflowsEditorContext, useWorkflowsEditor] = @@ -110,12 +108,12 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ [postWorkflow, workspace], ); - const fetchWorkflowForage = useCallback(async () => { - const workflowPieces = await getForageWorkflowPieces(); - const workflowPiecesData = await fetchForageWorkflowPiecesData(); - const workflowSettingsData = await fetchWorkflowSettingsData(); - const workflowNodes = await fetchForageWorkflowNodes(); - const workflowEdges = await fetchForageWorkflowEdges(); + const fetchWorkflowForage = useCallback(() => { + const workflowPieces = getForageWorkflowPieces(); + const workflowPiecesData = fetchForageWorkflowPiecesData(); + const workflowSettingsData = fetchWorkflowSettingsData(); + const workflowNodes = fetchForageWorkflowNodes(); + const workflowEdges = fetchForageWorkflowEdges(); const result: GenerateWorkflowsParams = { workflowPieces, workflowPiecesData, @@ -132,11 +130,11 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ const importWorkflowToForage = useCallback( async (dominoWorkflow: GenerateWorkflowsParams) => { - await setForageWorkflowPieces(dominoWorkflow.workflowPieces); - await setForageWorkflowPiecesData(dominoWorkflow.workflowPiecesData); - await setWorkflowSettingsData(dominoWorkflow.workflowSettingsData); - await setWorkflowNodes(dominoWorkflow.workflowNodes); - await setWorkflowEdges(dominoWorkflow.workflowEdges); + setForageWorkflowPieces(dominoWorkflow.workflowPieces); + setForageWorkflowPiecesData(dominoWorkflow.workflowPiecesData); + setWorkflowSettingsData(dominoWorkflow.workflowSettingsData); + setWorkflowNodes(dominoWorkflow.workflowNodes); + setWorkflowEdges(dominoWorkflow.workflowEdges); }, [ setForageWorkflowPieces, @@ -148,7 +146,7 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ ); const generateWorkflowsEditorBodyParams = useCallback( - async ({ + ({ workflowPieces, workflowPiecesData, workflowSettingsData, @@ -313,13 +311,11 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ ], ); - const clearForageData = useCallback(async () => { - await Promise.allSettled([ - clearReactWorkflowPersistence(), - clearForageWorkflowPieces(), - clearForageWorkflowPiecesData(), - clearWorkflowSettingsData(), - ]); + const clearForageData = useCallback(() => { + clearReactWorkflowPersistence(); + clearForageWorkflowPieces(); + clearForageWorkflowPiecesData(); + clearWorkflowSettingsData(); }, [ clearReactWorkflowPersistence, clearForageWorkflowPieces, diff --git a/frontend/src/features/workflowEditor/utils/getFromUpstream.ts b/frontend/src/features/workflowEditor/utils/getFromUpstream.ts index 91292d0a..f578b8af 100644 --- a/frontend/src/features/workflowEditor/utils/getFromUpstream.ts +++ b/frontend/src/features/workflowEditor/utils/getFromUpstream.ts @@ -1,24 +1,20 @@ -function isEnum( - schema: SimpleInputSchemaProperty | InputSchemaProperty | Definition, -): boolean { +function isEnum(schema: Property | Definition): boolean { if ("allOf" in schema || "enum" in schema) { return true; } return false; } +function getFromUpstream(itemSchema: Property): boolean; function getFromUpstream( - itemSchema: SimpleInputSchemaProperty | InputSchemaProperty, -): boolean; -function getFromUpstream( - itemSchema: InputSchemaProperty | EnumDefinition, + itemSchema: Property | EnumDefinition, definitions: Definitions, key: string, ): boolean; function getFromUpstream( - itemSchema: SimpleInputSchemaProperty | InputSchemaProperty | EnumDefinition, - definitions?: any, + itemSchema: Property | EnumDefinition, + definitions?: Definitions, key?: string, ): boolean { // Enum type cant be from upstream @@ -28,7 +24,7 @@ function getFromUpstream( if (definitions && "items" in itemSchema && "$ref" in itemSchema.items) { const name = itemSchema.items.$ref.split("/").pop() as string; - const definition = (definitions as Definitions)[name]; + const definition = definitions[name]; // Enum type cant be from upstream if (isEnum(definition)) { @@ -52,10 +48,7 @@ function getFromUpstream( } } - switch ( - (itemSchema as SimpleInputSchemaProperty | InputSchemaProperty) - ?.from_upstream - ) { + switch ((itemSchema as Property)?.from_upstream) { case "always": return true; diff --git a/frontend/src/features/workflowEditor/utils/importWorkflow.ts b/frontend/src/features/workflowEditor/utils/importWorkflow.ts index 2a0bb73d..df76576e 100644 --- a/frontend/src/features/workflowEditor/utils/importWorkflow.ts +++ b/frontend/src/features/workflowEditor/utils/importWorkflow.ts @@ -1,4 +1,3 @@ -import localForage from "services/config/localForage.config"; import { isEmpty } from "utils"; import * as yup from "yup"; @@ -32,7 +31,7 @@ export const importJsonWorkflow = ( return null; // Return null if no file is selected }; -export const validateJsonImported = async (json: any): Promise => { +export const validateJsonImported = (json: any): void => { const schema = yup .object() .shape({ @@ -97,7 +96,7 @@ export const validateJsonImported = async (json: any): Promise => { .strict() .noUnknown(); - await schema.validate(json); + schema.validateSync(json); }; export interface Differences { @@ -105,12 +104,13 @@ export interface Differences { installedVersion: string | null; requiredVersion: string; } -export const findDifferencesInJsonImported = async ( +export const findDifferencesInJsonImported = ( json: any, -): Promise => { + pieces: Piece[], +): Differences[] => { const currentRepositories = new Set( - Object.values((await localForage.getItem("pieces")) as any)?.map( - (p: any) => + Object.values(pieces)?.map( + (p) => p?.repository_url.replace("https://github.com/", "") + ":" + p?.source_image.split(":")[1]?.replace(/-group\d+$/g, "") || "", diff --git a/frontend/src/features/workflowEditor/utils/index.ts b/frontend/src/features/workflowEditor/utils/index.ts index 3fca25de..1cc63fe8 100644 --- a/frontend/src/features/workflowEditor/utils/index.ts +++ b/frontend/src/features/workflowEditor/utils/index.ts @@ -1,2 +1,5 @@ export * from "./getFromUpstream"; +export * from "./importWorkflow"; export * from "./jsonSchema"; +export * from "./upstreamOptions"; +export * from "./validation"; diff --git a/frontend/src/features/workflowEditor/utils/jsonSchema.ts b/frontend/src/features/workflowEditor/utils/jsonSchema.ts index 9b35f28e..bd0de351 100644 --- a/frontend/src/features/workflowEditor/utils/jsonSchema.ts +++ b/frontend/src/features/workflowEditor/utils/jsonSchema.ts @@ -2,7 +2,7 @@ import { isEmpty } from "utils"; -import { defaultContainerResources } from "../components/SidebarForm/ContainerResourceForm"; +import { defaultContainerResources } from "../components/Drawers/PieceFormDrawer/ContainerResourceForm"; import { type IContainerResourceFormData, type IWorkflowPieceData, diff --git a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts index 6b807499..04089e61 100644 --- a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts +++ b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts @@ -43,6 +43,7 @@ function generateOptions( schema: Schema | Property | Definition, ): UpstreamOptions { const options: UpstreamOptions = {}; + console.log(schema); const addOptions = (opts: Option[] | UpstreamOptions, key: string = "") => { if (Array.isArray(opts)) { options[key] = opts; diff --git a/frontend/src/providers/app.tsx b/frontend/src/providers/app.tsx index 61bcd2dd..ae14ce93 100644 --- a/frontend/src/providers/app.tsx +++ b/frontend/src/providers/app.tsx @@ -1,5 +1,6 @@ import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider } from "@mui/material/styles"; +import { StorageProvider } from "@nathan-vm/use-storage"; import { AuthenticationProvider } from "context/authentication"; import { WorkspacesProvider } from "context/workspaces"; import PiecesProvider from "context/workspaces/repositories"; @@ -22,13 +23,15 @@ export const App: FC = () => ( - - - - - - - + + + + + + + + + From ec4bfeec15d86b7be51f8c5edd714a737516070d Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Wed, 7 Feb 2024 18:02:25 -0300 Subject: [PATCH 16/60] refactor: improve workflow editor context --- .../WorkflowPanel/WorkflowPanel.tsx | 368 ------------------ .../WorkflowPanel/ConnectionLine/index.tsx | 0 .../WorkflowPanel/DefaultEdge/index.tsx | 0 .../WorkflowPanel/DefaultNode/index.tsx | 0 .../WorkflowPanel/RunNode/index.tsx | 0 .../WorkflowPanel/WorkflowPanel.tsx | 183 +++++++++ .../WorkflowDetail}/WorkflowPanel/index.ts | 0 .../WorkflowDetail}/WorkflowPanel/types.ts | 12 - .../components/WorkflowDetail/index.tsx | 13 +- .../workflowsExample/getWorkflowExamples.ts | 4 +- .../PieceForm/PieceFormItem/arrayInput.tsx | 4 +- .../PieceForm/PieceFormItem/index.tsx | 24 +- .../PieceFormItem/selectUpstreamInput.tsx | 4 +- .../PieceFormDrawer/PieceForm/index.tsx | 19 +- .../Drawers/PieceFormDrawer/StorageForm.tsx | 4 +- .../Drawers/PieceFormDrawer/index.tsx | 20 +- .../Drawers/SettingsFormDrawer/index.tsx | 6 +- .../Panel/WorkflowPanel/WorkflowPanel.tsx | 48 ++- .../components/WorkflowEditor/index.tsx | 26 +- .../features/workflowEditor/context/index.tsx | 16 +- .../context/reactWorkflowPersistence.tsx | 67 ---- .../context/types/workflowPieceData.ts | 2 +- .../context/workflowPanelContext.tsx | 198 ++++++++++ .../workflowEditor/context/workflowPieces.tsx | 82 ---- .../context/workflowPiecesData.tsx | 148 ------- .../context/workflowSettingsData.tsx | 31 +- .../context/workflowsEditor.tsx | 189 ++++----- .../workflowEditor/utils/jsonSchema.ts | 4 +- 28 files changed, 567 insertions(+), 905 deletions(-) delete mode 100644 frontend/src/components/WorkflowPanel/WorkflowPanel.tsx rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/ConnectionLine/index.tsx (100%) rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/DefaultEdge/index.tsx (100%) rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/DefaultNode/index.tsx (100%) rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/RunNode/index.tsx (100%) create mode 100644 frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/WorkflowPanel.tsx rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/index.ts (100%) rename frontend/src/{components => features/myWorkflows/components/WorkflowDetail}/WorkflowPanel/types.ts (70%) delete mode 100644 frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx create mode 100644 frontend/src/features/workflowEditor/context/workflowPanelContext.tsx delete mode 100644 frontend/src/features/workflowEditor/context/workflowPieces.tsx delete mode 100644 frontend/src/features/workflowEditor/context/workflowPiecesData.tsx diff --git a/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx deleted file mode 100644 index e6cd4e8a..00000000 --- a/frontend/src/components/WorkflowPanel/WorkflowPanel.tsx +++ /dev/null @@ -1,368 +0,0 @@ -import AutoFixHighIcon from "@mui/icons-material/AutoFixHigh"; -import Elk from "elkjs"; -import theme from "providers/theme.config"; -import React, { - useCallback, - type DragEvent, - useState, - useRef, - forwardRef, - useImperativeHandle, - type ForwardedRef, - useMemo, - useEffect, -} from "react"; -import ReactFlow, { - type Node, - addEdge, - Background, - Controls, - ReactFlowProvider, - type Connection, - type Edge, - useNodesState, - useEdgesState, - type NodeMouseHandler, - type OnNodesDelete, - type OnEdgesDelete, - type ReactFlowInstance, - type XYPosition, - ControlButton, - MarkerType, - type EdgeTypes, - type NodeTypes, - type OnConnect, -} from "reactflow"; - -import { CustomConnectionLine } from "./ConnectionLine"; -import DefaultEdge from "./DefaultEdge"; -import { CustomNode } from "./DefaultNode"; -import RunNodeComponent from "./RunNode"; -import "reactflow/dist/style.css"; -import { type RunNode } from "./types"; - -// Load CustomNode -const DEFAULT_NODE_TYPES: NodeTypes = { - CustomNode, -}; - -const RUN_NODE_TYPES: NodeTypes = { - CustomNode: RunNodeComponent, -}; - -const EDGE_TYPES: EdgeTypes = { - default: DefaultEdge, -}; -type OnInit = - | ((instance: ReactFlowInstance) => { - nodes: Node[]; - edges: Edge[]; - }) - | (( - instance: ReactFlowInstance, - ) => Promise<{ nodes: Node[]; edges: Edge[] }>); - -type OnDrop = - | ((event: DragEvent, position: XYPosition) => Node) - | ((event: DragEvent, position: XYPosition) => Promise); - -type Props = - | { - editable: true; - onNodesDelete: OnNodesDelete; - onEdgesDelete: OnEdgesDelete; - onDrop: OnDrop; - onInit?: OnInit; - - onNodeDoubleClick?: NodeMouseHandler; - onConnect?: OnConnect; - } - | { - editable: false; - onInit?: OnInit; - onNodeDoubleClick?: NodeMouseHandler; - }; -export interface WorkflowPanelRef { - nodes: Node[]; - edges: Edge[]; - setNodes: React.Dispatch>; - setEdges: React.Dispatch>; -} -const WorkflowPanel = forwardRef( - (props: Props, ref: ForwardedRef) => { - const reactFlowWrapper = useRef(null); - const [instance, setInstance] = useState(null); - const [rawNodes, setNodes, onNodesChange] = useNodesState([]); - const [rawEdges, setEdges, onEdgesChange] = useEdgesState([]); - - const onInit = useCallback( - async (instance: ReactFlowInstance) => { - setInstance(instance); - if (props.onInit) { - const result = props.onInit(instance); - if (result instanceof Promise) { - result - .then(({ nodes, edges }) => { - setNodes(nodes); - setEdges(edges); - }) - .catch((error) => { - console.error("Error from Promise-returning function:", error); - }); - } else { - const { nodes, edges } = result; - setNodes(nodes); - setEdges(edges); - } - } - window.requestAnimationFrame(() => instance.fitView()); - }, - [props], - ); - - const onNodesDelete = useCallback( - props.editable ? props.onNodesDelete : () => {}, - [props], - ); - - const onEdgesDelete = useCallback( - props.editable ? props.onEdgesDelete : () => {}, - [props], - ); - - const onNodeDoubleClick = useCallback( - (e, n) => { - if (props.onNodeDoubleClick) { - props.onNodeDoubleClick(e, n); - } - if (!props.editable && instance) { - const nodeCenter = (n.width ?? 0) / 2; - instance.setCenter(n.position.x + nodeCenter, n.position.y); - } - }, - [instance, props], - ); - - const onDragOver = (event: DragEvent) => { - event.preventDefault(); - event.dataTransfer.dropEffect = "move"; - }; - - const onDrop = useCallback( - async (event: DragEvent) => { - event.preventDefault(); - if (reactFlowWrapper?.current === null) { - return; - } - const reactFlowBounds = - reactFlowWrapper.current.getBoundingClientRect(); - // @ts-expect-error: Unreachable code error - const position = instance.project({ - x: event.clientX - reactFlowBounds.left, - y: event.clientY - reactFlowBounds.top, - }); - - if (props.editable) { - const result = props.onDrop(event, position); - if (result instanceof Promise) { - result - .then((node) => { - setNodes((ns: Node[]) => ns.concat(node)); - }) - .catch((error) => { - console.error("Error from Promise-returning function:", error); - }); - } else { - const node = result; - setNodes((ns: Node[]) => ns.concat(node)); - } - } - }, - [instance, setNodes, props], - ); - - const onConnect = useCallback( - (connection: Connection) => { - setEdges((prevEdges: Edge[]) => addEdge(connection, prevEdges)); - if (props.editable && props.onConnect) { - props.onConnect(connection); - } - }, - [props], - ); - - const autoLayout = useCallback(async () => { - const elkGraph = { - id: "root", - children: rawNodes.map((node) => ({ - id: node.id, - width: 230, - height: 140, - })), - edges: rawEdges.map((edge) => ({ - id: edge.id, - sources: [edge.source], - targets: [edge.target], - })), - }; - - const elk = new Elk(); - - try { - const elkLayout = await elk.layout(elkGraph); - - if (elkLayout?.children && elkLayout.edges) { - const updatedNodes = elkLayout.children.map((elkNode) => { - const node = rawNodes.find((node) => node.id === elkNode.id); - if ( - node && - elkNode.x !== undefined && - elkNode.width !== undefined && - elkNode.y !== undefined && - elkNode.height !== undefined - ) { - return { - ...node, - position: { - x: elkNode.x - elkNode.width / 2, - y: elkNode.y - elkNode.height / 2, - }, - }; - } - return node; - }); - - const updatedEdges = elkLayout.edges.map((elkEdge) => ({ - ...rawEdges.find((edge) => edge.id === elkEdge.id), - })); - - setNodes(updatedNodes as Node[]); - setEdges(updatedEdges as Edge[]); - window.requestAnimationFrame(() => instance?.fitView()); - } - } catch (error) { - console.error("Error during layout:", error); - } - }, [rawNodes, rawEdges]); - - const { nodes, edges } = useMemo(() => { - const nodes = [...rawNodes].map((node: Node) => ({ - ...node, - data: { - ...node.data, - }, - })); - - const edges = [...rawEdges].map((edge: Edge) => { - const animated = nodes.some( - (n: RunNode) => - (n.id === edge.source || n.id === edge.target) && - n.data?.state === "running", - ); - - return { - ...edge, - markerEnd: { - type: MarkerType.ArrowClosed, - width: 20, - height: 20, - }, - animated, - }; - }); - - return { - nodes, - edges, - }; - }, [rawNodes, rawEdges]); - - useEffect(() => { - console.log("aqui sempre"); - if (edges && props.editable && props.onConnect) { - props.onConnect(edges[0] as any); - } - }, [edges]); - - useImperativeHandle( - ref, - () => { - return { - edges: rawEdges, - nodes: rawNodes, - setEdges, - setNodes, - }; - }, - [rawEdges, rawNodes, setEdges, setNodes], - ); - - return ( - -
- {props.editable ? ( - - - - - - - - - ) : ( - - - - - )} -
-
- ); - }, -); - -WorkflowPanel.displayName = "WorkflowPanel"; - -export { WorkflowPanel }; diff --git a/frontend/src/components/WorkflowPanel/ConnectionLine/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/ConnectionLine/index.tsx similarity index 100% rename from frontend/src/components/WorkflowPanel/ConnectionLine/index.tsx rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/ConnectionLine/index.tsx diff --git a/frontend/src/components/WorkflowPanel/DefaultEdge/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultEdge/index.tsx similarity index 100% rename from frontend/src/components/WorkflowPanel/DefaultEdge/index.tsx rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultEdge/index.tsx diff --git a/frontend/src/components/WorkflowPanel/DefaultNode/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx similarity index 100% rename from frontend/src/components/WorkflowPanel/DefaultNode/index.tsx rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx diff --git a/frontend/src/components/WorkflowPanel/RunNode/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx similarity index 100% rename from frontend/src/components/WorkflowPanel/RunNode/index.tsx rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx diff --git a/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/WorkflowPanel.tsx new file mode 100644 index 00000000..6bce82fa --- /dev/null +++ b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/WorkflowPanel.tsx @@ -0,0 +1,183 @@ +import theme from "providers/theme.config"; +import React, { + useCallback, + useState, + useRef, + forwardRef, + useImperativeHandle, + type ForwardedRef, + useMemo, +} from "react"; +import ReactFlow, { + type Node, + Background, + Controls, + ReactFlowProvider, + type Edge, + useNodesState, + useEdgesState, + type NodeMouseHandler, + type ReactFlowInstance, + MarkerType, + type EdgeTypes, + type NodeTypes, +} from "reactflow"; + +import DefaultEdge from "./DefaultEdge"; +import RunNodeComponent from "./RunNode"; +import "reactflow/dist/style.css"; +import { type RunNode } from "./types"; + +const RUN_NODE_TYPES: NodeTypes = { + CustomNode: RunNodeComponent, +}; + +const EDGE_TYPES: EdgeTypes = { + default: DefaultEdge, +}; + +type OnInit = + | ((instance: ReactFlowInstance) => { + nodes: Node[]; + edges: Edge[]; + }) + | (( + instance: ReactFlowInstance, + ) => Promise<{ nodes: Node[]; edges: Edge[] }>); + +interface Props { + onInit?: OnInit; + onNodeDoubleClick?: NodeMouseHandler; +} +export interface WorkflowPanelRef { + nodes: Node[]; + edges: Edge[]; + setNodes: React.Dispatch>; + setEdges: React.Dispatch>; +} +const WorkflowPanel = forwardRef( + (props: Props, ref: ForwardedRef) => { + const reactFlowWrapper = useRef(null); + const [instance, setInstance] = useState(null); + const [rawNodes, setNodes] = useNodesState([]); + const [rawEdges, setEdges] = useEdgesState([]); + + const onInit = useCallback( + async (instance: ReactFlowInstance) => { + setInstance(instance); + if (props.onInit) { + const result = props.onInit(instance); + if (result instanceof Promise) { + result + .then(({ nodes, edges }) => { + setNodes(nodes); + setEdges(edges); + }) + .catch((error) => { + console.error("Error from Promise-returning function:", error); + }); + } else { + const { nodes, edges } = result; + setNodes(nodes); + setEdges(edges); + } + } + window.requestAnimationFrame(() => instance.fitView()); + }, + [props], + ); + + const onNodeDoubleClick = useCallback( + (e, n) => { + if (props.onNodeDoubleClick) { + props.onNodeDoubleClick(e, n); + } + if (instance) { + const nodeCenter = (n.width ?? 0) / 2; + instance.setCenter(n.position.x + nodeCenter, n.position.y); + } + }, + [instance, props], + ); + + const { nodes, edges } = useMemo(() => { + const nodes = [...rawNodes].map((node: Node) => ({ + ...node, + data: { + ...node.data, + }, + })); + + const edges = [...rawEdges].map((edge: Edge) => { + const animated = nodes.some( + (n: RunNode) => + (n.id === edge.source || n.id === edge.target) && + n.data?.state === "running", + ); + + return { + ...edge, + markerEnd: { + type: MarkerType.ArrowClosed, + width: 20, + height: 20, + }, + animated, + }; + }); + + return { + nodes, + edges, + }; + }, [rawNodes, rawEdges]); + + useImperativeHandle( + ref, + () => { + return { + edges: rawEdges, + nodes: rawNodes, + setEdges, + setNodes, + }; + }, + [rawEdges, rawNodes, setEdges, setNodes], + ); + + return ( + +
+ + + + +
+
+ ); + }, +); + +WorkflowPanel.displayName = "WorkflowPanel"; + +export { WorkflowPanel }; diff --git a/frontend/src/components/WorkflowPanel/index.ts b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/index.ts similarity index 100% rename from frontend/src/components/WorkflowPanel/index.ts rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/index.ts diff --git a/frontend/src/components/WorkflowPanel/types.ts b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/types.ts similarity index 70% rename from frontend/src/components/WorkflowPanel/types.ts rename to frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/types.ts index 18c286a9..4a716cf2 100644 --- a/frontend/src/components/WorkflowPanel/types.ts +++ b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/types.ts @@ -13,13 +13,6 @@ interface IStyleData { module: string; } -interface DefaultNodeData { - name: string; - style: IStyleData; - validationError: boolean; - orientation: "vertical" | "horizontal"; -} - interface RunNodeData { taskId: string; name: string; @@ -28,13 +21,8 @@ interface RunNodeData { orientation: "vertical" | "horizontal"; } -export type DefaultNode = Node; export type RunNode = Node; -export interface DefaultNodeProps extends NodeProps { - data: DefaultNodeData; -} - export interface RunNodeProps extends NodeProps { data: RunNodeData; } diff --git a/frontend/src/features/myWorkflows/components/WorkflowDetail/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/index.tsx index f67ff219..6ba18d72 100644 --- a/frontend/src/features/myWorkflows/components/WorkflowDetail/index.tsx +++ b/frontend/src/features/myWorkflows/components/WorkflowDetail/index.tsx @@ -1,11 +1,5 @@ import { Grid, Paper } from "@mui/material"; import { Breadcrumbs } from "components/Breadcrumbs"; -import { - WorkflowPanel, - type WorkflowPanelRef, - type RunNode, - type DefaultNode, -} from "components/WorkflowPanel"; import { useAuthenticatedGetWorkflowId, useAuthenticatedGetWorkflowRunTasks, @@ -15,11 +9,17 @@ import { type IWorkflowRuns, type IWorkflowRunTasks, } from "features/myWorkflows/types"; +import { type DefaultNode } from "features/workflowEditor/components/Panel/WorkflowPanel"; import React, { useCallback, useEffect, useRef, useState } from "react"; import { useParams } from "react-router-dom"; import { type NodeMouseHandler } from "reactflow"; import { useInterval } from "utils"; +import { + WorkflowPanel, + type WorkflowPanelRef, + type RunNode, +} from "./WorkflowPanel"; import { WorkflowRunDetail, type WorkflowRunDetailRef, @@ -226,7 +226,6 @@ export const WorkflowDetail: React.FC = () => { diff --git a/frontend/src/features/workflowEditor/api/workflowsExample/getWorkflowExamples.ts b/frontend/src/features/workflowEditor/api/workflowsExample/getWorkflowExamples.ts index 872faf38..e4f50d97 100644 --- a/frontend/src/features/workflowEditor/api/workflowsExample/getWorkflowExamples.ts +++ b/frontend/src/features/workflowEditor/api/workflowsExample/getWorkflowExamples.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { type Edge, type Node } from "reactflow"; import useSWR from "swr"; @@ -17,7 +17,7 @@ type GithubReposContent = Array<{ interface JSONFile { workflowPieces: Record; - workflowPiecesData: IWorkflowPieceData; + workflowPiecesData: WorkflowPieceData; workflowNodes: Node[]; workflowEdges: Edge[]; } diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx index 2a247bf9..857ed252 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx @@ -9,7 +9,7 @@ import SelectInput from "components/SelectInput"; import TextInput from "components/TextInput"; import { type InputArray, - type IWorkflowPieceData, + type WorkflowPieceData, } from "features/workflowEditor/context/types"; import { type UpstreamOptions, @@ -31,7 +31,7 @@ interface ArrayInputItemProps { formId: string; inputKey: string; schema: any; - control: Control; + control: Control; definitions?: any; upstreamOptions: UpstreamOptions; } diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx index a8fcc26f..371380b9 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx @@ -6,7 +6,7 @@ import NumberInput from "components/NumberInput"; import SelectInput from "components/SelectInput"; import TextAreaInput from "components/TextAreaInput"; import TextInput from "components/TextInput"; -import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { type Option, type UpstreamOptions, @@ -22,7 +22,7 @@ interface PieceFormItemProps { formId: string; schema: Property; itemKey: string; - control: Control; + control: Control; definitions?: Definitions; upstreamOptions: UpstreamOptions; } @@ -78,7 +78,7 @@ const PieceFormItem: React.FC = ({ } inputElement = ( - + label={itemKey} emptyValue name={`inputs.${itemKey}.value`} @@ -90,7 +90,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "float" ) { inputElement = ( - + name={`inputs.${itemKey}.value`} type="float" label={schema.title} @@ -102,7 +102,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "integer" ) { inputElement = ( - + name={`inputs.${itemKey}.value`} type="int" label={schema.title} @@ -111,7 +111,7 @@ const PieceFormItem: React.FC = ({ ); } else if ("type" in schema && schema.type === "boolean") { inputElement = ( - + name={`inputs.${itemKey}.value`} label={schema.title} /> @@ -138,7 +138,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "date" ) { inputElement = ( - + name={`inputs.${itemKey}.value`} label={schema.title} type="date" @@ -152,7 +152,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "time" ) { inputElement = ( - + name={`inputs.${itemKey}.value`} label={schema.title} type="time" @@ -166,7 +166,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "date-time" ) { inputElement = ( - + name={`inputs.${itemKey}.value`} label={schema.title} type="date-time" @@ -186,7 +186,7 @@ const PieceFormItem: React.FC = ({ : "python"; inputElement = ( - + name={`inputs.${itemKey}.value`} language={language} placeholder={`Enter your ${language} code here.`} @@ -202,7 +202,7 @@ const PieceFormItem: React.FC = ({ schema?.widget === "textarea") ) { inputElement = ( - + variant="outlined" name={`inputs.${itemKey}.value`} label={schema.title} @@ -213,7 +213,7 @@ const PieceFormItem: React.FC = ({ anyOfType === "string" ) { inputElement = ( - + variant="outlined" name={`inputs.${itemKey}.value`} label={schema.title} diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx index fed09f50..e9c66a70 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx @@ -6,7 +6,7 @@ import { Select, type SelectChangeEvent, } from "@mui/material"; -import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { type Option } from "features/workflowEditor/utils"; import React, { useCallback } from "react"; import { Controller, useFormContext } from "react-hook-form"; @@ -38,7 +38,7 @@ const SelectUpstreamInput: React.FC = ({ setValue, control, formState: { errors }, - } = useFormContext(); + } = useFormContext(); const handleSelectChange = useCallback( (event: SelectChangeEvent, onChange: (e: any) => void) => { diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx index aedbf914..7d08be19 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx @@ -1,5 +1,5 @@ import { useWorkflowsEditor } from "features/workflowEditor/context"; -import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { getUpstreamOptions, type UpstreamOptions, @@ -15,9 +15,8 @@ interface PieceFormProps { } const PieceForm: React.FC = ({ formId, schema }) => { - const { fetchForageWorkflowEdges, getForageWorkflowPieces } = - useWorkflowsEditor(); - const { control } = useFormContext(); + const { getWorkflowEdges, getWorkflowPieces } = useWorkflowsEditor(); + const { control } = useFormContext(); const [upstreamOptions, setUpstreamOptions] = useState({}); const shouldRender = useMemo(() => { @@ -29,8 +28,8 @@ const PieceForm: React.FC = ({ formId, schema }) => { return; } - const workflowPieces = getForageWorkflowPieces(); - const workflowEdges = fetchForageWorkflowEdges(); + const workflowPieces = getWorkflowPieces(); + const workflowEdges = getWorkflowEdges(); const upstreamOptions = getUpstreamOptions( formId, @@ -40,13 +39,7 @@ const PieceForm: React.FC = ({ formId, schema }) => { ); setUpstreamOptions(upstreamOptions); - }, [ - fetchForageWorkflowEdges, - formId, - getForageWorkflowPieces, - schema, - shouldRender, - ]); + }, [getWorkflowEdges, formId, getWorkflowPieces, schema, shouldRender]); useEffect(() => { handleUpstreamOptions(); diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx index 7e022112..f049b194 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/StorageForm.tsx @@ -9,7 +9,7 @@ import { } from "@mui/material"; import { type IStorageFormData, - type IWorkflowPieceData, + type WorkflowPieceData, type StorageAccessModes, storageAccessModes, } from "features/workflowEditor/context/types"; @@ -29,7 +29,7 @@ export const defaultStorage: IStorageFormData = { }; const StorageForm: React.FC = () => { - const { formState, control } = useFormContext(); + const { formState, control } = useFormContext(); return ( diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx index a753cebe..7c7eb9d6 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/index.tsx @@ -8,7 +8,7 @@ import { AccordionDetails, } from "@mui/material"; import { useWorkflowsEditor } from "features/workflowEditor/context"; -import { type IWorkflowPieceData } from "features/workflowEditor/context/types"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { createInputsSchemaValidation } from "features/workflowEditor/utils/validation"; import React, { useCallback, useEffect, useMemo, useState } from "react"; import { FormProvider, useForm } from "react-hook-form"; @@ -33,9 +33,9 @@ export const PieceFormDrawer: React.FC = (props) => { const { schema, formId, open, onClose, title } = props; const { - setForageWorkflowPiecesDataById, - fetchForageWorkflowPiecesDataById, - setForageWorkflowPiecesOutputSchema, + setWorkflowPieceDataById, + getWorkflowPieceDataById, + setWorkflowPieceOutputSchema, clearDownstreamDataById, } = useWorkflowsEditor(); @@ -60,7 +60,7 @@ export const PieceFormDrawer: React.FC = (props) => { const loadData = useCallback(async () => { setFormLoaded(false); - const data = fetchForageWorkflowPiecesDataById(formId); + const data = getWorkflowPieceDataById(formId); if (data) { reset(data); // put forage data on form if exist } else { @@ -68,7 +68,7 @@ export const PieceFormDrawer: React.FC = (props) => { } void trigger(); setFormLoaded(true); - }, [formId, fetchForageWorkflowPiecesDataById, reset, trigger]); + }, [formId, getWorkflowPieceDataById, reset, trigger]); const updateOutputSchema = useCallback(() => { if (schema?.properties) { @@ -127,24 +127,24 @@ export const PieceFormDrawer: React.FC = (props) => { {}, ); - setForageWorkflowPiecesOutputSchema(formId, newProperties); + setWorkflowPieceOutputSchema(formId, newProperties); clearDownstreamDataById(formId); } } }, [ schema, data.inputs, - setForageWorkflowPiecesOutputSchema, + setWorkflowPieceOutputSchema, formId, clearDownstreamDataById, ]); const saveData = useCallback(async () => { if (formId && open) { - setForageWorkflowPiecesDataById(formId, data as IWorkflowPieceData); + setWorkflowPieceDataById(formId, data as WorkflowPieceData); updateOutputSchema(); } - }, [formId, open, setForageWorkflowPiecesDataById, data, updateOutputSchema]); + }, [formId, open, setWorkflowPieceDataById, data, updateOutputSchema]); // load forage useEffect(() => { diff --git a/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx index 8a383d84..cedc3935 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx @@ -121,7 +121,7 @@ const SettingsFormDrawer = forwardRef< ) => { const { open, onClose } = props; - const { fetchWorkflowSettingsData, setWorkflowSettingsData } = + const { getWorkflowSettingsData, setWorkflowSettingsData } = useWorkflowsEditor(); const resolver = yupResolver(WorkflowSettingsFormSchema); @@ -140,7 +140,7 @@ const SettingsFormDrawer = forwardRef< }, [validate]); const loadData = useCallback(() => { - const data = fetchWorkflowSettingsData(); + const data = getWorkflowSettingsData(); if (Object.keys(data).length === 0) { reset(defaultSettingsData); setWorkflowSettingsData(defaultSettingsData); @@ -148,7 +148,7 @@ const SettingsFormDrawer = forwardRef< reset(data); } setLoaded(true); - }, [reset, fetchWorkflowSettingsData, setWorkflowSettingsData]); + }, [reset, getWorkflowSettingsData, setWorkflowSettingsData]); const saveData = useCallback(() => { if (open) { diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx index e3244836..5e3be187 100644 --- a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx @@ -5,7 +5,7 @@ import Elk from "elkjs"; import { useWorkflowsEditor } from "features/workflowEditor/context"; import { storageAccessModes, - type IWorkflowPieceData, + type WorkflowPieceData, } from "features/workflowEditor/context/types"; import theme from "providers/theme.config"; import React, { @@ -78,13 +78,13 @@ const WorkflowPanel = forwardRef( const [rawEdges, setEdges, onEdgesChange] = useEdgesState([]); const { - fetchForageWorkflowNodes, - fetchForageWorkflowEdges, - setForageWorkflowPieces, - getForageWorkflowPieces, - removeForageWorkflowPiecesById, - removeForageWorkflowPieceDataById, - setForageWorkflowPiecesDataById, + getWorkflowNodes, + getWorkflowEdges, + setWorkflowPieces, + getWorkflowPieces, + deleteWorkflowPieceById, + deleteWorkflowPieceDataById, + setWorkflowPieceDataById, clearDownstreamDataById, setWorkflowEdges, setWorkflowNodes, @@ -95,13 +95,13 @@ const WorkflowPanel = forwardRef( const onInit = useCallback( (instance: ReactFlowInstance) => { setInstance(instance); - const edges = fetchForageWorkflowEdges(); - const nodes = fetchForageWorkflowNodes(); + const edges = getWorkflowEdges(); + const nodes = getWorkflowNodes(); setNodes(nodes); setEdges(edges); window.requestAnimationFrame(() => instance.fitView()); }, - [fetchForageWorkflowEdges, fetchForageWorkflowNodes, setNodes, setEdges], + [getWorkflowEdges, getWorkflowNodes, setNodes, setEdges], ); const createNewNode = useCallback( @@ -124,36 +124,34 @@ const WorkflowPanel = forwardRef( data: newNodeData, }; - const piece = fetchForagePieceById(data.id); - const defaultInputs = extractDefaultInputValues( - piece as unknown as Piece, - ); + const piece = fetchForagePieceById(data.id) as unknown as Piece; + const defaultInputs = extractDefaultInputValues(piece); const defaultContainerResources = extractDefaultContainerResources( piece?.container_resources, ); - const currentWorkflowPieces = getForageWorkflowPieces(); + const currentWorkflowPieces = getWorkflowPieces(); const newWorkflowPieces = { ...currentWorkflowPieces, [newNode.id]: piece, }; - setForageWorkflowPieces(newWorkflowPieces); + setWorkflowPieces(newWorkflowPieces); - const defaultWorkflowPieceData: IWorkflowPieceData = { + const defaultWorkflowPieceData: WorkflowPieceData = { storage: { storageAccessMode: storageAccessModes.ReadWrite }, containerResources: defaultContainerResources, inputs: defaultInputs, }; - setForageWorkflowPiecesDataById(newNode.id, defaultWorkflowPieceData); + setWorkflowPieceDataById(newNode.id, defaultWorkflowPieceData); return newNode; }, [ fetchForagePieceById, - setForageWorkflowPieces, - getForageWorkflowPieces, - setForageWorkflowPiecesDataById, + setWorkflowPieces, + getWorkflowPieces, + setWorkflowPieceDataById, ], ); @@ -202,11 +200,11 @@ const WorkflowPanel = forwardRef( const onNodesDelete = useCallback( (nodes: any) => { for (const node of nodes) { - removeForageWorkflowPiecesById(node.id); - removeForageWorkflowPieceDataById(node.id); + deleteWorkflowPieceById(node.id); + deleteWorkflowPieceDataById(node.id); } }, - [removeForageWorkflowPieceDataById, removeForageWorkflowPiecesById], + [deleteWorkflowPieceDataById, deleteWorkflowPieceById], ); const onEdgesDelete = useCallback( diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx index 9b85d2c5..44119ee0 100644 --- a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx +++ b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx @@ -49,12 +49,12 @@ export const WorkflowsEditorComponent: React.FC = () => { useInterval(saveDataToLocalForage, 40000); const { - clearForageData, + clearStorageData, generateWorkflowsEditorBodyParams, - fetchWorkflowForage, + getWorkflow, handleCreateWorkflow, - fetchWorkflowPieceById, - importWorkflowToForage, + getWorkflowPieceById, + importWorkflowToStorage, setWorkflowEdges, setWorkflowNodes, } = useWorkflowsEditor(); @@ -120,7 +120,7 @@ export const WorkflowsEditorComponent: React.FC = () => { if (!workspace?.id) { throw new Error("No selected Workspace"); } - const payload = fetchWorkflowForage(); + const payload = getWorkflow(); await validateWorkflowPiecesData(payload); await validateWorkflowSettings(payload); @@ -143,7 +143,7 @@ export const WorkflowsEditorComponent: React.FC = () => { } } }, [ - fetchWorkflowForage, + getWorkflow, handleCreateWorkflow, validateWorkflowPiecesData, validateWorkflowSettings, @@ -152,15 +152,15 @@ export const WorkflowsEditorComponent: React.FC = () => { ]); const handleClear = useCallback(() => { - clearForageData(); + clearStorageData(); workflowPanelRef.current?.setEdges([]); workflowPanelRef.current?.setNodes([]); sidebarSettingsRef.current?.loadData(); - }, [clearForageData]); + }, [clearStorageData]); const handleExport = useCallback(() => { saveDataToLocalForage(); - const payload = fetchWorkflowForage(); + const payload = getWorkflow(); if (Object.keys(payload.workflowPieces).length === 0) { toast.error("Workflow must have at least one piece to be exported."); return; @@ -178,15 +178,15 @@ export const WorkflowsEditorComponent: React.FC = () => { (json: GenerateWorkflowsParams) => { workflowPanelRef?.current?.setNodes(json.workflowNodes); workflowPanelRef?.current?.setEdges(json.workflowEdges); - importWorkflowToForage(json); + importWorkflowToStorage(json); }, - [workflowPanelRef, importWorkflowToForage], + [workflowPanelRef, importWorkflowToStorage], ); // Node double click open drawer with forms const onNodeDoubleClick = useCallback( (_e: any, node: Node) => { - const pieceNode = fetchWorkflowPieceById(node.id); + const pieceNode = getWorkflowPieceById(node.id); setFormSchema(pieceNode?.input_schema); setFormId(node.id); setFormTitle(() => { @@ -194,7 +194,7 @@ export const WorkflowsEditorComponent: React.FC = () => { }); setSidebarPieceDrawer(true); }, - [fetchWorkflowPieceById], + [getWorkflowPieceById], ); // Left drawers controls diff --git a/frontend/src/features/workflowEditor/context/index.tsx b/frontend/src/features/workflowEditor/context/index.tsx index 127bf799..70837d32 100644 --- a/frontend/src/features/workflowEditor/context/index.tsx +++ b/frontend/src/features/workflowEditor/context/index.tsx @@ -1,6 +1,4 @@ -import ReactWorkflowPersistenceProvider from "./reactWorkflowPersistence"; -import WorkflowPiecesProvider from "./workflowPieces"; -import WorkflowPiecesDataProvider from "./workflowPiecesData"; +import WorkflowPanelContextProvider from "./workflowPanelContext"; import WorkflowsEditorProviderItem, { useWorkflowsEditor, } from "./workflowsEditor"; @@ -13,15 +11,9 @@ const WorkflowsEditorProviderWrapper: React.FC<{ }> = ({ children }) => { return ( - - - - - {children} - - - - + + {children} + ); }; diff --git a/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx b/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx deleted file mode 100644 index a67ad877..00000000 --- a/frontend/src/features/workflowEditor/context/reactWorkflowPersistence.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { useStorage } from "@nathan-vm/use-storage"; -import { type IWorkflowElement } from "features/myWorkflows/types"; -import React, { useCallback } from "react"; -import { type Node, type Edge } from "reactflow"; -import { createCustomContext } from "utils"; - -export interface IReactWorkflowPersistenceContext { - setWorkflowEdges: (edges: Edge[]) => void; - setWorkflowNodes: (edges: Node[]) => void; - fetchForageWorkflowEdges: () => Edge[]; - fetchForageWorkflowNodes: () => IWorkflowElement[]; - clearReactWorkflowPersistence: () => void; -} - -export const [ReactWorkflowPersistenceContext, useReactWorkflowPersistence] = - createCustomContext( - "ReactWorkflowPersistence Context", - ); - -const ReactWorkflowPersistenceProvider: React.FC<{ - children: React.ReactNode; -}> = ({ children }) => { - const localStorage = useStorage(); - - const setWorkflowEdges = useCallback((edges: Edge[]) => { - localStorage.setItem("workflowEdges", edges); - }, []); - const setWorkflowNodes = useCallback((nodes: Node[]) => { - localStorage.setItem("workflowNodes", nodes); - }, []); - - const fetchForageWorkflowEdges = useCallback(() => { - let workflowEdges = localStorage.getItem("workflowEdges"); - if (!workflowEdges || workflowEdges.length === 0) { - workflowEdges = []; - } - return workflowEdges; - }, []); - const fetchForageWorkflowNodes = useCallback(() => { - let workflowEdges = localStorage.getItem("workflowNodes"); - if (!workflowEdges || workflowEdges.length === 0) { - workflowEdges = []; - } - return workflowEdges; - }, []); - - const clearReactWorkflowPersistence = useCallback(() => { - localStorage.setItem("workflowEdges", []); - localStorage.setItem("workflowNodes", []); - }, []); - - const value: IReactWorkflowPersistenceContext = { - setWorkflowEdges, - setWorkflowNodes, - fetchForageWorkflowEdges, - fetchForageWorkflowNodes, - clearReactWorkflowPersistence, - }; - - return ( - - {children} - - ); -}; - -export default ReactWorkflowPersistenceProvider; diff --git a/frontend/src/features/workflowEditor/context/types/workflowPieceData.ts b/frontend/src/features/workflowEditor/context/types/workflowPieceData.ts index 7a5b7516..b0f86b64 100644 --- a/frontend/src/features/workflowEditor/context/types/workflowPieceData.ts +++ b/frontend/src/features/workflowEditor/context/types/workflowPieceData.ts @@ -11,7 +11,7 @@ import { } from "./settings"; import { type IStorageFormData, type StorageAccessModes } from "./storage"; -export interface IWorkflowPieceData { +export interface WorkflowPieceData { storage: IStorageFormData; containerResources: IContainerResourceFormData; inputs: Record; diff --git a/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx b/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx new file mode 100644 index 00000000..c7839cb5 --- /dev/null +++ b/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx @@ -0,0 +1,198 @@ +import { useStorage } from "@nathan-vm/use-storage"; +import React, { useCallback } from "react"; +import { type Node, type Edge } from "reactflow"; +import { createCustomContext, getUuid } from "utils"; + +import { type DefaultNode } from "../components/Panel/WorkflowPanel"; + +import { type WorkflowPieceData } from "./types"; + +export type StoragePiecesData = Record; + +export interface IWorkflowPanelContext { + setWorkflowEdges: (edges: Edge[]) => void; + setWorkflowNodes: (edges: Node[]) => void; + getWorkflowEdges: () => Edge[]; + getWorkflowNodes: () => DefaultNode[]; + + setWorkflowPieces: (pieces: Record) => void; + setWorkflowPieceOutputSchema: (id: string, properties: Properties) => void; + getWorkflowPieces: () => Record; + getWorkflowPieceById: (id: string) => Piece | null; + deleteWorkflowPieceById: (id: string) => void; + + setWorkflowPiecesData: (pieceData: StoragePiecesData) => void; + setWorkflowPieceDataById: (id: string, pieceData: WorkflowPieceData) => void; + getWorkflowPiecesData: () => StoragePiecesData; + getWorkflowPieceDataById: (id: string) => WorkflowPieceData | null; + deleteWorkflowPieceDataById: (id: string) => void; + + clearWorkflowPanelContext: () => void; + clearDownstreamDataById: (id: string) => void; +} + +export const [WorkflowPanelContext, useWorkflowPanel] = + createCustomContext("WorkflowPanelContext Context"); + +const WorkflowPanelContextProvider: React.FC<{ + children: React.ReactNode; +}> = ({ children }) => { + const localStorage = useStorage(); + + const setWorkflowEdges = useCallback((edges: Edge[]) => { + localStorage.setItem("workflowEdges", edges); + }, []); + const setWorkflowNodes = useCallback((nodes: DefaultNode[]) => { + localStorage.setItem("workflowNodes", nodes); + }, []); + const getWorkflowEdges = useCallback(() => { + return localStorage.getItem("workflowEdges") ?? []; + }, []); + const getWorkflowNodes = useCallback(() => { + return localStorage.getItem("workflowNodes") ?? []; + }, []); + + const setWorkflowPieces = useCallback((pieces: Record) => { + localStorage.setItem("workflowPieces", pieces); + }, []); + const setWorkflowPieceOutputSchema = useCallback( + (id: string, properties: Properties) => { + const workflowPieces = + localStorage.getItem>("workflowPieces"); + if (workflowPieces?.[id]) { + workflowPieces[id].output_schema.properties = properties; + localStorage.setItem("workflowPieces", workflowPieces); + } + }, + [], + ); + const getWorkflowPieces = useCallback(() => { + return localStorage.getItem>("workflowPieces") ?? {}; + }, []); + const getWorkflowPieceById = useCallback((id: string) => { + return ( + localStorage.getItem>("workflowPieces")?.[id] ?? + null + ); + }, []); + const deleteWorkflowPieceById = useCallback((id: string) => { + const workflowPieces = + localStorage.getItem>("workflowPieces"); + if (!workflowPieces) { + return; + } + delete workflowPieces?.[id]; + localStorage.setItem("workflowPieces", workflowPieces); + }, []); + + const setWorkflowPiecesData = useCallback((data: StoragePiecesData) => { + localStorage.setItem("workflowPiecesData", data); + }, []); + const setWorkflowPieceDataById = useCallback( + (id: string, pieceData: WorkflowPieceData) => { + let currentData = + localStorage.getItem("workflowPiecesData"); + if (!currentData) { + currentData = {}; + } + currentData[id] = pieceData; + localStorage.setItem("workflowPiecesData", currentData); + }, + [], + ); + const getWorkflowPiecesData = useCallback(() => { + return localStorage.getItem("workflowPiecesData") ?? {}; + }, []); + const getWorkflowPieceDataById = useCallback((id: string) => { + return ( + localStorage.getItem("workflowPiecesData")?.[id] ?? + null + ); + }, []); + const deleteWorkflowPieceDataById = useCallback((id: string) => { + const piecesData = + localStorage.getItem("workflowPiecesData") ?? + ({} satisfies StoragePiecesData); + + delete piecesData?.[id]; + + localStorage.setItem("workflowPiecesData", piecesData); + }, []); + const clearDownstreamDataById = useCallback((id: string) => { + const hashId = getUuid(id).replaceAll("-", ""); + const workflowPieceData = + localStorage.getItem("workflowPiecesData"); + + if (!workflowPieceData) { + return; + } + + Object.values(workflowPieceData).forEach((wpd) => { + Object.values(wpd.inputs).forEach((input) => { + if (input.upstreamId.includes(hashId)) { + input.upstreamArgument = ""; + input.upstreamId = ""; + input.upstreamValue = ""; + } else if (Array.isArray(input.value)) { + input.value.forEach((item) => { + if ( + typeof item.upstreamId === "string" && + item.upstreamId.includes(hashId) + ) { + item.upstreamArgument = ""; + item.upstreamId = ""; + item.upstreamValue = ""; + } else if (typeof item.upstreamId === "object") { + Object.keys(item.upstreamId).forEach((key) => { + const obj = item as any; + if (obj.upstreamId[key].includes(hashId)) { + obj.upstreamArgument[key] = ""; + obj.upstreamId[key] = ""; + obj.upstreamValue[key] = ""; + } + }); + } + }); + } + }); + }); + localStorage.setItem("workflowPiecesData", workflowPieceData); + }, []); + + const clearWorkflowPanelContext = useCallback(() => { + localStorage.removeItem("workflowEdges"); + localStorage.removeItem("workflowNodes"); + localStorage.removeItem("workflowPieces"); + localStorage.removeItem("workflowPiecesData"); + }, []); + + const value: IWorkflowPanelContext = { + setWorkflowEdges, + setWorkflowNodes, + getWorkflowEdges, + getWorkflowNodes, + + setWorkflowPieces, + setWorkflowPieceOutputSchema, + getWorkflowPieces, + getWorkflowPieceById, + deleteWorkflowPieceById, + + setWorkflowPiecesData, + setWorkflowPieceDataById, + getWorkflowPiecesData, + getWorkflowPieceDataById, + deleteWorkflowPieceDataById, + clearDownstreamDataById, + + clearWorkflowPanelContext, + }; + + return ( + + {children} + + ); +}; + +export default WorkflowPanelContextProvider; diff --git a/frontend/src/features/workflowEditor/context/workflowPieces.tsx b/frontend/src/features/workflowEditor/context/workflowPieces.tsx deleted file mode 100644 index 55bc35e1..00000000 --- a/frontend/src/features/workflowEditor/context/workflowPieces.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { useStorage } from "@nathan-vm/use-storage"; -import React, { useCallback } from "react"; -import { createCustomContext } from "utils"; - -export interface IWorkflowPieceContext { - setForageWorkflowPieces: (workflowPieces: any) => void; // TODO add type - getForageWorkflowPieces: () => Record; // TODO add type - removeForageWorkflowPiecesById: (id: string) => void; - fetchWorkflowPieceById: (id: string) => Piece; // TODO add type - clearForageWorkflowPieces: () => void; - setForageWorkflowPiecesOutputSchema: (id: string, properties: any) => void; -} - -export const [WorkflowPiecesContext, useWorkflowPiece] = - createCustomContext("WorkflowsPieces Context"); - -const WorkflowPiecesProvider: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => { - const localStorage = useStorage(); - - const setForageWorkflowPieces = useCallback((workflowPieces: any) => { - localStorage.setItem("workflowPieces", workflowPieces); - }, []); - - const setForageWorkflowPiecesOutputSchema = useCallback( - (id: any, properties: any) => { - const workflowPieces = localStorage.getItem("workflowPieces"); - if (workflowPieces?.[id]) { - workflowPieces[id].output_schema.properties = properties; - localStorage.setItem("workflowPieces", workflowPieces); - } - }, - [], - ); - - const clearForageWorkflowPieces = useCallback(() => { - localStorage.setItem("workflowPieces", {}); - }, []); - - const getForageWorkflowPieces = useCallback(() => { - const workflowPieces = localStorage.getItem("workflowPieces"); - if (!workflowPieces) { - return {}; - } - return workflowPieces; - }, []); - - const removeForageWorkflowPiecesById = useCallback((id: string) => { - const workflowPieces = localStorage.getItem("workflowPieces"); - if (!workflowPieces) { - return; - } - // eslint-disable-next-line @typescript-eslint/no-dynamic-delete - delete workflowPieces[id]; - localStorage.setItem("workflowPieces", workflowPieces); - }, []); - - const fetchWorkflowPieceById = useCallback((id: string) => { - const workflowPieces = localStorage.getItem("workflowPieces"); - if (workflowPieces !== null) { - return workflowPieces[id]; - } - }, []); - - const value: IWorkflowPieceContext = { - fetchWorkflowPieceById, - getForageWorkflowPieces, - removeForageWorkflowPiecesById, - setForageWorkflowPieces, - clearForageWorkflowPieces, - setForageWorkflowPiecesOutputSchema, - }; - - return ( - - {children} - - ); -}; - -export default WorkflowPiecesProvider; diff --git a/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx b/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx deleted file mode 100644 index 4d56dc1a..00000000 --- a/frontend/src/features/workflowEditor/context/workflowPiecesData.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import { useStorage } from "@nathan-vm/use-storage"; -import React, { useCallback } from "react"; -import { createCustomContext, getUuid } from "utils"; - -import { type IWorkflowPieceData } from "./types"; - -export type ForagePiecesData = Record; - -export interface IWorkflowPiecesDataContext { - setForageWorkflowPiecesDataById: ( - id: string, - pieceData: IWorkflowPieceData, - ) => void; - setForageWorkflowPiecesData: (pieceData: ForagePiecesData) => void; - fetchForageWorkflowPiecesData: () => ForagePiecesData; - fetchForageWorkflowPiecesDataById: ( - id: string, - ) => IWorkflowPieceData | undefined; - removeForageWorkflowPieceDataById: (id: string) => void; - clearForageWorkflowPiecesData: () => void; - clearDownstreamDataById: (id: string) => void; -} - -export const [WorkflowPiecesDataContext, useWorkflowPiecesData] = - createCustomContext("WorkflowPiecesData Context"); - -const WorkflowPiecesDataProvider: React.FC<{ children: React.ReactNode }> = ({ - children, -}) => { - const localStorage = useStorage(); - - const setForageWorkflowPiecesDataById = useCallback( - (id: string, pieceData: IWorkflowPieceData) => { - let currentData = - localStorage.getItem("workflowPiecesData"); - if (!currentData) { - currentData = {}; - } - currentData[id] = pieceData; - localStorage.setItem("workflowPiecesData", currentData); - }, - [], - ); - const setForageWorkflowPiecesData = useCallback( - (pieceData: ForagePiecesData) => { - localStorage.setItem("workflowPiecesData", pieceData); - }, - [], - ); - - const fetchForageWorkflowPiecesData = useCallback(() => { - const workflowPiecesData = - localStorage.getItem("workflowPiecesData"); - - return workflowPiecesData ?? {}; - }, []); - - const fetchForageWorkflowPiecesDataById = useCallback((id: string) => { - const workflowPiecesData = - localStorage.getItem("workflowPiecesData"); - - if (!workflowPiecesData?.[id]) { - return; - } - - return workflowPiecesData[id]; - }, []); - - const clearDownstreamDataById = useCallback((id: string) => { - const hashId = getUuid(id).replaceAll("-", ""); - const workflowPieceData = - localStorage.getItem("workflowPiecesData"); - - if (!workflowPieceData) { - return; - } - - Object.values(workflowPieceData).forEach((wpd) => { - Object.values(wpd.inputs).forEach((input) => { - if (input.upstreamId.includes(hashId)) { - input.upstreamArgument = ""; - input.upstreamId = ""; - input.upstreamValue = ""; - } else if (Array.isArray(input.value)) { - input.value.forEach((item) => { - if ( - typeof item.upstreamId === "string" && - item.upstreamId.includes(hashId) - ) { - item.upstreamArgument = ""; - item.upstreamId = ""; - item.upstreamValue = ""; - } else if (typeof item.upstreamId === "object") { - Object.keys(item.upstreamId).forEach((key) => { - const obj = item as any; - if (obj.upstreamId[key].includes(hashId)) { - obj.upstreamArgument[key] = ""; - obj.upstreamId[key] = ""; - obj.upstreamValue[key] = ""; - } - }); - } - }); - } - }); - }); - localStorage.setItem("workflowPiecesData", workflowPieceData); - }, []); - - const removeForageWorkflowPieceDataById = useCallback( - (id: string) => { - const workflowPieceData = - localStorage.getItem("workflowPiecesData"); - - if (!workflowPieceData) { - return; - } - // eslint-disable-next-line @typescript-eslint/no-dynamic-delete - delete workflowPieceData[id]; - localStorage.setItem("workflowPiecesData", workflowPieceData); - - clearDownstreamDataById(id); - }, - [clearDownstreamDataById], - ); - - const clearForageWorkflowPiecesData = useCallback(() => { - localStorage.setItem("workflowPiecesData", {}); - }, []); - - const value: IWorkflowPiecesDataContext = { - setForageWorkflowPiecesDataById, - setForageWorkflowPiecesData, - fetchForageWorkflowPiecesData, - fetchForageWorkflowPiecesDataById, - removeForageWorkflowPieceDataById, - clearForageWorkflowPiecesData, - clearDownstreamDataById, - }; - - return ( - - {children} - - ); -}; - -export default WorkflowPiecesDataProvider; diff --git a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx index 113bffcb..1621645f 100644 --- a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx +++ b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx @@ -1,12 +1,12 @@ +import { useStorage } from "@nathan-vm/use-storage"; import React, { useCallback } from "react"; -import localForage from "services/config/localForage.config"; import { createCustomContext } from "utils"; import { type IWorkflowSettings } from "./types"; export interface IWorkflowSettingsContext { - fetchWorkflowSettingsData: () => IWorkflowSettings; - setWorkflowSettingsData: (data: any) => void; + getWorkflowSettingsData: () => IWorkflowSettings; + setWorkflowSettingsData: (data: IWorkflowSettings) => void; clearWorkflowSettingsData: () => void; } @@ -16,25 +16,26 @@ export const [WorkflowSettingsDataContext, useWorkflowSettings] = const WorkflowSettingsDataProvider: React.FC<{ children: React.ReactNode }> = ({ children, }) => { - // Forage forms data - const fetchWorkflowSettingsData = useCallback(async () => { - const data = await localForage.getItem("workflowSettingsData"); - if (data === null) { - return {}; - } - return data; + const localStorage = useStorage(); + + const getWorkflowSettingsData = useCallback(() => { + return ( + localStorage.getItem("workflowSettingsData") ?? + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + ({} as IWorkflowSettings) + ); }, []); - const setWorkflowSettingsData = useCallback(async (data: any) => { - await localForage.setItem("workflowSettingsData", data); + const setWorkflowSettingsData = useCallback((data: IWorkflowSettings) => { + localStorage.setItem("workflowSettingsData", data); }, []); - const clearWorkflowSettingsData = useCallback(async () => { - await localForage.setItem("workflowSettingsData", {}); + const clearWorkflowSettingsData = useCallback(() => { + localStorage.removeItem("workflowSettingsData"); }, []); const value = { - fetchWorkflowSettingsData, + getWorkflowSettingsData, setWorkflowSettingsData, clearWorkflowSettingsData, }; diff --git a/frontend/src/features/workflowEditor/context/workflowsEditor.tsx b/frontend/src/features/workflowEditor/context/workflowsEditor.tsx index 6575d362..a62c5fea 100644 --- a/frontend/src/features/workflowEditor/context/workflowsEditor.tsx +++ b/frontend/src/features/workflowEditor/context/workflowsEditor.tsx @@ -11,49 +11,41 @@ import React, { type FC, useCallback } from "react"; import { type Edge } from "reactflow"; import { createCustomContext, generateTaskName } from "utils"; -import { - useReactWorkflowPersistence, - type IReactWorkflowPersistenceContext, -} from "./reactWorkflowPersistence"; import { type IWorkflowSettings, type CreateWorkflowRequest, type TasksDataModel, } from "./types"; -import { useWorkflowPiece, type IWorkflowPieceContext } from "./workflowPieces"; import { - useWorkflowPiecesData, - type IWorkflowPiecesDataContext, - type ForagePiecesData, -} from "./workflowPiecesData"; + useWorkflowPanel, + type IWorkflowPanelContext, + type StoragePiecesData, +} from "./workflowPanelContext"; import { - type IWorkflowSettingsContext, useWorkflowSettings, + type IWorkflowSettingsContext, } from "./workflowSettingsData"; -// eslint-disable-next-line @typescript-eslint/consistent-type-definitions -export type GenerateWorkflowsParams = { +export interface GenerateWorkflowsParams { workflowPieces: Record; - workflowPiecesData: ForagePiecesData; + workflowPiecesData: StoragePiecesData; workflowSettingsData: IWorkflowSettings; workflowNodes: IWorkflowElement[]; workflowEdges: Edge[]; -}; +} interface IWorkflowsEditorContext - extends IReactWorkflowPersistenceContext, - IWorkflowSettingsContext, - IWorkflowPieceContext, - IWorkflowPiecesDataContext { - fetchWorkflowForage: () => GenerateWorkflowsParams; - importWorkflowToForage: (importedWorkflow: GenerateWorkflowsParams) => void; + extends IWorkflowPanelContext, + IWorkflowSettingsContext { + getWorkflow: () => GenerateWorkflowsParams; + importWorkflowToStorage: (importedWorkflow: GenerateWorkflowsParams) => void; generateWorkflowsEditorBodyParams: ( p: GenerateWorkflowsParams, ) => CreateWorkflowRequest; handleCreateWorkflow: ( params: IPostWorkflowParams, ) => Promise; - clearForageData: () => void; + clearStorageData: () => void; } export const [WorkflowsEditorContext, useWorkflowsEditor] = @@ -68,52 +60,37 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ const { setWorkflowEdges, setWorkflowNodes, - fetchForageWorkflowEdges, - fetchForageWorkflowNodes, - clearReactWorkflowPersistence, - } = useReactWorkflowPersistence(); - - const { - setForageWorkflowPieces, - setForageWorkflowPiecesOutputSchema, - fetchWorkflowPieceById, - getForageWorkflowPieces, - removeForageWorkflowPiecesById, - clearForageWorkflowPieces, - } = useWorkflowPiece(); - - const { - fetchForageWorkflowPiecesData, - fetchForageWorkflowPiecesDataById, - setForageWorkflowPiecesData, - setForageWorkflowPiecesDataById, - clearForageWorkflowPiecesData, - removeForageWorkflowPieceDataById, + getWorkflowEdges, + getWorkflowNodes, + + setWorkflowPieces, + setWorkflowPieceOutputSchema, + getWorkflowPieces, + getWorkflowPieceById, + deleteWorkflowPieceById, + + setWorkflowPiecesData, + setWorkflowPieceDataById, + getWorkflowPiecesData, + getWorkflowPieceDataById, + deleteWorkflowPieceDataById, clearDownstreamDataById, - } = useWorkflowPiecesData(); + + clearWorkflowPanelContext, + } = useWorkflowPanel(); const { - fetchWorkflowSettingsData, + getWorkflowSettingsData, setWorkflowSettingsData, clearWorkflowSettingsData, } = useWorkflowSettings(); - const handleCreateWorkflow = useCallback( - async (payload: IPostWorkflowParams) => { - return await postWorkflow({ - ...payload, - workspace_id: workspace?.id ?? "", - }); - }, - [postWorkflow, workspace], - ); - - const fetchWorkflowForage = useCallback(() => { - const workflowPieces = getForageWorkflowPieces(); - const workflowPiecesData = fetchForageWorkflowPiecesData(); - const workflowSettingsData = fetchWorkflowSettingsData(); - const workflowNodes = fetchForageWorkflowNodes(); - const workflowEdges = fetchForageWorkflowEdges(); + const getWorkflow = useCallback(() => { + const workflowPieces = getWorkflowPieces(); + const workflowPiecesData = getWorkflowPiecesData(); + const workflowSettingsData = getWorkflowSettingsData(); + const workflowNodes = getWorkflowNodes(); + const workflowEdges = getWorkflowEdges(); const result: GenerateWorkflowsParams = { workflowPieces, workflowPiecesData, @@ -123,22 +100,24 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ }; return result; }, [ - fetchForageWorkflowPiecesData, - fetchWorkflowSettingsData, - getForageWorkflowPieces, + getWorkflowPieces, + getWorkflowPiecesData, + getWorkflowSettingsData, + getWorkflowNodes, + getWorkflowEdges, ]); - const importWorkflowToForage = useCallback( + const importWorkflowToStorage = useCallback( async (dominoWorkflow: GenerateWorkflowsParams) => { - setForageWorkflowPieces(dominoWorkflow.workflowPieces); - setForageWorkflowPiecesData(dominoWorkflow.workflowPiecesData); + setWorkflowPieces(dominoWorkflow.workflowPieces); + setWorkflowPiecesData(dominoWorkflow.workflowPiecesData); setWorkflowSettingsData(dominoWorkflow.workflowSettingsData); setWorkflowNodes(dominoWorkflow.workflowNodes); setWorkflowEdges(dominoWorkflow.workflowEdges); }, [ - setForageWorkflowPieces, - setForageWorkflowPiecesData, + setWorkflowPieces, + setWorkflowPiecesData, setWorkflowSettingsData, setWorkflowNodes, setWorkflowEdges, @@ -303,58 +282,54 @@ const WorkflowsEditorProvider: FC<{ children?: React.ReactNode }> = ({ ui_schema, }; }, - [ - fetchForageWorkflowEdges, - fetchForageWorkflowNodes, - fetchForageWorkflowPiecesData, - fetchWorkflowSettingsData, - ], + [], ); - const clearForageData = useCallback(() => { - clearReactWorkflowPersistence(); - clearForageWorkflowPieces(); - clearForageWorkflowPiecesData(); + const handleCreateWorkflow = useCallback( + async (payload: IPostWorkflowParams) => { + return await postWorkflow({ + ...payload, + workspace_id: workspace?.id ?? "", + }); + }, + [postWorkflow, workspace], + ); + + const clearStorageData = useCallback(() => { + clearWorkflowPanelContext(); clearWorkflowSettingsData(); - }, [ - clearReactWorkflowPersistence, - clearForageWorkflowPieces, - clearForageWorkflowPiecesData, - clearWorkflowSettingsData, - ]); + }, [clearWorkflowPanelContext, clearWorkflowSettingsData]); const value: IWorkflowsEditorContext = { - importWorkflowToForage, - setWorkflowEdges, setWorkflowNodes, - fetchForageWorkflowEdges, - fetchForageWorkflowNodes, - clearReactWorkflowPersistence, - - setForageWorkflowPieces, - setForageWorkflowPiecesOutputSchema, - fetchWorkflowPieceById, - getForageWorkflowPieces, - removeForageWorkflowPiecesById, - clearForageWorkflowPieces, - - setForageWorkflowPiecesData, - setForageWorkflowPiecesDataById, - fetchForageWorkflowPiecesData, - fetchForageWorkflowPiecesDataById, - removeForageWorkflowPieceDataById, - clearForageWorkflowPiecesData, + getWorkflowEdges, + getWorkflowNodes, + + setWorkflowPieces, + setWorkflowPieceOutputSchema, + getWorkflowPieceById, + getWorkflowPieces, + deleteWorkflowPieceById, + + setWorkflowPiecesData, + setWorkflowPieceDataById, + getWorkflowPiecesData, + getWorkflowPieceDataById, + deleteWorkflowPieceDataById, clearDownstreamDataById, + clearWorkflowPanelContext, + setWorkflowSettingsData, - fetchWorkflowSettingsData, + getWorkflowSettingsData, clearWorkflowSettingsData, - handleCreateWorkflow, - fetchWorkflowForage, + getWorkflow, + importWorkflowToStorage, generateWorkflowsEditorBodyParams, - clearForageData, + handleCreateWorkflow, + clearStorageData, }; return ( diff --git a/frontend/src/features/workflowEditor/utils/jsonSchema.ts b/frontend/src/features/workflowEditor/utils/jsonSchema.ts index bd0de351..112edf48 100644 --- a/frontend/src/features/workflowEditor/utils/jsonSchema.ts +++ b/frontend/src/features/workflowEditor/utils/jsonSchema.ts @@ -5,7 +5,7 @@ import { isEmpty } from "utils"; import { defaultContainerResources } from "../components/Drawers/PieceFormDrawer/ContainerResourceForm"; import { type IContainerResourceFormData, - type IWorkflowPieceData, + type WorkflowPieceData, } from "../context/types"; import { getFromUpstream } from "./getFromUpstream"; @@ -15,7 +15,7 @@ export const extractDefaultInputValues = (pieceSchema: Piece) => { const definitions = pieceSchema.input_schema.$defs; const defaultData = extractDefaultValues(pieceSchema.input_schema); - const defaultInputs: IWorkflowPieceData["inputs"] = {}; + const defaultInputs: WorkflowPieceData["inputs"] = {}; for (const key in defaultData) { const fromUpstream = getFromUpstream(schema[key]); From c265bd8d5d831226913bae4084589ac9f7225d30 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Wed, 7 Feb 2024 19:59:42 -0300 Subject: [PATCH 17/60] fix: dockerfile and pnpm --- frontend/Dockerfile.dev | 19 +++-- frontend/Dockerfile.prod | 15 ++-- frontend/package.json | 16 ++-- frontend/pnpm-lock.yaml | 80 +++++++------------ .../authentication/authentication.context.tsx | 2 - .../src/services/config/localForage.config.ts | 9 --- 6 files changed, 55 insertions(+), 86 deletions(-) delete mode 100644 frontend/src/services/config/localForage.config.ts diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 38af4df3..1bbcfad1 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -1,17 +1,22 @@ -# Debug Stage -FROM node:18-alpine as debug -WORKDIR /usr/src/app -EXPOSE 9222 +# Install pnpm +FROM node:18-alpine as base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable # Build Stage -FROM node:18-alpine as build +FROM base as build WORKDIR /usr/src/app -RUN npm i -g pnpm COPY package.json pnpm-lock.yaml ./ RUN pnpm install +# Debug Stage +FROM base as debug +WORKDIR /usr/src/app +EXPOSE 9222 + # Final Stage -FROM node:18-alpine +FROM base WORKDIR /usr/src/app COPY --from=build /usr/src/app/node_modules ./node_modules COPY . . diff --git a/frontend/Dockerfile.prod b/frontend/Dockerfile.prod index 6d9a4519..eace19cd 100644 --- a/frontend/Dockerfile.prod +++ b/frontend/Dockerfile.prod @@ -1,13 +1,16 @@ -# Stage 1: Build the React app -FROM node:18-slim as build - -# Set the working directory +# Install pnpm +FROM node:18-alpine as base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +# Build the React app +FROM base as build WORKDIR /app - -RUN npm i -g pnpm COPY package.json pnpm-lock.yaml ./ RUN pnpm install +# Import ENVs to the builded app RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ -o import-meta-env -y diff --git a/frontend/package.json b/frontend/package.json index 2acef0f1..8a337eaf 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,20 +17,13 @@ "@mui/x-data-grid": "^6.15.0", "@mui/x-date-pickers": "^6.5.0", "@nathan-vm/use-storage": "^0.2.1", - "@types/dompurify": "^3.0.5", - "@types/react": ">=18", - "@types/react-dom": "^18.0.9", - "@types/react-plotly.js": "^2.6.3", - "@types/uuid": "^9.0.0", "@uiw/react-textarea-code-editor": "^2.1.1", "@vitejs/plugin-react": "^4.2.1", "axios": "^1.2.1", "axios-mock-adapter": "^1.21.2", "cross-env": "^7.0.3", "dayjs": "^1.11.7", - "dotenv": "^16.3.1", "elkjs": "^0.8.2", - "localforage": "^1.10.0", "plotly.js": "^2.27.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -45,7 +38,6 @@ "reactflow": "^11.4.0", "remark-gfm": "^4.0.0", "swr": "^2.0.0", - "typescript": "*", "uuid": "^9.0.0", "vite": "^5.0.12", "vite-plugin-svgr": "^4.2.0", @@ -66,6 +58,11 @@ }, "browserslist": [">0.2%", "not dead", "not op_mini all"], "devDependencies": { + "@types/dompurify": "^3.0.5", + "@types/react": ">=18", + "@types/react-dom": "^18.0.9", + "@types/react-plotly.js": "^2.6.3", + "@types/uuid": "^9.0.0", "@typescript-eslint/eslint-plugin": "^6.4.0", "@typescript-eslint/parser": "^6.5.0", "eslint": "^8.0.1", @@ -79,6 +76,7 @@ "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^6.0.1", - "prettier": "^3.0.3" + "prettier": "^3.0.3", + "typescript": "*" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 3b0bab5e..60ff9920 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -38,21 +38,6 @@ dependencies: '@nathan-vm/use-storage': specifier: ^0.2.1 version: 0.2.1(react@18.2.0) - '@types/dompurify': - specifier: ^3.0.5 - version: 3.0.5 - '@types/react': - specifier: '>=18' - version: 18.2.45 - '@types/react-dom': - specifier: ^18.0.9 - version: 18.2.17 - '@types/react-plotly.js': - specifier: ^2.6.3 - version: 2.6.3 - '@types/uuid': - specifier: ^9.0.0 - version: 9.0.7 '@uiw/react-textarea-code-editor': specifier: ^2.1.1 version: 2.1.9(@babel/runtime@7.23.6)(react-dom@18.2.0)(react@18.2.0) @@ -71,15 +56,9 @@ dependencies: dayjs: specifier: ^1.11.7 version: 1.11.10 - dotenv: - specifier: ^16.3.1 - version: 16.3.1 elkjs: specifier: ^0.8.2 version: 0.8.2 - localforage: - specifier: ^1.10.0 - version: 1.10.0 plotly.js: specifier: ^2.27.1 version: 2.27.1 @@ -122,9 +101,6 @@ dependencies: swr: specifier: ^2.0.0 version: 2.2.4(react@18.2.0) - typescript: - specifier: '*' - version: 5.3.3 uuid: specifier: ^9.0.0 version: 9.0.1 @@ -139,12 +115,27 @@ dependencies: version: 4.3.1(typescript@5.3.3)(vite@5.0.12) web-worker: specifier: ^1.2.0 - version: 1.2.0 + version: 1.3.0 yup: specifier: ^1.2.0 version: 1.3.3 devDependencies: + '@types/dompurify': + specifier: ^3.0.5 + version: 3.0.5 + '@types/react': + specifier: '>=18' + version: 18.2.45 + '@types/react-dom': + specifier: ^18.0.9 + version: 18.2.17 + '@types/react-plotly.js': + specifier: ^2.6.3 + version: 2.6.3 + '@types/uuid': + specifier: ^9.0.0 + version: 9.0.7 '@typescript-eslint/eslint-plugin': specifier: ^6.4.0 version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) @@ -187,6 +178,9 @@ devDependencies: prettier: specifier: ^3.0.3 version: 3.1.1 + typescript: + specifier: '*' + version: 5.3.3 packages: @@ -1996,7 +1990,7 @@ packages: resolution: {integrity: sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==} dependencies: '@types/trusted-types': 2.0.7 - dev: false + dev: true /@types/estree-jsx@1.0.3: resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} @@ -2052,7 +2046,7 @@ packages: /@types/plotly.js@2.12.31: resolution: {integrity: sha512-FmzZQquzgTnQnywzyg7zlTTD4UFOroJ6/ac2KAueLCMQF7c+dwjZxgRohHB7Qzz0dZpFgic0VSkC2re7j6oluQ==} - dev: false + dev: true /@types/prismjs@1.26.3: resolution: {integrity: sha512-A0D0aTXvjlqJ5ZILMz3rNfDBOx9hHxLZYv2by47Sm/pqW35zzjusrZTryatjN/Rf8Us2gZrJD+KeHbUSTux1Cw==} @@ -2060,20 +2054,19 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - dev: false /@types/react-dom@18.2.17: resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} dependencies: '@types/react': 18.2.45 - dev: false + dev: true /@types/react-plotly.js@2.6.3: resolution: {integrity: sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ==} dependencies: '@types/plotly.js': 2.12.31 '@types/react': 18.2.45 - dev: false + dev: true /@types/react-transition-group@4.4.10: resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} @@ -2087,11 +2080,9 @@ packages: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 - dev: false /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - dev: false /@types/semver@7.5.6: resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} @@ -2099,7 +2090,7 @@ packages: /@types/trusted-types@2.0.7: resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: false + dev: true /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} @@ -2111,7 +2102,7 @@ packages: /@types/uuid@9.0.7: resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} - dev: false + dev: true /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3): resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} @@ -3047,7 +3038,6 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - dev: false /d3-array@1.2.4: resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} @@ -4763,10 +4753,6 @@ packages: engines: {node: '>= 4'} dev: true - /immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - dev: false - /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -5195,22 +5181,10 @@ packages: type-check: 0.4.0 dev: true - /lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - dependencies: - immediate: 3.0.6 - dev: false - /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - dependencies: - lie: 3.1.1 - dev: false - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -7891,8 +7865,8 @@ packages: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false - /web-worker@1.2.0: - resolution: {integrity: sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==} + /web-worker@1.3.0: + resolution: {integrity: sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==} dev: false /webgl-context@2.2.0: diff --git a/frontend/src/context/authentication/authentication.context.tsx b/frontend/src/context/authentication/authentication.context.tsx index ee56f1c6..672a7781 100644 --- a/frontend/src/context/authentication/authentication.context.tsx +++ b/frontend/src/context/authentication/authentication.context.tsx @@ -9,7 +9,6 @@ import React, { } from "react"; import { useNavigate } from "react-router-dom"; import { toast } from "react-toastify"; -import localForage from "services/config/localForage.config"; import { createCustomContext } from "utils"; import { postAuthLogin, postAuthRegister } from "./api"; @@ -67,7 +66,6 @@ export const AuthenticationProvider: React.FC<{ children: ReactNode }> = ({ const logout = useCallback(() => { localStorage.clear(); - void localForage.clear(); isLogged.current = false; setStore((store) => ({ ...store, diff --git a/frontend/src/services/config/localForage.config.ts b/frontend/src/services/config/localForage.config.ts deleted file mode 100644 index 407a8b3e..00000000 --- a/frontend/src/services/config/localForage.config.ts +++ /dev/null @@ -1,9 +0,0 @@ -import localForage from "localforage"; - -localForage.config({ - name: "Domino", - storeName: "domino_data", // Should be alphanumeric, with underscores. - description: "Domino database", -}); - -export default localForage; From cbdbcf695ae9be4bfd3aedcb8a254ef3e266056d Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Wed, 7 Feb 2024 20:13:09 -0300 Subject: [PATCH 18/60] fix: open settings --- .../features/workflowEditor/components/ButtonsMenu/index.tsx | 2 +- .../features/workflowEditor/components/WorkflowEditor/index.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx index c77812ca..39d549ad 100644 --- a/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx +++ b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx @@ -23,7 +23,7 @@ import { } from "../Modals"; interface Props { - handleSettings: () => void; + handleSettings: (event: any) => void; handleSave: () => void; handleExport: () => void; handleImported: (json: any) => void; diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx index 44119ee0..9e1c44a1 100644 --- a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx +++ b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx @@ -234,7 +234,7 @@ export const WorkflowsEditorComponent: React.FC = () => { handleExport={handleExport} handleImported={handleImportedJson} handleSave={handleSaveWorkflow} - handleSettings={() => toggleSidebarSettingsDrawer(true)} + handleSettings={toggleSidebarSettingsDrawer(true)} /> Date: Fri, 2 Feb 2024 10:41:57 -0300 Subject: [PATCH 19/60] add graph utils function to check if is dag using DFS --- frontend/src/utils/graph.ts | 63 +++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 frontend/src/utils/graph.ts diff --git a/frontend/src/utils/graph.ts b/frontend/src/utils/graph.ts new file mode 100644 index 00000000..55332af3 --- /dev/null +++ b/frontend/src/utils/graph.ts @@ -0,0 +1,63 @@ +import { type Edge, isEdge, isNode, type Node } from "reactflow"; + +function convertToAdjacencyList( + elements: Array, +): Record { + const adjacencyList: Record = {}; + + // Create an adjacency list from the given elements + elements.forEach((element: Edge | Node) => { + if (isNode(element)) { + adjacencyList[element.id] = []; + } else if (isEdge(element)) { + if (!adjacencyList[element.source]) { + adjacencyList[element.source] = []; + } + adjacencyList[element.source].push(element.target); + } + }); + + return adjacencyList; +} + +function hasCycle(adjacencyList: Record): boolean { + const visited: Record = {}; + const recursionStack: Record = {}; + + // Helper function for DFS traversal + function isNodeCyclic(nodeId: string): boolean { + if (recursionStack[nodeId]) { + return true; // Cycle detected + } + + if (visited[nodeId]) { + return false; + } + + visited[nodeId] = true; + recursionStack[nodeId] = true; + + const neighbors = adjacencyList[nodeId] || []; + for (let i = 0; i < neighbors.length; i++) { + if (isNodeCyclic(neighbors[i])) { + return true; // Cycle detected in a neighbor + } + } + recursionStack[nodeId] = false; // Backtrack + return false; + } + + // Perform DFS traversal for each node + for (const node in adjacencyList) { + if (isNodeCyclic(node)) { + console.log("isNodeCyclic", node); + return true; // Cycle detected on node + } + } + return false; +} + +export function isDag(nodes: Node[], edges: Edge[]): boolean { + const adjacencyList = convertToAdjacencyList([...nodes, ...edges]); + return !hasCycle(adjacencyList); +} From b764f33910e9619e8d191dc84e0685d1c5b1f959 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 2 Feb 2024 10:57:07 -0300 Subject: [PATCH 20/60] using acyclic utils onConnect --- .../Panel/WorkflowPanel/WorkflowPanel.tsx | 14 +++++++++++++- .../{ => features/workflowEditor}/utils/graph.ts | 1 - .../src/features/workflowEditor/utils/index.ts | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) rename frontend/src/{ => features/workflowEditor}/utils/graph.ts (97%) diff --git a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx index 5e3be187..87da8b55 100644 --- a/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx +++ b/frontend/src/features/workflowEditor/components/Panel/WorkflowPanel/WorkflowPanel.tsx @@ -17,6 +17,7 @@ import React, { useImperativeHandle, useMemo, } from "react"; +import { toast } from "react-toastify"; import ReactFlow, { type Node, addEdge, @@ -40,6 +41,7 @@ import { v4 as uuidv4 } from "uuid"; import { extractDefaultContainerResources, extractDefaultInputValues, + isDag, } from "../../../utils"; import { CustomConnectionLine } from "./ConnectionLine"; @@ -188,13 +190,22 @@ const WorkflowPanel = forwardRef( const onConnect = useCallback( (connection: Connection) => { + const newEdge: any = { + ...connection, + id: `${Math.random()}`, + }; + const newEdges = [...edges, newEdge]; + if (!isDag(nodes, newEdges)) { + toast.error("Workflow must be acyclic!"); + return; + } setEdges((prevEdges: Edge[]) => { const edges = addEdge(connection, prevEdges); setWorkflowEdges(edges); return edges; }); }, - [setEdges, setWorkflowEdges], + [rawEdges, rawNodes], ); const onNodesDelete = useCallback( @@ -317,6 +328,7 @@ const WorkflowPanel = forwardRef( nodes={nodes} edges={edges} connectionLineComponent={CustomConnectionLine} + fitView={true} onInit={onInit} deleteKeyCode={["Delete", "Backspace"]} onConnect={onConnect} diff --git a/frontend/src/utils/graph.ts b/frontend/src/features/workflowEditor/utils/graph.ts similarity index 97% rename from frontend/src/utils/graph.ts rename to frontend/src/features/workflowEditor/utils/graph.ts index 55332af3..e917b53d 100644 --- a/frontend/src/utils/graph.ts +++ b/frontend/src/features/workflowEditor/utils/graph.ts @@ -50,7 +50,6 @@ function hasCycle(adjacencyList: Record): boolean { // Perform DFS traversal for each node for (const node in adjacencyList) { if (isNodeCyclic(node)) { - console.log("isNodeCyclic", node); return true; // Cycle detected on node } } diff --git a/frontend/src/features/workflowEditor/utils/index.ts b/frontend/src/features/workflowEditor/utils/index.ts index 1cc63fe8..21ef6754 100644 --- a/frontend/src/features/workflowEditor/utils/index.ts +++ b/frontend/src/features/workflowEditor/utils/index.ts @@ -3,3 +3,4 @@ export * from "./importWorkflow"; export * from "./jsonSchema"; export * from "./upstreamOptions"; export * from "./validation"; +export * from "./graph"; From 741d2b6aca1325fb0634dd2264bd64c23edfe57f Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 2 Feb 2024 11:00:34 -0300 Subject: [PATCH 21/60] add example --- .../src/features/workflowEditor/utils/graph.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/frontend/src/features/workflowEditor/utils/graph.ts b/frontend/src/features/workflowEditor/utils/graph.ts index e917b53d..1ce85ec4 100644 --- a/frontend/src/features/workflowEditor/utils/graph.ts +++ b/frontend/src/features/workflowEditor/utils/graph.ts @@ -6,6 +6,14 @@ function convertToAdjacencyList( const adjacencyList: Record = {}; // Create an adjacency list from the given elements + /* + Example: + { + "node-1": ["node-2", "node-3"], + "node-2": ["node-3"], + "node-3": ["node-4"], + } + */ elements.forEach((element: Edge | Node) => { if (isNode(element)) { adjacencyList[element.id] = []; @@ -16,18 +24,18 @@ function convertToAdjacencyList( adjacencyList[element.source].push(element.target); } }); - return adjacencyList; } function hasCycle(adjacencyList: Record): boolean { + // ref: https://www.geeksforgeeks.org/depth-first-search-or-dfs-for-a-graph/ const visited: Record = {}; const recursionStack: Record = {}; // Helper function for DFS traversal function isNodeCyclic(nodeId: string): boolean { if (recursionStack[nodeId]) { - return true; // Cycle detected + return true; } if (visited[nodeId]) { @@ -43,7 +51,7 @@ function hasCycle(adjacencyList: Record): boolean { return true; // Cycle detected in a neighbor } } - recursionStack[nodeId] = false; // Backtrack + recursionStack[nodeId] = false; // Backtrack stack return false; } From 52f0a0f0a7b32894dd9283719a8f28962707ec3b Mon Sep 17 00:00:00 2001 From: tdari Date: Thu, 8 Feb 2024 19:57:34 +0300 Subject: [PATCH 22/60] fix: delete workspace from local storage on leave --- frontend/src/context/workspaces/workspaces.tsx | 8 ++++++++ .../components/workspaces/WorkspaceListItem.tsx | 1 - 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/context/workspaces/workspaces.tsx b/frontend/src/context/workspaces/workspaces.tsx index 028659ca..caf9da4a 100644 --- a/frontend/src/context/workspaces/workspaces.tsx +++ b/frontend/src/context/workspaces/workspaces.tsx @@ -108,6 +108,14 @@ export const WorkspacesProvider: FC = ({ removeUserWorkspace({ workspaceId, userId }) .then(() => { toast.success(`User removed successfully from workspace.`); + const storageWorkspace = JSON.parse( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + localStorage.getItem("workspace")!, + ); + if (storageWorkspace && storageWorkspace.id === workspaceId) { + localStorage.removeItem("workspace"); + setWorkspace(null); + } void workspacesRefresh(); }) .catch((error) => { diff --git a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx index 1d075bf5..7ee62119 100644 --- a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx +++ b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx @@ -16,7 +16,6 @@ import { Tooltip, Chip, } from "@mui/material"; -import Stack from "@mui/material/Stack"; import { type IWorkspaceSummary } from "context/workspaces/types"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; From 855cf1e286a9a70d35eeb6a9d71aac267049c079 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tunahan=20Dar=C4=B1?= <50070971+tdari@users.noreply.github.com> Date: Fri, 9 Feb 2024 16:26:11 +0300 Subject: [PATCH 23/60] Update workspaces.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vinícius Vaz --- frontend/src/context/workspaces/workspaces.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/src/context/workspaces/workspaces.tsx b/frontend/src/context/workspaces/workspaces.tsx index caf9da4a..b79f421f 100644 --- a/frontend/src/context/workspaces/workspaces.tsx +++ b/frontend/src/context/workspaces/workspaces.tsx @@ -109,8 +109,7 @@ export const WorkspacesProvider: FC = ({ .then(() => { toast.success(`User removed successfully from workspace.`); const storageWorkspace = JSON.parse( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - localStorage.getItem("workspace")!, + localStorage.getItem("workspace") ?? "{}", ); if (storageWorkspace && storageWorkspace.id === workspaceId) { localStorage.removeItem("workspace"); From 4f79e8c98e221700f00583988ba5119998bbf9ed Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Fri, 9 Feb 2024 12:33:59 -0300 Subject: [PATCH 24/60] chore: remove console.log --- frontend/src/features/workflowEditor/utils/upstreamOptions.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts index 04089e61..6b807499 100644 --- a/frontend/src/features/workflowEditor/utils/upstreamOptions.ts +++ b/frontend/src/features/workflowEditor/utils/upstreamOptions.ts @@ -43,7 +43,6 @@ function generateOptions( schema: Schema | Property | Definition, ): UpstreamOptions { const options: UpstreamOptions = {}; - console.log(schema); const addOptions = (opts: Option[] | UpstreamOptions, key: string = "") => { if (Array.isArray(opts)) { options[key] = opts; From 8f15e523649116f4435067099a769064cf6cc283 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 06:50:37 -0300 Subject: [PATCH 25/60] storage instance var on base piece --- src/domino/base_piece.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 9dcccd6e..21257d5d 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -60,6 +60,7 @@ def __init__( self.logger = get_configured_logger(f"{self.__class__.__name__ }-{self.task_id}") self.display_result = None + self.storage_size_in_bytes = 0 def start_logger(self): """ @@ -75,13 +76,22 @@ def _wait_for_sidecar_paths(self): break time.sleep(2) + @staticmethod + def _get_folder_size(folder_path): + total_size = 0 + for dirpath, _, filenames in os.walk(folder_path): + for filename in filenames: + file_path = os.path.join(dirpath, filename) + total_size += os.path.getsize(file_path) + return total_size + def generate_paths(self): """ Generates paths for shared storage. """ # Base path for fetching and storing runs results - if not Path(self.workflow_shared_storage).is_dir(): - Path(self.workflow_shared_storage).mkdir(parents=True, exist_ok=True) + if not Path(self.workflow_shared_storage_path).is_dir(): + Path(self.workflow_shared_storage_path).mkdir(parents=True, exist_ok=True) # # Path to store results data if not Path(self.results_path).is_dir(): @@ -114,8 +124,8 @@ def get_upstream_tasks_data(self): upstream_tasks_ids = ast.literal_eval(os.getenv("AIRFLOW_UPSTREAM_TASKS_IDS", str(list()))) for tid in upstream_tasks_ids: self.upstream_tasks_data[tid] = dict() - self.upstream_tasks_data[tid]["results"] = self.workflow_shared_storage + f"/{tid}/results" - with open(f"{self.workflow_shared_storage}/{tid}/xcom/return.json") as f: + self.upstream_tasks_data[tid]["results"] = self.workflow_shared_storage_path + f"/{tid}/results" + with open(f"{self.workflow_shared_storage_path}/{tid}/xcom/return.json") as f: self.upstream_tasks_data[tid]["xcom"] = json.load(f) else: raise NotImplementedError(f"Get upstream XCOM not implemented for deploy_mode=={self.deploy_mode}") @@ -262,12 +272,12 @@ def run_piece_function( # Generate paths workflow_run_subpath = os.environ.get('DOMINO_WORKFLOW_RUN_SUBPATH', '') - self.workflow_shared_storage = Path("/home/shared_storage") + self.workflow_shared_storage_path = Path("/home/shared_storage") if self.deploy_mode == 'local-compose': - self.workflow_shared_storage = str(self.workflow_shared_storage / workflow_run_subpath) - self.results_path = f"{self.workflow_shared_storage}/{self.task_id}/results" - self.xcom_path = f"{self.workflow_shared_storage}/{self.task_id}/xcom" - self.report_path = f"{self.workflow_shared_storage}/{self.task_id}/report" + self.workflow_shared_storage_path = str(self.workflow_shared_storage_path / workflow_run_subpath) + self.results_path = f"{self.workflow_shared_storage_path}/{self.task_id}/results" + self.xcom_path = f"{self.workflow_shared_storage_path}/{self.task_id}/xcom" + self.report_path = f"{self.workflow_shared_storage_path}/{self.task_id}/report" shared_storage_source_name = os.environ.get('DOMINO_WORKFLOW_SHARED_STORAGE_SOURCE_NAME', None) if not shared_storage_source_name or shared_storage_source_name == "none" or self.deploy_mode == "local-compose": self.generate_paths() @@ -292,8 +302,12 @@ def run_piece_function( # Push XCom xcom_obj = self.format_xcom(output_obj=output_obj) self.push_xcom(xcom_obj=xcom_obj) + base_results_path = f"{self.workflow_shared_storage_path}/{self.task_id}" + self.storage_size_in_bytes = self._get_folder_size(base_results_path) + self.logger.info(f"Piece used {self.storage_size_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") + @classmethod def dry_run( cls, From 6221388b4eab5b0b49a41d44e76668df93485856 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 07:29:04 -0300 Subject: [PATCH 26/60] add storage var --- src/domino/VERSION | 2 +- src/domino/base_piece.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/domino/VERSION b/src/domino/VERSION index fcbb5375..bbde4bee 100644 --- a/src/domino/VERSION +++ b/src/domino/VERSION @@ -1 +1 @@ -0.8.4 \ No newline at end of file +0.8.5 \ No newline at end of file diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 21257d5d..732453f6 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -60,7 +60,7 @@ def __init__( self.logger = get_configured_logger(f"{self.__class__.__name__ }-{self.task_id}") self.display_result = None - self.storage_size_in_bytes = 0 + self._storage_size_in_bytes = 0 def start_logger(self): """ @@ -303,8 +303,8 @@ def run_piece_function( xcom_obj = self.format_xcom(output_obj=output_obj) self.push_xcom(xcom_obj=xcom_obj) base_results_path = f"{self.workflow_shared_storage_path}/{self.task_id}" - self.storage_size_in_bytes = self._get_folder_size(base_results_path) - self.logger.info(f"Piece used {self.storage_size_in_bytes} bytes of storage.") + self._storage_size_in_bytes = self._get_folder_size(base_results_path) + self.logger.info(f"Piece used {self._storage_size_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") From 71fe3b681bde22182c2a13fff02bdb15ad835ab9 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 07:42:26 -0300 Subject: [PATCH 27/60] publishing dev image on branch --- .github/workflows/release-airflow-images-dev.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-airflow-images-dev.yaml b/.github/workflows/release-airflow-images-dev.yaml index c50cf682..e6519c78 100644 --- a/.github/workflows/release-airflow-images-dev.yaml +++ b/.github/workflows/release-airflow-images-dev.yaml @@ -4,6 +4,7 @@ on: push: branches: - dev + - update-base-piece # TODO remove paths: - src/domino/** - Dockerfile-airflow-domino.dev @@ -33,7 +34,7 @@ jobs: push: true tags: ghcr.io/tauffer-consulting/domino-airflow-base:latest-dev context: . - file: Dockerfile-airflow-domino.dev + file: Dockerfile-airflow-domino.dev domino-base-piece: name: Domino Base Piece Image From 25b28c16ba4028ab8408d2b4f69fbc4eadbad0c5 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 07:48:09 -0300 Subject: [PATCH 28/60] add dev option to build images cli --- src/domino/cli/cli.py | 10 ++++++++-- src/domino/cli/utils/pieces_repository.py | 9 +++++---- src/domino/custom_operators/docker_operator.py | 8 ++++---- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/domino/cli/cli.py b/src/domino/cli/cli.py index 270b6807..55759825 100644 --- a/src/domino/cli/cli.py +++ b/src/domino/cli/cli.py @@ -302,9 +302,15 @@ def cli_create_piece_repository(name, container_registry): default="", help='Overwrite tag for release.' ) -def cli_organize_pieces_repository(build_images: bool, source_url: str, tag_overwrite: str): +@click.option( + '--dev', + is_flag=True, + prompt='Build from dev base images?', + default=False +) +def cli_organize_pieces_repository(build_images: bool, source_url: str, tag_overwrite: str, dev: bool): """Organize Pieces repository.""" - pieces_repository.organize_pieces_repository(build_images, source_url, tag_overwrite) + pieces_repository.organize_pieces_repository(build_images, source_url, tag_overwrite, dev) @click.command() diff --git a/src/domino/cli/utils/pieces_repository.py b/src/domino/cli/utils/pieces_repository.py index 0b645713..73663c02 100644 --- a/src/domino/cli/utils/pieces_repository.py +++ b/src/domino/cli/utils/pieces_repository.py @@ -346,14 +346,14 @@ def create_dependencies_map(save_map_as_file: bool = True) -> None: json.dump(pieces_images_map, outfile, indent=4, cls=SetEncoder) -def build_docker_images(tag_overwrite: str | None = None) -> None: +def build_docker_images(tag_overwrite: str | None = None, dev: bool = False) -> None: """ Convenience function to build Docker images from the repository dependencies and publish them to Docker Hub """ from domino.scripts.build_docker_images_pieces import build_images_from_pieces_repository console.print("Building Docker images and generating map file...") - updated_dependencies_map = build_images_from_pieces_repository(tag_overwrite=tag_overwrite) + updated_dependencies_map = build_images_from_pieces_repository(tag_overwrite=tag_overwrite, dev=dev) return updated_dependencies_map @@ -388,7 +388,8 @@ def validate_repo_name(repo_name: str) -> None: def organize_pieces_repository( build_images: bool, source_url: str, - tag_overwrite: str | None = None + tag_overwrite: str | None = None, + dev: bool = False ) -> None: """ Organize Piece's repository for Domino. This will: @@ -423,7 +424,7 @@ def organize_pieces_repository( # Build and publish the images if build_images: - updated_dependencies_map = build_docker_images(tag_overwrite=tag_overwrite) + updated_dependencies_map = build_docker_images(tag_overwrite=tag_overwrite, dev=dev) map_file_path = Path(".") / ".domino/dependencies_map.json" with open(map_file_path, "w") as outfile: json.dump(updated_dependencies_map, outfile, indent=4) diff --git a/src/domino/custom_operators/docker_operator.py b/src/domino/custom_operators/docker_operator.py index b037f2d7..4b538547 100644 --- a/src/domino/custom_operators/docker_operator.py +++ b/src/domino/custom_operators/docker_operator.py @@ -58,12 +58,12 @@ def __init__( dev_pieces = False if dev_pieces: piece_repo_name = repository_url.split("/")[-1] - local_repos_path = f"/mnt/shared_storage/Github/{piece_repo_name}" - # local_repos_path = f"/home/vinicius/Documents/work/tauffer/{piece_repo_name}" + #local_repos_path = f"/mnt/shared_storage/Github/{piece_repo_name}" + local_repos_path = f"/home/vinicius/Documents/work/tauffer/{piece_repo_name}" mounts = [ # TODO remove - # Mount(source='/home/vinicius/Documents/work/tauffer/domino/src/domino', target='/usr/local/lib/python3.10/site-packages/domino/', type='bind', read_only=True), - Mount(source='/mnt/shared_storage/Github/domino/src/domino', target='/usr/local/lib/python3.10/site-packages/domino/', type='bind', read_only=True), + Mount(source='/home/vinicius/Documents/work/tauffer/domino/src/domino', target='/usr/local/lib/python3.10/site-packages/domino/', type='bind', read_only=True), + #Mount(source='/mnt/shared_storage/Github/domino/src/domino', target='/usr/local/lib/python3.10/site-packages/domino/', type='bind', read_only=True), Mount(source=local_repos_path, target='/home/domino/pieces_repository/', type='bind', read_only=True), ] ######################################################## From f0df067b66a98859fdceedbd1255738ca540ba1b Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 07:50:36 -0300 Subject: [PATCH 29/60] remove prompt --- src/domino/cli/cli.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/domino/cli/cli.py b/src/domino/cli/cli.py index 55759825..d1fb42a6 100644 --- a/src/domino/cli/cli.py +++ b/src/domino/cli/cli.py @@ -305,8 +305,8 @@ def cli_create_piece_repository(name, container_registry): @click.option( '--dev', is_flag=True, - prompt='Build from dev base images?', - default=False + default=False, + help="Build pieces images using development base piece image." ) def cli_organize_pieces_repository(build_images: bool, source_url: str, tag_overwrite: str, dev: bool): """Organize Pieces repository.""" From 83003232230d5cdfea7def0799bfe9ce7b981520 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 07:51:56 -0300 Subject: [PATCH 30/60] fix build --- src/domino/scripts/build_docker_images_pieces.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/domino/scripts/build_docker_images_pieces.py b/src/domino/scripts/build_docker_images_pieces.py index b20ab69d..69ab09d3 100644 --- a/src/domino/scripts/build_docker_images_pieces.py +++ b/src/domino/scripts/build_docker_images_pieces.py @@ -56,7 +56,7 @@ def build_image_from_tmp_dockerfile( (Path(path) / dockerfile).unlink() -def build_images_from_pieces_repository(tag_overwrite: str | None = None): +def build_images_from_pieces_repository(tag_overwrite: str | None = None, dev: bool = False): """ Each dependencies group will need to have its own Docker image built and published to be used by Domino. This is because the Pieces source code goes baked in the images. @@ -89,9 +89,13 @@ def build_images_from_pieces_repository(tag_overwrite: str | None = None): source_image_name = f"{github_container_registry_name}/{docker_image_repository}:{docker_image_version}-{group}" # If no extra dependency, use base Pod image and just copy the Pieces source code + base_image = "ghcr.io/tauffer-consulting/domino-base-piece:latest" + if dev: + base_image = "ghcr.io/tauffer-consulting/domino-base-piece:latest-dev" + if not any([dependency_dockerfile, dependency_requirements]): pieces_dependencies_map[group]["source_image"] = source_image_name - dockerfile_str = """FROM ghcr.io/tauffer-consulting/domino-base-piece:latest + dockerfile_str = f"""FROM {base_image} COPY config.toml domino/pieces_repository/ COPY pieces domino/pieces_repository/pieces COPY .domino domino/pieces_repository/.domino @@ -108,7 +112,7 @@ def build_images_from_pieces_repository(tag_overwrite: str | None = None): # If dependency is defined as a requirements.txt elif dependency_requirements: pieces_dependencies_map[group]["source_image"] = source_image_name - dockerfile_str = f"""FROM ghcr.io/tauffer-consulting/domino-base-piece:latest + dockerfile_str = f"""FROM {base_image} COPY config.toml domino/pieces_repository/ COPY pieces domino/pieces_repository/pieces COPY .domino domino/pieces_repository/.domino From af1e116cfe905127b5bdd44b859bc504f432a26d Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 08:08:52 -0300 Subject: [PATCH 31/60] remove branch from workflow --- .github/workflows/release-airflow-images-dev.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release-airflow-images-dev.yaml b/.github/workflows/release-airflow-images-dev.yaml index e6519c78..a11bd6c0 100644 --- a/.github/workflows/release-airflow-images-dev.yaml +++ b/.github/workflows/release-airflow-images-dev.yaml @@ -4,7 +4,6 @@ on: push: branches: - dev - - update-base-piece # TODO remove paths: - src/domino/** - Dockerfile-airflow-domino.dev From e69dd775eb9819538c545d06cb7d93d3e3a5a8b7 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 10:36:00 -0300 Subject: [PATCH 32/60] xcom obj --- src/domino/base_piece.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 732453f6..53d0639d 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -301,6 +301,8 @@ def run_piece_function( # Push XCom xcom_obj = self.format_xcom(output_obj=output_obj) + self._storage_size_in_bytes = self._get_folder_size(base_results_path) + xcom_obj['_storage_size_in_bytes'] = self._storage_size_in_bytes self.push_xcom(xcom_obj=xcom_obj) base_results_path = f"{self.workflow_shared_storage_path}/{self.task_id}" self._storage_size_in_bytes = self._get_folder_size(base_results_path) From ae5c66e2a4a17530ebfd94a2861d124f6426dd11 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 10:52:59 -0300 Subject: [PATCH 33/60] fix path --- src/domino/base_piece.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 53d0639d..29593bf2 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -301,11 +301,11 @@ def run_piece_function( # Push XCom xcom_obj = self.format_xcom(output_obj=output_obj) - self._storage_size_in_bytes = self._get_folder_size(base_results_path) + shared_storage_base_path = f"{self.workflow_shared_storage_path}/{self.task_id}" + self._storage_size_in_bytes = self._get_folder_size(shared_storage_base_path) xcom_obj['_storage_size_in_bytes'] = self._storage_size_in_bytes self.push_xcom(xcom_obj=xcom_obj) base_results_path = f"{self.workflow_shared_storage_path}/{self.task_id}" - self._storage_size_in_bytes = self._get_folder_size(base_results_path) self.logger.info(f"Piece used {self._storage_size_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") From 3b58349fe50880c68eba015e2a249758ff7ef05e Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 10:53:22 -0300 Subject: [PATCH 34/60] mend --- src/domino/base_piece.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 29593bf2..68732fb3 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -305,7 +305,6 @@ def run_piece_function( self._storage_size_in_bytes = self._get_folder_size(shared_storage_base_path) xcom_obj['_storage_size_in_bytes'] = self._storage_size_in_bytes self.push_xcom(xcom_obj=xcom_obj) - base_results_path = f"{self.workflow_shared_storage_path}/{self.task_id}" self.logger.info(f"Piece used {self._storage_size_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") From cd01fe056453915a5065fc3df3f90e035cfd79ca Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 11:23:47 -0300 Subject: [PATCH 35/60] update var name and add return storage usage to ops --- src/domino/base_piece.py | 8 ++++---- src/domino/custom_operators/docker_operator.py | 4 +++- src/domino/custom_operators/k8s_operator.py | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 68732fb3..55f68b88 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -60,7 +60,7 @@ def __init__( self.logger = get_configured_logger(f"{self.__class__.__name__ }-{self.task_id}") self.display_result = None - self._storage_size_in_bytes = 0 + self._shared_storage_usage_in_bytes = 0 def start_logger(self): """ @@ -302,10 +302,10 @@ def run_piece_function( # Push XCom xcom_obj = self.format_xcom(output_obj=output_obj) shared_storage_base_path = f"{self.workflow_shared_storage_path}/{self.task_id}" - self._storage_size_in_bytes = self._get_folder_size(shared_storage_base_path) - xcom_obj['_storage_size_in_bytes'] = self._storage_size_in_bytes + self._shared_storage_usage_in_bytes = self._get_folder_size(shared_storage_base_path) + xcom_obj['_storage_size_in_bytes'] = self._shared_storage_usage_in_bytes self.push_xcom(xcom_obj=xcom_obj) - self.logger.info(f"Piece used {self._storage_size_in_bytes} bytes of storage.") + self.logger.info(f"Piece used {self._shared_storage_usage_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") diff --git a/src/domino/custom_operators/docker_operator.py b/src/domino/custom_operators/docker_operator.py index 4b538547..17548760 100644 --- a/src/domino/custom_operators/docker_operator.py +++ b/src/domino/custom_operators/docker_operator.py @@ -190,4 +190,6 @@ def execute(self, context: Context) -> Optional[str]: self.domino_client = DominoBackendRestClient(base_url="http://domino-rest:8000/") # env var format = {"name": "value"} self._prepare_execute_environment(context=context) - return super().execute(context=context) + result = super().execute(context=context) + self._shared_storage_usage_in_bytes = result['_shared_storage_usage_in_bytes'] + return result diff --git a/src/domino/custom_operators/k8s_operator.py b/src/domino/custom_operators/k8s_operator.py index f48e248c..128fe4e8 100644 --- a/src/domino/custom_operators/k8s_operator.py +++ b/src/domino/custom_operators/k8s_operator.py @@ -510,6 +510,7 @@ def execute(self, context: Context): ti.xcom_push(key='pod_name', value=self.pod.metadata.name) ti.xcom_push(key='pod_namespace', value=self.pod.metadata.namespace) if self.do_xcom_push: + self._shared_storage_usage_in_bytes = result['_shared_storage_usage_in_bytes'] return result From deb36da1cba23f1db829ca7924a1cf4556208756 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 12 Feb 2024 11:43:14 -0300 Subject: [PATCH 36/60] fix base piece shared storage usage --- src/domino/base_piece.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/base_piece.py b/src/domino/base_piece.py index 55f68b88..ae67771d 100644 --- a/src/domino/base_piece.py +++ b/src/domino/base_piece.py @@ -303,7 +303,7 @@ def run_piece_function( xcom_obj = self.format_xcom(output_obj=output_obj) shared_storage_base_path = f"{self.workflow_shared_storage_path}/{self.task_id}" self._shared_storage_usage_in_bytes = self._get_folder_size(shared_storage_base_path) - xcom_obj['_storage_size_in_bytes'] = self._shared_storage_usage_in_bytes + xcom_obj['_shared_storage_usage_in_bytes'] = self._shared_storage_usage_in_bytes self.push_xcom(xcom_obj=xcom_obj) self.logger.info(f"Piece used {self._shared_storage_usage_in_bytes} bytes of storage.") self.logger.info("End cut point for logger 48c94577-0225-4c3f-87c0-8add3f4e6d4b") From 0f28ab5c926f114d00fef4bd5855146b7e44d3b0 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Wed, 14 Feb 2024 13:17:54 -0300 Subject: [PATCH 37/60] update logo in readme --- README.md | 2 +- media/brand/main_logo.png | Bin 0 -> 48797 bytes media/logo.png | Bin 83697 -> 0 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 media/brand/main_logo.png delete mode 100644 media/logo.png diff --git a/README.md b/README.md index 7a3ad52d..0d5822c4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

Build amazing ideas, piece by piece.

diff --git a/media/brand/main_logo.png b/media/brand/main_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..46f9ded7edbfcc51b97288967693d9b29877a4c5 GIT binary patch literal 48797 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 b2&^E*zLi&*vq>)<+n9@khy7*Sprro;6$DH4 literal 0 HcmV?d00001 diff --git a/media/logo.png b/media/logo.png deleted file mode 100644 index 53ada5869f28a570f4d0ac474456c364afdfd9d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83697 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 bPx%xzYU`9+$%O^U^vAAqyqr%u`tSTdJJJ== From 5258e856c336132f4858e0c708dd262b682c4b10 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Tue, 13 Feb 2024 19:56:51 -0300 Subject: [PATCH 38/60] feat: improve form inputs --- frontend/package.json | 91 +- frontend/pnpm-lock.yaml | 2388 ++++++++--------- frontend/src/@types/piece/index.d.ts | 2 + frontend/src/@types/piece/schema.d.ts | 38 +- .../PieceFormItem/InputElement/ArrayInput.tsx | 184 ++ .../PieceFormItem/InputElement/EnumInput.tsx | 32 + .../InputElement/InputElement.tsx | 162 ++ .../InputElement/ObjectInput.tsx | 73 + .../SelectUpstreamInput.tsx} | 0 .../PieceFormItem/InputElement/index.ts | 3 + .../PieceFormItem/InputElement/utils.ts | 117 + .../PieceForm/PieceFormItem/arrayInput.tsx | 346 --- .../PieceForm/PieceFormItem/index.tsx | 221 +- .../PieceForm/PieceFormItem/objectInput.tsx | 136 - .../PieceFormDrawer/PieceForm/index.tsx | 5 - .../disableCheckboxOptions.ts | 0 .../features/workflowEditor/utils/index.ts | 1 + .../workflowEditor/utils/jsonSchema.ts | 12 +- frontend/src/utils/getDefinition.ts | 2 +- 19 files changed, 1768 insertions(+), 2045 deletions(-) create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/EnumInput.tsx create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ObjectInput.tsx rename frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/{selectUpstreamInput.tsx => InputElement/SelectUpstreamInput.tsx} (100%) create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/index.ts create mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/utils.ts delete mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx delete mode 100644 frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx rename frontend/src/features/workflowEditor/{components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem => utils}/disableCheckboxOptions.ts (100%) diff --git a/frontend/package.json b/frontend/package.json index 8a337eaf..ff62b6a6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,44 +6,44 @@ "node": ">=18 < 20" }, "dependencies": { - "@emotion/react": "^11.11.1", + "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@iconify/react": "^4.1.1", - "@import-meta-env/cli": "^0.6.6", + "@import-meta-env/cli": "^0.6.8", "@import-meta-env/unplugin": "^0.4.10", - "@mui/icons-material": "^5.11.0", - "@mui/lab": "^5.0.0-alpha.155", - "@mui/material": "^5.14.20", - "@mui/x-data-grid": "^6.15.0", - "@mui/x-date-pickers": "^6.5.0", + "@mui/icons-material": "^5.15.10", + "@mui/lab": "5.0.0-alpha.165", + "@mui/material": "^5.15.10", + "@mui/x-data-grid": "^6.19.4", + "@mui/x-date-pickers": "^6.19.4", "@nathan-vm/use-storage": "^0.2.1", - "@uiw/react-textarea-code-editor": "^2.1.1", + "@uiw/react-textarea-code-editor": "^2.1.9", "@vitejs/plugin-react": "^4.2.1", - "axios": "^1.2.1", - "axios-mock-adapter": "^1.21.2", + "axios": "^1.6.7", + "axios-mock-adapter": "^1.22.0", "cross-env": "^7.0.3", - "dayjs": "^1.11.7", + "dayjs": "^1.11.10", "elkjs": "^0.8.2", - "plotly.js": "^2.27.1", + "plotly.js": "^2.29.1", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-draggable": "^4.4.5", - "react-hook-form": "^7.45.1", + "react-draggable": "^4.4.6", + "react-hook-form": "^7.50.1", "react-markdown": "9.0.0", - "react-pdf": "^7.6.0", + "react-pdf": "^7.7.0", "react-plotly.js": "^2.6.0", - "react-router-dom": "^6.6.0", - "react-to-print": "^2.14.15", - "react-toastify": "^9.1.1", - "reactflow": "^11.4.0", + "react-router-dom": "^6.22.0", + "react-to-print": "^2.15.0", + "react-toastify": "^9.1.3", + "reactflow": "^11.10.3", "remark-gfm": "^4.0.0", - "swr": "^2.0.0", - "uuid": "^9.0.0", - "vite": "^5.0.12", + "swr": "^2.2.4", + "uuid": "^9.0.1", + "vite": "^5.1.1", "vite-plugin-svgr": "^4.2.0", "vite-tsconfig-paths": "^4.3.1", - "web-worker": "^1.2.0", - "yup": "^1.2.0" + "web-worker": "^1.3.0", + "yup": "^1.3.3" }, "scripts": { "debug": "VITE_CJS_IGNORE_WARNING=true vite dev", @@ -54,29 +54,36 @@ "lint:fix": "eslint . --ext js,jsx,ts,tsx --fix" }, "eslintConfig": { - "extends": ["react-app", "react-app/jest"] + "extends": [ + "react-app", + "react-app/jest" + ] }, - "browserslist": [">0.2%", "not dead", "not op_mini all"], + "browserslist": [ + ">0.2%", + "not dead", + "not op_mini all" + ], "devDependencies": { "@types/dompurify": "^3.0.5", - "@types/react": ">=18", - "@types/react-dom": "^18.0.9", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", "@types/react-plotly.js": "^2.6.3", - "@types/uuid": "^9.0.0", - "@typescript-eslint/eslint-plugin": "^6.4.0", - "@typescript-eslint/parser": "^6.5.0", - "eslint": "^8.0.1", - "eslint-config-prettier": "^9.0.0", - "eslint-config-standard-with-typescript": "^39.0.0", - "eslint-import-resolver-typescript": "^3.6.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-promise": "^6.0.0", + "@types/uuid": "^9.0.8", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-config-standard-with-typescript": "^39.1.1", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-n": "^16.6.2", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-testing-library": "^6.0.1", - "prettier": "^3.0.3", - "typescript": "*" + "eslint-plugin-testing-library": "^6.2.0", + "prettier": "^3.2.5", + "typescript": "^5.3.3" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 60ff9920..b6dd752b 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -6,62 +6,62 @@ settings: dependencies: '@emotion/react': - specifier: ^11.11.1 - version: 11.11.1(@types/react@18.2.45)(react@18.2.0) + specifier: ^11.11.3 + version: 11.11.3(@types/react@18.2.55)(react@18.2.0) '@emotion/styled': specifier: ^11.11.0 - version: 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) '@iconify/react': specifier: ^4.1.1 version: 4.1.1(react@18.2.0) '@import-meta-env/cli': - specifier: ^0.6.6 - version: 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1) + specifier: ^0.6.8 + version: 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.4.4) '@import-meta-env/unplugin': specifier: ^0.4.10 - version: 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1) + version: 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.4.4) '@mui/icons-material': - specifier: ^5.11.0 - version: 5.15.0(@mui/material@5.15.0)(@types/react@18.2.45)(react@18.2.0) + specifier: ^5.15.10 + version: 5.15.10(@mui/material@5.15.10)(@types/react@18.2.55)(react@18.2.0) '@mui/lab': - specifier: ^5.0.0-alpha.155 - version: 5.0.0-alpha.156(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + specifier: 5.0.0-alpha.165 + version: 5.0.0-alpha.165(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.10)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) '@mui/material': - specifier: ^5.14.20 - version: 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + specifier: ^5.15.10 + version: 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) '@mui/x-data-grid': - specifier: ^6.15.0 - version: 6.18.5(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.19.4 + version: 6.19.4(@mui/material@5.15.10)(@mui/system@5.15.9)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) '@mui/x-date-pickers': - specifier: ^6.5.0 - version: 6.18.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.19.4 + version: 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.10)(@mui/system@5.15.9)(@types/react@18.2.55)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) '@nathan-vm/use-storage': specifier: ^0.2.1 version: 0.2.1(react@18.2.0) '@uiw/react-textarea-code-editor': - specifier: ^2.1.1 - version: 2.1.9(@babel/runtime@7.23.6)(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.1.9 + version: 2.1.9(@babel/runtime@7.23.9)(react-dom@18.2.0)(react@18.2.0) '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.2.1(vite@5.0.12) + version: 4.2.1(vite@5.1.1) axios: - specifier: ^1.2.1 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 axios-mock-adapter: - specifier: ^1.21.2 - version: 1.22.0(axios@1.6.2) + specifier: ^1.22.0 + version: 1.22.0(axios@1.6.7) cross-env: specifier: ^7.0.3 version: 7.0.3 dayjs: - specifier: ^1.11.7 + specifier: ^1.11.10 version: 1.11.10 elkjs: specifier: ^0.8.2 version: 0.8.2 plotly.js: - specifier: ^2.27.1 - version: 2.27.1 + specifier: ^2.29.1 + version: 2.29.1(mapbox-gl@1.13.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -69,55 +69,55 @@ dependencies: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-draggable: - specifier: ^4.4.5 + specifier: ^4.4.6 version: 4.4.6(react-dom@18.2.0)(react@18.2.0) react-hook-form: - specifier: ^7.45.1 - version: 7.49.2(react@18.2.0) + specifier: ^7.50.1 + version: 7.50.1(react@18.2.0) react-markdown: specifier: 9.0.0 - version: 9.0.0(@types/react@18.2.45)(react@18.2.0) + version: 9.0.0(@types/react@18.2.55)(react@18.2.0) react-pdf: - specifier: ^7.6.0 - version: 7.6.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + specifier: ^7.7.0 + version: 7.7.0(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) react-plotly.js: specifier: ^2.6.0 - version: 2.6.0(plotly.js@2.27.1)(react@18.2.0) + version: 2.6.0(plotly.js@2.29.1)(react@18.2.0) react-router-dom: - specifier: ^6.6.0 - version: 6.21.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.22.0 + version: 6.22.0(react-dom@18.2.0)(react@18.2.0) react-to-print: - specifier: ^2.14.15 - version: 2.14.15(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.15.0 + version: 2.15.0(react-dom@18.2.0)(react@18.2.0) react-toastify: - specifier: ^9.1.1 + specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) reactflow: - specifier: ^11.4.0 - version: 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + specifier: ^11.10.3 + version: 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) remark-gfm: specifier: ^4.0.0 version: 4.0.0 swr: - specifier: ^2.0.0 + specifier: ^2.2.4 version: 2.2.4(react@18.2.0) uuid: - specifier: ^9.0.0 + specifier: ^9.0.1 version: 9.0.1 vite: - specifier: ^5.0.12 - version: 5.0.12 + specifier: ^5.1.1 + version: 5.1.1 vite-plugin-svgr: specifier: ^4.2.0 - version: 4.2.0(typescript@5.3.3)(vite@5.0.12) + version: 4.2.0(typescript@5.3.3)(vite@5.1.1) vite-tsconfig-paths: specifier: ^4.3.1 - version: 4.3.1(typescript@5.3.3)(vite@5.0.12) + version: 4.3.1(typescript@5.3.3)(vite@5.1.1) web-worker: - specifier: ^1.2.0 + specifier: ^1.3.0 version: 1.3.0 yup: - specifier: ^1.2.0 + specifier: ^1.3.3 version: 1.3.3 devDependencies: @@ -125,61 +125,61 @@ devDependencies: specifier: ^3.0.5 version: 3.0.5 '@types/react': - specifier: '>=18' - version: 18.2.45 + specifier: ^18.2.55 + version: 18.2.55 '@types/react-dom': - specifier: ^18.0.9 - version: 18.2.17 + specifier: ^18.2.19 + version: 18.2.19 '@types/react-plotly.js': specifier: ^2.6.3 version: 2.6.3 '@types/uuid': - specifier: ^9.0.0 - version: 9.0.7 + specifier: ^9.0.8 + version: 9.0.8 '@typescript-eslint/eslint-plugin': - specifier: ^6.4.0 - version: 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.21.0 + version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.5.0 - version: 6.14.0(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.21.0 + version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) eslint: - specifier: ^8.0.1 - version: 8.55.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@8.55.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) eslint-config-standard-with-typescript: - specifier: ^39.0.0 - version: 39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3) + specifier: ^39.1.1 + version: 39.1.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3) eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) eslint-plugin-import: - specifier: ^2.25.2 - version: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) eslint-plugin-n: - specifier: '^15.0.0 || ^16.0.0 ' - version: 16.4.0(eslint@8.55.0) + specifier: ^16.6.2 + version: 16.6.2(eslint@8.56.0) eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.1) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) eslint-plugin-promise: - specifier: ^6.0.0 - version: 6.1.1(eslint@8.55.0) + specifier: ^6.1.1 + version: 6.1.1(eslint@8.56.0) eslint-plugin-react: specifier: ^7.33.2 - version: 7.33.2(eslint@8.55.0) + version: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.55.0) + version: 4.6.0(eslint@8.56.0) eslint-plugin-testing-library: - specifier: ^6.0.1 - version: 6.2.0(eslint@8.55.0)(typescript@5.3.3) + specifier: ^6.2.0 + version: 6.2.0(eslint@8.56.0)(typescript@5.3.3) prettier: - specifier: ^3.0.3 - version: 3.1.1 + specifier: ^3.2.5 + version: 3.2.5 typescript: - specifier: '*' + specifier: ^5.3.3 version: 5.3.3 packages: @@ -194,7 +194,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 dev: false /@babel/code-frame@7.23.5: @@ -210,20 +210,20 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/core@7.23.7: - resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 '@babel/generator': 7.23.6 '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) - '@babel/helpers': 7.23.8 - '@babel/parser': 7.23.6 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -237,9 +237,9 @@ packages: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 jsesc: 2.5.2 dev: false @@ -249,7 +249,7 @@ packages: dependencies: '@babel/compat-data': 7.23.5 '@babel/helper-validator-option': 7.23.5 - browserslist: 4.22.2 + browserslist: 4.22.3 lru-cache: 5.1.1 semver: 6.3.1 dev: false @@ -263,31 +263,31 @@ packages: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 dev: false /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false /@babel/helper-module-imports@7.22.15: resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -304,14 +304,14 @@ packages: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false /@babel/helper-string-parser@7.23.4: @@ -329,13 +329,13 @@ packages: engines: {node: '>=6.9.0'} dev: false - /@babel/helpers@7.23.8: - resolution: {integrity: sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==} + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.7 - '@babel/types': 7.23.6 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color dev: false @@ -349,52 +349,52 @@ packages: js-tokens: 4.0.0 dev: false - /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.7): + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: false - /@babel/runtime@7.23.6: - resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 dev: false - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: false - /@babel/traverse@7.23.7: - resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 @@ -403,16 +403,16 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: false - /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 @@ -431,10 +431,10 @@ packages: resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} dependencies: '@babel/helper-module-imports': 7.22.15 - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.2 + '@emotion/serialize': 1.1.3 babel-plugin-macros: 3.1.0 convert-source-map: 1.9.0 escape-string-regexp: 4.0.0 @@ -467,8 +467,8 @@ packages: resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} dev: false - /@emotion/react@11.11.1(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==} + /@emotion/react@11.11.3(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -476,20 +476,20 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.2 + '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.45 + '@types/react': 18.2.55 hoist-non-react-statics: 3.3.2 react: 18.2.0 dev: false - /@emotion/serialize@1.1.2: - resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + /@emotion/serialize@1.1.3: + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 @@ -502,7 +502,7 @@ packages: resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} dev: false - /@emotion/styled@11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0): + /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0): resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 @@ -512,14 +512,14 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@emotion/babel-plugin': 11.11.0 '@emotion/is-prop-valid': 1.2.1 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/serialize': 1.1.2 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.45 + '@types/react': 18.2.55 react: 18.2.0 dev: false @@ -543,8 +543,8 @@ packages: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} dev: false - /@esbuild/aix-ppc64@0.19.11: - resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] @@ -552,8 +552,8 @@ packages: dev: false optional: true - /@esbuild/android-arm64@0.19.11: - resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -561,8 +561,8 @@ packages: dev: false optional: true - /@esbuild/android-arm@0.19.11: - resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -570,8 +570,8 @@ packages: dev: false optional: true - /@esbuild/android-x64@0.19.11: - resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -579,8 +579,8 @@ packages: dev: false optional: true - /@esbuild/darwin-arm64@0.19.11: - resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -588,8 +588,8 @@ packages: dev: false optional: true - /@esbuild/darwin-x64@0.19.11: - resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -597,8 +597,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-arm64@0.19.11: - resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -606,8 +606,8 @@ packages: dev: false optional: true - /@esbuild/freebsd-x64@0.19.11: - resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -615,8 +615,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm64@0.19.11: - resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -624,8 +624,8 @@ packages: dev: false optional: true - /@esbuild/linux-arm@0.19.11: - resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -633,8 +633,8 @@ packages: dev: false optional: true - /@esbuild/linux-ia32@0.19.11: - resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -642,8 +642,8 @@ packages: dev: false optional: true - /@esbuild/linux-loong64@0.19.11: - resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -651,8 +651,8 @@ packages: dev: false optional: true - /@esbuild/linux-mips64el@0.19.11: - resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -660,8 +660,8 @@ packages: dev: false optional: true - /@esbuild/linux-ppc64@0.19.11: - resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -669,8 +669,8 @@ packages: dev: false optional: true - /@esbuild/linux-riscv64@0.19.11: - resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -678,8 +678,8 @@ packages: dev: false optional: true - /@esbuild/linux-s390x@0.19.11: - resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -687,8 +687,8 @@ packages: dev: false optional: true - /@esbuild/linux-x64@0.19.11: - resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -696,8 +696,8 @@ packages: dev: false optional: true - /@esbuild/netbsd-x64@0.19.11: - resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -705,8 +705,8 @@ packages: dev: false optional: true - /@esbuild/openbsd-x64@0.19.11: - resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -714,8 +714,8 @@ packages: dev: false optional: true - /@esbuild/sunos-x64@0.19.11: - resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -723,8 +723,8 @@ packages: dev: false optional: true - /@esbuild/win32-arm64@0.19.11: - resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -732,8 +732,8 @@ packages: dev: false optional: true - /@esbuild/win32-ia32@0.19.11: - resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -741,8 +741,8 @@ packages: dev: false optional: true - /@esbuild/win32-x64@0.19.11: - resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -750,13 +750,13 @@ packages: dev: false optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -773,7 +773,7 @@ packages: debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -782,44 +782,44 @@ packages: - supports-color dev: true - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@floating-ui/core@1.5.2: - resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + /@floating-ui/core@1.6.0: + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} dependencies: - '@floating-ui/utils': 0.1.6 + '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/dom@1.5.3: - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + /@floating-ui/dom@1.6.3: + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} dependencies: - '@floating-ui/core': 1.5.2 - '@floating-ui/utils': 0.1.6 + '@floating-ui/core': 1.6.0 + '@floating-ui/utils': 0.2.1 dev: false - /@floating-ui/react-dom@2.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==} + /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.3 + '@floating-ui/dom': 1.6.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + /@floating-ui/utils@0.2.1: + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} dev: false - /@humanwhocodes/config-array@0.11.13: - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: - '@humanwhocodes/object-schema': 2.0.1 + '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: @@ -831,8 +831,8 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@2.0.1: - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + /@humanwhocodes/object-schema@2.0.2: + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} dev: true /@iconify/react@4.1.1(react@18.2.0): @@ -848,7 +848,7 @@ packages: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: false - /@import-meta-env/cli@0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1): + /@import-meta-env/cli@0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.4.4): resolution: {integrity: sha512-Lunsmlj02yVtI5drlhNwIUFAQ0wsIUYIrz0Nm5jbvmYvyEUsxC8Qotnf3gXTfvM9Yuutvuc2+dx4uXpa3DajTg==} engines: {node: '>= 14'} hasBin: true @@ -865,15 +865,15 @@ packages: '@import-meta-env/unplugin': optional: true dependencies: - '@import-meta-env/unplugin': 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1) + '@import-meta-env/unplugin': 0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.4.4) commander: 11.1.0 - dotenv: 16.3.1 + dotenv: 16.4.4 glob: 10.3.10 picocolors: 1.0.0 serialize-javascript: 6.0.1 dev: false - /@import-meta-env/unplugin@0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.3.1): + /@import-meta-env/unplugin@0.4.10(@import-meta-env/cli@0.6.8)(dotenv@16.4.4): resolution: {integrity: sha512-KA/JjnhHp2vrPA27J+IFj/XVDMJz7+jUmyukDAmMoF2uW5q8F3pJySrfl/vySLV1SVxa2b4zg2kuAe5CTIs+Bg==} engines: {node: '>= 14'} requiresBuild: true @@ -884,12 +884,12 @@ packages: '@import-meta-env/cli': optional: true dependencies: - '@import-meta-env/cli': 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.3.1) - dotenv: 16.3.1 - magic-string: 0.30.5 + '@import-meta-env/cli': 0.6.8(@import-meta-env/unplugin@0.4.10)(dotenv@16.4.4) + dotenv: 16.4.4 + magic-string: 0.30.7 object-hash: 3.0.0 picocolors: 1.0.0 - unplugin: 1.5.1 + unplugin: 1.7.1 dev: false /@isaacs/cliui@8.0.2: @@ -910,7 +910,7 @@ packages: dependencies: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 + '@jridgewell/trace-mapping': 0.3.22 dev: false /@jridgewell/resolve-uri@3.1.1: @@ -927,8 +927,8 @@ packages: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: false - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 @@ -951,12 +951,12 @@ packages: engines: {node: '>= 0.6'} dev: false - /@mapbox/mapbox-gl-supported@1.5.0(mapbox-gl@1.10.1): + /@mapbox/mapbox-gl-supported@1.5.0(mapbox-gl@1.13.3): resolution: {integrity: sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==} peerDependencies: mapbox-gl: '>=0.32.1 <2.0.0' dependencies: - mapbox-gl: 1.10.1 + mapbox-gl: 1.13.3 dev: false /@mapbox/node-pre-gyp@1.0.11: @@ -971,7 +971,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 + semver: 7.6.0 tar: 6.2.0 transitivePeerDependencies: - encoding @@ -1002,8 +1002,8 @@ packages: engines: {node: '>=6.0.0'} dev: false - /@mui/base@5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-duL37qxihT1N0pW/gyXVezP7SttLkF+cLAs/y6g6ubEFmVadjbnZ45SeF12/vAiKzqwf5M0uFH1cczIPXFZygA==} + /@mui/base@5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1013,24 +1013,24 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@floating-ui/react-dom': 2.0.4(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.45) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@babel/runtime': 7.23.9 + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.55) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) '@popperjs/core': 2.11.8 - '@types/react': 18.2.45 - clsx: 2.0.0 + '@types/react': 18.2.55 + clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@mui/core-downloads-tracker@5.15.0: - resolution: {integrity: sha512-NpGtlHwuyLfJtdrlERXb8qRqd279O0VnuGaZAor1ehdNhUJOD1bSxHDeXKZkbqNpvi50hasFj7lsbTpluworTQ==} + /@mui/core-downloads-tracker@5.15.10: + resolution: {integrity: sha512-qPv7B+LeMatYuzRjB3hlZUHqinHx/fX4YFBiaS19oC02A1e9JFuDKDvlyRQQ5oRSbJJt0QlaLTlr0IcauVcJRQ==} dev: false - /@mui/icons-material@5.15.0(@mui/material@5.15.0)(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-zHY6fOkaK7VfhWeyxO8MjO3IAjEYpYMXuqUhX7TkUZJ9+TSH/9dn4ClG4K2j6hdgBU5Yrq2Z/89Bo6BHHp7AdQ==} + /@mui/icons-material@5.15.10(@mui/material@5.15.10)(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-9cF8oUHZKo9oQ7EQ3pxPELaZuZVmphskU4OI6NiJNDVN7zcuvrEsuWjYo1Zh4fLiC39Nrvm30h/B51rcUjvSGA==} engines: {node: '>=12.0.0'} peerDependencies: '@mui/material': ^5.0.0 @@ -1040,19 +1040,19 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.45 + '@babel/runtime': 7.23.9 + '@mui/material': 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.55 react: 18.2.0 dev: false - /@mui/lab@5.0.0-alpha.156(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-OUAckFeqlAG6aIBG1Ud1fDCBqnU1wltWZYHsA7YCGzRBykNzQC/W/dYddp+RJLu0BgYpMiXwPXq2Hg0ERVtaog==} + /@mui/lab@5.0.0-alpha.165(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.10)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-8/zJStT10nh9yrAzLOPTICGhpf5YiGp/JpM0bdTP7u5AE+YT+X2u6QwMxuCrVeW8/WVLAPFg0vtzyfgPcN5T7g==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material': '>=5.10.11' + '@mui/material': '>=5.15.0' '@types/react': ^17.0.0 || ^18.0.0 react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 @@ -1064,23 +1064,23 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) - '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.45) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 - clsx: 2.0.0 + '@babel/runtime': 7.23.9 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) + '@mui/base': 5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.55) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false - /@mui/material@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-60CDI/hQNwJv9a3vEZtFG7zz0USdQhVwpBd3fZqrzhuXSdiMdYMaZcCXeX/KMuNq0ZxQEAZd74Pv+gOb408QVA==} + /@mui/material@5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YJJGHjwDOucecjDEV5l9ISTCo+l9YeWrho623UajzoHRYxuKUmwrGVYOW4PKwGvCx9SU9oklZnbbi2Clc5XZHw==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1096,17 +1096,17 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) - '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/core-downloads-tracker': 5.15.0 - '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.45) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 + '@babel/runtime': 7.23.9 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) + '@mui/base': 5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/core-downloads-tracker': 5.15.10 + '@mui/system': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.55) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 + clsx: 2.1.0 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 @@ -1115,8 +1115,8 @@ packages: react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) dev: false - /@mui/private-theming@5.15.0(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-7WxtIhXxNek0JjtsYy+ut2LtFSLpsUW5JSDehQO+jF7itJ8ehy7Bd9bSt2yIllbwGjCFowLfYpPk2Ykgvqm1tA==} + /@mui/private-theming@5.15.9(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1125,15 +1125,15 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 + '@babel/runtime': 7.23.9 + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/styled-engine@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-6NysIsHkuUS2lF+Lzv1jiK3UjBJk854/vKVcJQVGKlPiqNEVZJNlwaSpsaU5xYXxWEZYfbVFSAomLOS/LV/ovQ==} + /@mui/styled-engine@5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0): + resolution: {integrity: sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1145,17 +1145,17 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/system@5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-8TPjfTlYBNB7/zBJRL4QOD9kImwdZObbiYNh0+hxvhXr2koezGx8USwPXj8y/JynbzGCkIybkUztCdWlMZe6OQ==} + /@mui/system@5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==} engines: {node: '>=12.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1170,33 +1170,33 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) - '@mui/private-theming': 5.15.0(@types/react@18.2.45)(react@18.2.0) - '@mui/styled-engine': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(react@18.2.0) - '@mui/types': 7.2.11(@types/react@18.2.45) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 - clsx: 2.0.0 + '@babel/runtime': 7.23.9 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) + '@mui/private-theming': 5.15.9(@types/react@18.2.55)(react@18.2.0) + '@mui/styled-engine': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/types': 7.2.13(@types/react@18.2.55) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) + '@types/react': 18.2.55 + clsx: 2.1.0 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 dev: false - /@mui/types@7.2.11(@types/react@18.2.45): - resolution: {integrity: sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==} + /@mui/types@7.2.13(@types/react@18.2.55): + resolution: {integrity: sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': optional: true dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.55 dev: false - /@mui/utils@5.15.0(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-XSmTKStpKYamewxyJ256+srwEnsT3/6eNo6G7+WC1tj2Iq9GfUJ/6yUoB7YXjOD2jTZ3XobToZm4pVz1LBt6GA==} + /@mui/utils@5.15.9(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==} engines: {node: '>=12.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 @@ -1205,16 +1205,16 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 '@types/prop-types': 15.7.11 - '@types/react': 18.2.45 + '@types/react': 18.2.55 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 dev: false - /@mui/x-data-grid@6.18.5(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-EEVJfQGXNmfLMVgj30ZpUSwx9Q8CZ/qGAYzLoARpLFOvrkGtbG8q5t4/WClkQ8MoDi7kO7TWOQ0AZz1C9/sh5g==} + /@mui/x-data-grid@6.19.4(@mui/material@5.15.10)(@mui/system@5.15.9)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qXBe2mSetdsl3ZPqB/1LpKNkEiaYUiFXIaMHTIjuzLyusXgt+w7UsHYO7R+aJYUU7c3FeHla0R1nwRMY3kZ5ng==} engines: {node: '>=14.0.0'} peerDependencies: '@mui/material': ^5.4.1 @@ -1222,11 +1222,11 @@ packages: react: ^17.0.0 || ^18.0.0 react-dom: ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) - clsx: 2.0.0 + '@babel/runtime': 7.23.9 + '@mui/material': 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) + clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -1235,15 +1235,15 @@ packages: - '@types/react' dev: false - /@mui/x-date-pickers@6.18.5(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@mui/material@5.15.0)(@mui/system@5.15.0)(@types/react@18.2.45)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-3jImYIWP2Xgi608yzm/Sz1v0MTjQQYdZSQOEIi3dWBfSAU9B06KXDpqlXfRSpTV+rtsnfYIIyiWlz6Ltk7sUWw==} + /@mui/x-date-pickers@6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.10)(@mui/system@5.15.9)(@types/react@18.2.55)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-LekaacLGnoQNN5hD6iXeHFL4LbZPnr1BM57hnUKy5UgKDHqzHzZSdPGc2p7Ktv/Z2NDbpPaLEAgrLwISKIYcow==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.9.0 '@emotion/styled': ^11.8.1 '@mui/material': ^5.8.6 '@mui/system': ^5.8.0 - date-fns: ^2.25.0 + date-fns: ^2.25.0 || ^3.2.0 date-fns-jalali: ^2.13.0-0 dayjs: ^1.10.7 luxon: ^3.0.2 @@ -1272,15 +1272,15 @@ packages: moment-jalaali: optional: true dependencies: - '@babel/runtime': 7.23.6 - '@emotion/react': 11.11.1(@types/react@18.2.45)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.1)(@types/react@18.2.45)(react@18.2.0) - '@mui/base': 5.0.0-beta.27(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/material': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@mui/system': 5.15.0(@emotion/react@11.11.1)(@emotion/styled@11.11.0)(@types/react@18.2.45)(react@18.2.0) - '@mui/utils': 5.15.0(@types/react@18.2.45)(react@18.2.0) + '@babel/runtime': 7.23.9 + '@emotion/react': 11.11.3(@types/react@18.2.55)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.55)(react@18.2.0) + '@mui/base': 5.0.0-beta.36(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.10(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@mui/system': 5.15.9(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.55)(react@18.2.0) + '@mui/utils': 5.15.9(@types/react@18.2.55)(react@18.2.0) '@types/react-transition-group': 4.4.10 - clsx: 2.0.0 + clsx: 2.1.0 dayjs: 1.11.10 prop-types: 15.8.1 react: 18.2.0 @@ -1318,7 +1318,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 dev: true /@pkgjs/parseargs@0.11.0: @@ -1328,16 +1328,9 @@ packages: dev: false optional: true - /@pkgr/utils@2.4.2: - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + /@pkgr/core@0.1.1: + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.2 - is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.2 dev: true /@plotly/d3-sankey-circular@0.33.1: @@ -1361,6 +1354,36 @@ packages: resolution: {integrity: sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==} dev: false + /@plotly/mapbox-gl@1.13.4(mapbox-gl@1.13.3): + resolution: {integrity: sha512-sR3/Pe5LqT/fhYgp4rT4aSFf1rTsxMbGiH6Hojc7PH36ny5Bn17iVFUjpzycafETURuFbLZUfjODO8LvSI+5zQ==} + engines: {node: '>=6.4.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/geojson-types': 1.0.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.13.3) + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 1.2.5 + '@mapbox/unitbezier': 0.0.0 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + csscolorparser: 1.0.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + grid-index: 1.1.0 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 1.0.2 + quickselect: 2.0.0 + rw: 1.3.3 + supercluster: 7.1.5 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + transitivePeerDependencies: + - mapbox-gl + dev: false + /@plotly/point-cluster@3.1.9: resolution: {integrity: sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw==} dependencies: @@ -1384,40 +1407,40 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@reactflow/background@11.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-06FPlSUOOMALEEs+2PqPAbpqmL7WDjrkbG2UsDr2d6mbcDDhHiV4tu9FYoz44SQvXo7ma9VRotlsaR4OiRcYsg==} + /@reactflow/background@11.3.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-U4aI54F7PwqgYI0Knv72QFRI/wXeipPmIYAlDsA0j51+tlPxs3Nk2z7G1/4pC11GxEZkgQVfcIXro4l1Fk+bIQ==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/controls@11.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-4QHT92/ACVlZkvV+Hq44bAPV8WbMhkJl+/J0EbXcqQ1+an7cWJsF84eeelJw7R5J76RoaSSpKdsWsL2v7HAVlw==} + /@reactflow/controls@11.2.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Y9YVx38sRjYtbPsI/xa+B1FGN73FV1GqqajlmGfrc1TmqhJaX+gaMXMvVazT/N5haK1hMJvOApUTLQ2V/5Rdbg==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/core@11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GIh3usY1W3eVobx//OO9+Cwm+5evQBBdPGxDaeXwm25UqPMWRI240nXQA5F/5gL5Mwpf0DUC7DR2EmrKNQy+Rw==} + /@reactflow/core@11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nV3nep4fjBy3h8mYSnJcclGcQtj8fkUBmNkEwCZCK4ps+n3HNkXFB0BRisSnQz6GRQlYboSsi0cThEl3KdNITw==} peerDependencies: react: '>=17' react-dom: '>=17' @@ -1432,19 +1455,19 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/minimap@11.7.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kJEtyeQkTZYViLGebVWHVUJROMAGcvejvT+iX4DqKnFb5yK8E8LWlXQpRx2FrL9gDy80mJJaciy7IxnnQKE1bg==} + /@reactflow/minimap@11.7.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MwyP5q3VomC91Dhd4P6YcxEfnjDbREGYV6rRxbSJSTHiG0x7ETQCcPelYDGy7JvQej77Pa2yJ4g0FDwP7CsQEA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) '@types/d3-selection': 3.0.10 '@types/d3-zoom': 3.0.8 classcat: 5.0.4 @@ -1452,48 +1475,48 @@ packages: d3-zoom: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-resizer@2.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1Xb6q97uP7hRBLpog9sRCNfnsHdDgFRGEiU+lQqGgPEAeYwl4nRjWa/sXwH6ajniKxBhGEvrdzOgEFn6CRMcpQ==} + /@reactflow/node-resizer@2.2.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-u/EXLpvOfAmq1sGoPYwoX4gi0PnCi0mH3eHVClHNc8JQD0WCqcV1UeVV7H3PF+1SGhhg/aOv/vPG1PcQ5fu4jQ==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 d3-drag: 3.0.0 d3-selection: 3.0.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@reactflow/node-toolbar@1.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-JXDEuZ0wKjZ8z7qK2bIst0eZPzNyVEsiHL0e93EyuqT4fA9icoyE0fLq2ryNOOp7MXgId1h7LusnH6ta45F0yQ==} + /@reactflow/node-toolbar@1.3.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-cfvlTPeJa/ciQTosx2bGrjHT8K/UL9kznpvpOzeZFnJm5UQXmbwAYt4Vo6GfkD51mORcIL7ujQJvB9ym3ZI9KA==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) classcat: 5.0.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) + zustand: 4.5.0(@types/react@18.2.55)(react@18.2.0) transitivePeerDependencies: - '@types/react' - immer dev: false - /@remix-run/router@1.14.0: - resolution: {integrity: sha512-WOHih+ClN7N8oHk9N4JUiMxQJmRVaOxcg8w7F/oHUXzJt920ekASLI/7cYX8XkntDWRhLZtsk6LbGrkgOAvi5A==} + /@remix-run/router@1.15.0: + resolution: {integrity: sha512-HOil5aFtme37dVQTB6M34G95kPM3MMuqSmIRVCC52eKV+Y/tGSqw9P3rWhlAx6A+mz+MoX+XxsGsNJbaI5qCgQ==} engines: {node: '>=14.0.0'} dev: false @@ -1511,205 +1534,205 @@ packages: picomatch: 2.3.1 dev: false - /@rollup/rollup-android-arm-eabi@4.9.6: - resolution: {integrity: sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg==} + /@rollup/rollup-android-arm-eabi@4.10.0: + resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==} cpu: [arm] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-android-arm64@4.9.6: - resolution: {integrity: sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw==} + /@rollup/rollup-android-arm64@4.10.0: + resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==} cpu: [arm64] os: [android] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-arm64@4.9.6: - resolution: {integrity: sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw==} + /@rollup/rollup-darwin-arm64@4.10.0: + resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-darwin-x64@4.9.6: - resolution: {integrity: sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog==} + /@rollup/rollup-darwin-x64@4.10.0: + resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.9.6: - resolution: {integrity: sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.10.0: + resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==} cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-gnu@4.9.6: - resolution: {integrity: sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ==} + /@rollup/rollup-linux-arm64-gnu@4.10.0: + resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-arm64-musl@4.9.6: - resolution: {integrity: sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ==} + /@rollup/rollup-linux-arm64-musl@4.10.0: + resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-riscv64-gnu@4.9.6: - resolution: {integrity: sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA==} + /@rollup/rollup-linux-riscv64-gnu@4.10.0: + resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==} cpu: [riscv64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-gnu@4.9.6: - resolution: {integrity: sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw==} + /@rollup/rollup-linux-x64-gnu@4.10.0: + resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-linux-x64-musl@4.9.6: - resolution: {integrity: sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ==} + /@rollup/rollup-linux-x64-musl@4.10.0: + resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-arm64-msvc@4.9.6: - resolution: {integrity: sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA==} + /@rollup/rollup-win32-arm64-msvc@4.10.0: + resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-ia32-msvc@4.9.6: - resolution: {integrity: sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ==} + /@rollup/rollup-win32-ia32-msvc@4.10.0: + resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} cpu: [ia32] os: [win32] requiresBuild: true dev: false optional: true - /@rollup/rollup-win32-x64-msvc@4.9.6: - resolution: {integrity: sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ==} + /@rollup/rollup-win32-x64-msvc@4.10.0: + resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} cpu: [x64] os: [win32] requiresBuild: true dev: false optional: true - /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.7): + /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.9): resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.7): + /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.9): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 + '@babel/core': 7.23.9 dev: false - /@svgr/babel-preset@8.1.0(@babel/core@7.23.7): + /@svgr/babel-preset@8.1.0(@babel/core@7.23.9): resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} engines: {node: '>=14'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.7) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.7) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.9) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.9) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.9) dev: false /@svgr/core@8.1.0(typescript@5.3.3): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} engines: {node: '>=14'} dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.9) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.3.3) snake-case: 3.0.4 @@ -1722,7 +1745,7 @@ packages: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} engines: {node: '>=14'} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 entities: 4.5.0 dev: false @@ -1732,8 +1755,8 @@ packages: peerDependencies: '@svgr/core': '*' dependencies: - '@babel/core': 7.23.7 - '@svgr/babel-preset': 8.1.0(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@svgr/babel-preset': 8.1.0(@babel/core@7.23.9) '@svgr/core': 8.1.0(typescript@5.3.3) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -1775,30 +1798,30 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 - '@types/babel__generator': 7.6.7 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.4 + '@types/babel__traverse': 7.20.5 dev: false - /@types/babel__generator@7.6.7: - resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.6 - '@babel/types': 7.23.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 dev: false - /@types/babel__traverse@7.20.4: - resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} dependencies: - '@babel/types': 7.23.6 + '@babel/types': 7.23.9 dev: false /@types/d3-array@3.2.1: @@ -1829,7 +1852,7 @@ packages: resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} dependencies: '@types/d3-array': 3.2.1 - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: false /@types/d3-delaunay@6.0.4: @@ -1871,7 +1894,7 @@ packages: /@types/d3-geo@3.1.0: resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} dependencies: - '@types/geojson': 7946.0.13 + '@types/geojson': 7946.0.14 dev: false /@types/d3-hierarchy@3.1.6: @@ -1884,8 +1907,8 @@ packages: '@types/d3-color': 3.1.3 dev: false - /@types/d3-path@3.0.2: - resolution: {integrity: sha512-WAIEVlOCdd/NKRYTsqCpOMHQHemKBEINf8YXMYOtXH0GA7SY0dqMB78P3Uhgfy+4X+/Mlw2wDtlETkN6kQUCMA==} + /@types/d3-path@3.1.0: + resolution: {integrity: sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==} dev: false /@types/d3-polygon@3.0.2: @@ -1917,7 +1940,7 @@ packages: /@types/d3-shape@3.1.6: resolution: {integrity: sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==} dependencies: - '@types/d3-path': 3.0.2 + '@types/d3-path': 3.1.0 dev: false /@types/d3-time-format@4.0.3: @@ -1965,7 +1988,7 @@ packages: '@types/d3-geo': 3.1.0 '@types/d3-hierarchy': 3.1.6 '@types/d3-interpolate': 3.0.4 - '@types/d3-path': 3.0.2 + '@types/d3-path': 3.1.0 '@types/d3-polygon': 3.0.2 '@types/d3-quadtree': 3.0.6 '@types/d3-random': 3.0.3 @@ -1992,8 +2015,8 @@ packages: '@types/trusted-types': 2.0.7 dev: true - /@types/estree-jsx@1.0.3: - resolution: {integrity: sha512-pvQ+TKeRHeiUGRhvYwRrQ/ISnohKkSJR14fT2yqyZ4e9K5vqc7hrtY2Y1Dw0ZwAzQ6DQsxsaCUuSIIi8v0Cq6w==} + /@types/estree-jsx@1.0.4: + resolution: {integrity: sha512-5idy3hvI9lAMqsyilBM+N+boaCf1MgoefbDxN6KEO5aK17TOHwFAYT9sjxzeKAiIWRUBgLxmZ9mPcnzZXtTcRQ==} dependencies: '@types/estree': 1.0.5 dev: false @@ -2002,18 +2025,18 @@ packages: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: false - /@types/geojson@7946.0.13: - resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + /@types/geojson@7946.0.14: + resolution: {integrity: sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==} dev: false - /@types/hast@2.3.8: - resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} + /@types/hast@2.3.10: + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} dependencies: '@types/unist': 2.0.10 dev: false - /@types/hast@3.0.3: - resolution: {integrity: sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==} + /@types/hast@3.0.4: + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} dependencies: '@types/unist': 3.0.2 dev: false @@ -2044,8 +2067,8 @@ packages: resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==} dev: false - /@types/plotly.js@2.12.31: - resolution: {integrity: sha512-FmzZQquzgTnQnywzyg7zlTTD4UFOroJ6/ac2KAueLCMQF7c+dwjZxgRohHB7Qzz0dZpFgic0VSkC2re7j6oluQ==} + /@types/plotly.js@2.29.1: + resolution: {integrity: sha512-rQwpL3XFqSjCjG3qTlZCDvIOgc17m/0pgOpkv0O/0awdsHD+CAxaczgJTBlAsd8OhsjIcJC3UESrbBEJ92kUVg==} dev: true /@types/prismjs@1.26.3: @@ -2055,27 +2078,27 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/react-dom@18.2.17: - resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} + /@types/react-dom@18.2.19: + resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.55 dev: true /@types/react-plotly.js@2.6.3: resolution: {integrity: sha512-HBQwyGuu/dGXDsWhnQrhH+xcJSsHvjkwfSRjP+YpOsCCWryIuXF78ZCBjpfgO3sCc0Jo8sYp4NOGtqT7Cn3epQ==} dependencies: - '@types/plotly.js': 2.12.31 - '@types/react': 18.2.45 + '@types/plotly.js': 2.29.1 + '@types/react': 18.2.55 dev: true /@types/react-transition-group@4.4.10: resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.55 dev: false - /@types/react@18.2.45: - resolution: {integrity: sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==} + /@types/react@18.2.55: + resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -2084,8 +2107,8 @@ packages: /@types/scheduler@0.16.8: resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} - /@types/semver@7.5.6: - resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + /@types/semver@7.5.7: + resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} dev: true /@types/trusted-types@2.0.7: @@ -2100,12 +2123,12 @@ packages: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} dev: false - /@types/uuid@9.0.7: - resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} dev: true - /@typescript-eslint/eslint-plugin@6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==} + /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -2116,25 +2139,25 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/type-utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 natural-compare: 1.4.0 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.14.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==} + /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2143,12 +2166,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -2162,16 +2185,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.14.0: - resolution: {integrity: sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==} + /@typescript-eslint/scope-manager@6.21.0: + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 dev: true - /@typescript-eslint/type-utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==} + /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -2180,11 +2203,11 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) - '@typescript-eslint/utils': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.55.0 - ts-api-utils: 1.0.3(typescript@5.3.3) + eslint: 8.56.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -2195,8 +2218,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.14.0: - resolution: {integrity: sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==} + /@typescript-eslint/types@6.21.0: + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -2214,15 +2237,15 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 + semver: 7.6.0 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.14.0(typescript@5.3.3): - resolution: {integrity: sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==} + /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -2230,52 +2253,53 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/visitor-keys': 6.14.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.3.3) + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 + '@types/semver': 7.5.7 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.55.0 + eslint: 8.56.0 eslint-scope: 5.1.1 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils@6.14.0(eslint@8.55.0)(typescript@5.3.3): - resolution: {integrity: sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==} + /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.14.0 - '@typescript-eslint/types': 6.14.0 - '@typescript-eslint/typescript-estree': 6.14.0(typescript@5.3.3) - eslint: 8.55.0 - semver: 7.5.4 + '@types/semver': 7.5.7 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -2289,22 +2313,22 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.14.0: - resolution: {integrity: sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==} + /@typescript-eslint/visitor-keys@6.21.0: + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.14.0 + '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 dev: true - /@uiw/react-textarea-code-editor@2.1.9(@babel/runtime@7.23.6)(react-dom@18.2.0)(react@18.2.0): + /@uiw/react-textarea-code-editor@2.1.9(@babel/runtime@7.23.9)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fby8oencLyF1BMAMDVIe4zErb01Qf97G25vJld6mJmgFAbK5TwFW0XUvkxAuNKaLp+EccKf5pejCVHcS/jZ3eA==} peerDependencies: '@babel/runtime': '>=7.10.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 12.0.1 @@ -2314,18 +2338,18 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react@4.2.1(vite@5.0.12): + /@vitejs/plugin-react@4.2.1(vite@5.1.1): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.23.7 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.7) + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.0.12 + vite: 5.1.1 transitivePeerDependencies: - supports-color dev: false @@ -2340,12 +2364,12 @@ packages: resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} dev: false - /acorn-jsx@5.3.2(acorn@8.11.2): + /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 dev: true /acorn@7.4.1: @@ -2354,8 +2378,8 @@ packages: hasBin: true dev: false - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -2441,11 +2465,12 @@ packages: resolution: {integrity: sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==} dev: false - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 dev: true /array-find-index@1.0.2: @@ -2457,10 +2482,10 @@ packages: resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.22.4 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -2483,24 +2508,35 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + /array.prototype.filter@1.0.3: + resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: true + + /array.prototype.findlastindex@1.2.4: + resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.4 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 es-shim-unscopables: 1.0.2 dev: true @@ -2508,32 +2544,33 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 + es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 + es-abstract: 1.22.4 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.2 dev: true @@ -2547,25 +2584,25 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} engines: {node: '>= 0.4'} dev: true - /axios-mock-adapter@1.22.0(axios@1.6.2): + /axios-mock-adapter@1.22.0(axios@1.6.7): resolution: {integrity: sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==} peerDependencies: axios: '>= 0.17.0' dependencies: - axios: 1.6.2 + axios: 1.6.7 fast-deep-equal: 3.1.3 is-buffer: 2.0.5 dev: false - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: - follow-redirects: 1.15.3 + follow-redirects: 1.15.5 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -2576,7 +2613,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false @@ -2588,10 +2625,10 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /big-integer@1.6.52: - resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} - engines: {node: '>=0.6'} - dev: true + /base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + dev: false /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -2617,13 +2654,6 @@ packages: safe-buffer: 5.2.1 dev: false - /bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - dependencies: - big-integer: 1.6.52 - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -2634,7 +2664,6 @@ packages: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: false /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -2642,15 +2671,15 @@ packages: dependencies: fill-range: 7.0.1 - /browserslist@4.22.2: - resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001570 - electron-to-chromium: 1.4.613 + caniuse-lite: 1.0.30001587 + electron-to-chromium: 1.4.668 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.22.2) + update-browserslist-db: 1.0.13(browserslist@4.22.3) dev: false /buffer-from@1.1.2: @@ -2665,22 +2694,18 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true - /bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - dependencies: - run-applescript: 5.0.0 - dev: true - - /call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 dev: true /callsites@3.1.0: @@ -2692,8 +2717,8 @@ packages: engines: {node: '>=10'} dev: false - /caniuse-lite@1.0.30001570: - resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} + /caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} dev: false /canvas-fit@1.5.0: @@ -2753,8 +2778,8 @@ packages: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -2792,21 +2817,15 @@ packages: engines: {node: '>=6'} dev: false - /clsx@2.0.0: - resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} engines: {node: '>=6'} dev: false /color-alpha@1.0.4: resolution: {integrity: sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A==} dependencies: - color-parse: 1.4.3 - dev: false - - /color-alpha@1.1.3: - resolution: {integrity: sha512-krPYBO1RSO5LH4AGb/b6z70O1Ip2o0F0+0cVFN5FN99jfQtZFT08rQyg+9oOBNJYAn3SRwJIFC8jUEOKz7PisA==} - dependencies: - color-parse: 1.4.3 + color-parse: 1.3.8 dev: false /color-convert@1.9.3: @@ -2838,14 +2857,7 @@ packages: resolution: {integrity: sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==} dependencies: clamp: 1.0.1 - color-rgba: 2.4.0 - dtype: 2.0.0 - dev: false - - /color-normalize@1.5.2: - resolution: {integrity: sha512-yYMIoyFJmUoKbCK6sBShljBWfkt8DXVfaZJn9/zvRJkF9eQJDbZhcYC6LdOVy40p4tfVwYYb9cXl8oqpu7pzBw==} - dependencies: - color-rgba: 2.4.0 + color-rgba: 2.1.1 dtype: 2.0.0 dev: false @@ -2857,27 +2869,14 @@ packages: is-plain-obj: 1.1.0 dev: false - /color-parse@1.4.3: - resolution: {integrity: sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==} - dependencies: - color-name: 1.1.4 - dev: false - /color-rgba@2.1.1: resolution: {integrity: sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw==} dependencies: clamp: 1.0.1 - color-parse: 1.4.3 + color-parse: 1.3.8 color-space: 1.16.0 dev: false - /color-rgba@2.4.0: - resolution: {integrity: sha512-Nti4qbzr/z2LbUWySr7H9dk3Rl7gZt7ihHAxlgT4Ho90EXWkjtkL1avTleu9yeGuqrt/chxTB6GKK8nZZ6V0+Q==} - dependencies: - color-parse: 1.4.3 - color-space: 2.0.1 - dev: false - /color-space@1.16.0: resolution: {integrity: sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg==} dependencies: @@ -2885,10 +2884,6 @@ packages: mumath: 3.3.4 dev: false - /color-space@2.0.1: - resolution: {integrity: sha512-nKqUYlo0vZATVOFHY810BSYjmCARrG7e5R3UE3CQlyjJTvv5kSSmPG1kzm/oDyyqjehM+lW1RnEt9It9GNa5JA==} - dev: false - /color-support@1.1.3: resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} hasBin: true @@ -3237,45 +3232,23 @@ packages: /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - /default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 dev: true - /default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - dev: true - - /define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.1 - dev: true - - /define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -3340,7 +3313,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 csstype: 3.1.3 dev: false @@ -3351,8 +3324,8 @@ packages: tslib: 2.6.2 dev: false - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} + /dotenv@16.4.4: + resolution: {integrity: sha512-XvPXc8XAQThSjAbY6cQ/9PcBXmFoWuw1sQ3b8HqUCR6ziGXjkTi//kB9SWa2UwqlgdAIuRqAa/9hVljzPehbYg==} engines: {node: '>=12'} dev: false @@ -3378,7 +3351,7 @@ packages: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 - stream-shift: 1.0.1 + stream-shift: 1.0.3 dev: false /earcut@2.2.4: @@ -3389,8 +3362,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: false - /electron-to-chromium@1.4.613: - resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} + /electron-to-chromium@1.4.668: + resolution: {integrity: sha512-ZOBocMYCehr9W31+GpMclR+KBaDZOoAEabLdhpZ8oU1JFDwIaFY0UDbpXVEUFc0BIP2O2Qn3rkfCjQmMR4T/bQ==} dev: false /element-size@1.1.1: @@ -3441,83 +3414,103 @@ packages: is-arrayish: 0.2.1 dev: false - /es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + /es-abstract@1.22.4: + resolution: {integrity: sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 + es-define-property: 1.0.0 + es-errors: 1.3.0 es-set-tostringtag: 2.0.2 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 has-proto: 1.0.1 has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 + hasown: 2.0.1 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 object-inspect: 1.13.1 object-keys: 1.1.1 object.assign: 4.1.5 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 string.prototype.trim: 1.2.8 string.prototype.trimend: 1.0.7 string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 + typed-array-buffer: 1.0.1 typed-array-byte-length: 1.0.0 typed-array-byte-offset: 1.0.0 typed-array-length: 1.0.4 unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 + dev: true + + /es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} dev: true - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-iterator-helpers@1.0.16: + resolution: {integrity: sha512-CREG2A9Vq7bpDRnldhFcMKuKArvkZtsH6Y0DHOHVg49qhf+LD8uEdUM3OkOAICv0EziGtDEnQtqY2/mfBILpFw==} + engines: {node: '>= 0.4'} dependencies: asynciterator.prototype: 1.0.0 - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 + es-errors: 1.3.0 es-set-tostringtag: 2.0.2 function-bind: 1.1.2 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 globalthis: 1.0.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.6 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.0 dev: true /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.1 dev: true /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.1 dev: true /es-to-primitive@1.2.1: @@ -3563,39 +3556,39 @@ packages: es6-symbol: 3.1.3 dev: false - /esbuild@0.19.11: - resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.11 - '@esbuild/android-arm': 0.19.11 - '@esbuild/android-arm64': 0.19.11 - '@esbuild/android-x64': 0.19.11 - '@esbuild/darwin-arm64': 0.19.11 - '@esbuild/darwin-x64': 0.19.11 - '@esbuild/freebsd-arm64': 0.19.11 - '@esbuild/freebsd-x64': 0.19.11 - '@esbuild/linux-arm': 0.19.11 - '@esbuild/linux-arm64': 0.19.11 - '@esbuild/linux-ia32': 0.19.11 - '@esbuild/linux-loong64': 0.19.11 - '@esbuild/linux-mips64el': 0.19.11 - '@esbuild/linux-ppc64': 0.19.11 - '@esbuild/linux-riscv64': 0.19.11 - '@esbuild/linux-s390x': 0.19.11 - '@esbuild/linux-x64': 0.19.11 - '@esbuild/netbsd-x64': 0.19.11 - '@esbuild/openbsd-x64': 0.19.11 - '@esbuild/sunos-x64': 0.19.11 - '@esbuild/win32-arm64': 0.19.11 - '@esbuild/win32-ia32': 0.19.11 - '@esbuild/win32-x64': 0.19.11 - dev: false - - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: false + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: false @@ -3613,38 +3606,37 @@ packages: engines: {node: '>=12'} dev: false - /escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} + /escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} hasBin: true dependencies: esprima: 4.0.1 - estraverse: 4.3.0 + estraverse: 5.3.0 esutils: 2.0.3 - optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 dev: false - /eslint-compat-utils@0.1.2(eslint@8.55.0): + /eslint-compat-utils@0.1.2(eslint@8.56.0): resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.55.0): + /eslint-config-prettier@9.1.0(eslint@8.56.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.14.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0)(typescript@5.3.3): + /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.4.0 @@ -3654,19 +3646,19 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 6.14.0(@typescript-eslint/parser@6.14.0)(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - eslint-plugin-n: 16.4.0(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.4.0)(eslint-plugin-promise@6.1.1)(eslint@8.55.0): + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.56.0): resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3675,10 +3667,10 @@ packages: eslint-plugin-n: '^15.0.0 || ^16.0.0 ' eslint-plugin-promise: ^6.0.0 dependencies: - eslint: 8.55.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - eslint-plugin-n: 16.4.0(eslint@8.55.0) - eslint-plugin-promise: 6.1.1(eslint@8.55.0) + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-n: 16.6.2(eslint@8.56.0) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -3691,7 +3683,7 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -3700,9 +3692,9 @@ packages: dependencies: debug: 4.3.4 enhanced-resolve: 5.15.0 - eslint: 8.55.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -3714,7 +3706,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3735,28 +3727,28 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.14.0)(eslint-plugin-import@2.29.1)(eslint@8.55.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.56.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-es-x@7.5.0(eslint@8.55.0): + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 - eslint: 8.55.0 - eslint-compat-utils: 0.1.2(eslint@8.55.0) + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3766,22 +3758,22 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.14.0(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + array.prototype.findlastindex: 1.2.4 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.14.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - hasown: 2.0.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.1 is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.7 - object.groupby: 1.0.1 + object.groupby: 1.0.2 object.values: 1.1.7 semver: 6.3.1 tsconfig-paths: 3.15.0 @@ -3791,27 +3783,28 @@ packages: - supports-color dev: true - /eslint-plugin-n@16.4.0(eslint@8.55.0): - resolution: {integrity: sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ==} + /eslint-plugin-n@16.6.2(eslint@8.56.0): + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} engines: {node: '>=16.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) builtins: 5.0.1 - eslint: 8.55.0 - eslint-plugin-es-x: 7.5.0(eslint@8.55.0) + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) get-tsconfig: 4.7.2 - ignore: 5.3.0 + globals: 13.24.0 + ignore: 5.3.1 is-builtin-module: 3.2.1 is-core-module: 2.13.1 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.5.4 + semver: 7.6.0 dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.1): - resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -3824,32 +3817,32 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.55.0 - eslint-config-prettier: 9.1.0(eslint@8.55.0) - prettier: 3.1.1 + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + prettier: 3.2.5 prettier-linter-helpers: 1.0.0 - synckit: 0.8.6 + synckit: 0.8.8 dev: true - /eslint-plugin-promise@6.1.1(eslint@8.55.0): + /eslint-plugin-promise@6.1.1(eslint@8.56.0): resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.55.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.55.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -3857,10 +3850,10 @@ packages: dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + es-iterator-helpers: 1.0.16 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -3874,14 +3867,14 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-testing-library@6.2.0(eslint@8.55.0)(typescript@5.3.3): + /eslint-plugin-testing-library@6.2.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript @@ -3908,16 +3901,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 - '@humanwhocodes/config-array': 0.11.13 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 @@ -3938,7 +3931,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.0 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -3959,8 +3952,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -3987,11 +3980,11 @@ packages: /estraverse@4.3.0: resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} engines: {node: '>=4.0'} + dev: true /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} @@ -4010,36 +4003,6 @@ packages: engines: {node: '>=0.8.x'} dev: false - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 4.3.1 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 3.0.7 - strip-final-newline: 3.0.0 - dev: true - /ext@1.7.0: resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} dependencies: @@ -4088,9 +4051,10 @@ packages: /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 dev: true @@ -4139,8 +4103,8 @@ packages: dtype: 2.0.0 dev: false - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -4218,9 +4182,9 @@ packages: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 functions-have-names: 1.2.3 dev: true @@ -4258,25 +4222,29 @@ packages: resolution: {integrity: sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==} dev: false - /get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: + es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.1 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.1 dev: true /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: false - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true /get-tsconfig@4.7.2: @@ -4297,7 +4265,7 @@ packages: resolution: {integrity: sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w==} dependencies: bit-twiddle: 1.0.2 - color-normalize: 1.5.2 + color-normalize: 1.5.0 css-font: 1.2.0 detect-kerning: 2.1.2 es6-weak-map: 2.0.3 @@ -4311,7 +4279,7 @@ packages: parse-unit: 1.0.1 pick-by-alias: 1.2.0 regl: 2.1.0 - to-px: 1.1.0 + to-px: 1.0.1 typedarray-pool: 1.2.0 dev: false @@ -4388,7 +4356,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.0 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -4505,7 +4473,7 @@ packages: minimist: 1.2.8 resolve: 1.22.8 stack-trace: 0.0.9 - static-eval: 2.1.0 + static-eval: 2.1.1 through2: 2.0.5 xtend: 4.0.2 dev: false @@ -4513,7 +4481,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: @@ -4553,10 +4521,10 @@ packages: is-browser: 2.1.0 dev: false - /has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.2 + es-define-property: 1.0.0 dev: true /has-proto@1.0.1: @@ -4569,8 +4537,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 @@ -4582,8 +4550,8 @@ packages: dev: false optional: true - /hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} engines: {node: '>= 0.4'} dependencies: function-bind: 1.1.2 @@ -4591,10 +4559,10 @@ packages: /hast-util-from-parse5@7.1.2: resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 '@types/unist': 2.0.10 hastscript: 7.2.0 - property-information: 6.4.0 + property-information: 6.4.1 vfile: 5.3.7 vfile-location: 4.1.0 web-namespaces: 2.0.1 @@ -4603,13 +4571,13 @@ packages: /hast-util-parse-selector@3.1.1: resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 dev: false /hast-util-raw@7.2.3: resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 '@types/parse5': 6.0.3 hast-util-from-parse5: 7.1.2 hast-util-to-parse5: 7.1.0 @@ -4625,14 +4593,14 @@ packages: /hast-util-to-html@8.0.4: resolution: {integrity: sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 '@types/unist': 2.0.10 ccount: 2.0.1 comma-separated-tokens: 2.0.3 hast-util-raw: 7.2.3 hast-util-whitespace: 2.0.1 html-void-elements: 2.0.1 - property-information: 6.4.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 stringify-entities: 4.0.3 zwitch: 2.0.4 @@ -4642,16 +4610,16 @@ packages: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: '@types/estree': 1.0.5 - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/unist': 3.0.2 comma-separated-tokens: 2.0.3 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 hast-util-whitespace: 3.0.0 mdast-util-mdx-expression: 2.0.0 - mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdx-jsx: 3.1.0 mdast-util-mdxjs-esm: 2.0.1 - property-information: 6.4.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 style-to-object: 1.0.5 unist-util-position: 5.0.0 @@ -4663,9 +4631,9 @@ packages: /hast-util-to-parse5@7.1.0: resolution: {integrity: sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 - property-information: 6.4.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 web-namespaces: 2.0.1 zwitch: 2.0.4 @@ -4674,7 +4642,7 @@ packages: /hast-util-to-string@2.0.0: resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 dev: false /hast-util-whitespace@2.0.1: @@ -4684,16 +4652,16 @@ packages: /hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 dev: false /hastscript@7.2.0: resolution: {integrity: sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 comma-separated-tokens: 2.0.3 hast-util-parse-selector: 3.1.1 - property-information: 6.4.0 + property-information: 6.4.1 space-separated-tokens: 2.0.2 dev: false @@ -4727,16 +4695,6 @@ packages: dev: false optional: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - dev: true - /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4748,8 +4706,8 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false - /ignore@5.3.0: - resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -4778,13 +4736,13 @@ packages: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: false - /internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.1 + side-channel: 1.0.5 dev: true /is-alphabetical@2.0.1: @@ -4798,12 +4756,12 @@ packages: is-decimal: 2.0.1 dev: false - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /is-arrayish@0.2.1: @@ -4814,7 +4772,7 @@ packages: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -4834,8 +4792,8 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-browser@2.1.0: @@ -4862,31 +4820,19 @@ packages: /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: - hasown: 2.0.0 + hasown: 2.0.1 /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-decimal@2.0.1: resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} dev: false - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4894,7 +4840,7 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-finite@1.1.0: @@ -4917,7 +4863,7 @@ packages: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -4935,14 +4881,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - dependencies: - is-docker: 3.0.0 - dev: true - /is-map@2.0.2: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true @@ -4960,7 +4898,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@7.0.0: @@ -4991,8 +4929,8 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-set@2.0.2: @@ -5002,17 +4940,7 @@ packages: /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - call-bind: 1.0.5 - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + call-bind: 1.0.7 dev: true /is-string-blank@1.0.1: @@ -5023,7 +4951,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-svg-path@1.0.2: @@ -5037,11 +4965,11 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true /is-weakmap@2.0.1: @@ -5051,21 +4979,14 @@ packages: /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 dev: true /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: true - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /isarray@0.0.1: @@ -5086,9 +5007,9 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 + reflect.getprototypeof: 1.0.5 set-function-name: 2.0.1 dev: true @@ -5165,14 +5086,6 @@ packages: json-buffer: 3.0.1 dev: true - /levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - dev: false - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -5211,8 +5124,8 @@ packages: tslib: 2.6.2 dev: false - /lru-cache@10.1.0: - resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} dev: false @@ -5228,8 +5141,8 @@ packages: dependencies: yallist: 4.0.0 - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -5258,14 +5171,14 @@ packages: once: 1.3.3 dev: false - /mapbox-gl@1.10.1: - resolution: {integrity: sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg==} + /mapbox-gl@1.13.3: + resolution: {integrity: sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==} engines: {node: '>=6.4.0'} dependencies: '@mapbox/geojson-rewind': 0.5.2 '@mapbox/geojson-types': 1.0.2 '@mapbox/jsonlint-lines-primitives': 2.0.2 - '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.10.1) + '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.13.3) '@mapbox/point-geometry': 0.1.0 '@mapbox/tiny-sdf': 1.2.5 '@mapbox/unitbezier': 0.0.0 @@ -5276,7 +5189,6 @@ packages: geojson-vt: 3.2.1 gl-matrix: 3.4.3 grid-index: 1.1.0 - minimist: 1.2.8 murmurhash-js: 1.0.0 pbf: 3.2.1 potpack: 1.0.2 @@ -5331,7 +5243,7 @@ packages: ccount: 2.0.1 devlop: 1.1.0 mdast-util-find-and-replace: 3.0.1 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 dev: false /mdast-util-gfm-footnote@2.0.0: @@ -5396,8 +5308,8 @@ packages: /mdast-util-mdx-expression@2.0.0: resolution: {integrity: sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.3 + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -5406,11 +5318,11 @@ packages: - supports-color dev: false - /mdast-util-mdx-jsx@3.0.0: - resolution: {integrity: sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==} + /mdast-util-mdx-jsx@3.1.0: + resolution: {integrity: sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.3 + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 '@types/unist': 3.0.2 ccount: 2.0.1 @@ -5429,8 +5341,8 @@ packages: /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: - '@types/estree-jsx': 1.0.3 - '@types/hast': 3.0.3 + '@types/estree-jsx': 1.0.4 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 devlop: 1.1.0 mdast-util-from-markdown: 2.0.0 @@ -5439,17 +5351,17 @@ packages: - supports-color dev: false - /mdast-util-phrasing@4.0.0: - resolution: {integrity: sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==} + /mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} dependencies: '@types/mdast': 4.0.3 unist-util-is: 6.0.0 dev: false - /mdast-util-to-hast@13.0.2: - resolution: {integrity: sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==} + /mdast-util-to-hast@13.1.0: + resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 @@ -5457,6 +5369,7 @@ packages: trim-lines: 3.0.1 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 + vfile: 6.0.1 dev: false /mdast-util-to-markdown@2.1.0: @@ -5465,7 +5378,7 @@ packages: '@types/mdast': 4.0.3 '@types/unist': 3.0.2 longest-streak: 3.1.0 - mdast-util-phrasing: 4.0.0 + mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 @@ -5478,7 +5391,7 @@ packages: '@types/mdast': 4.0.3 dev: false - /merge-refs@1.2.2(@types/react@18.2.45): + /merge-refs@1.2.2(@types/react@18.2.55): resolution: {integrity: sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5486,13 +5399,9 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.55 dev: false - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -5508,7 +5417,7 @@ packages: micromark-factory-space: 2.0.0 micromark-factory-title: 2.0.0 micromark-factory-whitespace: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 micromark-util-classify-character: 2.0.0 micromark-util-html-tag-name: 2.0.0 @@ -5522,7 +5431,7 @@ packages: /micromark-extension-gfm-autolink-literal@2.0.0: resolution: {integrity: sha512-rTHfnpt/Q7dEAK1Y5ii0W8bhfJlVJFnJMHIPisfPK3gpVNuOP0VnRl96+YJ3RYWV/P4gFeQoGKNlT3RhuvpqAg==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 @@ -5534,7 +5443,7 @@ packages: devlop: 1.1.0 micromark-core-commonmark: 2.0.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-normalize-identifier: 2.0.0 micromark-util-sanitize-uri: 2.0.0 micromark-util-symbol: 2.0.0 @@ -5557,7 +5466,7 @@ packages: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5573,7 +5482,7 @@ packages: dependencies: devlop: 1.1.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5594,7 +5503,7 @@ packages: /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5603,7 +5512,7 @@ packages: resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} dependencies: devlop: 1.1.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5611,7 +5520,7 @@ packages: /micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-types: 2.0.0 dev: false @@ -5619,7 +5528,7 @@ packages: resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} dependencies: micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5628,13 +5537,13 @@ packages: resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} dependencies: micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false - /micromark-util-character@2.0.1: - resolution: {integrity: sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==} + /micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} dependencies: micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 @@ -5649,7 +5558,7 @@ packages: /micromark-util-classify-character@2.0.0: resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-symbol: 2.0.0 micromark-util-types: 2.0.0 dev: false @@ -5671,7 +5580,7 @@ packages: resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} dependencies: decode-named-character-reference: 1.0.2 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-decode-numeric-character-reference: 2.0.1 micromark-util-symbol: 2.0.0 dev: false @@ -5699,7 +5608,7 @@ packages: /micromark-util-sanitize-uri@2.0.0: resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} dependencies: - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-encode: 2.0.0 micromark-util-symbol: 2.0.0 dev: false @@ -5730,7 +5639,7 @@ packages: devlop: 1.1.0 micromark-core-commonmark: 2.0.0 micromark-factory-space: 2.0.0 - micromark-util-character: 2.0.1 + micromark-util-character: 2.1.0 micromark-util-chunked: 2.0.0 micromark-util-combine-extensions: 2.0.0 micromark-util-decode-numeric-character-reference: 2.0.1 @@ -5765,16 +5674,6 @@ packages: mime-db: 1.52.0 dev: false - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - /mimic-response@2.1.0: resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} engines: {node: '>=8'} @@ -5792,7 +5691,6 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 - dev: false /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -5855,7 +5753,7 @@ packages: dependencies: right-now: 1.0.0 signum: 1.0.0 - to-px: 1.1.0 + to-px: 1.0.1 dev: false /ms@2.0.0: @@ -5965,20 +5863,6 @@ packages: svg-arc-to-cubic-bezier: 3.2.0 dev: false - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - /npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} requiresBuild: true @@ -6019,7 +5903,7 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 @@ -6029,43 +5913,44 @@ packages: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /object.fromentries@2.0.7: resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + /object.groupby@1.0.2: + resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} dependencies: - call-bind: 1.0.5 + array.prototype.filter: 1.0.3 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.22.4 + es-errors: 1.3.0 dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /once@1.3.3: @@ -6079,42 +5964,6 @@ packages: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - dev: true - - /optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - dev: false - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -6209,11 +6058,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -6221,7 +6065,7 @@ packages: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.1.0 + lru-cache: 10.2.0 minipass: 7.0.4 dev: false @@ -6265,20 +6109,23 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: false /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /plotly.js@2.27.1: - resolution: {integrity: sha512-XeE0zTJWTxURYrUJqzf73l8lTb+HnyRvvhHkoSIEvWf58ins4saopo9l25kCm+xHAGz8E/2EOncE4DyXsJ34kA==} + /plotly.js@2.29.1(mapbox-gl@1.13.3): + resolution: {integrity: sha512-+XirhgCh42JF/iVu/RtBRbhcs328ipinajy7hd3mnZdnQv2Th6F441DSXer5S+P0nNluNs10vAFTELo4k/icjg==} dependencies: '@plotly/d3': 3.8.1 '@plotly/d3-sankey': 0.7.2 '@plotly/d3-sankey-circular': 0.33.1 + '@plotly/mapbox-gl': 1.13.4(mapbox-gl@1.13.3) '@turf/area': 6.5.0 '@turf/bbox': 6.5.0 '@turf/centroid': 6.5.0 + base64-arraybuffer: 1.0.2 canvas-fit: 1.5.0 color-alpha: 1.0.4 color-normalize: 1.5.0 @@ -6300,7 +6147,6 @@ packages: has-hover: 1.0.1 has-passive-events: 1.0.0 is-mobile: 4.0.0 - mapbox-gl: 1.10.1 mouse-change: 1.4.0 mouse-event-offset: 3.0.2 mouse-wheel: 1.2.0 @@ -6312,7 +6158,7 @@ packages: regl: /@plotly/regl@2.1.2 regl-error2d: 2.0.12 regl-line2d: 3.1.2 - regl-scatter2d: 3.2.9 + regl-scatter2d: 3.3.1 regl-splom: 1.0.14 strongly-connected-components: 1.0.1 superscript-text: 1.0.0 @@ -6323,6 +6169,7 @@ packages: webgl-context: 2.2.0 world-calendars: 1.0.3 transitivePeerDependencies: + - mapbox-gl - supports-color dev: false @@ -6334,8 +6181,8 @@ packages: resolution: {integrity: sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ==} dev: false - /postcss@8.4.33: - resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -6347,11 +6194,6 @@ packages: resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} dev: false - /prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - dev: false - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -6364,8 +6206,8 @@ packages: fast-diff: 1.3.0 dev: true - /prettier@3.1.1: - resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -6395,8 +6237,8 @@ packages: resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} dev: false - /property-information@6.4.0: - resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} + /property-information@6.4.1: + resolution: {integrity: sha512-OHYtXfu5aI2sS2LWFSN5rgJjrQ4pCy8i1jubJLe2QvMF8JJ++HXTUIVWFLfXJoaOfvYYjk2SN8J2wFUWIGXT4w==} dev: false /protocol-buffers-schema@3.6.0: @@ -6454,9 +6296,9 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /react-hook-form@7.49.2(react@18.2.0): - resolution: {integrity: sha512-TZcnSc17+LPPVpMRIDNVITY6w20deMdNi6iehTFLV1x8SqThXGwu93HjlUVU09pzFgZH7qZOvLMM7UYf2ShAHA==} - engines: {node: '>=18', pnpm: '8'} + /react-hook-form@7.50.1(react@18.2.0): + resolution: {integrity: sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ==} + engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 dependencies: @@ -6470,22 +6312,22 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: false - /react-markdown@9.0.0(@types/react@18.2.45)(react@18.2.0): + /react-markdown@9.0.0(@types/react@18.2.55)(react@18.2.0): resolution: {integrity: sha512-v6yNf3AB8GfJ8lCpUvzxAXKxgsHpdmWPlcVRQ6Nocsezp255E/IDrF31kLQsPJeB/cKto/geUwjU36wH784FCA==} peerDependencies: '@types/react': '>=18' react: '>=18' dependencies: - '@types/hast': 3.0.3 - '@types/react': 18.2.45 + '@types/hast': 3.0.4 + '@types/react': 18.2.55 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 - mdast-util-to-hast: 13.0.2 + mdast-util-to-hast: 13.1.0 micromark-util-sanitize-uri: 2.0.0 react: 18.2.0 remark-parse: 11.0.0 - remark-rehype: 11.0.0 + remark-rehype: 11.1.0 unified: 11.0.4 unist-util-visit: 5.0.0 vfile: 6.0.1 @@ -6493,8 +6335,8 @@ packages: - supports-color dev: false - /react-pdf@7.6.0(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-b2/8V6xhe5pn4Y01ELKTQZ+RhdZl1KpSAMGbN+HCZ/kwhYTIc4Pn5ctz1wRQUu1gOJbIEG4CcjMD9vTCzNdwjw==} + /react-pdf@7.7.0(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-704ObLnRDm5lixL4e6NXNLaincBHGNLo+NGdbO3rEXE963NlNzwLxFpmKcbdXHAMQL4rYJQWb1L0w5IL6y8Osw==} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -6503,29 +6345,30 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.2.45 - clsx: 2.0.0 + '@types/react': 18.2.55 + clsx: 2.1.0 + dequal: 2.0.3 make-cancellable-promise: 1.3.2 make-event-props: 1.6.2 - merge-refs: 1.2.2(@types/react@18.2.45) + merge-refs: 1.2.2(@types/react@18.2.55) pdfjs-dist: 3.11.174 prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tiny-invariant: 1.3.1 - tiny-warning: 1.0.3 + warning: 4.0.3 transitivePeerDependencies: - encoding - supports-color dev: false - /react-plotly.js@2.6.0(plotly.js@2.27.1)(react@18.2.0): + /react-plotly.js@2.6.0(plotly.js@2.29.1)(react@18.2.0): resolution: {integrity: sha512-g93xcyhAVCSt9kV1svqG1clAEdL6k3U+jjuSzfTV7owaSU9Go6Ph8bl25J+jKfKvIGAEYpe4qj++WHJuc9IaeA==} peerDependencies: plotly.js: '>1.34.0' react: '>0.13.0' dependencies: - plotly.js: 2.27.1 + plotly.js: 2.29.1(mapbox-gl@1.13.3) prop-types: 15.8.1 react: 18.2.0 dev: false @@ -6535,31 +6378,31 @@ packages: engines: {node: '>=0.10.0'} dev: false - /react-router-dom@6.21.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-1dUdVj3cwc1npzJaf23gulB562ESNvxf7E4x8upNJycqyUm5BRRZ6dd3LrlzhtLaMrwOCO8R0zoiYxdaJx4LlQ==} + /react-router-dom@6.22.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-z2w+M4tH5wlcLmH3BMMOMdrtrJ9T3oJJNsAlBJbwk+8Syxd5WFJ7J5dxMEW0/GEXD1BBis4uXRrNIz3mORr0ag==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.14.0 + '@remix-run/router': 1.15.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.21.0(react@18.2.0) + react-router: 6.22.0(react@18.2.0) dev: false - /react-router@6.21.0(react@18.2.0): - resolution: {integrity: sha512-hGZ0HXbwz3zw52pLZV3j3+ec+m/PQ9cTpBvqjFQmy2XVUWGn5MD+31oXHb6dVTxYzmAeaiUBYjkoNz66n3RGCg==} + /react-router@6.22.0(react@18.2.0): + resolution: {integrity: sha512-q2yemJeg6gw/YixRlRnVx6IRJWZD6fonnfZhN1JIOhV2iJCPeRNSH3V1ISwHf+JWcESzLC3BOLD1T07tmO5dmg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.14.0 + '@remix-run/router': 1.15.0 react: 18.2.0 dev: false - /react-to-print@2.14.15(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-SKnwOzU2cJ8eaAkoJO7+gNhvfEDmm+Y34IdcHsjtHioUevUPhprqbVtvNJlZ2JkGJ8ExK2QNWM9pXECTDR5D8w==} + /react-to-print@2.15.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-B5M2F2Mit1+glO64x9vCcNL2TiAmZ6iegybVvDs6NhNyTo1MXYlODoNky8vboWFnkcO5R/wz6XlTUK9HFIlWiQ==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 @@ -6585,7 +6428,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.23.6 + '@babel/runtime': 7.23.9 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -6600,18 +6443,18 @@ packages: loose-envify: 1.4.0 dev: false - /reactflow@11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-Q616fElAc5/N37tMwjuRkkgm/VgmnLLTNNCj61z5mvJxae+/VXZQMfot1K6a5LLz9G3SVKqU97PMb9Ga1PRXew==} + /reactflow@11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DGNrTdkWjZtPOhj5MV8fiWWGkJo+otMVdoJ9l67bQL+Xf+8NkJ4AHmRXoYIxtgcENzwTr5WTAIJlswV9i91cyw==} peerDependencies: react: '>=17' react-dom: '>=17' dependencies: - '@reactflow/background': 11.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/controls': 11.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/core': 11.10.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/minimap': 11.7.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-resizer': 2.2.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@reactflow/node-toolbar': 1.3.6(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/background': 11.3.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/controls': 11.2.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/core': 11.10.3(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/minimap': 11.7.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-resizer': 2.2.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) + '@reactflow/node-toolbar': 1.3.8(@types/react@18.2.55)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -6658,14 +6501,15 @@ packages: picomatch: 2.3.1 dev: false - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + /reflect.getprototypeof@1.0.5: + resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.22.4 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true @@ -6673,22 +6517,23 @@ packages: /refractor@4.8.1: resolution: {integrity: sha512-/fk5sI0iTgFYlmVGYVew90AoYnNMP6pooClx/XKqyeeCQXrL0Kvgn8V0VEht5ccdljbzzF1i3Q213gcntkRExg==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 '@types/prismjs': 1.26.3 hastscript: 7.2.0 parse-entities: 4.0.1 dev: false - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: false - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 + es-errors: 1.3.0 set-function-name: 2.0.1 dev: true @@ -6696,7 +6541,7 @@ packages: resolution: {integrity: sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==} dependencies: array-bounds: 1.0.1 - color-normalize: 1.5.2 + color-normalize: 1.5.0 flatten-vertex-data: 1.0.2 object-assign: 4.1.1 pick-by-alias: 1.2.0 @@ -6710,7 +6555,7 @@ packages: array-bounds: 1.0.1 array-find-index: 1.0.2 array-normalize: 1.1.4 - color-normalize: 1.5.2 + color-normalize: 1.5.0 earcut: 2.2.4 es6-weak-map: 2.0.3 flatten-vertex-data: 1.0.2 @@ -6721,16 +6566,16 @@ packages: to-float32: 1.1.0 dev: false - /regl-scatter2d@3.2.9: - resolution: {integrity: sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg==} + /regl-scatter2d@3.3.1: + resolution: {integrity: sha512-seOmMIVwaCwemSYz/y4WE0dbSO9svNFSqtTh5RE57I7PjGo3tcUYKtH0MTSoshcAsreoqN8HoCtnn8wfHXXfKQ==} dependencies: '@plotly/point-cluster': 3.1.9 array-range: 1.0.1 array-rearrange: 2.2.2 clamp: 1.0.1 color-id: 1.1.0 - color-normalize: 1.5.2 - color-rgba: 2.4.0 + color-normalize: 1.5.0 + color-rgba: 2.1.1 flatten-vertex-data: 1.0.2 glslify: 7.1.1 is-iexplorer: 1.0.0 @@ -6746,12 +6591,12 @@ packages: dependencies: array-bounds: 1.0.1 array-range: 1.0.1 - color-alpha: 1.1.3 + color-alpha: 1.0.4 flatten-vertex-data: 1.0.2 parse-rect: 1.2.0 pick-by-alias: 1.2.0 raf: 3.4.1 - regl-scatter2d: 3.2.9 + regl-scatter2d: 3.3.1 dev: false /regl@2.1.0: @@ -6761,7 +6606,7 @@ packages: /rehype-parse@8.0.5: resolution: {integrity: sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 hast-util-from-parse5: 7.1.2 parse5: 6.0.1 unified: 10.1.2 @@ -6781,7 +6626,7 @@ packages: /rehype-stringify@9.0.4: resolution: {integrity: sha512-Uk5xu1YKdqobe5XpSskwPvo1XeHUUucWEQSl8hTrXt5selvca1e8K1EZ37E6YoZ4BT8BCqCdVfQW7OfHfthtVQ==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 hast-util-to-html: 8.0.4 unified: 10.1.2 dev: false @@ -6789,7 +6634,7 @@ packages: /rehype@12.0.1: resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} dependencies: - '@types/hast': 2.3.8 + '@types/hast': 2.3.10 rehype-parse: 8.0.5 rehype-stringify: 9.0.4 unified: 10.1.2 @@ -6819,12 +6664,12 @@ packages: - supports-color dev: false - /remark-rehype@11.0.0: - resolution: {integrity: sha512-vx8x2MDMcxuE4lBmQ46zYUDfcFMmvg80WYX+UNLeG6ixjdCCLcw1lrgAukwBTuOFsS78eoAedHGn9sNM0w7TPw==} + /remark-rehype@11.1.0: + resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} dependencies: - '@types/hast': 3.0.3 + '@types/hast': 3.0.4 '@types/mdast': 4.0.3 - mdast-util-to-hast: 13.0.2 + mdast-util-to-hast: 13.1.0 unified: 11.0.4 vfile: 6.0.1 dev: false @@ -6891,36 +6736,29 @@ packages: dependencies: glob: 7.2.3 - /rollup@4.9.6: - resolution: {integrity: sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg==} + /rollup@4.10.0: + resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.9.6 - '@rollup/rollup-android-arm64': 4.9.6 - '@rollup/rollup-darwin-arm64': 4.9.6 - '@rollup/rollup-darwin-x64': 4.9.6 - '@rollup/rollup-linux-arm-gnueabihf': 4.9.6 - '@rollup/rollup-linux-arm64-gnu': 4.9.6 - '@rollup/rollup-linux-arm64-musl': 4.9.6 - '@rollup/rollup-linux-riscv64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-gnu': 4.9.6 - '@rollup/rollup-linux-x64-musl': 4.9.6 - '@rollup/rollup-win32-arm64-msvc': 4.9.6 - '@rollup/rollup-win32-ia32-msvc': 4.9.6 - '@rollup/rollup-win32-x64-msvc': 4.9.6 + '@rollup/rollup-android-arm-eabi': 4.10.0 + '@rollup/rollup-android-arm64': 4.10.0 + '@rollup/rollup-darwin-arm64': 4.10.0 + '@rollup/rollup-darwin-x64': 4.10.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.10.0 + '@rollup/rollup-linux-arm64-gnu': 4.10.0 + '@rollup/rollup-linux-arm64-musl': 4.10.0 + '@rollup/rollup-linux-riscv64-gnu': 4.10.0 + '@rollup/rollup-linux-x64-gnu': 4.10.0 + '@rollup/rollup-linux-x64-musl': 4.10.0 + '@rollup/rollup-win32-arm64-msvc': 4.10.0 + '@rollup/rollup-win32-ia32-msvc': 4.10.0 + '@rollup/rollup-win32-x64-msvc': 4.10.0 fsevents: 2.3.3 dev: false - /run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} - dependencies: - execa: 5.1.1 - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -6931,12 +6769,12 @@ packages: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -6949,11 +6787,12 @@ packages: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} dev: false - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true @@ -6975,8 +6814,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -6994,23 +6833,25 @@ packages: dev: false optional: true - /set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 + 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.1 + has-property-descriptors: 1.0.2 dev: true /set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.1 + define-data-property: 1.1.4 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 + has-property-descriptors: 1.0.2 dev: true /shallow-copy@0.0.1: @@ -7027,16 +6868,21 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 object-inspect: 1.13.1 dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + requiresBuild: true + dev: false + optional: true /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -7100,10 +6946,10 @@ packages: resolution: {integrity: sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==} dev: false - /static-eval@2.1.0: - resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} + /static-eval@2.1.1: + resolution: {integrity: sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==} dependencies: - escodegen: 1.14.3 + escodegen: 2.1.0 dev: false /stream-parser@0.3.1: @@ -7114,8 +6960,8 @@ packages: - supports-color dev: false - /stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + /stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} dev: false /string-split-by@1.0.0: @@ -7145,40 +6991,40 @@ packages: /string.prototype.matchall@4.0.10: resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 + es-abstract: 1.22.4 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - internal-slot: 1.0.6 - regexp.prototype.flags: 1.5.1 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 set-function-name: 2.0.1 - side-channel: 1.0.4 + side-channel: 1.0.5 dev: true /string.prototype.trim@1.2.8: resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.22.4 dev: true /string_decoder@0.10.31: @@ -7224,16 +7070,6 @@ packages: engines: {node: '>=4'} dev: true - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -7318,11 +7154,11 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: false - /synckit@0.8.6: - resolution: {integrity: sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==} + /synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} dependencies: - '@pkgr/utils': 2.4.2 + '@pkgr/core': 0.1.1 tslib: 2.6.2 dev: true @@ -7371,10 +7207,6 @@ packages: resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} dev: false - /tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - dev: false - /tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} dev: false @@ -7383,11 +7215,6 @@ packages: resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} dev: false - /titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} - dev: true - /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -7403,12 +7230,6 @@ packages: parse-unit: 1.0.1 dev: false - /to-px@1.1.0: - resolution: {integrity: sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw==} - dependencies: - parse-unit: 1.0.1 - dev: false - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -7436,21 +7257,21 @@ packages: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: false - /trough@2.1.0: - resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} + /trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /ts-api-utils@1.0.3(typescript@5.3.3): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.2.1(typescript@5.3.3): + resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: typescript: 5.3.3 dev: true - /tsconfck@3.0.1(typescript@5.3.3): - resolution: {integrity: sha512-7ppiBlF3UEddCLeI1JRx5m2Ryq+xk4JrZuq4EuYXykipebaq1dV0Fhgr1hb7CkmHt32QSgOZlcqVLEtHBG4/mg==} + /tsconfck@3.0.2(typescript@5.3.3): + resolution: {integrity: sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -7488,13 +7309,6 @@ packages: typescript: 5.3.3 dev: true - /type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - dependencies: - prelude-ls: 1.1.2 - dev: false - /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -7520,42 +7334,42 @@ packages: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: false - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.1: + resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true /typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 for-each: 0.3.3 has-proto: 1.0.1 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 dev: true /typedarray-pool@1.2.0: @@ -7577,7 +7391,7 @@ packages: /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -7591,7 +7405,7 @@ packages: extend: 3.0.2 is-buffer: 2.0.5 is-plain-obj: 4.1.0 - trough: 2.1.0 + trough: 2.2.0 vfile: 5.3.7 dev: false @@ -7603,7 +7417,7 @@ packages: devlop: 1.1.0 extend: 3.0.2 is-plain-obj: 4.1.0 - trough: 2.1.0 + trough: 2.2.0 vfile: 6.0.1 dev: false @@ -7688,11 +7502,11 @@ packages: unist-util-visit-parents: 6.0.1 dev: false - /unplugin@1.5.1: - resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + /unplugin@1.7.1: + resolution: {integrity: sha512-JqzORDAPxxs8ErLV4x+LL7bk5pk3YlcWqpSNsIkAZj972KzFZLClc/ekppahKkOczGkwIG6ElFgdOgOlK4tXZw==} dependencies: - acorn: 8.11.2 - chokidar: 3.5.3 + acorn: 8.11.3 + chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.6.1 dev: false @@ -7701,19 +7515,14 @@ packages: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true - - /update-browserslist-db@1.0.13(browserslist@4.22.2): + /update-browserslist-db@1.0.13(browserslist@4.22.3): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.22.2 - escalade: 3.1.1 + browserslist: 4.22.3 + escalade: 3.1.2 picocolors: 1.0.0 dev: false @@ -7782,7 +7591,7 @@ packages: vfile-message: 4.0.2 dev: false - /vite-plugin-svgr@4.2.0(typescript@5.3.3)(vite@5.0.12): + /vite-plugin-svgr@4.2.0(typescript@5.3.3)(vite@5.1.1): resolution: {integrity: sha512-SC7+FfVtNQk7So0XMjrrtLAbEC8qjFPifyD7+fs/E6aaNdVde6umlVVh0QuwDLdOMu7vp5RiGFsB70nj5yo0XA==} peerDependencies: vite: ^2.6.0 || 3 || 4 || 5 @@ -7790,14 +7599,14 @@ packages: '@rollup/pluginutils': 5.1.0 '@svgr/core': 8.1.0(typescript@5.3.3) '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0) - vite: 5.0.12 + vite: 5.1.1 transitivePeerDependencies: - rollup - supports-color - typescript dev: false - /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.0.12): + /vite-tsconfig-paths@4.3.1(typescript@5.3.3)(vite@5.1.1): resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' @@ -7807,15 +7616,15 @@ packages: dependencies: debug: 4.3.4 globrex: 0.1.2 - tsconfck: 3.0.1(typescript@5.3.3) - vite: 5.0.12 + tsconfck: 3.0.2(typescript@5.3.3) + vite: 5.1.1 transitivePeerDependencies: - supports-color - typescript dev: false - /vite@5.0.12: - resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + /vite@5.1.1: + resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -7842,9 +7651,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.19.11 - postcss: 8.4.33 - rollup: 4.9.6 + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.10.0 optionalDependencies: fsevents: 2.3.3 dev: false @@ -7857,6 +7666,12 @@ packages: pbf: 3.2.1 dev: false + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + dev: false + /weak-map@1.0.8: resolution: {integrity: sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==} dev: false @@ -7914,7 +7729,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -7924,7 +7739,7 @@ packages: isarray: 2.0.5 which-boxed-primitive: 1.0.2 which-collection: 1.0.1 - which-typed-array: 1.1.13 + which-typed-array: 1.1.14 dev: true /which-collection@1.0.1: @@ -7936,15 +7751,15 @@ packages: is-weakset: 2.0.2 dev: true - /which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /which@2.0.2: @@ -7962,11 +7777,6 @@ packages: dev: false optional: true - /word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - dev: false - /world-calendars@1.0.3: resolution: {integrity: sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==} dependencies: @@ -8030,12 +7840,12 @@ packages: type-fest: 2.19.0 dev: false - /zustand@4.4.7(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==} + /zustand@4.5.0(@types/react@18.2.55)(react@18.2.0): + resolution: {integrity: sha512-zlVFqS5TQ21nwijjhJlx4f9iGrXSL0o/+Dpy4txAP22miJ8Ti6c1Ol1RLNN98BMib83lmDH/2KmLwaNXpjrO1A==} engines: {node: '>=12.7.0'} peerDependencies: '@types/react': '>=16.8' - immer: '>=9.0' + immer: '>=9.0.6' react: '>=16.8' peerDependenciesMeta: '@types/react': @@ -8045,7 +7855,7 @@ packages: react: optional: true dependencies: - '@types/react': 18.2.45 + '@types/react': 18.2.55 react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) dev: false diff --git a/frontend/src/@types/piece/index.d.ts b/frontend/src/@types/piece/index.d.ts index 25d235ec..aec5da75 100644 --- a/frontend/src/@types/piece/index.d.ts +++ b/frontend/src/@types/piece/index.d.ts @@ -7,6 +7,8 @@ declare global { type Schema = import("./schema").Schema; type FromUpstream = import("./schema").FromUpstream; type TypeName = import("./schema").TypeName; + type FormatType = import("./schema").FormatType; + type WidgetType = import("./schema").WidgetType; type Reference = import("./schema").Reference; type Properties = import("./schema").Properties; diff --git a/frontend/src/@types/piece/schema.d.ts b/frontend/src/@types/piece/schema.d.ts index ce72c5a3..83e08c9f 100644 --- a/frontend/src/@types/piece/schema.d.ts +++ b/frontend/src/@types/piece/schema.d.ts @@ -7,6 +7,10 @@ export type TypeName = | "array" | "null"; +export type FormatType = "date" | "time" | "date-time"; + +export type WidgetType = "codeeditor" | `codeeditor-${string}` | "textarea"; + export interface Schema { title: string; description: string; @@ -19,13 +23,13 @@ export interface Schema { export type Properties = Record; -export type Property = SimpleProperty | ArrayProperty | AnyOfProperty; +export type Property = + | SimpleProperty + | EnumProperty + | ArrayProperty + | AnyOfProperty; -export type SimpleProperty = - | BooleanProperty - | NumberProperty - | StringProperty - | EnumProperty; +export type SimpleProperty = BooleanProperty | NumberProperty | StringProperty; export type ArrayProperty = | ArrayBooleanProperty @@ -48,45 +52,45 @@ export type BooleanProperty = DefaultPropertyAttrs & { export type NumberProperty = DefaultPropertyAttrs & { type: "number" | "integer"; - default: number; + default?: number; exclusiveMaximum?: number; exclusiveMinimum?: number; }; export type StringProperty = DefaultPropertyAttrs & { type: "string"; - default: string; + default?: string; - widget?: `codeeditor-${string}` | "textarea"; - format?: "date" | "time" | "date-time"; + widget?: WidgetType; + format?: FormatType; }; export type EnumProperty = DefaultPropertyAttrs & { allOf: Reference[]; - default: string; + default?: string; }; export type ArrayBooleanProperty = DefaultPropertyAttrs & { type: "array"; - default: boolean[]; + default?: boolean[]; items: Omit; }; export type ArrayNumberProperty = DefaultPropertyAttrs & { type: "array"; - default: number[]; + default?: number[]; items: Omit; }; export type ArrayStringProperty = DefaultPropertyAttrs & { type: "array"; - default: string[]; + default?: string[]; items: Omit; }; export type ArrayObjectProperty = DefaultPropertyAttrs & { type: "array"; - default: Array>; + default?: Array>; items: Reference; }; @@ -100,12 +104,12 @@ type AnyOf = DefaultPropertyAttrs & { widget?: `codeeditor-${string}` | "textarea"; format?: "date" | "time" | "date-time"; }>; - default: any; + default?: any; }; export type AnyOfArray = DefaultPropertyAttrs & { anyOf: Array<{ items: AnyOf["anyOf"]; type: "array" } | { type: "null" }>; - default: any[]; + default?: any[]; }; export type AnyOfProperty = AnyOf | AnyOfArray; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx new file mode 100644 index 00000000..8f6f98b6 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx @@ -0,0 +1,184 @@ +import AddIcon from "@mui/icons-material/Add"; +import DeleteIcon from "@mui/icons-material/Delete"; +import { Card, CardContent, IconButton, Grid } from "@mui/material"; +import CheckboxInput from "components/CheckboxInput"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; +import { + type UpstreamOptions, + getFromUpstream, +} from "features/workflowEditor/utils"; +import React, { useCallback, useMemo } from "react"; +import { useWatch, useFieldArray, useFormContext } from "react-hook-form"; + +import { disableCheckboxOptions } from "../../../../../../utils/disableCheckboxOptions"; + +import SelectUpstreamInput from "./SelectUpstreamInput"; +import { isObjectType } from "./utils"; + +import { InputElement } from "."; + +interface ArrayInputItemProps { + inputKey: `inputs.${string}`; + schema: any; + definitions?: any; + upstreamOptions: UpstreamOptions; + checkedFromUpstream: boolean; +} + +const ArrayInput: React.FC = React.memo( + ({ inputKey, schema, upstreamOptions, definitions, checkedFromUpstream }) => { + const name: `inputs.${string}.value` = `${inputKey}.value`; + const { control } = useFormContext(); + const { fields, append, remove } = useFieldArray({ + name, + control, + }); + const formsData = useWatch({ name }); + + const subItemSchema = useMemo(() => { + let subItemSchema: any = schema?.items; + if (schema?.items?.$ref) { + const subItemSchemaName = schema.items.$ref.split("/").pop(); + subItemSchema = definitions?.[subItemSchemaName]; + } + return subItemSchema; + }, [definitions, schema]); + + const handleAddInput = useCallback(() => { + function empty(object: Record, fromUpstream = false) { + Object.keys(object).forEach(function (k) { + if (object[k] && typeof object[k] === "object") { + return empty(object[k]); + } + if (fromUpstream) { + object[k] = getFromUpstream(schema, definitions, k); + } else { + object[k] = schema[k]?.default; + } + }); + return object; + } + const defaultValue = schema?.default?.length ? schema.default[0] : ""; + const isObject = typeof defaultValue === "object"; + let defaultObj = { + fromUpstream: getFromUpstream(schema), + upstreamArgument: "", + upstreamId: "", + upstreamValue: "", + value: schema?.default ?? null, + } as unknown; + + if (isObject) { + const emptyObjValue = empty({ ...defaultValue }); + const emptyObjFromUpstream = empty({ ...defaultValue }, true); + defaultObj = { + fromUpstream: emptyObjFromUpstream, + upstreamArgument: emptyObjValue, + upstreamId: emptyObjValue, + upstreamValue: emptyObjValue, + value: defaultValue, + } as unknown; + } + + console.log(defaultObj); + + append([defaultObj] as any); + }, [append, definitions, schema]); + + const disableUpstream = useMemo(() => { + if (disableCheckboxOptions(subItemSchema)) { + console.log(subItemSchema); + } + + return disableCheckboxOptions(subItemSchema); + }, [subItemSchema]); + + const options = useMemo(() => upstreamOptions[inputKey], []); + + const isFromUpstream = useCallback( + (index: number) => { + return formsData?.[index]?.fromUpstream ?? false; + }, + [formsData], + ); + + return ( + <> + {checkedFromUpstream ? ( + + ) : ( + +

+ + + + {schema?.title} +
+ + {fields?.map((fieldWithId, index) => { + const { id } = fieldWithId; + const isObject = isObjectType(subItemSchema); + const fromUpstream = isFromUpstream(index); + return ( + + + { + remove(index); + }} + aria-label="Delete" + > + + + + + + + {isObject ? null : ( + + + + )} + + ); + })} + + + )} + + ); + }, +); + +ArrayInput.displayName = "ArrayInput"; + +export { ArrayInput }; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/EnumInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/EnumInput.tsx new file mode 100644 index 00000000..35aecdb4 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/EnumInput.tsx @@ -0,0 +1,32 @@ +import SelectInput from "components/SelectInput"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; +import React from "react"; + +interface EnumInputProps { + schema: EnumProperty; + itemKey: `inputs.${string}`; + definitions: Definitions; +} + +export const EnumInput: React.FC = ({ + schema, + itemKey, + definitions, +}) => { + const typeClass = schema.allOf[0].$ref.split("/").pop() as string; + const definition = definitions?.[typeClass] ? definitions[typeClass] : null; + let enumOptions: string[] = []; + + if (definition && "enum" in definition) { + enumOptions = definition.enum; + } + + return ( + + label={definition?.title ?? itemKey.split(".").pop() ?? ""} + emptyValue + name={itemKey} + options={enumOptions} + /> + ); +}; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx new file mode 100644 index 00000000..78cf2d51 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx @@ -0,0 +1,162 @@ +import CheckboxInput from "components/CheckboxInput"; +import CodeEditorInput from "components/CodeEditorInput"; +import DatetimeInput from "components/DatetimeInput"; +import NumberInput from "components/NumberInput"; +import TextAreaInput from "components/TextAreaInput"; +import TextInput from "components/TextInput"; +import { type WorkflowPieceData } from "features/workflowEditor/context/types"; +import { type UpstreamOptions } from "features/workflowEditor/utils"; +import React, { useMemo } from "react"; + +import { EnumInput } from "./EnumInput"; +import ObjectInputComponent from "./ObjectInput"; +import SelectUpstreamInput from "./SelectUpstreamInput"; +import { + extractCodeEditorLanguage, + getOptionalType, + isBooleanType, + isCodeEditorType, + isDateOrTimeType, + isEnumType, + isNumberType, + isObjectType, + isStringType, + isTextAreaType, +} from "./utils"; + +export * from "./ArrayInput"; + +interface Props { + schema: Property | EnumDefinition; + itemKey: + | `inputs.${string}.value` + | `inputs.${string}.value.${number}` + | `inputs.${string}.value.${number}.value.${string}`; + upstreamOptions: UpstreamOptions; + checkedFromUpstream: boolean | Record; + definitions?: Definitions; + isItemArray?: boolean; + isItemObject?: boolean; +} + +const InputElement: React.FC = React.memo( + ({ + schema, + itemKey, + upstreamOptions, + checkedFromUpstream, + definitions, + isItemArray, + isItemObject, + }) => { + const optionalType = getOptionalType(schema); + + const upstreamKey = useMemo(() => { + if (!!isItemArray || !!isItemObject) { + return itemKey + .replace("inputs.", "") + .replaceAll(".value", "") + .replace(/\.[0-9]/, ".__items"); + } + return itemKey.replace("inputs.", "").replaceAll(".value", ""); + }, [isItemArray, itemKey]); + + if (checkedFromUpstream === true) { + const options = upstreamOptions[upstreamKey]; + const checkboxKey = isItemObject + ? itemKey.replace(/(\.value)(?!.*\.value)/, "fromUpstream") + : itemKey.replace(/\.value$/, ""); + console.log(checkboxKey); + return ( + + ); + } else if (isEnumType(schema, definitions)) { + return ( + + ); + } else if (isNumberType(schema, optionalType)) { + return ( + + name={itemKey} + type={optionalType === "integer" ? "int" : "float"} + label={schema.title} + defaultValue={ + "default" in schema + ? schema?.default ?? (optionalType === "integer" ? 10 : 10.5) + : optionalType === "integer" + ? 10 + : 10.5 + } + /> + ); + } else if (isBooleanType(schema)) { + return ( + name={itemKey} label={schema.title} /> + ); + } else if (isDateOrTimeType(schema, optionalType)) { + return ( + + name={itemKey} + label={schema.title} + type={(schema as StringProperty).format} + /> + ); + } else if (isCodeEditorType(schema, optionalType)) { + const language = extractCodeEditorLanguage(schema as StringProperty); + return ( + + name={itemKey} + language={language} + placeholder={`Enter your ${language} code here.`} + /> + ); + } else if (isTextAreaType(schema, optionalType)) { + return ( + + variant="outlined" + name={itemKey} + label={schema.title} + /> + ); + } else if (isStringType(schema, optionalType)) { + return ( + + variant="outlined" + name={itemKey} + label={schema.title} + /> + ); + } else if ( + isItemArray && + isObjectType(schema as unknown as ObjectDefinition) + ) { + return ( + } + schema={schema as unknown as ObjectDefinition} + inputKey={itemKey as `inputs.${string}.value.${number}`} + upstreamOptions={upstreamOptions} + definitions={definitions} + /> + ); + } else { + return ( +
+ Unknown widget type for {schema.title} +
+ ); + } + }, +); + +InputElement.displayName = "InputElement"; + +export { InputElement }; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ObjectInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ObjectInput.tsx new file mode 100644 index 00000000..cc81fd82 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ObjectInput.tsx @@ -0,0 +1,73 @@ +import { Grid } from "@mui/material"; +import CheckboxInput from "components/CheckboxInput"; +import { + disableCheckboxOptions, + type UpstreamOptions, +} from "features/workflowEditor/utils"; +import React, { useCallback } from "react"; + +import { InputElement } from "./InputElement"; + +interface Prop { + // inputs.input_args.value.0 + inputKey: `inputs.${string}.value.${number}`; + schema: ObjectDefinition; + definitions?: Definitions; + upstreamOptions: UpstreamOptions; + fromUpstream: Record; +} + +const ObjectInputComponent: React.FC = ({ + schema, + inputKey, + upstreamOptions, + definitions, + fromUpstream, +}) => { + const isFromUpstream = useCallback( + (key: string) => { + const value = fromUpstream[key]; + return value; + }, + [fromUpstream], + ); + + return ( + <> + {Object.entries(schema.properties).map(([key, property]) => { + const disableUpstream = disableCheckboxOptions(property as any); + const checkedFromUpstream = isFromUpstream(key); + + return ( + + + + + + + + + ); + })} + + ); +}; + +export default ObjectInputComponent; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/SelectUpstreamInput.tsx similarity index 100% rename from frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/selectUpstreamInput.tsx rename to frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/SelectUpstreamInput.tsx diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/index.ts b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/index.ts new file mode 100644 index 00000000..480e9bd5 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/index.ts @@ -0,0 +1,3 @@ +export { ArrayInput } from "./ArrayInput"; +export { isArrayInput } from "./utils"; +export { InputElement } from "./InputElement"; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/utils.ts b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/utils.ts new file mode 100644 index 00000000..9d7c3676 --- /dev/null +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/utils.ts @@ -0,0 +1,117 @@ +export const getOptionalType = ( + property: Property | EnumDefinition | EnumDefinition, +): TypeName | FormatType | undefined => { + if ("anyOf" in property && property.anyOf.length === 2) { + const hasNullType = property.anyOf.some((item) => item.type === "null"); + if (hasNullType) { + const itemSchema = property.anyOf.find( + (itemSchema) => itemSchema.type !== "null", + ) as SimpleProperty; + + return "format" in itemSchema ? itemSchema.format : itemSchema?.type; + } + } +}; + +export const isStringType = ( + property: Property | EnumDefinition, + anyOfType?: TypeName | WidgetType | FormatType, +) => { + return ( + ("type" in property && property.type === "string") || anyOfType === "string" + ); +}; + +export const isEnumType = ( + property: Property | EnumDefinition, + definitions?: Definitions, +) => { + return "allOf" in property && property.allOf.length > 0 && definitions; +}; + +export const isNumberType = ( + property: Property | EnumDefinition, + anyOfType?: TypeName | FormatType, +) => { + return ( + ("type" in property && property.type === "number" && !anyOfType) || + anyOfType === "number" || + ("type" in property && property.type === "integer" && !anyOfType) || + anyOfType === "integer" + ); +}; + +export const isBooleanType = (property: Property | EnumDefinition) => { + return "type" in property && property.type === "boolean"; +}; + +export const isDateOrTimeType = ( + property: Property | EnumDefinition, + anyOfType?: TypeName | WidgetType | FormatType, +) => { + return ( + ("type" in property && + "format" in property && + property.type === "string" && + property.format === "date" && + !anyOfType) || + anyOfType === "date" || + ("type" in property && + "format" in property && + property.type === "string" && + property.format === "time" && + !anyOfType) || + anyOfType === "time" || + ("type" in property && + "format" in property && + property.type === "string" && + property.format === "date-time" && + !anyOfType) || + anyOfType === "date-time" + ); +}; + +export const isCodeEditorType = ( + property: Property | EnumDefinition, + anyOfType?: TypeName | FormatType, +) => { + return ( + ("type" in property && + "widget" in property && + property.type === "string" && + property.widget?.includes("codeeditor")) ?? + (anyOfType === "string" && + (property as StringProperty).widget?.includes("codeeditor")) + ); +}; + +export const isTextAreaType = ( + property: Property | EnumDefinition, + anyOfType?: TypeName | FormatType, +) => { + return ( + "widget" in property && + property.widget === "textarea" && + anyOfType === "string" + ); +}; + +export const isArrayInput = ( + property: Property | EnumDefinition, + optionalType?: TypeName | FormatType, +) => { + return ( + ("type" in property && property.type === "array") || + (optionalType && optionalType === "array") + ); +}; + +export const isObjectType = (property: ObjectDefinition) => { + return "type" in property && property.type === "object"; +}; + +export const extractCodeEditorLanguage = (property: StringProperty) => { + return property?.widget?.includes("codeeditor-") + ? property.widget.replace("codeeditor-", "") + : "python"; +}; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx deleted file mode 100644 index 857ed252..00000000 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/arrayInput.tsx +++ /dev/null @@ -1,346 +0,0 @@ -import AddIcon from "@mui/icons-material/Add"; -import DeleteIcon from "@mui/icons-material/Delete"; -import { Card, CardContent, IconButton, Grid } from "@mui/material"; -import CheckboxInput from "components/CheckboxInput"; -import CodeEditorInput from "components/CodeEditorInput"; -import DatetimeInput from "components/DatetimeInput"; -import NumberInput from "components/NumberInput"; -import SelectInput from "components/SelectInput"; -import TextInput from "components/TextInput"; -import { - type InputArray, - type WorkflowPieceData, -} from "features/workflowEditor/context/types"; -import { - type UpstreamOptions, - getFromUpstream, -} from "features/workflowEditor/utils"; -import React, { useCallback, useMemo, useState } from "react"; -import { - type Control, - type FieldArrayWithId, - useFieldArray, - useWatch, -} from "react-hook-form"; - -import { disableCheckboxOptions } from "./disableCheckboxOptions"; -import ObjectInputComponent from "./objectInput"; -import SelectUpstreamInput from "./selectUpstreamInput"; - -interface ArrayInputItemProps { - formId: string; - inputKey: string; - schema: any; - control: Control; - definitions?: any; - upstreamOptions: UpstreamOptions; -} - -const ArrayInput: React.FC = ({ - inputKey, - schema, - upstreamOptions, - definitions, - control, -}) => { - const name: `inputs.${string}.value` = `inputs.${inputKey}.value`; - const { - fields: data, - append, - remove, - } = useFieldArray({ - name, - control, - }); - const fields = data as unknown as Array>; - const formsData = useWatch({ name }); - - const [enumOptions, setEnumOptions] = useState([]); - - if ("anyOf" in schema && schema.anyOf.length === 2) { - const hasNullType = schema.anyOf.some((item: any) => item.type === "null"); - if (hasNullType) { - const notNullAnyOf = schema.anyOf.find( - (item: any) => item.type !== "null", - ); - schema.items = notNullAnyOf.items; - } - } - - const subItemSchema = useMemo(() => { - let subItemSchema: any = schema?.items; - if (schema?.items?.$ref) { - const subItemSchemaName = schema.items.$ref.split("/").pop(); - subItemSchema = definitions?.[subItemSchemaName]; - } - return subItemSchema; - }, [definitions, schema]); - - const disableUpstream = useMemo(() => { - return disableCheckboxOptions(subItemSchema); - }, [subItemSchema]); - - const isFromUpstream = useCallback( - (index: number) => { - return formsData?.[index]?.fromUpstream ?? false; - }, - [formsData], - ); - - const elementType = useMemo(() => { - if (subItemSchema?.allOf && subItemSchema.allOf.length > 0) { - const typeClass = subItemSchema.allOf[0].$ref.split("/").pop(); - const valuesOptions: string[] = definitions?.[typeClass].enum; - setEnumOptions(valuesOptions); - return "SelectInput"; - } else if (subItemSchema?.type === "number" && !subItemSchema?.format) { - return "NumberInput"; - } else if (subItemSchema?.type === "integer" && !subItemSchema?.format) { - return "NumberInputInt"; - } else if (subItemSchema?.type === "boolean" && !subItemSchema?.format) { - return "CheckboxInput"; - } else if ( - subItemSchema?.type === "string" && - !subItemSchema?.format && - !subItemSchema?.widget - ) { - return "TextInput"; - } else if ( - subItemSchema?.type === "string" && - subItemSchema?.format === "date" - ) { - return "DateInput"; - } else if ( - subItemSchema?.type === "string" && - subItemSchema?.format === "time" - ) { - return "TimeInput"; - } else if ( - subItemSchema?.type === "string" && - subItemSchema?.format === "date-time" - ) { - return "DatetimeInput"; - } else if ( - subItemSchema?.type === "string" && - subItemSchema?.widget.includes("codeeditor") - ) { - return "CodeEditorInput"; - } else if (subItemSchema?.type === "object") { - return "ObjectInput"; - } else { - return "Unknown"; - } - }, [subItemSchema, definitions]); - - const handleAddInput = useCallback(() => { - function empty(object: Record, fromUpstream = false) { - Object.keys(object).forEach(function (k) { - if (object[k] && typeof object[k] === "object") { - return empty(object[k]); - } - if (fromUpstream) { - object[k] = getFromUpstream(schema, definitions, k); - } else { - object[k] = ""; - } - }); - return object; - } - const defaultValue = schema.default === null ? "" : schema.default[0]; - const isObject = typeof defaultValue === "object"; - let defaultObj = { - fromUpstream: getFromUpstream(schema), - upstreamArgument: "", - upstreamId: "", - upstreamValue: "", - value: "", - } as unknown; - - if (isObject) { - const emptyObjValue = empty({ ...defaultValue }); - const emptyObjFromUpstream = empty({ ...defaultValue }, true); - defaultObj = { - fromUpstream: emptyObjFromUpstream, - upstreamArgument: emptyObjValue, - upstreamId: emptyObjValue, - upstreamValue: emptyObjValue, - value: defaultValue, - } as unknown; - } - - append([defaultObj] as any); - }, [append, definitions, schema]); - - return ( - -
- - - - {schema?.title} -
- - {fields?.map((fieldWithId, index) => { - const { id } = fieldWithId; - const fromUpstream = isFromUpstream(index); - return ( - - - { - remove(index); - }} - aria-label="Delete" - > - - - - - {fromUpstream && elementType !== "ObjectInput" && ( - - - - )} - {!fromUpstream && elementType === "SelectInput" && ( - - - - )} - {!fromUpstream && elementType === "NumberInput" && ( - - - - )} - {!fromUpstream && elementType === "NumberInputInt" && ( - - - - )} - {!fromUpstream && elementType === "CheckboxInput" && ( - - - - )} - {!fromUpstream && elementType === "TextInput" && ( - - - - )} - {!fromUpstream && elementType === "DateInput" && ( - - - - )} - {!fromUpstream && elementType === "TimeInput" && ( - - - - )} - {!fromUpstream && elementType === "DatetimeInput" && ( - - - - )} - {!fromUpstream && elementType === "CodeEditorInput" && ( - - - - )} - {!fromUpstream && elementType === "Unknown" && ( - -
- Unknown widget type for {subItemSchema?.title} -
-
- )} - - {elementType !== "ObjectInput" && ( - - - - )} - - {elementType === "ObjectInput" && ( - - - - )} -
- ); - })} -
-
- ); -}; - -export default React.memo(ArrayInput); diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx index 371380b9..0c60c05a 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/index.tsx @@ -1,39 +1,26 @@ import { Box, Grid } from "@mui/material"; import CheckboxInput from "components/CheckboxInput"; -import CodeEditorInput from "components/CodeEditorInput"; -import DatetimeInput from "components/DatetimeInput"; -import NumberInput from "components/NumberInput"; -import SelectInput from "components/SelectInput"; -import TextAreaInput from "components/TextAreaInput"; -import TextInput from "components/TextInput"; -import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { - type Option, + disableCheckboxOptions, type UpstreamOptions, } from "features/workflowEditor/utils"; import React, { useMemo } from "react"; -import { type Control, useWatch } from "react-hook-form"; +import { useWatch } from "react-hook-form"; -import ArrayInput from "./arrayInput"; -import { disableCheckboxOptions } from "./disableCheckboxOptions"; -import SelectUpstreamInput from "./selectUpstreamInput"; +import { InputElement, ArrayInput, isArrayInput } from "./InputElement"; interface PieceFormItemProps { - formId: string; schema: Property; itemKey: string; - control: Control; definitions?: Definitions; upstreamOptions: UpstreamOptions; } const PieceFormItem: React.FC = ({ - formId, upstreamOptions, itemKey, schema, definitions, - control, }) => { const disableUpstream = useMemo(() => { return disableCheckboxOptions(schema); @@ -43,190 +30,6 @@ const PieceFormItem: React.FC = ({ name: `inputs.${itemKey}.fromUpstream`, }); - let inputElement: React.ReactNode = null; - - let anyOfType = ""; - if ("anyOf" in schema && schema.anyOf.length === 2) { - const hasNullType = schema.anyOf.some((item) => item.type === "null"); - if (hasNullType) { - for (const itemSchema of schema.anyOf) { - if (itemSchema.type !== "null") { - anyOfType = - "format" in itemSchema && itemSchema.format - ? itemSchema.format - : itemSchema.type; - } - } - } - } - - if (checkedFromUpstream) { - const options: Option[] = upstreamOptions[itemKey] ?? []; - inputElement = ( - - ); - } else if ("allOf" in schema && schema.allOf.length > 0) { - const typeClass = schema.allOf[0].$ref.split("/").pop() as string; - let enumOptions: string[] = []; - - if (definitions?.[typeClass] && definitions[typeClass].type === "string") { - enumOptions = (definitions[typeClass] as EnumDefinition).enum; - } - - inputElement = ( - - label={itemKey} - emptyValue - name={`inputs.${itemKey}.value`} - options={enumOptions} - /> - ); - } else if ( - ("type" in schema && schema.type === "number") || - anyOfType === "float" - ) { - inputElement = ( - - name={`inputs.${itemKey}.value`} - type="float" - label={schema.title} - defaultValue={schema?.default ?? 10.5} - /> - ); - } else if ( - ("type" in schema && schema.type === "integer") || - anyOfType === "integer" - ) { - inputElement = ( - - name={`inputs.${itemKey}.value`} - type="int" - label={schema.title} - defaultValue={schema?.default ?? 10} - /> - ); - } else if ("type" in schema && schema.type === "boolean") { - inputElement = ( - - name={`inputs.${itemKey}.value`} - label={schema.title} - /> - ); - } else if ( - ("type" in schema && schema.type === "array") || - anyOfType === "array" - ) { - inputElement = ( - - ); - } else if ( - ("type" in schema && - "format" in schema && - schema.type === "string" && - schema.format === "date") || - anyOfType === "date" - ) { - inputElement = ( - - name={`inputs.${itemKey}.value`} - label={schema.title} - type="date" - /> - ); - } else if ( - ("type" in schema && - "format" in schema && - schema.type === "string" && - schema.format === "time") || - anyOfType === "time" - ) { - inputElement = ( - - name={`inputs.${itemKey}.value`} - label={schema.title} - type="time" - /> - ); - } else if ( - ("type" in schema && - "format" in schema && - schema.type === "string" && - schema.format === "date-time") || - anyOfType === "date-time" - ) { - inputElement = ( - - name={`inputs.${itemKey}.value`} - label={schema.title} - type="date-time" - /> - ); - } else if ( - ("type" in schema && - "widget" in schema && - schema.type === "string" && - schema.widget?.includes("codeeditor")) ?? - ("widget" in schema && - schema.widget?.includes("codeeditor") && - anyOfType === "string") - ) { - const language = schema.widget.includes("codeeditor-") - ? schema.widget.replace("codeeditor-", "") - : "python"; - - inputElement = ( - - name={`inputs.${itemKey}.value`} - language={language} - placeholder={`Enter your ${language} code here.`} - /> - ); - } else if ( - ("type" in schema && - "widget" in schema && - schema.type === "string" && - schema.widget === "textarea") || - (anyOfType === "string" && - "widget" in schema && - schema?.widget === "textarea") - ) { - inputElement = ( - - variant="outlined" - name={`inputs.${itemKey}.value`} - label={schema.title} - /> - ); - } else if ( - ("type" in schema && !("format" in schema) && schema.type === "string") || - anyOfType === "string" - ) { - inputElement = ( - - variant="outlined" - name={`inputs.${itemKey}.value`} - label={schema.title} - /> - ); - } else { - inputElement = ( -
- Unknown widget type for {schema.title} -
- ); - } - return ( = ({ sx={{ paddingTop: "10px" }} > - {inputElement} + {isArrayInput(schema) ? ( + + ) : ( + + )} diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx deleted file mode 100644 index b801552b..00000000 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/objectInput.tsx +++ /dev/null @@ -1,136 +0,0 @@ -import { Grid } from "@mui/material"; -import CheckboxInput from "components/CheckboxInput"; -import SelectInput from "components/SelectInput"; -import TextInput from "components/TextInput"; -import { type UpstreamOptions } from "features/workflowEditor/utils"; -import React, { useCallback, useMemo, useState } from "react"; -import { useWatch } from "react-hook-form"; -import { getDefinition } from "utils"; - -import { disableCheckboxOptions } from "./disableCheckboxOptions"; -import SelectUpstreamInput from "./selectUpstreamInput"; - -interface Prop { - name: `inputs.${string}.value.${number}`; - inputKey: string; - schema: ArrayObjectProperty; - definitions: Definitions; - upstreamOptions: UpstreamOptions; -} - -const ObjectInputComponent: React.FC = ({ - schema, - name, - inputKey, - upstreamOptions, - definitions, -}) => { - const formsData = useWatch({ name }); - - const itensSchema = useMemo(() => { - return (getDefinition(schema, definitions) as ObjectDefinition).properties; - }, [schema, definitions]); - - const [enumOptions, setEnumOptions] = useState([]); - - const isFromUpstream = useCallback( - (key: string) => { - return (formsData?.fromUpstream[key] ?? false) as boolean; - }, - [formsData], - ); - - const defaultValues = useMemo(() => { - const defaultValues = schema.default ? schema.default[0] : {}; - - return (defaultValues ?? {}) as Record; - }, [schema]); - - const elementType = useMemo(() => { - const schemaDefinition = getDefinition(schema, definitions); - const getElementType = function (key: string, schemaDefinition: any) { - if ("properties" in schemaDefinition) { - let itemSchemaDefinition: any = getDefinition( - schemaDefinition.properties[key], - definitions, - ); - if ("$ref" in itemSchemaDefinition) { - const definitionKeyName = itemSchemaDefinition.$ref.split("/").pop(); - itemSchemaDefinition = definitions[definitionKeyName]; - } - if ("enum" in itemSchemaDefinition) { - const valuesOptions = itemSchemaDefinition.enum; - setEnumOptions(valuesOptions); - return "SelectInput"; - } - return "TextInput"; - } else { - return "TextInput"; - } - }; - - return Object.keys( - (schemaDefinition as ObjectDefinition).properties, - ).reduce>((acc, cur) => { - acc[cur] = getElementType(cur, schemaDefinition); - return acc; - }, {}); - }, [defaultValues, schema, definitions]); - - return ( - <> - {Object.entries(elementType).map(([key]) => { - const fromUpstream = isFromUpstream(key); - const disableUpstream = disableCheckboxOptions(itensSchema[key] as any); - - return ( - - {fromUpstream ? ( - - - - ) : ( - - {elementType[key] === "TextInput" && ( - - )} - {elementType[key] === "SelectInput" && ( - - )} - - )} - - - - - ); - })} - - ); -}; - -export default ObjectInputComponent; diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx index 7d08be19..fb07b88b 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/index.tsx @@ -1,11 +1,9 @@ import { useWorkflowsEditor } from "features/workflowEditor/context"; -import { type WorkflowPieceData } from "features/workflowEditor/context/types"; import { getUpstreamOptions, type UpstreamOptions, } from "features/workflowEditor/utils"; import React, { useCallback, useEffect, useMemo, useState } from "react"; -import { useFormContext } from "react-hook-form"; import PieceFormItem from "./PieceFormItem"; @@ -16,7 +14,6 @@ interface PieceFormProps { const PieceForm: React.FC = ({ formId, schema }) => { const { getWorkflowEdges, getWorkflowPieces } = useWorkflowsEditor(); - const { control } = useFormContext(); const [upstreamOptions, setUpstreamOptions] = useState({}); const shouldRender = useMemo(() => { @@ -51,10 +48,8 @@ const PieceForm: React.FC = ({ formId, schema }) => { {Object.keys(schema.properties).map((key) => (
diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/disableCheckboxOptions.ts b/frontend/src/features/workflowEditor/utils/disableCheckboxOptions.ts similarity index 100% rename from frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/disableCheckboxOptions.ts rename to frontend/src/features/workflowEditor/utils/disableCheckboxOptions.ts diff --git a/frontend/src/features/workflowEditor/utils/index.ts b/frontend/src/features/workflowEditor/utils/index.ts index 21ef6754..69ddd2b2 100644 --- a/frontend/src/features/workflowEditor/utils/index.ts +++ b/frontend/src/features/workflowEditor/utils/index.ts @@ -4,3 +4,4 @@ export * from "./jsonSchema"; export * from "./upstreamOptions"; export * from "./validation"; export * from "./graph"; +export * from "./disableCheckboxOptions"; diff --git a/frontend/src/features/workflowEditor/utils/jsonSchema.ts b/frontend/src/features/workflowEditor/utils/jsonSchema.ts index 112edf48..93f37115 100644 --- a/frontend/src/features/workflowEditor/utils/jsonSchema.ts +++ b/frontend/src/features/workflowEditor/utils/jsonSchema.ts @@ -85,11 +85,9 @@ export const extractDefaultInputValues = (pieceSchema: Piece) => { return defaultInputs; }; -export const extractDefaultValues = ( - schema: Schema, - output: any | null = null, -) => { - output = output === null ? {} : output; +export const extractDefaultValues = (schema: Schema, output?: any) => { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + output = output ?? ({} as Schema); if (!isEmpty(schema) && "properties" in schema) { const properties = schema.properties; @@ -99,9 +97,7 @@ export const extractDefaultValues = ( } if ("default" in value) { - output[key] = value.default; - } else if ("properties" in value) { - output[key] = extractDefaultValues(value as any, output[key]); + output[key] = value.default ?? ""; } else { output[key] = ""; } diff --git a/frontend/src/utils/getDefinition.ts b/frontend/src/utils/getDefinition.ts index fd57183f..8a3532a7 100644 --- a/frontend/src/utils/getDefinition.ts +++ b/frontend/src/utils/getDefinition.ts @@ -1,5 +1,5 @@ export function getDefinition( - schema: InputSchemaProperty | SimpleInputSchemaProperty | EnumDefinition, + schema: Property | SimpleProperty | EnumDefinition, definitions: Definitions, ) { if ("items" in schema && "$ref" in schema.items) { From 70c5eae0564dad9b223d99bd93c6b2c87a9f52ac Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 06:54:34 -0300 Subject: [PATCH 39/60] add print to test --- rest/tests/workflow/test_workflow_router.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rest/tests/workflow/test_workflow_router.py b/rest/tests/workflow/test_workflow_router.py index fade8639..730086f6 100644 --- a/rest/tests/workflow/test_workflow_router.py +++ b/rest/tests/workflow/test_workflow_router.py @@ -21,7 +21,7 @@ "tests.workflow.fixtures" ] @pytest.mark.usefixtures("register", "login", "add_piece_repository", "teardown_piece_repository") -class TestWorkflowRouter: +class TestWorkflowRouter: @staticmethod def test_create_workflow(patch_piece_secret: Response, create_workflow: Response, piece_repository: PieceRepository, user: User): mock_response = CreateWorkflowResponse( @@ -37,9 +37,10 @@ def test_create_workflow(patch_piece_secret: Response, create_workflow: Response content=response.json() mock_response_content=json.loads(mock_response.model_dump_json(by_alias=True)) + print('RESPONSE', response.json()) assert response.status_code == 201 assert content.keys() == mock_response_content.keys() - + assert content.get("name") == mock_response_content.get("name") assert content.get("created_by") == mock_response_content.get("created_by") @@ -82,4 +83,4 @@ def test_delete_workflow(patch_piece_secret: Response, create_workflow: Response assert response.status_code == 204 #TODO assert not found with get workflow - + From 2c104e3f281352e1bd6f90a2c2f351f5b4c5794c Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 06:55:17 -0300 Subject: [PATCH 40/60] trigger --- .github/workflows/integration-tests-api.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/integration-tests-api.yml b/.github/workflows/integration-tests-api.yml index baac7950..2dc42541 100644 --- a/.github/workflows/integration-tests-api.yml +++ b/.github/workflows/integration-tests-api.yml @@ -5,7 +5,7 @@ on: branches: - main - dev - - test/* + - test jobs: api-tests: @@ -55,7 +55,7 @@ jobs: DOMINO_GITHUB_ACCESS_TOKEN_WORKFLOWS: ${{ secrets.TESTS_GITHUB_WORKFLOWS_TOKEN }} DOMINO_GITHUB_WORKFLOWS_REPOSITORY: ${{secrets.TESTS_WORKFLOWS_REPOSITORY}} run: pytest --cov=rest --cov-report=xml --cov-report=term-missing rest/tests/ -v -s - + - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 env: From d00a5ba994814be62bfd0e2397165e3ce0e709d7 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 07:02:33 -0300 Subject: [PATCH 41/60] increase timeout --- src/domino/cli/utils/platform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/cli/utils/platform.py b/src/domino/cli/utils/platform.py index 86b6bf0d..f24bcc21 100644 --- a/src/domino/cli/utils/platform.py +++ b/src/domino/cli/utils/platform.py @@ -225,7 +225,7 @@ def create_platform(install_airflow: bool = True, use_gpu: bool = False) -> None console.print("") console.print("Installing NGINX controller...") subprocess.run(["kubectl", "apply", "-f", "https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml"], stdout=subprocess.DEVNULL) - result = subprocess.run(["kubectl", "wait", "--namespace", "ingress-nginx", "--for", "condition=ready", "pod", "--selector=app.kubernetes.io/component=controller", "--timeout=180s"]) + result = subprocess.run(["kubectl", "wait", "--namespace", "ingress-nginx", "--for", "condition=ready", "pod", "--selector=app.kubernetes.io/component=controller", "--timeout=660s"]) if result.returncode != 0: error_message = result.stderr.strip() if result.stderr else result.stdout.strip() raise Exception("An error occurred while installing NGINX controller: {error_message}") From 0e1847afddda78c94377defb92152aba882b4ccb Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 07:13:21 -0300 Subject: [PATCH 42/60] test --- rest/services/auth_service.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/rest/services/auth_service.py b/rest/services/auth_service.py index 7ac095c2..57cad67f 100644 --- a/rest/services/auth_service.py +++ b/rest/services/auth_service.py @@ -4,7 +4,7 @@ from passlib.context import CryptContext import jwt from schemas.errors.base import ForbiddenError, ResourceNotFoundError -from core.settings import settings +from core.settings import settings from schemas.context.auth_context import AuthorizationContextData, WorkspaceAuthorizerData from repository.user_repository import UserRepository from repository.workspace_repository import WorkspaceRepository @@ -102,7 +102,7 @@ def wrapper(*args, **kwargs): workspace_associative_data = cls.workspace_repository.find_by_id_and_user_id(id=repository.workspace_id, user_id=auth_context.user_id) if not workspace_associative_data: raise HTTPException(status_code=ResourceNotFoundError().status_code, detail=ResourceNotFoundError().message) - + if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) @@ -118,7 +118,7 @@ def wrapper(*args, **kwargs): @classmethod def workspace_access_authorizer( - cls, + cls, workspace_id: Optional[int], auth: HTTPAuthorizationCredentials = Security(security), ): @@ -126,13 +126,13 @@ def workspace_access_authorizer( if not workspace_id: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) workspace_associative_data = cls.workspace_repository.find_by_id_and_user_id( - id=workspace_id, + id=workspace_id, user_id=auth_context.user_id ) if not workspace_associative_data: raise HTTPException( - status_code=ResourceNotFoundError().status_code, - detail=ResourceNotFoundError(message='Workspace not found').message + status_code=400,#ResourceNotFoundError().status_code, + detail="error test",#ResourceNotFoundError(message='Workspace not found').message ) if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) @@ -148,7 +148,7 @@ def workspace_access_authorizer( user_permission=workspace_associative_data.permission ) return auth_context - + @classmethod def workspace_owner_access_authorizer_body( cls, @@ -157,7 +157,7 @@ def workspace_owner_access_authorizer_body( ): workspace_id = body.get('workspace_id') return cls.workspace_owner_access_authorizer(workspace_id=workspace_id, auth=auth) - + @classmethod def workspace_owner_access_authorizer( @@ -169,12 +169,12 @@ def workspace_owner_access_authorizer( if not workspace_id: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) workspace_associative_data = cls.workspace_repository.find_by_id_and_user_id( - id=workspace_id, + id=workspace_id, user_id=auth_context.user_id ) if not workspace_associative_data: raise HTTPException(status_code=ResourceNotFoundError().status_code, detail=ResourceNotFoundError().message) - + if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) @@ -213,7 +213,7 @@ def piece_repository_workspace_owner_access_authorizer( if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) - + if workspace_associative_data and workspace_associative_data.status != UserWorkspaceStatus.accepted.value: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) @@ -233,7 +233,7 @@ def wrapper(*args, **kwargs): workspace_associative_data = cls.workspace_repository.find_by_id_and_user_id(id=workspace_id, user_id=auth_context.user_id) if not workspace_associative_data: raise HTTPException(status_code=ResourceNotFoundError().status_code, detail=ResourceNotFoundError().message) - + if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) @@ -262,7 +262,7 @@ def wrapper(*args, **kwargs): if workspace_associative_data.permission != Permission.owner.value: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) - + if workspace_associative_data and workspace_associative_data.status != UserWorkspaceStatus.accepted.value: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) return func(*args, **kwargs) From 736ceef17b05a3cc90808d509f8916f7aff4d00e Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 07:18:23 -0300 Subject: [PATCH 43/60] secret msg --- rest/services/secret_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest/services/secret_service.py b/rest/services/secret_service.py index 957926c0..accc21bf 100644 --- a/rest/services/secret_service.py +++ b/rest/services/secret_service.py @@ -66,7 +66,7 @@ def update_repository_secret( self.logger.info(f"Updating secret {secret_id} for repository {piece_repository_id}") secret = self.secret_repository.find_by_id(id=secret_id) if not secret: - raise ResourceNotFoundException() + raise ResourceNotFoundException("Secret not found.") if not body.value: secret.value = None From d06784d6ac62c9ed0e15ace5192451619a988eef Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 07:31:49 -0300 Subject: [PATCH 44/60] update piece repo test version --- rest/routers/workflow_router.py | 2 +- rest/services/auth_service.py | 4 ++-- rest/tests/conftest.py | 2 +- rest/tests/piece/fixtures.py | 2 +- rest/tests/workflow/create_workflow_request_model.py | 2 +- rest/tests/workflow/fixtures.py | 1 + rest/tests/workspace/fixtures.py | 8 ++++---- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/rest/routers/workflow_router.py b/rest/routers/workflow_router.py index 04ddf78f..e8625987 100644 --- a/rest/routers/workflow_router.py +++ b/rest/routers/workflow_router.py @@ -216,7 +216,7 @@ def list_run_tasks( ) except (BaseException, ForbiddenException, ResourceNotFoundException) as e: raise HTTPException(status_code=e.status_code, detail=e.message) - + @router.get( "/{workflow_id}/runs/{workflow_run_id}/tasks/report", status_code=200, diff --git a/rest/services/auth_service.py b/rest/services/auth_service.py index 57cad67f..9aa6c261 100644 --- a/rest/services/auth_service.py +++ b/rest/services/auth_service.py @@ -131,8 +131,8 @@ def workspace_access_authorizer( ) if not workspace_associative_data: raise HTTPException( - status_code=400,#ResourceNotFoundError().status_code, - detail="error test",#ResourceNotFoundError(message='Workspace not found').message + status_code=ResourceNotFoundError().status_code, + detail=ResourceNotFoundError(message='Workspace not found').message ) if workspace_associative_data and not workspace_associative_data.permission: raise HTTPException(status_code=ForbiddenError().status_code, detail=ForbiddenError().message) diff --git a/rest/tests/conftest.py b/rest/tests/conftest.py index 8e45f8bf..a5137d6e 100644 --- a/rest/tests/conftest.py +++ b/rest/tests/conftest.py @@ -55,7 +55,7 @@ def piece_repository(): id=1, source="github", path="Tauffer-Consulting/default_domino_pieces_tests", - version="0.0.3", + version="0.0.4", workspace_id=1, url='https://github.com/Tauffer-Consulting/default_domino_pieces_tests' ) diff --git a/rest/tests/piece/fixtures.py b/rest/tests/piece/fixtures.py index 405cd93b..3f2914e8 100644 --- a/rest/tests/piece/fixtures.py +++ b/rest/tests/piece/fixtures.py @@ -47,7 +47,7 @@ def get_pieces_mock_response(piece_repository: PieceRepository): }, repository_url='https://github.com/Tauffer-Consulting/default_domino_pieces_tests', source_url='https://github.com/Tauffer-Consulting/default_domino_pieces_tests/tree/main/pieces/SimpleLogPiece', - source_image = "ghcr.io/tauffer-consulting/default_domino_pieces_tests:0.0.3-group0", + source_image = "ghcr.io/tauffer-consulting/default_domino_pieces_tests:0.0.4-group0", input_schema = { "title": "SimpleLogPiece", "description": "Example Operator", diff --git a/rest/tests/workflow/create_workflow_request_model.py b/rest/tests/workflow/create_workflow_request_model.py index 07e7755a..99f36ffa 100644 --- a/rest/tests/workflow/create_workflow_request_model.py +++ b/rest/tests/workflow/create_workflow_request_model.py @@ -393,7 +393,7 @@ "task_id": "SimpleLogP_0298c1669d404e08b631ebe1490e1c45", "piece": { "name": "SimpleLogPiece", - "source_image": "ghcr.io/tauffer-consulting/default_domino_pieces_tests:0.0.3-group0" + "source_image": "ghcr.io/tauffer-consulting/default_domino_pieces_tests:0.0.4-group0" }, "workflow_shared_storage": { "source": "None", diff --git a/rest/tests/workflow/fixtures.py b/rest/tests/workflow/fixtures.py index da45584d..59dfd162 100644 --- a/rest/tests/workflow/fixtures.py +++ b/rest/tests/workflow/fixtures.py @@ -63,6 +63,7 @@ def edit_workflow_request_model(client: ApiTestClient, authorization_token: Dict headers = {"Authorization": authorization_token["header"]}, params = {"name__like": "SimpleLogPiece"} ) + print('edit workflow request response', response.json()) possible_pieces = response.json() example_piece = [i for i in possible_pieces if i["name"]=="SimpleLogPiece"][0] diff --git a/rest/tests/workspace/fixtures.py b/rest/tests/workspace/fixtures.py index a5128dd4..a444849d 100644 --- a/rest/tests/workspace/fixtures.py +++ b/rest/tests/workspace/fixtures.py @@ -90,9 +90,9 @@ def invite_user(client: ApiTestClient, authorization_token: Dict, workspace: Wor @pytest.fixture(scope='function') def accept_invite( - client: ApiTestClient, + client: ApiTestClient, login_user_extra: Response, - authorization_token_user_extra: Dict, + authorization_token_user_extra: Dict, workspace: Workspace, ): return client.post( @@ -103,9 +103,9 @@ def accept_invite( @pytest.fixture(scope='function') def reject_invite( - client: ApiTestClient, + client: ApiTestClient, login_user_extra: Response, - authorization_token_user_extra: Dict, + authorization_token_user_extra: Dict, workspace: Workspace ): return client.post( From c1c50ccdd320746d4e35a9080df9b275ac0eacb3 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 08:20:58 -0300 Subject: [PATCH 45/60] LOGS --- rest/tests/workflow/fixtures.py | 1 - rest/tests/workflow/test_workflow_router.py | 1 - 2 files changed, 2 deletions(-) diff --git a/rest/tests/workflow/fixtures.py b/rest/tests/workflow/fixtures.py index 59dfd162..da45584d 100644 --- a/rest/tests/workflow/fixtures.py +++ b/rest/tests/workflow/fixtures.py @@ -63,7 +63,6 @@ def edit_workflow_request_model(client: ApiTestClient, authorization_token: Dict headers = {"Authorization": authorization_token["header"]}, params = {"name__like": "SimpleLogPiece"} ) - print('edit workflow request response', response.json()) possible_pieces = response.json() example_piece = [i for i in possible_pieces if i["name"]=="SimpleLogPiece"][0] diff --git a/rest/tests/workflow/test_workflow_router.py b/rest/tests/workflow/test_workflow_router.py index 730086f6..fa842ba1 100644 --- a/rest/tests/workflow/test_workflow_router.py +++ b/rest/tests/workflow/test_workflow_router.py @@ -37,7 +37,6 @@ def test_create_workflow(patch_piece_secret: Response, create_workflow: Response content=response.json() mock_response_content=json.loads(mock_response.model_dump_json(by_alias=True)) - print('RESPONSE', response.json()) assert response.status_code == 201 assert content.keys() == mock_response_content.keys() From d57effc031325e957e3e57591f56a96491b64dfe Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 09:12:58 -0300 Subject: [PATCH 46/60] tests --- .github/workflows/integration-tests-api.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/integration-tests-api.yml b/.github/workflows/integration-tests-api.yml index 2dc42541..baa5faaf 100644 --- a/.github/workflows/integration-tests-api.yml +++ b/.github/workflows/integration-tests-api.yml @@ -5,7 +5,7 @@ on: branches: - main - dev - - test + - test/* jobs: api-tests: From 699ac18457936f8a96e78cbedf8a256b25a3c8d4 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 12:06:46 -0300 Subject: [PATCH 47/60] update logos --- frontend/public/assets/logo2.png | Bin 83697 -> 0 bytes frontend/public/assets/logo3.png | Bin 15423 -> 0 bytes frontend/public/assets/main_logo_black.png | Bin 0 -> 48797 bytes frontend/public/assets/main_logo_white.png | Bin 0 -> 48286 bytes frontend/public/assets/symbol_black.png | Bin 0 -> 27600 bytes frontend/public/assets/symbol_white.png | Bin 0 -> 27481 bytes .../PrivateLayout/header/drawerMenu.tsx | 4 ++-- .../features/auth/pages/signIn/signInPage.tsx | 6 +++++- .../features/auth/pages/signUp/signUpPage.tsx | 6 +++++- 9 files changed, 12 insertions(+), 4 deletions(-) delete mode 100644 frontend/public/assets/logo2.png delete mode 100644 frontend/public/assets/logo3.png create mode 100644 frontend/public/assets/main_logo_black.png create mode 100644 frontend/public/assets/main_logo_white.png create mode 100644 frontend/public/assets/symbol_black.png create mode 100644 frontend/public/assets/symbol_white.png diff --git a/frontend/public/assets/logo2.png b/frontend/public/assets/logo2.png deleted file mode 100644 index 53ada5869f28a570f4d0ac474456c364afdfd9d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83697 zcmeFaXH-+$_6NEtf{h>+u!P$fCwlk(iKJNRYZE|AT8FQND)v(5Nx1=G?Cuo z35tji6$PY*B0=dOy}h}^Y2=Rk;XlTEAKn-@hauc#ueIiy^*865EBE?weNB$_JJ%x! z!l89c!w^9>c_0YutF>(K&TO|ZC;Yl`;gqqrp^cva-qZb@ql>+OcL3gAz~0~S9D?|_ z7)7>okY(0h=}dSej8$dZr@u?oP`-cWjYs;sP8RIi_Cxd2%KiJTx0{3y|A_qKvtfs* zlGyqjf@Zc-ajB=o^RZ+t`}GvQ9NNc?8}!QOxwyOP6gr=@*`F!j{d<4O&T~DtgKl>7 zrw%OH84LBZ&)nI=z2!ywW&~Nk-VvxW*3(t8b9a@pIqPm~FXiuw2XYZaS=AqJW9Mw| zEnsW!;OKTxXr#1KNWk&zL7_AI^h|Xyk6rMzKY2m_l-&hqJH@j?sw(T1{gq$> zS9@<80e@E)H!mgsgF^IqmEdpmZD}C^`Xk=X2ZfCFjti)}d)f=gNy$mc>^b7^=qoFv zvR**h^Xxe#Lye<ae)7-b=wPMej{f#8#u|>U_HJH4!a*T9Ss6w8Z2x?0@~@Bg z%F4*mKSt+L(sH$Nus`E?*8BXw2LAKOF?&ac^RSuKgA6*k6r&`*Z+wF|EGulr(OSJ*Z+wF|EGulr(OU5V%PeA0G_=Y zpgKQ*Zxd^IGywXsdL7m}wH97MYtM!uhybFcap;tP%V1l(N9(%+!Y7We0pbR%r`c@T zPO~*$Cq!)Y7tYzYU6=LzQT+Ff&)`3ASpnhx`3DKb$vavf^GCZN&PLDQf9H34yi0B1 zjnzr*b##RJuYWpd?*WdkewC$!v8;XvAt4%AhPMzlfo{gPWDqWPhW7|eVK|1jkd10p zObqW?BSIL4w-6Q-%&&fJC;X4Je{tl0T>BR@5afTlwu&A9Z(Hc{OICz5axbkoB5a_u z;tp5tT#c2gM%7ZG)re5{^SJS|+g4dMq1Z`V;xrS|H>0lBV6Is;q+rF*HrG$|k5n4e zmN@V`$0}k!Tm{Si@PitPQD{4&aU(2oUr?=`GCS|Ej>I_Eyx^gwv*B31r{PViI9{kqb zZl+E-t4HXd1?2{5I37e65`KgdAS0WWVD75N1nbY9JWUjK5 zJKo{CCEVQ*Cf&20>v^1~yXGpg2zxhsAcS20K0PlU3KQ{-hSU#dAPVElvud{OvA^pe zNY7U}Jsz&*T@CAS8X7@2!h##*em}5r)q^*+PHN|_M`Q|E%3xs+elC9TpoHqM<~YNb zysO>uTh#Hs_4QX}$NF-4?2FY|N-@-Spsl8^AYhYb70kq z$g^*^MG=C>T@R9=kZrr19s}vf{w=UWuDb!GF2BR8rKk24BFO_!W=yD1@9H^E=>T!N z#i*kej6-gtLkyWQs-lcTG|?d<)KMYEAx7vBS!PW3f2^X84iTb`iZKq^h7Q@xj2U4Z zVx9!5c}k6Bvx#8{=?KcItLtzZwcoAcAyTv*6skyoi5R=dbM-Ez4#WCV8lFP{T`_pk~U^$5}MJ85$Z& zRPDjzG@5)q`B+5kWfxqnMbuv46xE#QmdZr53Yis^Ppq>}nf~=_t3;~5zyCAW4U9XB zMfKeaTeOW0%N>4X(6`h$^R)QvLfyG7l}mHZu4aOaB;7OkV_!39saZ0SkE&_h@9krNAE5Nk8UQtXD^Ma!W$sf9fR3954!L-CEp2 zLiB3nBf~BP7A?a>9NEGk$25JABO9om7o$?dp-Q2~inTn-pcHp^gHmiK5Xb{-8T`vh z5%4b~Fqu5#WM5Fq4y?tMMKMw)3Y3i=WyX*hH7pI)untgHW5&t0qLcl;4wrO|aWY?Y zvh~cEr;HYMGXX?V7EK@rFw$%%3N%ZDrdl#CvmIrC>Lz^AMh3;Pc0mO zGH?v94Pw!~MqrWt4@YnVv@ceGN^)jYi>K%^{p)a}+>Fb7gw1T<&&1xL&Or0_7?|v_ zD3!G73WMi;hzdrV8M9G~amXcfh%l8T!MOeiC=BV@S{z=Ras5DavYpJBq{|H397WN= z%}WFp8l%FNp)UCA7Cdz`BV|qCIUhJNW6Wb1C)){=ozfv)+{s9pG*G5?n-%-)I^&Sd z=nzd9!YH$44G?qsTHNt{jGEy9%zOrtu@hjhv4t=o*=Q5qT9=XJ5iSpe+RcjHF3dPt zHcVFZ8x#9mT?RJK+=0n>fX!POH&aQEiG&G$HD-)a%aCtw>rnTP9}>yQ$=!HdRZmY3 zf9TR!Pjy&WQAI`MSEp?mUw6B?ySIPjy5$vF;Oe}~*-Tr@cXjlt2LJ#Qs=$Obiq(sY z!9k02lX}Y`xyDuP?d|+lUSbSeodCE=3gF~pBJRdwi2Wr}C0XG;W4LBo$jqpqp?2;! zmvcL+!WcXXK@p-2HHa8VP~Qg6OIuZJ-041(@y3?RqUngX28@!%ZY zDmyi`CHVOHDN_ekLl(9x(qMPV?FXe93G=dFhv4=z5o>D|t08Ecuwb~jI5|0UO*6Zf zmO^}|gS92*DzaT)_%z6UGh3bd>!VzV-Hb0PgDC9U`gY8}?A^2~U({I2@`89tR$}|& zf2{U7&hP~@@>KCGkSLY9wRNcAUO?l3Pj8aLv}AA6W7pP}w=IAa6}GL4x*O2~10F(4 zeBn2j^z{&;T?$+KOWb@Z>i?pybu}Kp)<9p2%qPW+;fY5@nQ=dRWd4{$-SD?(-c|*v zakH-I5#K+rB(yL<=97fy3p+;uGsy$k$=@f%9o{@L?GYS&u+%|=LF>{6fHIk_5Obcy zrK8vZ8&wS}j4NtM9O<0SkH~ksCl(mK3fGb5QR7|7Pra8m~b*{O+#Bo$3N@ot*T66+V3^GnND$c04`*D>KRKm8)5+ajT*B__u+%0!)GuwX_t8D}FV$dt5~9ec5Hn_Sv&UUN1`o4c9HP?FErNRc z)cm4IR?m+gHRLG{#)r_*6#`3z09!UU33iV%rYJH};3yXW^WXqDYnc>c`gHtP*VRQ1k(^*PDt_Lj6sOh01{Z&ZwcUjlquusWw2)dh=G<-!v# zFf69l4t{gyGLW-}J6y}Wn#jrT(zk)ZQ>vB2Lt!X2W|^mBiy{XGoD*jcA6}h%9Y^`Y ziaqMK+xcv^l_rD2{scrLkU$(E(I%_GEh@&K%dyw0FV1&fx#`HYcE8xcloNi+mK5SrM0LK^g zI58M}dlx?EI?H=S&DH|2>^-R>rK{|X6bBL_1OT2Y`0lwQvF==4UX;)9y?^vSc4### zPd1_+iuA>5iW!rK$6>qY=9D6In(Y%f76^ z&V%lI{b~Jdjh!G%7t;A!RbII z;`{%uH+J;MM%r#gWyX||K}WL&9u1U$mR=4Xw#^NLV4PU@HdsdXzuL_94P5Mmy%l9^ zu-o6k@cH@qqRPssY^%zOSud5~xvkKram(=KGhs#)GlE)o0Z$=;McfmIwJmIY6H*z~ z?#4q$459OZ{Hh^0LG@PvlwH2*xA}Dp2?U`KAkFp$9WxRWj)lRg`X{26jA6!*ivLkA zMw>y4Lfe^`*r{y{T%}He+U*vnBIY+3P*GWA7>n8)RxCk>F~G#bWY6LVEXOx6lClFB zw0<29$!DZL6oB0E9Zc*GPBZw$Q7>@#+qm$ElQ;v!Ql*=@8i#amn#s{B6(N-`vatk~ zQQ`k8o}xHl1U{g04c1qXirm!ruYn9N0c-M1>5;n9?j*nl;~4>@Dr^ucNbJ^wjNDp= z5NIAoV3FCzxDN;+RA!j$Im6cBScZ_d1&^dL)Ts!?un0~V7Wv7r$lZM~WFN4kkHMM= z#Sr*$EHK24afmPs*#fKd{l_Yh65s@3$S~s&$dw6OU=@F{)r_ZCWReI37E%gBppjvx zgPe`Cwon}!?IIHa-+|h_`Th?AT^%#19g)m0pviL9- zlA03-Zly{k-@n{kYWKb1Wsp0i^6UPtGi-C~!=%m>zvuGEBA6xY>wcn-SYE_E6h3rD z;OF|H9f~gF>tF3q+WDK}bJ9njOH3JqUuu~oB1$y(+!9*rhEPtvd1QKziF?U;3svkQ zkD5C}6wk@fz#@%mBqpi{1E-pgq&7OOM+}OE%QxT_thAQmD_&@kn3}m=Tl;!@pSahS zJj<_V@cmJf;atcebzD+D{XG93Gs$ik zr?W#;QO`4`H}q#i3#gOp*8*34ef_zD7vZJ@A65gh(c_@UoaN-QaD@-Cy7NUUAm&yE zndJ<@wnDr$zfJh73sI3l41>uQK#^&5=m631t=2WGMWczQ%QZqZKPN)Jn3nS1Co9)D z#vHP0`V9u|WE^-qjAd|wS54xv$m6y(J5@AyMJD^_@_X_4^?UMMF#cj1Z-z@0(@N}p zKpEJIM|^KHxR=&rRZLSqHY`cCd<>e*eXjP}b@&m+BBoYFlUG}U-1cTy0ZNoA`>E-2Rvi5ym-9&lLOp(+SXv%S|RIUx9((+ z(nr6_?MyD&hT12!f5Zg68)n6NhMK9w8MYX{?@u_V5Dvz8I-%~IqN?gh>&vv%xW?6r z5G{ggXpXB@QR>FnB+-Q78oiK|vzE>lnT{cOBD7Y|o;6rx>6vS5Qc}_{R}-H6#)Q>| z+UzcbaiP36)t=y4e)S?>YWh4TR>U>tbuuq=q1L(l##-@ucWx$jLMDTgR^z{p8(m;G z0VU9j8C$GgJ~pn}xjeC)*t@JXzAQRx)r9xqk9`s2t#wDM#A2OtoZ&UC`WW5mh3Jxc ziw`!lTlOU#Au(AyFxcWp1tE-b=WCzoOS26kMCr1)*0v+OQhBK-h=%WRTCJB&rrx;5 z1Y}MQ-l~2Ktche0+XDj)tnu<8BkkByD(R3x{LENLuxqAI{+fv-QAHhDy!T?_fJh$y zRYg`T;>%b=3>NGrUEq9X*r(Ou@`-csgvnpM05Q^@Ajc10&h26eO{SD3+iQ9;oUNXA zFiA)xgK`H8bd%;VX@)H#4SOt>e1;Dr_XFHA2SlFcH@-Qu4=es7W@AAY+gco=9KkSB zTCeKjB=%Tpl4w9Vi^BIec9_&So8doLh>?mB0{c(Q7-WE_Pp(enKKv zq;jOWuH=}fsk4Qv{~cyb;4$EDIfF;@hXANNgp`D1Bx5)Fj`pqWNM5eiBc@h_J@UmO z#LrP>#zE^qM-9C1wQt1rF8P-Ko+>%avVqdKG+w$EH@FRygSIcR&NC#WqtISYMU1)oK^1V!rZ0RnKnY?MOzWm0o_h`)`#chujH^T&aj;-?I;^M((jYl$l&aKW@ zd@0gLNn3PZT6JA)(&C=}bT$9C)DJO1VFa=z#IWY1Z!UKxCMGKOIGbuauFe-o!(1Lz ziF*gj>e#hbOlnku=ajahj_0sUi!?AZkwK|RX<@k0t@8`Je>uk3OML&8yIgJf{#o2- z(SV^%^a0Wg=^H`sxBSy5sWeQoAy(PXE#`xB<`8G!eqC7|Sp!*_f<^GVA36Vfupmus z@u1Q;`M8LxrFxzTXJ;cqcZnuwl-am1F3pc5=!&s1ePm&9GRiz$>>*23E)N2`qKZoW z_wT8PkY8a8xJ{EnpLWTj2W1%`qm!3TXxNthbw=H@1QUw>k5a$qCd|;@qRhy{bKJ~MJa&8|xLgH?B*s!|LJ$gzAv+&Av zK&U2PYg8D}vu=Z&<2|tymEiZEK7F!m8y@p_nP4hlWQT!hH|bi3h9dVl?rd;0XLi6pn8l2S`eYw^Iv z^#lt>2u0cKVa2*3o?9Bu5u*#P%mKyO5B+9y``Y8rbestj?W3_``>tx zMm(SD!q4oTCz(PFr|*ZFeKqAd%1TeT28^_Ki0(+JYWQM$;3WDERWS^gQ*l}A-Nlqq zpLc>8vp&l- zqnI}eOJxu$B38sCYi_}& zAb|!;CwH|clCn-`B;CLNeQ;0`PF&3bOWP`$=@6x$KdEf?XAkKVffpaVTwJIQy&{9MotVTzuF(}*Tyu};1gps+>K#IZ!92)OSvJqD3h4yj%CjV zM7%2LZiwmtlb5kKL(GaP^+Sx9`bsOdc^+HZ=5@YRUO_>@%quWtd2w1-Y|E|{s=Rvg3^s$kouky=8!an9n1g&kVX5Mt*`CjzR(d`g~ zhpkHk{XU+ES-#a93cD^@-Yz~ncYFS^2zy#VCnSBdwoVnr*U)`L#3%-I>a@$ZpRWLpDf~KhrUA%)Xx06wK?MQ?C_f#mc1`~z?bVA z7(lR<-5C+`Qx<$f$l_#EL{>nt`8nLLq!5AyL(bq*r#OVuN-Py$KyoayV$H>hQM;uV z;RyW2QLF%LHlI6CUJ|-b30-go(AQuilf`>Uzmc$NKAf`h2N(I;v$6r+A8q7ze(&o$ zXXkuyCFtm}G~0llDR-Gq$@z_Zk(J>fWctOHK2SGvw%EQRnNCCP1n~g7&1OSsjY_ig zlY@#QRTtY2JiCgW`uzI!p?hgH{>t_6b6#%Ft+@;Q>quv1XaCNp4UQlm6XXCy7=mVU zB_{TjR-_(_wRn4RcNddE)%_KrVxuLC#iUH4lg+%I{VAd~5VXzOy}d&f^D4jb>Pipg zAaqB`+K!a=sxFlA!|VhoFIX3H;suG-MK$fQ)uq`>ZgEevWcQLM;iS8{?5or5G{+bb zizY}CMh$7t0l|wgk;)TA9JHjIGj)3CBsRNFQ=AuxT7z-Z`Hd%66vY{~y>!U({ckn) zG3pI7X{{m?rUT#n&fz|^$JRW3o38?*N}N!nj>55>NKIGQL)g8vM~D)n7f9&PZoj?6 zM!F&+z9%K@lR*gwk(!c2*42VEBv2G(XHDLixVzg937Vbi2+B7rSha>NsB#l-c zSU3DC?z7TiL|&Z)YO+%#;C}B(iPX|iEWLVdt#C8KdOFT<=StW^ITQheFY!L@9G?9x zE9RzCX1uCmHS``hL;J<3as>~5M)%zz*iSK(u|_pCwd!>wY7O6)#mUNUMoA`Q`dZWV zE@vLx<$?UhfS5B{ZqtKlono^T(}5?AB^SCkwysrt0r@WJ!a?XOS>cISacCicWTdf6 zpe9iyMOz}%?-$)G5-fM@qLXU%JAg=QRn8^Iky=Em1Myy+;t8tzJ4PdR$ZJW(Zp5A# z*h_crhY;o0cFY*71Io&}O+Gs?L`q3TfvcD2=Th#^0G#{!nT!W!KjXBTrYBM_U%q_v zsPHbf7hfkQ^95bbf6;20r|w2Kf|xysd)X-N#*fANvpm-{mE;C@YdZa=qC7N~4!4d8 zbt5V2tggcyb#6`OG^vh{2YVI@y02=r!f76rw&+6Yf-`IIX#4MrbBs`8G4n6eURy_} zIm+@yHOT1!*7Rq|IbqSX*fl@(#&*m-6sp0+<>mWdRF~GYQxLPqbSnA_eKfI=k&#QI z`}{**43v~zm~?9A`5jt9AYkw>)U9py%WoW3(ZF9=&fT#0Qp7=z(#Db^P8-ld<8XM1 zpoaM5DH}GX7XqQ`X+!0w2!hNsqA+;=jn%@h=6+ zCIn3f&QolN6a(d<5~+-@KeakXMshBT(9qE6fU529c67PW$@JfW<}ahO8@h+v4GR_f zMr}t*{P_Pk-|*P)Ub}C@k5j;si;Z0PnU=1ut~??(rqtSiau}oK35nY16R*b&A|sYR z=h!bF0vLxn@0}4YYja}n)Y`)j0CVu+fDR$L*40IHwG~I)r8{Re>Dz{lb5%o+A3v5p zbe1peFYe42G%6`rpmeEh@gTSd+qhVL=z7!5(RsJkK1Nvc(*=My3(X}g7%1SOe^x1e z!quo+c9(DhegK&F&1GsZ$^r>)^s(R$e-r0=QOTKIjUuC7ih$~wANFQ#FBCVhp` z=w1=hzTIGegzAv4I9c7#ZJ{?O%1#gm+OF;@F?BAq_uBbgsu$n;ETH6v_wHT<@4khJ zn9a+_rxN&1uz17NFUj6$5gt%CPNnJDSI-9^;s82}t*IJiYCKzP4x*FhKfvcxq$kuz zUu=|FTf#ZGd+O6CNDKBgYeH*7wq-eLewq38dOYw9fue!6wy@ImlWy7ZUFxUI!cVX9 z#jw||F>e-A;-~q;MQTk4Y&Fk$-8-9H>bKal4rC$E|CjSRKvTAm-JdiTM`ipbB)d+T_wUogy1%6mMjFnhP~!Dw-mE3)JAvEvS{86X}#6$mW zeSQ5)W6AL!4NuDgr==isDD|Ac#0348>YW;w+fH8>B_8qL$;EE{*eTN@Ghb^wr8qEN zHRMt>OOE^8roZUVGXy{*9Ta?;Mx!xfkb{7pP-CdAtzDQ%S^h9PJDbJI8yU0kI1ZHY zn(t2fwCF!n8gw2=KWe;S;>`P9st@lf6eZq^42G+K;sb9@q~a+d2SN1Z3ZYX6+JAhR zUPKPcV=(~GeE0Or=)IIoO=_|Edp1Hf)cq~L1b=v_HO{Xk71MU_JsARhX;u^y5!`3i z0Ju*D&tRBu@sxIgsG@)4fmTQY2Zp(=&4PaK$9sFf%2aTO?zNDxKcVe7DE0TmBr=>$ zlplAt_+sjybyQ0~#ysIY8O*;_o780m+Hv8BN##0KWo0PFHru9L#z5)-Nm0N=pB|(Y z1!HMgvDxF=jye+R2mU#w8?_U{sAYdKJ(J%EK1XZZd2WYyk^Xq-l;fepP?`mQhaTWB zdMrowQl=VzUVbeQA0N-gks}Q0Zr?-zI5(A`ndl$hB@qgC_s*JVE9S3weLB&d;@!xv z#->9=Q)jL5-8E3-+v=uJ6gMC;61(6KW96KwmpK_qv9Nxma0N@S5TuSap}XiYsT^}_ zm4E!{T^y6|aY+1I<(C&|suRQQrC2Q1rD2?1tK+sIfbwQHdVHlX71Y{!6KUqoZcrr5t4O#=#yq7~1S;&^2L^xzTAvfoG+3IOixdZb;vvaz#?RzZ zUMI)KTIOGY;w$hs($>1^w&AtnK!tHyvHE@eeF?f7cUo6-5Xn##=>rIB(Uj`iDy`b| zjagG`>4bKGne+Wty}w08P=$k>g43Bk38l@4r!zyBcaM*rIo%m9r;O(SemX;oG#-9S z2P!NiMICT(a1h&=<8Uuct3eJjGT1P@1Cg}-T56?4s&34OfVUoqZ{wL;L|O&3ZxF;cCvd!wf4I#puWn*DYK=e=}Og~imH%% z7Z(-1gK7?#bJ+=c|I-0zX1CS@UEwnzb^Sp7qSLrJ&tQ!f5(FgvD3Rh<33}(PG&JwY z84K1fTj+&u3MqBSH~kKxL#GGWnH&@Vlf!j;$WHW|eAv*wf090&rWr$X9f7z7Z_E$B zBOH@^4ntV|EEn;Ed9;aBO)s{wFfuCVcdSGi_Pq1B2L2Z=CB@G(Q$*L%+!ZRAAc&S!eU}!u6?C+ zhnLe1m7mas>d@Z4J~+&$4Yd|RmCz*f^fffXk{ZFm__Kljgu)5uEO-EAxM?t99(Aa~ zfSsCKAkrsu%+pf4STc3v5Z%d>fjx$bQ%4to zjmdfw=F_dnXdX;~Pda--dq*ohH6RS-{vePYpbq!ptZXhFM7ThCPJBO zRPr9Jgu+I6I*0X|8SPRB#5Y$|bs5#Gq?SGCdW0o2Np5K{wLxg-c=|Nt37z3nU?~3Q zU@y!VX+Y)HLyb!W4?I36FG?LLyP4()H9XYA0K8L?8ncl2{xVMXl^Hr6viQn0Q#L`@ zGKd$_NrNUIc@(u1GNI)lhY5U_$`-u8BFsAg+YsIHV%~Fpv`QQjp9VR!vz(CW@R ze&{w&$kH82|HHhzytcNsU$%Qd2{XRFPeYf<@zDSU14P`c2_zZ-iF=MxJRS;R5SQ*C z>s;gBxWaZf%Hes26dF~2Wi182W^^` zhm5(Iof)%;GG2u2V?~8r?>TeMiN~LQ1OGe={0Emm=WChs8|VN%ts&Kd`hZCfwwFMU z5mb;k&^=pcK;$b!1lg_Q*WrG}1HLkFZVbLSzjT+Cv_a+Bem!vT9c2NrudP4E+w+Q< z#2G59(Ro!C4Pmvdqhrd~l}?o&P-O}A*qm@y>>M!Z0Y9V%g2?D2a4}#PQ1_XC`Q)+) z#I!%l{_@!aB^_BqP_Y3T+C!4(NA6D=)e1&{mi?VAZ|0k5q`Kf}0}zop_n z(Y>X=7&E=?GzU-_au77Zg@uXOPOmsGn1Gf`#lyit$k@pWk^4{vfEQ^3u7+Gg|3aL> zNpt4J_AK1QjFvfa{F6 zx)M>{139pCQl~I8W}fDiL+gEVX3s;&4&fM-ml+|%qculJTjBI7FmT?m7AKv$(K*w> zm!9TR9bw~amtX5FeV8WROUpfh(%`}Y``jbYOY$-|b7X=4-90EUc`STRS<} zF3ah~)|`!jpDz6Q2L~?PgflXF?>{wLS1cB~A>iM5Wview+B*)YqEjONB~Zfk@%h?1 z8IVlpO=~ZYFw%_4ZWJ21X zbL0xvnE2f@A>>1~<(Xul1bBX5-)ek;`az#go^r=|x%UH2*@1ar4ABh@CwHM1 zL}~Fns@E1-&bG z1gW6$M!NBHf$KH$Lp_vc>jBVr7ezt#CG933fFS{65MvKx7R9I}J9_s3r=t7J;&kV} z?Het-e^RclG|Tb1v#bPrZA%2fQ2IEd8HAFpf|WhXxFo z2C@TCTDvRQDM(ENmX{V!znEN{pZ-x&pH{w!iM>$|?Vy~w1(JMYdkeCWv6JV*>%L@)c*Hs3zj^^^@sF1~abFBI%W>06C9SZhh#WvF&C{+;fA{;%+2j>&DRy;Mb@MHx%1<%Db zWn0lkM@L^TcY-qi@V?g>x_q$q`)99pC~KQdLiaHf+E=^V;=o5L1JKzC*+GHl5DNTk zb4P`i96&eIf|o?+YqYXW4>uTUJ7w-W0ODH2L!RA*FZ$s{>@n0HXhX?`tUBW8V`+D4 zo@pj{q|ZL>3d@CH)espbuArYc?*iu$sP@ig+I1e=TCh02;b5Zy>0&(n0@tsZHYoV~ zfPz0g$RqwRJrsrkh1;NG)ncq}BG#&Hs)FTbvLBTf70rx`1Sj{6kAI$<6=PzzZ25N@ zg5FV?T59Vmi~D?61szR)<>;f!YrL~j0Gk1ocbjxADlV?E&CN-07Ne?JK>$aPgDQSS zlBqZ?`jHTQSR>qewx+CA98As{@a^^u!@Y)8aMjQz4`WUy_Bnl2 zv;F&v$#7yWA8@-mHLkb@)v=WqoOmNS)mN~-xJoyuO%t=q4L`hN&&;O5 zrj`GC92wn;Zd(7H&3t=X+hElY+9>PGMGB&ol0O@#YF5%)if70dbjJv-F_kW4gq)q>jumev)@!=P~O?_cyh;{a4i z66nWI^yf!W8<{!$?qa;$_Kh36Zo%C2j!RM$oIQG56xKwe{C1C07^Z3(waW^9PiFLRf=_}x=3B)9YvVe(mC(lfy68P6Do6uF_qt%!9>-G2!LKvF* za|bITJ9(xFic@JTUIEesUZuP(A5kf@z?^A-U(#ZTi{p%w3wa-VBfpEYN1^ENZG}Yxl>7d2-VN>;oig(O+g}h&hTv@nha6jTWL`?+!f%!8f?WOSopkrqNrBqVGMXX zRIq$~aO&IC)TA~3eIkXT2-}8A82sEzo825h;0IJN(otU92^@7$J*fX#Y^=Z+l?RDZ zq~&RiX1qvF>kYpUR_aqeHSL5{Si4t>Er%jVbPe|FHb_wc{?0y{yFp-C$S-i6=k`1n z1C5T&vm?PxOXMx8QQx9Qd@fGjkGfgiBYlEMc?e&72oN+QBSX*pYiOgXv>uQM{^F*g zc6{$U5nr9m{JZpcWd$VzDve*`3ibk8jP35Wb#5#jnV;Olj2X3qd~`!l=kML4e`sI{ zst0hmna#d4SU&lvS4-UHg z-U!#%3FI@ZSgHqO8*ZXsU|=Hf2$~~%3p+z45DCkH7z3IquPnqsBgLP^7 zu8Fa+u@!p;9yKcE9mqM^IgqtT6c6E>z(FbYYsMKiriEX#0NQ59UoYLIcRySh&M4NB z&C1WxU6EUu;d|&+70cb?=9DRHN9Qn{5+KH%mv2O?yZ_p|e)L;cmks2)(s%hrP$!F) z@JZ9fP?v}HbYt3VJCzi;SLxbn*(jNM${!r$&^Ua{0oAzD_YGyE*-)ZGw2h2f!-`H`uMfNtc3T#GYgG6!7QyX4gc_U!Mj`nuKGWRZY~r@_kcGs01f@^hLCUR{XdctBx~Ut9OONI4-Q3Vp^AEn z_Al*wk^Y{C9+VfNH?bp;`qAov*h^UOTl#ZK=b%T0=)M+ik*$S1mzs~>Pl4J~R2P0b zIPZei%tuMLlqrd8i?OM3-02+XtP3~O(+jx961BY>Y3b>w-=pu5I=SE$@g7#iSDKZb zQIi+izdVl({X8()4V9uBk2XcKcwEdnx@V_8J!N!Tv&!Lif6~*iyT8-zXITT{UOrdvN2!41>Zb-Nwz3Iwo|QFc zH^Wy~aBmYBZKWe8s$h-Qsh7j)>GuMa zK0dD){3LGhp}MTBb8fi(z*WR_UoxD6=Ne0bPX2zZ8m>xhkE$N~b!y;3KQTRB_Unp* zoz`~5a@lMAI`uf8b;WcVuHcZ5=8uKnJ_RT0tbuU_wg+bf7s+ckNi{N02ySgox$#N-=Rp^N#$t;QedYF2hk z+i^SBK-l)@M>CX zjR-at#E6SkF`dtQZM_Ku9hBwVB-%4pG(0wEr*ShQz2!Om*kClzPe^iq)jb1275(qTjSB zRW2&*^ibOUx^pMCUL}&l*Wn4n;5MMN-&qjvbH?avTf@cEQzlU=0k$fA_U~Wb^c(5m zoqrj{^{|Jt`gZWdbcn`Hsd52`f?%wYwF|!Hr*}=1TcxMBq|*h0*M(!9Z5?Nwhq+Of zm4FGEfeK}0bS?avLwHe6G$jH*@E2y-Gk&%Q@$C0XR zE)O2AD2ru374Qd;uiC=hQMbYgs@Yi__N{I1vw8XA6-m*Tv_GaF!ur67qmRxD7}n9UxUhwnw<};;zwU_70T-%l=R;Tenw7DPj}Q<2;~~<3@Zu`dz!VdD`bAC z@ZC#Eh*s<^%+M$d)$99(cb~+`-llshbT+~Sm_On4=3X^3P|^w13LYeao*5bCXQew? z8X2iBt@S>S)?~J0h$rr(vVUXF_?kX!)|*bpRCI!9dJrozMc-X4;G!b&haiDeo91Qa z73y9NrxjnNxQ3L2MxZ{H*BLo(6 z`9qLR(VnKKgGwJUG9rh~xN9iC8rmPSw4eyJUl;jZoP!z=j{bv`WR#R0m$2vWA?yN& zfiEP*jC3cMg_~>Sk-ZHD*mBF>1Q5-k`)Ux$-#ltex|$L9`FQHzNh@^$mGw!G^;RYf zsgS;#LU5t-*A$fx9()5P@aQ-1d41@h(a3JfnBXqn{V$7~4b?`}nob!RJ&6Nt%u7VI zQRt7f8~X%FOf$FCtts=w%?{6- z`H#P`FN@Dxv;sdhVPnqr%CBuEz9O?iQcZl`mORr_+UdT`r`rGcwdj;z#d3xJNu#g& z+ir@;&nwKMEi6X#Dvt7}xb$ZzTW=)sI7gr3}br1cVfZNf0CqFUx+{bPgVyHNoN z06N-B{i-Vl)s2i2eljnAX4CBnI5hNtBfGkc>{Qd#+W z0@T}vODn#g4igPp45}CEwiK<8DejmEqD)opxNL8uvRTT0!N0%OjdRiLVG$BB^%~P< z{B22c(WjoUT#7a1ZJ$zV4_s%0xYX?lCnl*B-fK zp6B}c*YVydKxh5Kh}NXqqh5j-?p+H;F2iwzhu~Ig>0V)krenU zcc>5B@^hch+DiSpm^D(lh3{wRp^Ui$MAbFRWV4n7iEIe&^6OS*Rz>&@EVw-j7>?&_ z=hkk#?O`n8&MWrCFykXtgI}`Wl&MdE0Rgyc^qHMDG75NL{*(5zi?x*e2li?6p~9d@ zRd>?ww^<__kLnBC^2uA1C6tF+3uKkbYRtn}c!MasA=U8w4>l?J)Ji&cudA zoUT9LsA=al);nX^D;ZWBMm0kRMuSJYs>`-{*P47tBx|*(p%lg*YDX#51`3-{3LBdK zqA-7hiN;os?ufU2y!GiL%f;2i@PKh zFqakVZ1L>!CieP|J^p$~k$sJW_X()>X$c*Al!2?DTq~ zMy_h^X66~N^Zsq)j-8Iet~(Lx2e!}&z)S{!nXusk?6`TAv`xe#>gw=Oq_tzXEg3lH-#F1qZS$4^PT#x2;t zw*Ix<0@u$RH}&(kfWWqfhX&v7Ok>Na6N-O|R-q%bSY`9a!$gwoLyTJd-02>01~!Yo zQ#C(y9YXPsGW!*ju*yw9SRxQMu#~z&nD>KBP`AnF!=ZtJyC#a=thRWqgK8gqP0`Pi zH_}E%u15DFgO_-@X}aX=yGgYN-%k8-|L_AAp2iTV?tq@?Q8t{FIOm?t-K49tSjwRc zXRqJAA4uQ5x{2r|TJ^Afq}04~txOuL|H+h}t!m4TcRSfEhkGibgg;&k9|s3aDt?}x z9tLReQF&=;Uc#dztT@C6PP;q;16vE?_v=V(OU58-<>~3B8datK`kUO_AP2dsDgU5z zq#6*-1osA`v<-&Z@XZ9b3|o#=JqUx^n%g}7+o(DS~F9r_lXgkIlnm&oU_MRC(W|w25?Z``cEdeT@6)E92KXNv0p5qIm zH~o}*KIh}|n~6gic`}t8W%XZ|ym~_=Qhl@?vqH&7UOfdMMZL)$F%it3y&tkzy=~$E z3!j;t*gCefIA2iy0^ELIGN!D=D&SYmmWjR6C-2w;G9PY^4}O-u`=kZ+o$FE6^kVbD!f6TB}^L!6}dQ^&hWPhZ$dujZ;kV^)6bz zUt!4c@$C?e<3@?W$#&_iLX%rM)A0Wnv8Zj@sPLgXKwXhWgOKQHf4(koPZW)M)+>Qj zte9kN@w10{|K#IqV+;33m04$5>L%R*X*FuUR-6MQN;L=IrlFDH`>CV7{Y{X{G+tkW z!1D15W0LU&07$!vKwsg>wos+}khP5oILTo#cJhf|<@GjE!UZ2}Gt}-`{GneOHnU0J zi0R(GFjaj+%aO}xA7l*u5E7C{W9{RJ(nwmvDTVpijl}oN`8$G}vXg#aNBS1^`mIE& zo`xjZTnwL#5jPIqo5dR0O#JyYu5bSMN9p<8R|xxqnx#5o+-LdJxPex@8vqJ?Bda1_ zfW&k@Mt~h5)E20^4pefDed!HONlvx}5&;iyaspsSjO zzMZ(p<}&e=q%&vmEyQAMxm!`-+@sy3bsXJ_(IYYr$r9^mYJmS745C>;txj%&d>#J{ z)LB!5n=1lyl%JnpxK@_)!BH?dvDlVIshciB)U6d}54^TetRh)n)!2Nhmrp%~yLh#r zFoP?XV}s?z6xx%$=k=w9vVdys=eiPgw^<)d*yX5)br|j^Y>>Y}<7i%Pb-(b1vS#V| zi1*sb$|&0LP(nfRjj;K}q~Z{c`zWLh7kJm@xekx$Lk@$G>;ZRep&Y_+>UB&{&?tRa zrvhV1CtmGmGJ4-q-oN75;7u6rA5zVRPByIWtA>Jt{hfsw2fregU9GWi*NaCS8WQ93 zNHlC&cbutzaJvik@GqpoZ&FXS3A-ELufQ?wOe_@q!rveHy28q9t=jPK>nwy(8U){U zjjzQcEoy(!a0bPGen133u^Wfuv!wu)vt4d!l>1z~_0=ND3dP*|27MZ?E~-NB{VkCV$2AX3+k}3;n=ACi z;P`emg|{{V%Isg5N4<{DQ|dCQvPE~7J_qr4;Q1*NItY!r>1~Og#GbgzQk#H)H$cD= zN`MGTKybABW3SD?14vQ2o4!$Ghss@5-s;q>oX2@A+jYOCL%w&e1!Gl|xkqfj29)*p+rjz8aJ7)cTx=mp z(x3Rs(c(nPlAq&o+A!vh|H5W?>c|V>WB18R=mNG^LQ2K^mEkTh-g#ZO4YiQte{e;S zn1t{xXjy-GaK%5T7Io<>nkWC<07NB1<1Bn*b5HQJrl>V0rD#KlBM72bTqr-KStKm3 zGpsI%f8@wL+|~+zl+NLpfVTBFc@Y|C=-F<%l3_{}mKz7-tBz%Hpq9qjH0B9kS|$&c zhN!gPo^(4K+o~`YW+id9(d_;}Rb}bXRSm+@OKStg1_stuI;`y!G!HkQZ*HRfsJ}|jCzxhdl_j@3^3GC-rgff zh=@X&q$eRuGX#j^3#(L-4o{{J!S0#0Umr)l@GZGJDDr8GumwrnYVnhcq6aE6BD5*R)DJ{tbpC z+pcpIai^4OU{;FCGcIc(zSAW5|HJiesWY5ylZMT6)c^m)Bu_loS+A9P&z5Gu-JrE1 zzG1=!1=M{;v)j4?VK4t&02UCyJu`|019)RV5rC_~8nqAc*#Gh>Z6ezQL?Q|?L+C`$ zY$k4+0x+KABR#W8_=6X@GJqE<8o*13rd3(z_X|dO-&CW2^H8f$WP85S)K=5%fFQz+orVIopepQA{a8I*C&u5y48J;V zYrshLbsNdNZBK*7xAzz1lOBhL{b?!8Y&l>U>6!6>CTWG zxCQz6#Q>p#Fz|r@6fJ%nJ#0NVmZmZyS{zMB8M>S>U{f4Lx3F|Ap^l}1RZ8;JGs{+sXrv$~sBwnp zj8OV84u5@$f2lP2*{H z==U|PrP=Q~L_6WOdT;T5j?wk#dLT!bAGWw3IhEKil9sji4wg7OusIO@G994npD%5^ zJBnLwV(We!v74#)Fk$72qhvjH2ml&@3S-mA_j=enKJYZ>tfn%aKJLm$Uy2BPPLUQ2 znO=P9F}-2S9HL-YeL`v%!8?9m{qucE5SKatkdBY|QhdO+V>4C(7HhJbt)}Cl-osDRJnXmH+m{ZU-$&r={P8y&IcBYYLmHux5 z2W^;y%Oiz#Ch~Vx?G_JE?g2q+uCGHj`(0H>oan}7DrvZw*}U7#R%5^NS1sy3W3L~Z zd?8Y>=aq-W#%d0F@Sm1Xmj6AiNM;%=8oQVe0~q*de@M@n^u7->~f|D%mXg ze^YBlu3o*r)3w?>zh~FoVK~rVsD>hB3;<{78g=`N(=Jy$RvftVDPjftNXW}@jJl)k z+DNgrUZY&F!7VJA3M%Sqkkihs)bPiKhSNOzuRSv+@r6o-Eepec{$$#=&?9NS7`oGdlA$w~>{Fq^4Tpf#n;&kh};pb|v zgC#lfA1rBR5M5FrEJ@4f|CUrhj8>=*C|g9y{?Hpa>J78xCE2A^Y0nK8re)|^^*_N- zMHO$`HJ?LK^IylDDh(PN!`RB#ekYELHW}f$4IFhPUcD5i?Gqs%%I&iP;MPU7V5Z@P z2xe|mPn|(udaQlc`>>ta5q6p^@308^YvwBnaF+mXT_bqWB4#Z{ZEMF=zwW(h^s0VH zN#R{Z+ZBe@l5Z*7LdW!;YHzGV{du`WFF>>ccC+wa54fb}HqFTyd^I z0o*PH;DxMNs(&y|4MnkRCblGd^(?^qLa`xyzrui=*pO4br_-1s{ZPx~__+Nr0opC| z-urCmwJPH`6^q}|BiS3r9KQqKEoQy2nUV1~wR%vf^wl9@S{2T4=q&&%a9j>;N#*=U zW9pflK}V^xnQ$d2Ig@$VYOU(8)HA5_RaLQamLqJdW|)v?aB}PJSw3WOgJH!7JN;|gSOUa~IFUE05-+c%^5IjrEv;%?Lmu>EGQk|y!T?%!(wW49vBhHenfWr_} z1&=rj9`VY~fB*A{WB3kE4h5%S;2}Y`F35`<0;Tu%R8$%7J`h0|mlN0&<<&QVBMvz5 z-Ly_P+q37El7;dw1zieCrV4hJYFvHJieEA*{LzWs>gXZ@iOe|nH6!WtxnkJ zAb>0dg@&a%S!J$eBXSan3u$3)Zp4=Vv(GBw9s1l5tig%R*t?uyz!bkovm6gQ%sgg$ z$b5uvk!*@S_wUd7|G5^i_@n0!8BBH*mzI}zx{QtQCLRa2#s5#y9t>^hq8p5(2pwG6 z|9=2q;qHX!Y`GBdzoB`n%vK9sfnT4CDmSB#CKh{Pt#-J@tz#aBMks|rhQ80$g z{ua10lR{8%0b%9RL8R=pcBgKv4hltCcZI z`tChtWHS#nH0&MxySx=^fl{0`iIczX`NEK(zTO3;7++NMmO34&0+v)P)R~K8)z(o({F&IX1GOeaqkuGKGoM;+An)0m7}T&`-0CLZRptJ7sWMy>Kj!Jg zQ*c;}uQ?BF8vGd0L3+*`9n76 z+a0(vk;3f_hN&t0z8?Mn6Xo=;9a~=p{&>st%vH6U2?pVv=RLSezUGdz7kqBOv&8v( zSF=H%ODI-laAc&>O30FMr%ILEdc%PniMnJvj*@{*-5#C7h*nWMimW+^ixgD^VXc*a zP+n&QoCk|l`}OF0eV(;x$Wf{?YbfvM!%+T0EEr1xvzLxWX zgl$(6O~@Io>FL9qHig~F$1sluZiiK!mf(Z2BMzbE-3HrvVC!zJ&4yEm$xKv9{+E&x zt7nRa1SnrN$}Nd0Fr=y;X|hJ}_8-+~d<6|+o8n-gD`zJp9gT<11;edh{>VFZd8-y8 z67`Jjv8G3VD4ISHN?Ao3b`;&wlKC=4w4JP1!k%|LUWM6k1e%4QA=7J93}^FVhb&~% zQitVFM=+L_KzG*lB$N|N%FkIsA>ek;3OWrs6y^9}Bmr$!M^R&kr+0d%Yg zCp0KC%|d#gCU#JVDarm3LxP8K4MjRp08Q-Lc8Gg8%`erS+s9#-t!a1(!xs|#TC9R5 zzu?I}G@G3(nM;8L8*K7BbUGW1jfR;-(jx;z2Yav7T0#`|6{efSNRWcuSHb}{1Fe@c z^e#@rU@iVq&v}|H$_wV44Vl%nAsEAaPxVV-5q%1?aN9bTXZa7Z?Ec=8kJk7tm8ixn z85Tnp>A6V03sY#;tK;`Ypn3G^3?)$)jMbYsUOIXq7|1?{f7oSBdQT;QBWdcZc3-05tW}tdIKQvZ zNjKgK60<@uZ0M%KZSOCrEo7wMB((0wDH@gwfkjujknX8Bt1uP+MuGVqTSaICK8Js-^Ceh;$HMsIIv> zu}wAPd~6tueP!wn!!7m-l9`AxOz-#3hc*p6fBsGF%xlg~4A_bTs zmx6Bk|M#%aDYi8=gt>W)hgJ28jr#ueako0PS$X5p!A}u+*w0yh&<0y0Z0wV={4*8n zST&;f!)2Cdk#6>m1&QH`@>fo+Z@5>&+$LZWZS$K1;P9Y2>YU*Z;^H|x-z5U5hJ-4; zu4@NY4o2cRFr#>XC$|L;Jl$~aG`F^#7wE=^5*dq33PvN|0hV^eyuC+2N7v)ZZ(TjgqW3ml(_#--FfU&1>x=l6ZN$~TYUSROn<+Lj)yiSy6N z&Yp`)q!fwWTWD=ni6tYWq_?XcIYt|wyYHQJQnA5MU%vrpG!pHtYGkG;HAp)WMb%%H zuE=d=P@CTBG5_J$5sFH@Ex}IJD>fQRW|=zhR3BMC@rGb zN=Wq)Nm~!Z@^yDspyiv@J!f?=9i{Xs*7`9!&T+2j4nnjf7Aq>yMFaIXv<>(HeX zQCr=vxXS(o4ErJ2NYWwrYSgfIP>NNF$iExumXNu`Y@+>OAVsTqsQ>sVKU2s!3}}NV zjr&Tf_hQzO31t7NV|7~to&G*lOk|n~lEeIh+BsIZuci-}N^l;)>MLO9;XxDRu^)*3 z1Jl>T_N4{d^rQYXvFCKVrisIsID`lrWc~fs+{qLqG(f_HARIr>fapxned~W-YA;K3 zu&?({$kO;+tRYGAKClEuEv<6wXS`B6Y+3n`>W2{-Y@LZRw~5_25&$s^W*8s?Z}A{u zOoOZj)(m3`aqhozMRONEn~-e57|NqlpPed7hio8cynF~AJ5siz`t}WWbWMQd$=B*R z@RyI8N=aNT6J1L6imtVMV5Dc$P`;uTRAesaTgToDP&XzJumi}J^80Q}2T_PF6+?WN z2_YBVmGvc)aX83aBDCZsy6wh*&j&=cl495rr<6+5i~&^w-_ym37bJipT!4(6qPeCa zRyEDK*UVJ)3$wM$ReTXezRZagi7?>THaxwqe(ZA}JI@!2G{USYseV+q-7n}G5WNkZ zNQQf-TUUX|XRT*wSiF4E0K8?yTUt+@57g*ZYJ8PWqU~H%RA)$|*=C%qp+!SR%n^Hl ztuRLqwh@}q?u%5n)$KV}pR%%89lFvXN^ryLyv4leCuLCs z&H)HzL--VRQd$VR%VBKkcj4*`j=}C567b860kECpoX3_zU!{sy@4EnN2>$4|(+lv8H-Q_j(ZPpK zzV%~)dd`w_5%QrZ1;9pY8Xk2!jU{(Dc?2`bvD~#Os81(j$|G}{z7)Y%Cn!W9@keu+FAp+j zHoX?9mIQ$9`UN)+<{_$`Xw9}K=h46Xv3LwbX9kYN=>c~G#?8yVf2KRq)#QQ(ju3 z;jyC76XYU*kX>s2eZ&FDDR{)A>a?QF7gzS1v(VH0DgD)s7~0Zhk$+Kw`;cH)qr@@^ zS26cRR{A77=l93RP|xBf=$U&3-6L^&^qp7K zKL>E#^%?g?SsF%Fu+})=a{lrpKrSG9;L@HioW*f}_KMlSyWU%FG*)fM)GBYC-@xYB?R=5T>#>2Vmb zz0YuKa4_yd@N~aHU^5z8RpnpH2?TRcK;Eu>$B)Iv%Z>Dakb~zi)^99?E*jdRS-H~f zdi=fjTHvRMAQ4&LItYslx5gq)`aZewiJ;;f{^QfEZrHe}Z*V8mSz>LdLce*^I~ev# z{}wzt4olGFJ<53cP{GdmyzE>_Bn?Kzjr05Bj6>HGcj}_K>T>_$in3#?7NK~_JSF+)rRlafRMyvY! zEwf(lT3p_*+TY#@&D>Xz^~*uy46!=4aYtSHdHZwuL|ACFPX1qV3q*5fp`My;7oqPH zaK43X_A6u`v5(wHYc6`Wk#?K~&j!W|gOWlOak@axkv&82$7w4P+X@Bn%qD)7;w5a5l=hhnBl&6P6B=7IB`{O69p2ns` z*sCFCZ(tw6BKrsSD@#kwj+NX8!9M$+M{AD6J+5j=zhVj`&C8@6>2?-C=Z|e=AhU3O z#O&~VbKrW4;5xZ)kta*f^7c^~aX?~Wi>(jSR`l6^4@ivEh*6aPNLB)MXVa=4d@{?Y z9!LJ=>JlMC7wtU&Yh*nBKNPpQp-*-*ThFvlB})5vuRD>8besZ|171U7xV5ZV-3f&a zJ^k{4ZS}4CRn8Cy-JP>t&()ah4*zxAuR5uHvl4rWgJbn6f((DcVyANX$_#Rz6dpgk z$E5v0m(hhq$Xf_j?3Zc-42aPJRenPuW$r00t*MNWR}mUl4LPGbDa%rUGN;Y}6*A0m z14&1N;qxyee5=t_Rn1}*?ht6OxRchD=Bm;q4FQ-A)a<6!-T9r~6Vd;ucxm6N``THB z%c4-QX~R#LWGnXx-qeGA)roO(KLSDeQ&4*8aPjO7coVBz>e^Bdxc~`GL9Nl!Ml)Y^ zJs^oYbFzc*9>)aE&?f|a1QIf%Jf4$L{qdtOYJINT#qc9Fu_vAM)|QvALB2CrbrUjy z+N8*1@RlktQlkdqTX{v+sA@qx>O(i^!Hkxy$ntjiVeVZ_z_mr!t(! z*gh5kjDfEL0Y^KI07L)@r~b&hJqRV~OM+Wm+$r9j6I>)T2>!ILkc6~N)xvXN>-e5J zKDm?^nuAcP;^~H$fEx;rQ;N(LvcW6?@bbQ~n8`OkXE~}yj*PBv+#V{d_hVB%HaTSx zQ+_(b%4;LmJW6HARw&jjjHICH$e-pO!mVV-jzGo_WGp5vI*}$IBh}y=1BR4Jhz7ML z<*ENPU4$c$QF{~ZQ@}+>r!ls#1NX}|2y14Q4Aw5=5qGZ1s6hJuO93u$B09=Y=Qw#% zzzcHlz9qE9uZ~fVh`$hp!RODNV%QW9JPR?65+xc`7 zU2WHrr#9bBp z_~c%bNk?et$jd+BJ`YZ;zwe>BNRv^iwBAbrG)(B+eO)K*a`0ua5I9$u#jX5B*aKw? zm?D4};d;0$^_DD6X&MQ##93%1wZFUV0POf~FaNSX{2Iz~-C20auBLC}zsxQ`_TB*U z8j!0BJC$b=jnxqm^8wtFu~td%rcT{R^Qk{?5JaR99#4TxFsSx1CL@a9Vdch%GQe!f zxsLScGM#$cdmcC0YrX0?Y{FUHR4YKIUyu}K6L>a(n&-n z8vE1o^~&AtQQ&ZA5U5yaAla_r2HS;Ba4^&X;Z>pVPuKmu%5#(!-EYqYlyV*H8;=l# z`^$u*bz@(%@0ezINT?(f*dNBsZ2HfUIm)Uts9e2VR7&If06M|y5Xpy!nTlmXRwQh% z^PA++=8z-4;bEf9d9NU;(yV*|0YP5=Y&)~r{JuXF&mCt1UQfJiVexcBsmd~nhwUNd zM?WhIH}AS%rDZE8OVgE2Axra6m6aTE9k`bo8Z5MRvAZwbd?HP1)$Ydi4yhK0zQYt9 zxozF<#Hgj&vNCFPlTNK}54x<~%TK-(bIiV^FW?a=Qu6~w@J7siP@09)V-+|X7CWe@{wadzoS58As5|9&C7Ym82gmmm;+Z8^JB%!_!J{{F$wF5T z+b>-_0#B3zH9Qy_@WgNvUhoo`dKO{Z-Rum;>NT{7 zp@;VV4(-9-z>6QyCje?eS3mB(iS}P-aoXViIJg-LpkY$+qbxKy(j+}E=bk3k?@0Lh zUcNRRp_Np*E~KL^e=qEPQXwl4Fj_Jc+fkM=IN%>Uy8T=rnNbwU`lxw7Ur5#N^sYf!^+ z+T6I!t)d0c&~>zk2}({sfpr+EBSkuj_An4DqwmI4Iq`7>MQDs@iue#jH~U>CXbzFh zUq;&G)foV6XDWSXk;uqSgLJ4rXGub*i=YuEzN{ndz1!P0YpeGaf?V^|3PW+xJyvA& z-2n#jD}0tm$Tc27;by0cxz(lK0K$8J0Uc!lpFoiA*o8P`+ z5Jcw>-6Uv+#8j-$rkHAx?@0Ezb>dK8^?%(qedt;jr2AOLLE_Uj_=Gb%NO4 z*JNEemeuW`n<4kn*)2i1P=u%({gVu-xb60rN(y-F&gEKtj2Tzz**U)Kxu!tE!(pM8 z3H@A{o_S6d7yVLIfA*GqHq3cNL4FPSp!xWNa3XgBf^=NIr5<;o3CPx;_q2ht)>iod znlaxeaxKW>-oPjd%qj%xUe#2VJ1I?zp4H?|7TlQJn^C=j9XlViMWfdGzm;0_5U6ug3k|jrVt(gk;!}2Lr#a^}q&@YY76?$+l_iKnE(}*yN2x-? z8g3NG+s+*&C-$7pDqQRK6a>3 zn47S~E_P549g(HM=z)!Z?Q$6s;GddY)plcW;wMhfjoAMN^F^g887b7*3Vgpn!zn{`yIXo~VyuY(Agd!%7Dz&5FcBb6=`o9e>0WT}cqV_sgz> zUAxb#I1wbv>G`<;0|`pet+PcF8|_~=WV_ufvn}D6u7*QC7S&v4E6^K2_sa;(VYKD2 zz3;?~`{Czwlrg`TrU~~N;Bn?pUnY_v0XH!;lgPf9X!R*i+SbRS%_)8p^ZRJc6sYN{ zkdxDDD3`);lU^hQM_`vYjr_R`10+HSVvYX1x(Ee<P4MkIq@{B$(p>CN29K1K*+| zt~Sb7ph0$ho-OF=X1?oK0|4}l}l|CbyM9JLGCUiXH+ zw0S_$4d_D6{Vg)QAmxT8|S?oMd4+&BtL-ei=^dAc+a&jSvSr+)0gJf`p zGi9>8*XHMZl`PqWAfjUd>@)k)F9acIM%*hbzm1mT*JNpy#HQ_ozJ%NtO!-c2HWK?; z2t1}F3*kBGHVWn~!zA%7V1>Trgd z3!0$e#d@*f_{fOg5*7w7WpE4i96?y^ z*Sf@>gyEv^T4-M}c513t;=amZd~aGZD4AcC^c+fs#1m!tEND1Mk)-&4GqclI4-r~b z!Rzc)+4;%R_|duc+;EF$WD8OFMkK*vvE3OPIo77!DIb(w(BM^qz!{r3mk(+0id%h3 z=GKnnCPidiSS0JmmY3DF2ITB(qA_C)E#hUz+n%P?L{ zSp?u3&z*N(AC_J98i5eCn}16pQO6+IAZPm1Nn{V5nL9WfCN{*EN)TqMu19yd1q0%k z{Trq$Akwvf3b3mz+XaM)6 zM-VZf5ojcSW!)j_tepCCe4ClzFIJck1nmd?_LIIeAmMlIbeDTC&T6EM1i=^qI)@+9 z)SH-qiaGf%vGFZJ|ybk<#x!j1S`7%Vz$#N|mhZ8v0}3;KxRLp={xRk8J)Z z#m@M-$6pM5LTYFFWwIqk)G{05ARj{Xk{|-0n>1_;F8Myt*?1vegGe!%NM1 zV!ZPV3v6HSQTl3HKF)139vMbgvm%k>5w4RB(`b&6SJ%L{lzLikse7QFS zY%-F42d#fU@d18f1a#p{mlr>~sq=ekMVe?9+gAu6HE+r=ja5l>0X?U=YiYa7?wOYA zCA8|1BJ1gHxvF53Jg7~=ehqoG-c~mMf*x0cqgV*!5~(&15BFM!mDLeFDh*J|>7h{= zr#^-HD0oBGCjhOzs9?&^`^$)M!hca_{1BjhCwf_l&&%U8m^_L!hNzsN#mRGOqlI*7 z5$cORs|V9p|G=~#CK~Ppko5jd+c{>1>8*PHtv$zKf6})7V;EB%kulhRahqg|`$oXt z+BcWFcr^C&#+{?w%3R)(pn21j*HZV%847WjdLQh<3tfhErOjK*&+FzBHG>Q|Lbn9n z&tx^h{UJ=$8p;k}5*@fNwLB?;_e~I_45i4J30jOlz`^8egRYSQ&L27`LleA6TN6g) zi}*d|84E>N90Ggl(q?i#gj!bc!=)fj+i6!*&= zpFnE-W7?-7gIc>mf;`Uo*PAfN!PVoBo|Mk=YO=HTOO8>yPdR#Q%FV!3TE52T;5Rtn zu6bT*zP?Yhb)y%&9Q}Q3oW&h%J;_I^eeH6KBCC$lwakdIUc4C|` zWgzPl4=lh~vCkH-HGXRCezIWB2h0c(+snslf(h)wx3V-X9JFkt!2oL>g7eUZunHn) zvpyg!669UIXrz$|Wf6=GstntIoP){6@Ly)14zI@m1eck4Wh@Y>_z7*RgCn!bCPPZ@ z0pS4XXdFjf%tjN5I3w z7rh%VgEWy@@w&V9VLbo!=UAn!i&MaW|9I)>i9@4L|BVG}UX{jTbGgZoHP9Ie1m!3T zH(PWA^Fa+=bb+d>HLqp8PryBhsakE@gAB>J7SD<2xqG){2(&hQ*^b*MEka7RToQ{@ zAF1|Pw9dY8BVHA1^Eg6S*4?v6lDfzFl3~sMD%#Omh4`mj>wzO?M`YA43@5ry97TMe zs5HjF{C<4$rM7jMz1>-Ya@&))7DjeHNQ~H_+h?}g^Q?@2;xB^F-@VFCxs#nqYvTI; zMFgPr5)u-6<6#CdQi#mQ9tDgWsppSZ6Z5)F%+m_2NQ?#)szXC5I(wYWd2jx=w%gk; zjciYX_sxea-xG%4*VzP)E$2HZ3t4VHA?tYK6*TX36<+2T{n;6pFxM?9y}_utFPx7-ycrmJQ6pHO^HGV`IHa0)lCqYNHO1YR}ua!L&@41s?W(hfGJ zkaA27`%Ua|G(OaE9RF!NC%BN?$?o>>n4vEoV&W3m!sdwsW7| z32zr7d$K|};79+W%qf=!C&orX-5 zy5hMY#@A{o3(uAtj{({NzHp$pRKn|wTeva)g<&$O%+Ey;iAR)3$CJR3h3Q8p5MNd3 z;Dhs@ll~*rocFt++(8uv;U%IFnd`}!L{Owf9s*7FdUKw6q{%8za|Tayk#=Oa;%>h8 z&VHgaakDv*2ugx$-9T7^2=#y%j}rPy^>)TyPm;<~k(j%mxg(44 z?r|e@&hX9zytMR**s&N;_XgG)N0mV%ONavf^7^5!Vq~5WczRRwdF67 zbSeY53avou=Zui+j%+xz6Uwky=(xHi_z>E+j@1Y?K7@n@dZiH-+jjCich4j-gH8a5 zM4Tb76n{zFbDv$c`(l~8yS?jp@Ork=y5it7Z6P=JKn`lxAVyk^FY){@6zc%;hDXvr zXUx&=i*i8s0A|AkE@b!M@x_hRd-k3a?)rp_o)0F#R+6*lv$%@`z(gIJG)s(*8&;FE zUf7$kN!;7M+MK8FSy^klN34y5s{)f{5JFHaW_xuym?#N%VR17qTc5!-T}vPLE)gU` zF@XC8x$4iX*_NuO#V3$aAB@dI-laLLN10VTfZxLi^gF!RAW)vSwY3HPC5Y@hr(BXG zAv}3*EwMNJPMIaeO=3iL+1u7X-owHFD600@ODs^+j^v3vu*`xZ%nYyTn% z^17}6FmF5AmDW&!hU9ibtIoHy*=c5=Rp$7FChl>e4$)`;DocQHq2UGH`$LXKpp($8 z@~w`iS;0wPe2>h1LeyrBC?^Ke1tS}7Hs5XAMVBA*(>*CC1sqr?wzb&WhX1tZz%cmn zNjDoMMxp4t8n;*$?lK}XJGoZ%hHT!RG~-gzYcubQ*cw})cADB$gTI`!eRE{hV&Z-^ zWdT%b=p)l0+u`1ECc9@7*Oa(;r>wG)=v>)$W98J}rtcH?`QDwhGmG9gB1bw@wIipr zBVk9F4attwMecUnoFCsjxcVv_RWDgM#^qxFY%VR0-aKk5Y6n9b=%i@=t{Z$mSOU=| zT)vr<28d4&y`ff_?Q*IVrpU$%N;V`zH|8my6&NeH3%EBRT@LMQE)q(!CLkX|ebWg2 z4JPO_Kw!?uIQHje!pQ5v6ygP$C{!Z|l#0edPaAEP0XpZs*tPY$f@DFAl_mh@`CkF+ zq@J&O_c(wbFp1Er-vQVkC|W+n^E9(qk|Ga5-`%U+c?X&(D6R$}yHrmsyV7{oZDpF( zGfV@G9|pjCnj%>3oOFy`GzLp>@EwtzA$;IZ>y z>@WX7k+nL|3xZ{%>xsS#E`TWr0;8|$wiK4YayhnrI@CI+#Y|9{s8Kw&O2uG4BHA=G zq(50|YQSeyjj~jO!GrljjRNH3n?6+vRR%fKQ!P-Bf+N4*9K|_!7SsqkIJ6_*X-9%K zx#6#2*SbWIGO5nv$>c~r%1-GH(Evt(_XySd;t(WH*Nx3{gW1h56sy z1zVt}KVj<+x+De=OD=G=0-j(T#Q0T@7xfRIb1}ZW{7Yt(6sqasfWI(;{J!qYMbEDb z-~z1k50D-ga1iXUY?7zA(y3Nf^fSf_Jj7-!IrkG$rw0p&-hh&Qq zUO>@psnu<41EA+&EFSZfPsO^ z-0pcBO^P{>3qNi-(g&<=J5-EeL{1+qsDZ29klrTeSjYxOI{Gc4s_6^I_{7QGdEikS zE*Bo(@hP6=BDMC2?^{=(H?T7gefd6Y#HbWw(JP4jB}@>mNtbq4fqD zo}2(jJ2Z#>Se00JTGFL`P&7YyeysGk+6KW3)Z|<@7xbZn~5vBuz6rSKQ(a0ZaPBd7I!d`u(wQR3F|MmEnQl{qoK0RlWq+wM#+Y$ZP_Oi)+vQ zuvUh!3(rCUB8;kP!D7A)u!EQDj?GOh?d?c*p#ASh0i+aQ6yQt+kIlRvvf*0sdHE!i z7cbx@if*?rPxC4IeC9w}&swl)0U@NWFeH!|OR=~*2`SWq_yLtw|wcas>!Se|`u zgdoyDdaP#=<6I`oT+HXWa(BDICe~mH)xY}|#_-TY~)$ndWhwxPz5uRN~P(^xpNt0(z<*PZM?~u^} z*kn|5a>-Z!TfA=B`+MePNE+x`qd^A5pcINXyd1k=m}9W>jnX&EvqDfLoNwoAU@1c< z-k{XkQGCC$tl>YQ7p??@Jm}cRG1Bb%iHVQBb{y&1I1}w>TsTs2I2Z*T$^yF{Q$N@|obev2&B760Zd8)f89% z#Q}yp;%(%JNG)nNVC~=%gmsHM{#Q3|%SM{0y7GFqjm5~v;8XoKuaZ&Ii!XFlHK}G( zpx);gIm@05yp49392mvESEd!>Y3MM%p!7e}vey(!Gy3iY%Wr64-XQm$0gCkcfGw+~ z&=cqY+LVFmmsVGYLD~#7dxho;Qf$#NOTU=*ZMMJ;RtC-QhC@_lgNGYlH9jH9c!|w6 z5C$7nx?3|A@PY+7egdjd#9gNT!xYT!_>!%)z`;OO!X#h5sR(}8%s2Lae6XDXn9p+~ zwAjiXhK+_4Ty(@L8uk$647yi@wIfACrR*QDiV4r9^r6oqON!fYH~+qNr+o7^S>u@~ zc)$obas*V);2jD1gB2zytrVS%L8}Levs5B7FuircmeW>7ogv-k7_SOr(wTPQ^xqvc zKY6wTXC3E6^4UMC=Xn&P9)%iBVW7zZ{>Cg2&UDSO@x{J&q{;2J8+yTJAgca~K=APM zP3W@{x)$FbQs|lZ)YQcY4C^(#fvpZpW`genW#1<2PO38XG*K8i1;dt=p@r-Sven_T z-^0Y;{7^SKlEjR0YE3^8Y5SY}qL$xwgA6fS+S-I$*e0rL43Pd~ex)MMNRv|T#C^T< zMx)sed*%zL`H~tTC4sbyx&F$<3Mrfa{kE@fT`)*t3m)jO&jjD6O@!Y*1H<7V(`hwl zpaarn%Q;U0SKqM?u0CX3O!8!)1xHQN7;XA?h6y`y7x5*Zjsxvt_z@$$dkNFreoTJY z)3Gbkmzmgh9@E`Ye{V$wl^Y8UrJwIv0!*_!d3PxE1_}r8=*KLWfTXlc9XX3C2RwD6 zj9x35b_VWKC+%D-VL~VCo{YR_Wob#qWj|L6P}*LAjexVEPOcuoAYX@<&2;MPFp?ZD(S%-m}S26Q#OfJOvaRqj=vcoli8^Tw?7 zgtYx_D_z`rkJ_tj5BDeEXVelyM)n<+X^Vzz7@=f^tIgIM2qLV|jsG5XLp!_IOCKlY znC(#g(0h}udW14kjZhg}O(bq#Bsoj!I^@mw#&EuD<7a-KQ6Xiq}1PYL1QP7PY*B|gA7j_FxDwzOlO+U z*8IlMmh+VheJvXu#{;%@^p`eAs1~aU)#!ULgg`rr#DEdD0Z$)KO@%wzZ`z;b!-cK(Oku`g;qq>2$_|K&*-UeY7rNTC44( zHr?MMB$)JFsv3?^SEwJlxQ9xHLb?*`qQ{AVBw^%qg-e z4`mGm4EkeNplmCtS)NzRdAB#~TI4Bab4HTbnf`kdd@RTqXlaR_mC6Ul_m5Yv!6QvW zA5blxre;t5yi-f-BxH;lKD%SH0{h$LV_AuZB}Iq(zT+6RJqH-}9X%bE=ba!IgWefT zc1nLev8fW6jpJt2@7U)jMO;})0xl%T(PS;}_AvMs9lUekp1sU>dg$}27*vf7j6bCF zgCQGn)x@oT&Yq9eDyGC2W-ri8v<~=ghln z1F&sJK;5Au~10R$93A zaajMCc`*;MR3Za?*tArX1UmBpYoA~5r(J7F?R*;VZxm_r(x_Kb+#k9sd#E+X5|`w zceZv^qRK#y$YNL>Zk7Uf%tZUBXj~tJPN+&P+~7~+&)k(ZjRzp$E_RgLE?UA zciwOx)dP-Td~0wAg09*@NUCbi`*JteCb?K`<6E?CSE)~sun4XHLs$1sy)%Zk@~TxN z9(PveFO+@g3Z)lxK{NUf7r|o5}00uCaVqfB&#n}Tk ztZi+MQX<(?y+u23Ch1ow?;s zHaYRm^MPK9yscjD1ldkeyGND!x^>*x2j=DE9{eU$qJxgGF6+c(qs^k?4P~dR^&5u} zy|HEdPI*#Y`PR;ZtsXjik!pAo!(tXPotrd1U0d6?GAwDmpq~!>e1~22#QCzbl3rmH zf({b-a0_-Ec^s6ytj5d7dhj2Qc2>f>Ziwp#p+hWCK%yW(Muu4W-{@&K=nL6igZCag zigIBUm0YNCE~)gbJr5kl3`3uOgGG4GiX-{UeE(3u>zYn#@d>3}Uo;n-vNs>)T2iq0 zRoL{H-(uqL|Fr9H7U<(p`)?gNKKyC!NJz7lLq2xv_1X)&{M^d;OWmR56*FWK1eQEsl*6z*0eMeLGON6>kzdtg`PohQYZrG1?cTTz` z%tcG#=6U7OyOb0{5&+7|Fa%=rH@JKHeI1|)1K;`J`KCx;5T=pQaa*8xlO|TjxY$k- zP-!lwqek27rMzv56^Y~Qu5;3kJef+h=9pL$`8=V)g!6n7dkzJq<7-KsqpUVKop2ugJ}?l0c>6 zTWz)*-0;HIz0y6I)E08(wewO|RuL4x5_1?DOHov?x`1O+-2^G_?}1_iBGHO`s_rS=X3U&yOsAQJt|?F$t?p07=!L89`hcH{**u5rvx>E;+l zXsp4egD+2IFt={#YS8eWjo0K~GD6?G&iF!si}8GE%0Y^^QI9Ya-LJL)?)Y7}kzW zui;gdjN8CFhT*hB)ce;$hxie_?}FXmYBx^)dOn*EQ}-;kohGO39Dy z`2Yh<)p2J$QXNI=?LL_I3VVUMWNFS^W2i2|Bzo~Bp9~o3-Zo-FFG(XJal&3C6so?- z>Fk4T94Rw*m!%Kryx=MGY}L{4Jcb>z0QxtRr0)XebqaG}Mz z-JhQu&g+A8G>FJX);wfFomf|9`q(?W=%?LHO9)mqmpGdiM0zZb$AKtRd*iQs?PO-u zR-DHMgEu)ZS09Pr;!EAaoV*hi2%Pa2GbxSFg-HwxJ7rQ}yDn;fNWTrBNYBFmCdj!k z+!Sxo;F$}#0%l>igkhB#Cl15&9DOHXT~A#s@`{A_ev;iq5c6)Q%ItY}2KvpYtyLgT z84Ja3%U(d)M~xHro7L|2-uPRjv_-ekM*PtcH1WpD9q z+Hsz3N6{*9x00v%t>=gLGbA4}BbS0VT03L4|D*CK)1JQ8&=0Q$M9qwesr@C{HLWhj zV)YwCF~*2@ z==6V}?f6$<(&D0fiOu6YWW&SyK7&7d@31PzsY8fNENn$+4(*>rqCzbYK?d+WwCumE zDE%%(>DcD+%oC2-PmEA=d6sW$K^)_blq^v^qvI5p7lQpRyiqqcdisR{ym{ffcvyr* zv1v>M-nh6U^^gLJRAlDu3)=5IDvbRfv*%6ZS;W@P*cWP4vhp-vclkoP+nD^MvF+g% zt@_$JzO1~0%0kdYc?nGsfbkcB$|qkR;IIdZ(CmN;vB_{8F&)?>bH?T9o-;~vG%D*5 zyIph#_g7T}QF3T)3wGc|4L0GhNX4sv$MQr%ic_-%Ie%A za|WXBeZxy*1GR%+$d)E&Ri1<_ei}^bzwA%1x4H2r%Nx%g14BifPsVS_SA>w$4^_hh z7+@f0yh)EtnEhl{F+8or5L)rhPbqg=Z^_@PA8XL?N`&0(_MJ!MzRMj?AN|u%>Y5`cYImvZ%6=B3>&fJkP*M z_1e37nzOs-@8(SHM&wf5x(0L8Y+32oFgKFa{p{$GcgveB@suh3`*mKVG)XgmQI!W zfK=Q%zojLE0T|AR`a5+yZSkkUd)j9nq65R#Oog@|PATbNeTLQ%>dNvX&Z z*{3K$3IaRA`aG(PhC_ce=q$gzUu+@mDnMwC1;p>Iw4>f#8DMwy8Lz5spk^X}d-h39bGW7z3Yjr-)2aVnvODp-{q zL!Lj3 zFqmQSg$3q|vP{-qVYZBz@F&MnyyL-r{=@ zvvUbSg`$fK=8RD(M7Mh`6Bc-H=)=+_)yp{g1N{q2agDj`^%9&&V+3Z9CD?*Rt&P6G z{`#K{-RI9+_>hl@== zGJ&kab-%NtG>cBWS3$WZz|t?*(!jlX`c!4}&$ALFdOK#4`eFw8hXzZosY20itkGh9 z@TjVZ@uut@;f8t`oKYpzL&g+o0U%9eY?wny2elTqrkI*&FeS2IAl@-R+C*_xkeU<{ zzd^#$VYDGY7+0_X@tP0kkt#L|^N>t%rgdd+_Rf8M+Qbx0Kh}p$s|?l8>Wo+s8c8%M zerNN(rKFf6P=}WrIC*MUvqk6|GmKEd=_jaSld$XKrRJ>Tk9fgnT%e_NTz|(&a=wb- zkC7Vv{t>ns)ebAN!i>}J=_j^(uHp?2@x|SyY^xFSM&4!P>Wt{85Yf+>9DZjOvz(Ij zF{ge1^poO;g?nx=5?f%`slEtFViiC9;g~n7C!m-TXZ?|^7vd0y$6R}iQro;m>X4@vneLB ztntxNcJc4{WZbiTsiDU^aYKV0K1erY{jWvFcdip7TtSSGpTo}wM>IHk5kpRU{^_Un zJ>$en$XRTQdbFwZz+NV?3Jb6b&X+*|#1`_hJ`Yv^Z@P!+A1m`N=J4BIrR0_&Op|i@ z6wy6wj;iZsQ~KG`xw?}X^pB)e9KXtcwaYaJ)kF`yVq@3qZwe3JL{gO{42mcCm&I7( zwYzUbgfZO+{+Iq!QJ6=3X;R{QXI<&#*KcjI{oBryIg~|fny8!Ba9a;Lu}tXnTh=-7 z0(evQr3@ZV*}~vMHjITaysp++(AvX$>F2uH79eaSmvtPTeoNjW>i8#29M;!acR#{e zmiC136Z2-hmc?&M_&q(@<$^2=%6=Ln;|I&tkLu#Q2uWxwGwKEetKO?S)W=7u-12s&XPge@lZ zhY&ws%TVQG>$>mwPc|zk`}awE5Eb*MNarQ_7oJ+ILEc4Zjt`;b*JxbYY%QNnc-YgA zksZ$Vpt3$tBO;3pZ;;?y6P`idy@O>a`zM@s{v*3DkGG3nO{x+b+sWoh_CzKdEsc-5 zdM!&wDyqu4|CuJndqeT12o2!p9#IL04hkZBmHeGQAYoGtY-Y*&vB=a*fuk>=Go)?{d)Xxb}I~spI@SJ zg|dxH(u9-hKc8>C=TbQ@0B#XxP}LVp929|{vcH_ze-anDqlk5RADg z4&?~POMB)}DrT{)2;)bF*FQszNmwo^ftvsWyTG5wMEaqPd9j#5w&r8a3w3i%&c9-I zqJ|%{XdCPeGGS}{TuBtVyqJ?G{U%G=T1QZ6v|_VkDpq_8~LKX6)bn8f|1FtVQ$1E`R|eueYsJ=l}0R>vHsA54$!s@MQeJ^q0(qn0WZT$O$;Ve~gf|I9$%Z-(IX`_s500$Hm%nx;f_QMLWra&xM* zl;PhGl46Fi5}x=5?a=?M3VjJ5l{UySErkQ)`GmDlebTHg zNm(|3-@qln5#4gZ}jj5w%sxfgudbA3|40eQej(`iG)w5zhJ2D)pWYVmPyku6 z4@Y;R1msPsEwq5;Ti z7rXCczJaU;6rgeXPZgG5pPwl-_|KxVdOs7r&tdnzuHKy0`v~E8u^PuxCDYB4gIONd zbQ4r#XpPW12C0^HeDoWfs3YP|s_SmEZjG}heC+>|Wh&wP$ir1nVypj;zA;v8ByzhA z`;t}Zm1~Z6O2-fQztayRm3RgEn#7hZi77AkE8pCU?ysL~p!DiY=H8T!y8nG+H{L)* z9w#7)p)qj=zE*qN(s(6r;lnCiW@k+(8{6(E`oC6465#WUIRQ-^Wob^sI6|U?@_WSb zqg477d)!ZP+4}=$i2tu^aFa&ahf(I3H$P#_p6q{k$XR;%y^eXELu34JaVHt@H zac?0a`v!m)%cdM=y}{6enx{hnK4{O}e30i>&u}S+?`WCRdHHxslW|3WGJ2LkH@;qyNC-P|zd)gygW%{9d zK)yD^Dvz^cdS;VeYZ>@AqbK`Pt&PJv=1l9W*}wW4<I+T(H%%Apb2sjcJXdK?OBU#PgE?^bb)bgu<6LXO@H4crC)$DUYbK8C9^^!eg%_t zEc>UzGi9*pFp&m`7-0M%SKS%@0q8QdIl-z|NABe78C%* z8C~v3IOw#xdk+sCpf@g_~3o7wH;N$aGxx}Q#62Pqc6Qyccr z*pV(z7sS|^@Y5plFOmrXi1AI`v_i9JH4z+7V8xZ6{i7{Ea8@TWooG%lj%DNz8m1%? zI~U-EAN%!!giGQ}!4w2oZSA2M?E~`FpK&n#`*h+gOr6CEL}_?D%)@FtER{xD{1RRV zoPkp}Ef`jxBf@i}@;~EB3<^0<950E#eC=2$bv=Vv29%r&K55eh658^cQ_vsY=MWh&URmk9#Hcxg7qbM8Lqds5% zsnW_obZTru8J8jf@&8{_#Cuqr3UI;~x7o1Y^Y_Q8T!XBWX~w!H{@VsJ@FAnp7>70P zmK&X?7YFzXyNb5F`9YBADwZ!8Q8zSPd*mO37GnxcSPofpz61ftUd$2zQq%|iC^u@h zI)Yt#BO!#2A+9Ce3Fj83R(6DPI!*Teb->)G!vz zppX)F1{Dsq?G3s>!luqxm}s)V+}s>_CLVbY*g+CAZdPc|>!e}4M@KLu7nJ)t|$B zO56VIKg(L7i~3+6FrYF_W;+fmo6eL2iwO!DAFU5KrvAa{g|CA{LuBPjl&_d*SN%H^ zqL>K<462M6R3DPTk@fl`qt>g&t_GN*oKS08fz(z19Z7GWBqo)Mmpxsl7XHY%4%CcIb_pRiC>Wf6Xp^Jn0EM!} z9QkxNk1<)4Fyx%@Yy^_bCd$PLL?JE*XRtY=+lk5wYkCJ(6>tu|^D5D=(S>3rvy z_2H}YzhYoN6*q%a00baL4N*}vIi6)t^oj1ndO3g%d|G!OwVU5-; zQqr)AH4(%M{Je%`$`TS1xfgx}BOr>AX;#*R=*PYOI}xM`dk9|?S{UAXo~#4HPdLb- zmg@5zU7sIvpYgrs-C+qQA1v43iHibd-Xct!8MuP>EN0-ZmGt@FC<;qB4LZ2EEU`4+ zFc@Vq-{H}}>!}O6kwIu|F61;=n2;q;z+% zji7(G9)F?x;dGUf>hd>lG!7WXGrXWY(=Q-<3hk^#I|T6ocom85a4E0Dy_{ea*cUeJ ze=+3pnT4R06_$*;;J?oea1t^)(5({8g&r>hf3IXf%talui~0LE%JQz9@BTzAbN>mg z$A-uLzDJ_)>?G6DFcC2;02+RtHRtzY*FWU#-Rh=-q`Rf_0=dS%WY{4qpvA`L@qdd& zRfJ?&snNJpL8;o$UM##Q#{21=8o=a`+0E}ADCKvYC@7zPXd=K?r_95kc+`T_B-x^b zNhI?|{!AdO*l8Jqex=f7zk2TK+x$B?KMbx3Kc_rh$t|ZC)zAjGR}8R^%-9bQQb=2*)#8ed969RQ{l>({XD z%l4|Y2~73sXDL6^P%0% zQZv_mX|vNJ;6(mD z^eo#N5E^K}$fKIHeqbth92IA70Q^Hf98$$lBC)Awb@<9zawZ^yjt@zUU4Mr+#oxbF zWOMfhVbD*%&|Qvkm9F6=`;4|FpcF44dWUHhB4tk7S=M{H!5d$u)^kud%%D)qFeE@P zPYoBV5Ga=QLW~|G7=NI-iB0wf`W7L%^WiD}y97rMVTyG9oR9Ep+|xgt5b~C{S6tXt z^T20Qb)a->L2pPEKu+CVSu`sLY=bXM~*dgm} zn5i-)h)X~(djds#62#GO(P)O)RXS( z=PL-wvN<()ioWIV^c#= zDbAcy@5XOf+<#5#?}>VQ9Y4WC7bKue?BSVEY&gjjO}iRmB*ebdnSDezzowHYqs2s~ zKYQ`3!>If``J`_|(D>q(ApPawzEpq8<9;@f*CAMcF>CsMJ-fk>t6sJJlpR3s(XBrLEbHODl z`D($^KL}P#Eztmro%t{E)ky{@AgR-JiAhY1_*iauciX`Y9Q{A2^$W~QO&|YWC?&zx zA#&EdwX{BPi}5#b3$9RJF!f{xJ%v!GI`@IK^oBQkgWxMeV)qoha2OCoosPM9ztd`V`<;vI=MV z`@<>1`OByegp-{wI9i{iEM_l5M4-vlq^q&Ze*9eIY1e(Ca3|TvB>LN;Kc0m22@@ip zN%E_&TXe@#u>Hlr%nl>n^JE`zk|itpNlBOc9#Kd`s!dox?D|G=dc*3RnJ{n4fU4&E zbnb(T>tea(@S<#9{P0TKFfUK+iua3f=N> z!A{e+`x_~YWVYvJ|`vyRy>sB$5FZ0Ev^J0pd(rf_6!j-3+d#rp8 z%93I=p~B{7%P%f=q5d~u9n(g#=B~PNMPB8MVwqGz3(BC)tt%SMz1OlQnIZ{17`ZT^ z$D8^O-l^AJ!!r>Cg};9Ub6m&Apvx&dEWcMj$I&N)XIWEE{`$GPSJ9M_hTiZ>N*=Z?l%-dq7XZLl^AT z&*gsGxJhn26yfgm=Y2K|)y6n9tXhXOR&48@dvTZb)UGCOzIsV+%(-pEngYFhk?9ev zC&?;leSn@Gzl-`fnODG1aVZB+?UQzJ8XJ~LJUG7c?#z^ACx@HO?avPwx5jVk-n~tG zw6XaAMCtkZ!D35t`Bu$Uo)7UEi@PgA9pVAcbP68Dy< z_*@rs8s+`%?PZb+yA4;8NM#0avtrk`@b=oOn+T1%&!CXIjHTlYwcc&I$%R^!fS$R6 zZYF|{CHmWa)=TAz9bl}+TCm|tzYePNPNc-G1u6M zg^}ZO!q5KfTdB_e;b*o6k6|#V%AjXVbU$1%n6j|g*~JAaPlDKe-OxU482_I9Z^Y}14&Vk~ z(|6{Pue3fKONtUpqaFpsTE|&6Ea27cPMAT7=x}1n#5XlL_7fl@okkTFLaoKkTQuX~ zWw{>ln8~-7)gEQr^~L>aEwrh7a|@5b*5BCIE`JGW37(N_?e7~_cj3T2O1*D>k;FZ` zp^qo9_-xv2U(dTZgmon5>;K6NPg#IcTci>RlKLo;~13b5gQz3J^1k-jhI*=a*oFq9T$Gg!+IfBKbj5jmCu z0@Z^WS>9%MnA&kbw(0;1sxRXy8T~c9EO>r{*CSJ$@0QAC1_gafY!} zA79S9iaiYq230P0q;~qrw5KbSP8(>=Gwc%RPBmNC=k~RjsnMi5G_eZ{uuI~yMpL=hopUv&gD7fK40wW+crPaSn zzxsK{-C-R8`MQ*kl_J=naG$$NL+^lwo-}W-lX`AM{5#U_Bq3!+GuZBjZ#)NfI8uVjaM$s&@tmvRMFl1F#KN#5Sxl7ekIcWjriX2{Aq zr<>5KQNvox+Y*GjUW4R}o3cX$6D6a~yjv z&GG1Ze7XFDyGnBh^Vct7(C+m3m_D(&&GJEGio?8R-L+QOyFQD1VN|7|w<%iS9+%f( z?zvrjx_w(x?|nQOFrkG|g|%y3svluo{s||KSi{RiMJld%=HrWMui#*E}8FlZn?7E{#_g_W(bS zTD6`vKf}Bq^H+RGrwnd_n=QdPDH7Gf@$Axgp%3D18by-5(o@3WuZ|uyh|4q?4inQ% zYk4Z<4}0_E>Np$+dbLsv_Ch+28(R@H8_hlHCd4~+!#`T&*9mnKa$~u(g99&t6rpiV z2`Wb%k~@xv>pOlP5{(bBT>C`G$jlzap2W)6dSCO$UZ!=ID|bZMmY3IDxKCmuuh{Qg z!-rSoZ~l!C(pK6I5_@cB8#TXFL-EphRr&oU`bMSl0$br<8CNGExAXlTI^~YO4z)V{ zJ&A)GC+gN;JBiurF@68XIcoDI;`rJl0&hw{W2=W*$PodJPpISK?UjpK+F`a5*f@Yp zLM{~wx+8m{+8CzC;@^8^*1BDAHSuWl%dMe??NHQ~u#URmb2jDmP`#6OKD z=W_X{PnY*xc(ocwF}|Kz$T8GRTYQbD$@ey?QgcjNv^?Us$E_HTS(hxIT7LWu}RSLt9{dry!tvZbS)BL<~_2Y4& z1-@C5D~dUGu9*Ct^D3{RrrTJ`l)aV3Wa?{SH}JAI@-M7`m=j#tC~RHzdr_Ur)D>oV z@rJ0kmwm^W8o~ND5!-Lnnt!Ms>pZCy*ZN9K>-EHtllS|gA;vjaEXUeqn_y0J-#0fm zf0EQH$j){YZc{g{3V>pcX1rJ*@L;}bnN{P+*)tUdOvoZ4Wf7)NabUY$cD!35X?DQb z9F!H}w1jGxD!;-k_sPCLsecADr=*H4BpKxrl9JcU2Zok^o%XRbj|zD4JS%%yIZ_RP z6NDVPx8=SrGwvkOVYt&7OTD!^3xT!nNYl9;YdeCo4@BjHsC#I(T?IUZkq74nI-Dy?v&n z`Q4PO@DcG8AMNf=vlAV5Eo`WuEb93Rs+YrAdmzwKO~ zM*!1a0Z{2B+BVr`^FQ#l4Glcjt1iTe9jPST-w86pU%!4?2NGfJ2m9pNs3ERjBb(%K zxVAUNodSW}V`vEYw*x^UsE-pU4>7n6Ae7S%ncc3PFH=_m@(4kfb!foV!vj^W;_AN1 z+DBf!VU3o2B`?{!w$t^K^!4{$uK*5&V-|inwG#Wp+}>TMm7stlP*(IbA0)K{bECZWqqo+(Gz%YBlQu-)PF5|U z7(n0QEAH$c`_ZJ#+7)OgJ~de%pilX*T~{DR@^h6{fPBxzVxmCe-h3BTY*4aTOo&gvf3Q@2Q%Mt3wi?%sP<6H;}*L=V_Tw z88Tw^0y#-^4}=LglLjB03PUhn(_sO-eKM5fhU?7n?s8xjy*Yk=5%nYla-yqSFKLmV zNtIqc0B0H6GbpME2CfItj=OWQQus#@n#-TF_?pqV=JifRq7ScE=%^YRW-Z-0nG_y! zi=TEzT5kDvV=G@I?tgLFT*6US0&%Qe*Qxim_MpvIR?`gs(}T4~-@5f!5u|R}7519TRzj zsQ1lyp;D-RE6(HihmDCw1#pN@vN4NlBbNipe*^F=GS(Y(P7+zTu`Eox`y% z2VuEzZRQT@-rMjr`AnmFR>6_FR~l-frJ11;iyd68Q8C4U^LU)O+q0 z_qg0qSI5_A^yIdXkrWcO^{QU1=BDg;+a_ho_||SRB-v%e>Ig-~*mbeMuOL7Ct9EE; zD4ZTZT)d$~wSPM7vJjU(J!)m!>BoRh=XgrQl?U|9MF`g02X?deqDy=l2f61{{r#!% zn`zs6h&o|7{&APcY$*J?>-(prsI%QzF=%-d4t93!lmD2prinKth&^%3YvqgVr`1C5QW~bHQu5fJ~2fPXCF{6tza)+DWbRm zj>mswbpFmg7`1BQL#)aoztfOl6ax>pB}DUc-T2N5hICGf$6af@CE>{GAvw;oegRlO zt;2R%ZWAw+`qu7ZVrI5s7C8k4t8=L()|fBCg5WC2Zyi=sg1M5>@z5~S@ zD334#=<}=9I2fZ`f5y#^=eWqi!e`sSDs}}peh!3ujsMvztqtrzK-%fwwa$F*=}dgy zP$sR{{q$=d@=Y9|l7pQ)Qg0c(ofG%sH_P3iKKQ-q`nMPFT@g+s#sF#rt*wmN1Rf*8 z;NX}M*><8ZK^rTq%}Jj03{?gf()-c}EoxmlZZPR^(vJ(I{@wu)&xY;;N%Z_j2t!TSX96SxR}dK1)moz%%^@S)+G0Q3?KdO^SSwAJ zk28oq({6l`TmErb(g$-uGO?Fd24~3gsta?8t->zf)K98R+woXCD9Y*Piy1xM4QGk2 z!c5_)m49~R^B&FySS!)(@}GiV2`RX+p#AYlLK4(?` z>3bXRkL#LxxOVuNC?uf-80v6N0g#&5nF!$pXTiqVWcr&oZ@OQvxHivuW25>fZLN2g z7O?tz;vm!dfWO)hlnwqSqVw1e8WGLYV~}9*-Ljv*q;>6=DS{gbwenrH=K%5)v0{nfimoeDhMbJd z8I;^JX&Jb5NM6W8edPBIuYx?IJ-WXs!myyi1SZT;JRvgZ7~P9j8u0=ob%>M9i^ z=e)$T$;IiCPp&AA6zibwyXCB9ul4=^p=3P&YE_u8K4=~&x3)qEBc1spb}uoYzm zwgLj=54$unDuPy)EbA&r6-!jX{%k&n`aSQl&<>vdSEUPF)UkD$Pr(j^e{8Y0FVc+D zgLOk@%j;$GRcRzYL);EM#T|kfbQ3$=WPkBC@nqaIg+@m|K9^*c=p>yDo=zZN(Yt`d z(Z9W7%`cU1)v9)vE}^*$QP8}4=P^;*v@7mrZ2t$xdz-C}h3g-F!Zu~=jtcUw8mest z{Nl<-nr7eL0!G6+ti`SIwIEkYgJ|yQ*nTMq#g&0GM~C*mUBulmsf074KMsiY3#jgE zO3o?sme9Ah8q*3TgwLLX-CdZSojqD=^;tlYV*&3mRk$i6H@XX6>WY8eP^VH30T=$| zSZ`O(?2F(^$nABT3hY)j-)UFXK2TMVk8`A{w~;CnepEr76v7^ntA*8Z!lAq!g4Wx^>p5z+7ymA&r@nJ}=1AH-x z6cCt7nWd+2pFUt#dP}sRrt^3fzy3m1Gr@J2&KPLfveO3`7cB(oFL-9tenM1{{$cVl zCujilb(9mFWLM)cP`;k#Imn8SX zE_~aT-HX}xT?t}G=mjpSq^6J&`4gvKT3w{j@4?EpH(7y(y~j&wJ{3bNBJ_$>OlXpY zR9j+>q1I#lfw+{CPp$9=vy%)3Xo>>KZ-kk{%{$piIFz;G@s^4ox#|@-rtoQpXKgJW zTx3smf3Ao%96UKXzA`&_NV@3lqF#Q+(RGHfzapPm7pO^feVxL`6Mt*2JrbMyPM$<= z*nYBIh<%m5&gN#E9`V6c77AjEO&&CwQueFU z4m3>SEM=vR@5ZP+!FNptDD+pMQurmW@(I^v3~IE#)Js&TEA@px<)Ys-J@WTM;#%U* zM1=Qh{jqtmxMv~V47(gIzq7)8cZg`ATd-$NgsaxC+%c^Gn$(jNk`a$u4fJp)%xr}($Go849o;-dbUL9D}bNnj5F z(o5d^=?mL|Jta%c?NgD?666tERyIauf3wz!?wb+XX`1BC$#9-Cq+*V7Uz|f7{&;(L z5SOae^mn*tQ(p$}^I5L1)$V_&*`^*Ht9w7~Lwvugk#yPUiQyNQXRiTdPi&hfBX4Bv zZ=S?>*J;rT%}qckOtL^~5roIv7=ftpk2v7m)=xYz`M|XnlTcU4jOE3SIn<(@Bl<`M}G@N3qxvK^jx^z|_DVkSJ z7T9Oj{Olg$pllVoIF_?Th+_>86`{%8Uu__TqK6Y%G^C^EJp2qQQ}9oEe8`WImm(v; z)E@bHnMpbuoegL)12^_fDZ|8a!7yq=asCI*hpCj`REO}+ms7mRIa&u3+Yat}cO_OF zwxjeMCwZm5*6rWXm!1Z@04;RiHx5RQ^A91od`u^_aWxc1@kF zjbp+N-Q;8Rz#Sy{fT0~f9c)(R;0gENlJjd{Q`A#FUd;g=GOdt+86qw|kHxaWz9goE zEuEmagWS9)oizaOPiVW4rm8;|c`FCcmhVUvqDurE<|a+3cL z7JTSG6|2khs&avMu8ss11umR83L#o6ft)RR#PT8e^Zh2PMxY`isBTG$l8{d`?vl7TwhGxoR8d?e z>jrTlUlhL^9J@9GmSi>O35MJ)l@fUy_&7Ps?#_&1hCOUM{-@>Vw22r_3;8T1oGP}t z9$>$qx;{O?-0t|ZQ2S>Lpkveg9M{duesNsMBr)BVrzLtbE@m*4nEJ8@? z7Loh~EYJ^e8M>fn_0RR&8YVUO`E&K(CHYN)nJj{jtwM#w-IqHV9^#_fOYwsCo*eXw(g&&y0H5k0Z*S3Zg+Qj>FQ4`)tz@Vjez8YP=6*dUC-V7NCdpQc0o&F zmz37h@B3o)n5t}v0JbxbUL|Hdo_sGR{4|2;b>OB4OD7T&4=iWwOSh}}>TY8>tzzSD z<=vG}eoi3W$@)lg7f0Ef<0-AjC%z)p=<#4L%(Idx{eHaw4(LcSW?;BxOr5tIbT+~qdP1(JU~6=4vevimweJb+HiuA114Nn0+VR~%wE)~vx9yYxBXn0xJYGz=E7fi&7le6xNtU=Vs@TP zJHa+cnFs*FehB2$cJ22=c3R$Ual`WHgr~>>&MlZpStE(0nA&;TwSBCQ)7zB_tfE`G ztTJofAg-J-aCjBt0C8mQZ!-`uwTotMb>M_OJ_nJ98KIp(9wLlhrn~WTcj!b(A<`)F zwR2jVkP!Ae`=A|-5440}vv&UUbwhmmf$0H+Glx0@v&L`-2>8zPToE)-6E=I+JPwEk z#}ieRldOXn8sjdJ5ldohhVP0X0KgN2{Cbg^`yHw-FD$=D>>e;d&61Z0G5is^NveC% z{dY~jC!A8u^DVbYt3DJrliGxB7>73y0$uIuGSGUF$ZBLY8VN)r%cdJ)^EkL{Uq9f6 zEy{p{rwJMM!op*Beq%oZhd{=_)>)KY@OEJM6mn+n72lr7-eksl73+`w&@hMb_-4aF zew<-P;3S{PG_R-c>Z5pYAtb2lb^ekb%3R9GkjB7 z#;i83;-Z=$g)g+PnLSA>*YH%pKWBpYwjz_8RZl<~f0SVdHnJjA^Fw`=6*bEumSq3Q zZ68Uznhz}@`@u4Tu&Y#}GoAHulAuz7Uw21yfr}EU_JC>oZ4i1UO$AhI3 zkE$7aaEU6Im(gcv0NZZjXdCQ~&>{wv=#y1Hqo>wfZD}1z6-h1uBvr{5b}I-HkF&!S z&BAXA0Gj#PN!0K2K+;C6U|kJYe+368xnsKjLR#V?9|dFw5^Q6uNm&9CGI(>0SgRg698?VX%QJL!4)V0xoEYf8}+kGW12dHUePEstd6M zF2oYdU&NlJ{IFd`8BfZHHmWsZ##|09{B|f(c@0kxR@4l8md^OAhMas?MH3RWC_{@x z7e_8FkafYyaldqCKt0m$%=U;IerjM10U8BC;sT)?fhnHU9r#c@e%AnN4~sd198h_l z!x>53j2^R=GM8K)TRz@xUsb$!l2>Dc8Na!jJBCQ5UVZgs{eq;bZx1+8#W14CUX{V- zAZSJ-^Br%+y2{oqKW&K|ND?Im(G#3xal;v{e>hQ@SQZlbZQn^g07f5zP*GUL8m8ru zHE#@F7VOz!1^>$eW~cz`U$O^gmAvq3FNu;4(ZQxk1Q_c~M~^7ShdeCf@$L^dHIg5@ zO(o|)t8?APM z!nKopv>X<-9z9L{`Dz}OM2kQk!J(=biJa6$2$W%?@ttTlhub*n2;p%L)elop>#y!3 z*(A(6jcoxDm_y0eYdM`AqNS0FHaVH!o+R7L&(AvVlltj>v-l&EexoofZE#+U2;%p{ zAc>aeVj^F)1FM%Gx|;iFH2gSKS7Z#N&t6DVLxvTiH#{j@dXLEP>LHcN%Kt>qcz$D2 zsWP(85PT?&-)cfLVdc3l>`n3(&{cSrUd9%bel0=X8VQB7?(Y7G-PtWzf#WX>hWXT} z5%e)B$LIOGPa|-4ydV-)COtFdNcOmFB*~`?6#k^Y`B-taL=p)k=uOz6plmSH( zv8i2pBth)`s9=#(ufoOA7eNZnwMQ3X&JSaI$W&H@eWmGGTzQeye%O+uBoU!m+`K?C zaT4}c$ki2Jo1^2D9>sl7!MxMU%}oG2aAg}wUQ*HJjR3axo12}zN8AH(a^g`MAQvgN zW!J+bKvcldvY0d&b1DqU;C_cMynriVOwq;R@;Vwnh{mgkV{h%d7cofRC1t@WGc*)( zWV9V|1UgE%Fu1+FLK?n|(*)N4WSU&lu@5tVyi>&CbC<;Jh&^z83DGds z*z5tIKw<9_ah_H<-*egDzu12nDx|Eg8Mw8s_JaUTjaC&9>&eAf=qa_wijViCAxp>T zHx(>^0$PNeUR>U-nIidC5I&z^G^o~V&$yMSrF;uWh6A*45ku7o`wMO=I7mF*9(rbX zmZWy20sgN2E$>Cyj;QDr>%`-~88?3D5-g?cCq9WvO(0{gpTF93JJDeLm@sRNDGU6- zGyZ2`j~7fW$N`{OYO4ZX92~!~h~^+7+@yL}QRF7_ zLZH0PG?@&nDM9rk!I?dBw(BCv>dEL-bxvWsbkZ)n!gBY>Dd8ov4Ud|fbC`K^Z~x)eY`?GX)J79e8zauJWU!zACC29p6(d=G_$pFYo4cWdX|uXPw%c#*BI= zYGq}m{r!OmB%64IoLhmbdS!g!tP6mu=Hn#CkDRRwdG7n`@W%WdMI2G8^mA$el4=xV zkVx0J)x23}np`FEoQn~TlMnW-Bfl2xaWvKvyraMLWZ;Q!fDrP`E5ikk-FJ=~I;K@^ zLu06WIQ_ceCo0}q?a4oxv&Ijp)&z|K?88NpX5%sQ+HhI>utkHqCbn(fzun+oC?^^% z+kusC*N*9HPXKxss06lKb~+nq5hcXLqnf#WO;eC4qWI_;i1i+jB2fbXrnRuegXUIg z_GfHP4lf1pr~oIA^rav!GJ&#Won9@W+=gMfE6QY(G?S9rkwFs?8QF~Dk@kV?1%BQb z|7poX+$&FMm8{u=BBAY!;2GDdoB-t?6p@XGZX--vwRIVg{VNTa8EP!{uLg+V##Tm2$&AH zEt~%bhF5HI->{Nf^?{;wCl}>+>y8tT}wyDCOA;QL~0^E0}Z>>^6P(EK88baw>Lk(19+J^=*J55W5XKm zRvBV4^7Y?uQphDCYfa%4CshZO%)LX}d^{2`7ZZwDb?A1>&?%j89~KMYFwdrttjLcY);zq zjy^+1#F#UyGe^Dh8QwC?g*<2S%#gmg^8<(V_2S;kNSJ)snVhpn>Sq_%`BjS@XquRr zd6=1{#LU#+IvW~2K05m2$MTpHIL7@qFUWPuNO->QPkxA_nU?Wgy8tKEeDzNxoIdj&Em^WCKq@*OsHL;qwZ_Q6ll+8`)D7|T zQyar~Oc>)k9S_nN3Zn=aC5TeD*9D#4si; zT90M|;tYFKXalu%D34yYdFfR+2@piwb6aGY$PDbS+EaI1U+g41`sW^?|9<^D4Zc9T zERz;oYs0h%Uf*TBX{p%!?~kib54MTzS&*CbJB65I8OOd#^wx%x2j%iy=~vNPXJ*Z4 z(kg&B#}Mql#IlijR4%PRN?^@o`nT$zdfDb$_wHGK54784d3RPFdWX#i>h`&PKx$>6 z-46~kI1!~IBOcRI|0UF2VwWpxI97#hp)Zhn!@gaTs@85UyZbTOkql*x*bV9(KiwD77?0Z7Mkz{>2J89d> zK-eEgSJyj8>&R%Z_-tTm<+S5h(Z0eR-)=wAbTd2E@wF69p%BUZ^bg}_5l?1C*|V&6 zLREV+@-XeL95cP6e_4j@nUPd%y<~@W$TYOR^(2pi>3dLuQ^ig`(kEcl+|2AGCVV0& zbWdG~e$t1Pk~>fcBMP)F0U#k%m=Kn6PjE-W&YS_yNLl;3rr+}7 z#na4^YpAWIqTNMFta+q`KEFP`F!=20(UhdB_Mbn0Hh~L_SnI&z^E~v0UtJ>c6|>|} z+`eb1PXvFwJ~69?!ISGhwRHv=2u;~tYwlJ&nD<6fLgH3YdqfEInnQBmf%t@rsqd)uj)5_wpKI@h=-X^tc>RcZ*^|WOC;8@$#Vsg4 z3l7G%A+v(1Nw2cQagfAQ0X7(TbU^}q9Q39Sv_aO-_}n`OiT>^a4SM)!acOq z62o)y_KvKqtc-|`wvt|Mxn(KdkTe%~nt(sW3}o7c4AV5hK)IYIv*HwXjV3-JT;iCXkkm z6q2l$FH731l2Q2v(YE_}PUOf5M0s%3KzurL;MDgA?7(!#Pnka|yRQmQy$jvp7aSZ+ zbPX(F6NNXC5RU)s>b=%=lj#6!UnFxMNv6-G*8-oV7nh31e@IOHZN=v}oM%_;>+2g0Nfvu2 zu)+=5SpyrLPe%?cdSlaOYM6gAm>n8=E^BvVd|i0nHRw-PR@MmrnD1=)`F?7A^M(FA z?}k%=*~pk^n?05$Ak0Ia3E0Kk@E-`cPjaBXmZ{-amqC-l{G6Op!Z@BC4ti(t>o|pW zx@$7`&?e=XE3jV(NQjLa|5{Kn>C&>{orj?z^Hjs-NbW${F41>wZEXoL7ann?mo`#R z5tfyc)BfHdZ4cXAQ|@MHPOidKLdun)a(ixN+SmKYODZm#4->IZCcUVzF2~QQQ0T`6 zOkbTprNV=ghpYg{Vm`JlidL{_p=k2Z1bv}E(Zu9fH^h1FH@cp?|8@j-b$!d2eNU@w zF9iQwm-T1cYG+L&nGQwV&6ukT>FDSv+x6uJ)xk}_}&v7fiuHo^|U8z~56dC@C zj{_%_?Z0PfIsUlK%rHwpI{e5n75jF-V`@p=9#{o#d)gz@H{pjisL}mKTW1pXKE* zO?Fsqn`f$^ox6c;kHmhMSt}+b+T77@nsPCUZbuAKrOYTYBI4{^1;rwvmC>ta<#+cg z=Vm9VOpM(uT0YskRxJGa)X$9<)D}6!fVqoNgW1l+Y|})+_zt@w)6Dz~=M?b-$#3F; zl4rd-+I_i)e-zI2Rne~+5SYq8{A^P16I0`-g~4p|WpgRn+nF2QS$HX1gf(@hC=THc zvp%PF{MfVbrpn7v$ybysmIM|asy~uu?C0$?A?@n7#1$u-iAJk6KI7ZOhL@j9=5;Ud zC}`N;y}i8L^X2+EjWZAV9`dcQtXbhXKSMS&OjJ(pGBeLCxj@j(y=Re!drw|oVC+KY zX0Ps{Z+(FU>yUH;;pECl`Ec_8wfE(3O&#C=7lQ^WMgn~+)c_I^#1$!O;sRk2WmVBw zm$KEjiaQ`63PMn7!dnFdv@C*Hilw-KO5KGhD7clhRX{}v5D^76NN%jZX4kAGSwz|J-mdkc#@c%`D&ceUZJF0*~anSshqNwGKUQU;8NX;&+~v4MTIal%Ac{zm6@` z(=uMM*9#{rd+3+i8=P{VjH5*#LU;3vlOYL|S5`S1oSQjNo>#Xyrn(h72rnD0!~@=| z^HQUeZ*TCL$0#~Q?-FhP+^JI!kJH({#;&vqr#(OVbl4+FVo>&L(-kX|>(5$#*SuRh;+GMj zBe(EwH#<+2o;s0h(l}&MS^udnRA`m=X9={SyjEzSIgJH{&HlPakRDPOPN z;=Q(Lc6^D=1ZhG|?$9aXkDcq2a8Ovi)%D4qKiiD@Db;3to?go3J*e2!YF_i6vw5kJ z!9(ZrSY-baJ=PBq#aPnxEAYOxF0!F6?^lX91EV|k$^+jGykKu#o;)Me+wJ+73-dxY zFBT2E@ZjW+yYo`h8~Q=+I_vFrWgq|0sx1j~T1*4?teO_N{6k*qsU6|P2PBLW7@13B z6fjVuhs!^B-!i}1&9fRH3-c3?ypflBAwX+H@uaMS-h&?0#Xh|up@#S_+Tro`QRl01 z)r=z$)L3)!vWJWELI}Ss`;s zo|&s9v${4!FtX-oM>uv&r`9q96EdToAj(aTY%3ql1I@n?Kpwb^zm8e9!Hi(@Al2Iu?-63#k~!wbhQL0XdPZ6OriJ$=Fdmw0_q^9qZf z&hYmyz9iLeX&Digeb*%m`>^c0H;f&a{$H&>wk&zP1MP^1({k^FSKHDp(w7MDS3S!q zTc68llWw%DpKvpK=8XB}u{XfqWd7SefNneB_sA z?cc5?QFG5O$y&9=z(q}#efiDS>i3w6ohAtCNKd$0Ej-Hj!J2d6; zR7XKF0)`LI{(@DDb!9&S6{g2=T4rEn%voE)-ePq9dJt8*F8%Jnip1O@>*{d;4bN(B zzmXMPvUi3g`D*a_M<-9c@OInSFQ2H3PZze?yLt=nTOY0(yk~|qcHcb=*g^Z#k-;XN4foj_MV8>2g@E4}@Q(Jj2(N#31e`h9&>2kT(&=938t5}h%z3=Ru-1ck1P3B!|fe0jb@g5*T4@2?&rkNw{ zFCKgIzH|Q5bvf$~zUQos=xNYq3nFXI9NX|(rc`cCyvEvP-aGfxh8=^uJ9tULHHMYT zjr!c|C@On>xV?+lCQHm*cC}=7+s(*`#7Sq_!{pyW;OQXrrZ|B;}b`XJe`pKYhMl)T z+4&AGn{wjjlEmm~UvG?AqHR}d|4Prva-yDAiHm%F+`ExaHv6_m+?}3WV<+lhR+}oF z5*t|^=RS6S)jg^-%%nDYUc%EzX-z%Tq+YQ0)DDF8U2?#C?*MV6)@MAy8rwHJBVMn0 z_{Vm{*`_)9uTuPEJaP)?@C4^@E`dEU|6C}oMMG>kmY-_Oar%SsIpwjt5FHhX1ah8Z z1yL;`AA?|jgwM>u-YRe$2%uX0Yn(Z?pbCO2v1~~QiiUDoZFtBTZpO?&WJ%QzsoLRe zW+xsdq$DxKwCq98{&W(5f6CKlGs9gF z#L}ZOwl6~D-&KgA1}w9HdI_Y34;`yhwXj^vV~1NJz~)FZX80TeSe`AL>6{j*q5VIrQr;>^4P;z_S$wPG3@bQt=M8stOCW` zl9L$qv@ljJwppm8zuc9?@FQvTP*5IgiHDu&lZiD*wFp*7cuI3XYo@~=C0DJ1H~^aV z=5mUYj3}fetPfqvV`D%V+gMbRWBqVmdF*R^k>Om~5CJNxm5pN>rPDzIPjiKA2MJDQ zJWn}v085af%MbmIm>RNhE-MN#EdvoG{1w^dMIeb3hoWihkQNp>B+w(x19gy9#HssF z4g6mq`EVQQz?AD8Sue?P4&5gy+YiEB6jUDBL5}1kgJ9k_fb=^ZezBN@RLEt`McCgK zu9>)*9FB_~<$x7x|25cosx6-mvhM7m%TPT!oiAoARVjjz( zTKB~wtA>YkH+lp+%{rV^R!EYy3q3N>STy2jS7}rxOPp@gup$WOGmT11wwMkf9Km;F z%_m8x+{k531Y;=Q#&M!S3N?V_-Oillh_~y%H4b4b$;$e8UNJ)ZOJC{oduVmAYLO&KZfnr|5f2U_E;=0HcpKEsDxDFlVB!!}!`%N~*-++XcTUt7v{nUnnH`rkWTEgr@8+YU9Lyl; z?`>Q}_tlVXi-c}dJ`-oh6}+%ax8$$A_J-!GdiQ~B&5k>_qvHl-2!gVQK2Mj4{XTF8 zkRv0wB+UCfH>grKzaSvFG$UvN-Y7UA_*Fl&Fv2*zcC-ScvT?Ehg*4$=1yuca+x8FRh<0 zD6V!&YpB2W4=|jQ^hMq&Gv7RPo8ACc+oOKTWYUQ@ zVe>S3t;GVtdG)pnJCb`!oo1Ja7~Ms)#0|9$W&Qz0~pJ|eF zD`e(3vSaH~753tY4O-03fEih=^{$tl@7#6SiR!M*V-@6-jC4*G+YtVed z*)1tE8+4^$wQF?!yQa^0MeBhB9IK%(j@(fP%{2Vx^#(Cgq`#7KgU9Iy{N)bWKu+z? z&^)%cw?lij%Xn7}zk)~}0o9N17dv~QX^W~)d|&#hyL8fqH9tb#y1T5wfx&VO!BG^> zn2w00slGx}V#~&&n6e#qwMb$5>ih8U7iMUxaAfc-=vcoW!!af%lxQ_Q^#Tqve1&1j z=ei?~LxT+`jX$=}W>k6EPLwNaV?MT6`nE|`XeRdYA$A|YXHbGzR?o(rtw1i}VKs&a$_r=R52kfU0U?Str z>8+KAJuEDes>uygAd@X-VNd=QEGz31X@7J&wJTWbfB^D|{WIQiahD=jBm(O=>f7z=wlU%K2n?Nz)>m~=p8r$Ez%I|#G zPrp@=UhSRH=nckTEd^_g>0`}$>Z~pzY9+N7IBs^I$bC!*>wF> zc6K(dxTV>Klk}z_^XCg-5bAj*LtbX-7F?}@e?G+i4bxV?nBD_OFZElk6)^-*>Dro?@B*RG|gkx8!34vX!zIkkMU5tGIA z4x`02zrZ26G&5)d=z_?TyRJ&hl}^C;J)-H1PJH?D(K*~GGC#G5r1h-MTlySdt5w;G zi@FsUblmm%@^F=>o;~C}y{oxlTtiz&Gw*un&m@mR(i&RO2VQetES&6`r3f=jc&1R8 zM3_-z1z()J-0=H#jzL@$n0)if+3qHEp zAcj2rh_GV2Oe-Fp+l+Nb1MQNzn~y{luj^dV}*x3Fml^vtnkpZVAX-?N8LlVZ_j|FcoT8Rw{VTl^9A6m*shQlo@kI!O2#9h`-Gr-+}Y4`X}KJT}f+a zlFXLvUVdaqin)R+`if+vp1oh~&Ux= z7`E-iQiVj+vuHh~TDin+l(8M@v#VU~IVGKhg%YMJ={s`WD_YNG8Pn*@*XU*!y3yrR z8Ye($iG&xL3Wqha`|dG~vH(YxbP6d4{p+!kd%^v|h3tg0Q&Ps(51|s`(O6GR_^X%a z_pKb9(-LcN{+8&Dbn&1d?W3dhor-L7zVz2wJji>{;z9m{zQNNS_G54V&~>fpj)#49 zfnx*X+w|wZPwl;+x`PnqNqBmWm0CvRwt;dt2sQ#WWM7hebG+6aly`?HRz(D0t1 zJV4;c5q$FPewMHz+H<2Vp&NMD-mthFC++42SlwhAT2c*a# zm1}|%&K!vjpc+C_@16&Aa_BsR9MuKLNN2(hq1I{iF&K(P&?KLxw^}&?rQ$MRIE2J7 z5Sq5h1|ifzjkeaKEnMIzBG+`F)+o&cTznEP**NUJxeDqIxz`gNjOP`7X~y)|IAIif zmB(HIw=W|1BRNc{f<56=p#j%q+|0u8CTVn%E#U=On?Zp^67mly40F+mSfi7o(IWrX~`DX>AGA_;7bG=LV6G_Mc zf?z$>Aj&<5@>nxnzDz@=%<^v}*w-=D1ST%97+EKql_K}aBJ zv!j&b(N)&m=s-K(wVHvo9kL?>IBXg1$_Vs{P2Pa#;)5X5#JSs8gFk##=i4 zd-UxtwNi`aeet}?BPJwKq$iy@Io^(}+axzqo$zY-k73AC()xtJG;C)6p`@}N4OEmnG9T6F(%q0Zeup{gUH99$pkvC?C zM5L4R%6clB*@C>68hQvR2W>eyvS9Ea;A-YJQdxgy?o+L5Mpjzmky91ONlE8_RV|_i zK=RqTA$;1!6nEx-E9}L^ez+29V9*BfLrvX{I7WzO@i`9jaOu6(0iUEMI3K~wVf~{4 zq%1R%LRIvc^{v6B%daF#G9_In&aUZ(mIeM7<=d}3X^lZ%6I@|Oih*&^RITHvW*qMW zQqQqm%O&#pcoyH;`Ou+5kQZ3J#FDlN=NJ0vBC zp;ziPhz0waY7h856R9G@J4Y#$+eA-48nR6_`tm_vkr)PdtKsZ7TPto~-X{sOTD7u5 zT^5OaPPkber8wcD<4am4T?Xt=t%1uBpuN!hRyB**{&ypjXTnV9CCA>egN@lSwk4@C z+{W)y-(EjCKpi-7#2Rhs6gR6!-nX_n_k8irEN^g>#f{!yxtd{9Q0wr^T{$9d_Jb8tqzwKFH6w*EKv! ze2rOZ!p`)*bz?C>{xK4AU@3D@PrY3Pbwet8qRa!66D3KYk_xZCZWNA~#9M*^Y+`;< zB5f|Qo1iFNXF{k^l)*m$3!Wg#zkvNskbf!m7cKtfvA;+`{W~lFrp3SF;%{2~|A~vP bPx%xzYU`9+$%O^U^vAAqyqr%u`tSTdJJJ== diff --git a/frontend/public/assets/logo3.png b/frontend/public/assets/logo3.png deleted file mode 100644 index c69e01bc1ab6053c3892f8317955b4f57c5af225..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15423 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 b2&^E*zLi&*vq>)<+n9@khy7*Sprro;6$DH4 literal 0 HcmV?d00001 diff --git a/frontend/public/assets/main_logo_white.png b/frontend/public/assets/main_logo_white.png new file mode 100644 index 0000000000000000000000000000000000000000..ffc6405c9078b00634f8476ba504a11ce14b3e0a GIT binary patch literal 48286 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 literal 0 HcmV?d00001 diff --git a/frontend/public/assets/symbol_black.png b/frontend/public/assets/symbol_black.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f716820acd643f04693a3d7c0b5eeb10faad74 GIT binary patch literal 27600 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ʕfK|JXg0QbQ6V&DWL69zKF< z*x&Vj$%!QYQ`3I7H#Bz%lho#+X51e}J|hT>An-2&H?36@;nf>E{C@=e+dA^w2m&Jr zj3DseA}|o>=dOo63h##6=*`^!cGyVc2m&Jrj36+Azz72WUn9VYB&Ef%uYy8nSt1Tb Mt4$12R@oo>Ur~RcWdHyG literal 0 HcmV?d00001 diff --git a/frontend/public/assets/symbol_white.png b/frontend/public/assets/symbol_white.png new file mode 100644 index 0000000000000000000000000000000000000000..c1366bfdf5d9c28851a6131931447cad575ae29f GIT binary patch literal 27481 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 = ({ isOpen, handleClose }) => { {theme.direction === "rtl" ? : } logo { justifyContent: "center", }} > - logo + logo diff --git a/frontend/src/features/auth/pages/signUp/signUpPage.tsx b/frontend/src/features/auth/pages/signUp/signUpPage.tsx index a10f5962..2bbf276a 100644 --- a/frontend/src/features/auth/pages/signUp/signUpPage.tsx +++ b/frontend/src/features/auth/pages/signUp/signUpPage.tsx @@ -66,7 +66,11 @@ export const SignUpPage: FC = () => { justifyContent: "center", }} > - logo + logo From 7164b62b347f887713dc12b54d82a702d68b82db Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 14:25:00 -0300 Subject: [PATCH 48/60] add fonts --- frontend/fonts/OFL.txt | 93 ++++++++++++++++++ frontend/fonts/README.txt | 73 ++++++++++++++ frontend/fonts/RethinkSans-Bold.ttf | Bin 0 -> 60936 bytes frontend/fonts/RethinkSans-BoldItalic.ttf | Bin 0 -> 59896 bytes frontend/fonts/RethinkSans-ExtraBold.ttf | Bin 0 -> 61076 bytes .../fonts/RethinkSans-ExtraBoldItalic.ttf | Bin 0 -> 60056 bytes frontend/fonts/RethinkSans-Italic.ttf | Bin 0 -> 59824 bytes frontend/fonts/RethinkSans-Medium.ttf | Bin 0 -> 61052 bytes frontend/fonts/RethinkSans-MediumItalic.ttf | Bin 0 -> 60040 bytes frontend/fonts/RethinkSans-Regular.ttf | Bin 0 -> 60880 bytes frontend/fonts/RethinkSans-SemiBold.ttf | Bin 0 -> 60940 bytes frontend/fonts/RethinkSans-SemiBoldItalic.ttf | Bin 0 -> 59936 bytes frontend/src/index.css | 66 +++++++++++++ 13 files changed, 232 insertions(+) create mode 100644 frontend/fonts/OFL.txt create mode 100644 frontend/fonts/README.txt create mode 100644 frontend/fonts/RethinkSans-Bold.ttf create mode 100644 frontend/fonts/RethinkSans-BoldItalic.ttf create mode 100644 frontend/fonts/RethinkSans-ExtraBold.ttf create mode 100644 frontend/fonts/RethinkSans-ExtraBoldItalic.ttf create mode 100644 frontend/fonts/RethinkSans-Italic.ttf create mode 100644 frontend/fonts/RethinkSans-Medium.ttf create mode 100644 frontend/fonts/RethinkSans-MediumItalic.ttf create mode 100644 frontend/fonts/RethinkSans-Regular.ttf create mode 100644 frontend/fonts/RethinkSans-SemiBold.ttf create mode 100644 frontend/fonts/RethinkSans-SemiBoldItalic.ttf diff --git a/frontend/fonts/OFL.txt b/frontend/fonts/OFL.txt new file mode 100644 index 00000000..03ff1baa --- /dev/null +++ b/frontend/fonts/OFL.txt @@ -0,0 +1,93 @@ +Copyright 2022 The Rethink Sans Project Authors (https://github.com/hans-thiessen/Rethink-Sans) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/frontend/fonts/README.txt b/frontend/fonts/README.txt new file mode 100644 index 00000000..30965d7e --- /dev/null +++ b/frontend/fonts/README.txt @@ -0,0 +1,73 @@ +Rethink Sans Variable Font +========================== + +This download contains Rethink Sans as both variable fonts and static fonts. + +Rethink Sans is a variable font with this axis: + wght + +This means all the styles are contained in these files: + RethinkSans-VariableFont_wght.ttf + RethinkSans-Italic-VariableFont_wght.ttf + +If your app fully supports variable fonts, you can now pick intermediate styles +that aren’t available as static fonts. Not all apps support variable fonts, and +in those cases you can use the static font files for Rethink Sans: + static/RethinkSans-Regular.ttf + static/RethinkSans-Medium.ttf + static/RethinkSans-SemiBold.ttf + static/RethinkSans-Bold.ttf + static/RethinkSans-ExtraBold.ttf + static/RethinkSans-Italic.ttf + static/RethinkSans-MediumItalic.ttf + static/RethinkSans-SemiBoldItalic.ttf + static/RethinkSans-BoldItalic.ttf + static/RethinkSans-ExtraBoldItalic.ttf + +Get started +----------- + +1. Install the font files you want to use + +2. Use your app's font picker to view the font family and all the +available styles + +Learn more about variable fonts +------------------------------- + + https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts + https://variablefonts.typenetwork.com + https://medium.com/variable-fonts + +In desktop apps + + https://theblog.adobe.com/can-variable-fonts-illustrator-cc + https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts + +Online + + https://developers.google.com/fonts/docs/getting_started + https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide + https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts + +Installing fonts + + MacOS: https://support.apple.com/en-us/HT201749 + Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux + Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows + +Android Apps + + https://developers.google.com/fonts/docs/android + https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts + +License +------- +Please read the full license text (OFL.txt) to understand the permissions, +restrictions and requirements for usage, redistribution, and modification. + +You can use them in your products & projects – print or digital, +commercial or otherwise. + +This isn't legal advice, please consider consulting a lawyer and see the full +license for all details. diff --git a/frontend/fonts/RethinkSans-Bold.ttf b/frontend/fonts/RethinkSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d82f7e9228d3c625eb3b15abce50d5d201945737 GIT binary patch literal 60936 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 literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-BoldItalic.ttf b/frontend/fonts/RethinkSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9de5839e312d4b808fa3803fa148cc93c3e9b528 GIT binary patch literal 59896 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 literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-ExtraBold.ttf b/frontend/fonts/RethinkSans-ExtraBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2efdd43b6c6e40f160a29090792a22d5697c7500 GIT binary patch literal 61076 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%0Afg9a?KS#VT@=%(y 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 IW|Qdu0f>ha`~Uy| literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-ExtraBoldItalic.ttf b/frontend/fonts/RethinkSans-ExtraBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..cfdd1dfcf4af698d94406509fa59278e0c78bbf0 GIT binary patch literal 60056 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
E=z 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 literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-Medium.ttf b/frontend/fonts/RethinkSans-Medium.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2bdf275425ce889f219b9d6176e3ad13d584506f GIT binary patch literal 61052 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 LY*w$;>m>gd2~c3S literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-MediumItalic.ttf b/frontend/fonts/RethinkSans-MediumItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c52cefa2c1fb749021bdd7512f612077c3801bdc GIT binary patch literal 60040 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
!3F~Z!?o8 z{|TNqpuNaL1RRoi>f5M?d~O((StVGtlw75CnXO8-OE{#TZPB{TR)yMCyGFNu;~C0H zTB??s4Wk3_VKIyjzO?)&z%t8w8|HBhjD@##^*)d4TxN?>;}j0*)+M<<-L*s74R2$c z;CEJRnzr>K(@pNemD`HXX%UcnRE2$F@{#k!t44o`D_6_A6Jpn?XVPJON)?}9OM16_ zVfU_&?qo!#-XmWq9DqG$h4uX&`9AfU0?%>KY$AE0w22<2cu-KvR7K@M$|k|dUs-bh z0OD|avOnl{MN*w=!@5MeFXZt=TDsK68KWtymNr{$5f@qKh+2*24vjQ$d0QsDMxjW# zJjwQScu1*8*c@!H(`*h!?ItsUm<6lXYV-r~L&^UV zCHTVDz9otF`Q@rcg`oz%_5@y-(wO)ivAkwlX*~JwRN^NKCt?453}>VVJzPIUM0LgA zETWowTG+*~3N&IIvJ695vdzSoi^ye@5HkKQ`L~M~1IA&^z|RJpU5gpOxP0IEM3>C& z0SR-1cyRapp2CZ}nfZ~CQ(wX`bGSpa@B;=OqJfzyCRhL^MCmFpjj>2hyg!nYFNq5e zzfxa-EYITLXBIyC%Q#Jan2C3t+U@zR zBf9Q+zVhTe)O`b@!c!0xE~mOTst%#+!DTnapm5nS3<{r1%!rHGMIa{J&BcVvYc~(~ zVs;S-3D=8Ewz|Ix9ANBbc~~&70WZH-sjIdnheR&Z7tqRHN&KH zjdpphCZb%osnMQZyU!CEiW{0;!J&jcSOc0xQ+V&Tk$@{E(bo?SR#l}0f`hx9yAL0n zWoHu8n?0dGd~%B?0)Z-(yiw4U6kvz&;Vd_6#YdY zaaT@*5@uvL3v#3-DXlM~CBG=+8O~bb8Pafepgj!K`+0%G0U9U)1nx7{J?)0MnYre< z2oaOtWXF7`US@2*vFvMj@^a7QI5_TGJpn4T`Yd+WhlcmC;v z53auY%B!Ge57R~dsg(N>CyU?7MA7v48a493Q+&GMVLp)Ggcj3Jgafq2 z`w4ApnRV?8D{i87twhVf6Pp3fcp8ZxmpsB)4@{m9*P@Jxgt=?rEiH(O-jOh-HRsPD zHxXqlmm;fvp&)3zsL;ubH&q8J@QspmO|OBaL4popf)E^CmATdROAXL$4c3UZu(4V)st z&7BcXjuf~0YejtFS5S`!bOtEC5R%Xq??c+wGCcXtikqPBF6K3o<=?r8C&9-hk20_A zpSl39O~AFa+%?3L3B;4v`Y!+*9>ber-X`DYV@@N~=@s$h!xEmn{a5h>@Bb|S3rl!1 zCAtalfO&gpczB57$#&)~at;3Ak3xF zDo!@Gx-~|fLZTHU8`_!oL`@=J0?ul=B7u0akuN7d;cqVC$wm>`A>zv^o-F*ovu8KL z*?z-cJ=@pn>~_qA{2XRO);b)kobA9p-UMg+JCHkAKpt3t<%g05D7gwss>p+P@#>+ttujEVOM{r%82`1=~h!h4r_0$Mn+0OBl^+{UoH7nqlz4b6r2ljUIczWdjn$27RCut9q%v4mJbvgn}4p@;AfoA zz#ptS)Z)EFYf+5aQoIH}LO+I-1z!MqgSn@yAa$H6`xHUufcwYyteS~xfP46+gqY3T z!#7vYO;tEtd?+UmBmoH9Z2T$cV{5=hYXvP?9G=+S4c5*%-T~f4_>_&ghA?ReH&{r6 zsR`76H24vIHeg~bu#Xf|t3*wue+{MvOgvzL&oF)Ax6*fDR|q_ouz^s`CTDsPDE^8D zxTNo`OC2LU$Bq^5d4KkiE-Oan0aE$-lv3LIYk3{(8r@NSpi!I)wfhREn3*edSt7HTEhoAUWC=+e^a;jBccj5f#6js*WXvk=&?@}Rer z0WXOeaB`Sqer0SbTHjDdfi`By&XTDJQW*m*TCf6O(c;S}H6QJ#F&x* literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-Regular.ttf b/frontend/fonts/RethinkSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4e661b777a97f28e3c5c10ff32e08504cc5205d2 GIT binary patch literal 60880 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≥iR98 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 literal 0 HcmV?d00001 diff --git a/frontend/fonts/RethinkSans-SemiBoldItalic.ttf b/frontend/fonts/RethinkSans-SemiBoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f8de68ba9fb0f7d83c74e19eb6d130a59b8fa499 GIT binary patch literal 59936 zcmc${2Ygk<*8e@TPjXIr2SQIH9SBKCr6q(OdPhn^2oPEz37xB=6bmXAP*D*9+f}(< z#D<89ND~kNHKGV&M9>JR5Cu*4|2wl!3h2F$&-=dr&zr+jgUeJ zKO7e!dgb)!8JZQ+R|q3b2pQ08(7>T>TeSN_h=f5xba}DY(BavGf9o|sh-R0BaN9F* zX!}IBq!CR?TTU){Lx*Jz`*z+zH?AMyx?91_{Mj>ap4&(WN4yZOddkQN4vD^B}5?f zIo_C2T#z66qFb&IHifTd<}a9S7~%)gw;+AUto)gUJN94l7Q$ptCo}Ai}a2+q`CZMmwUJr(lmuHzK|EhUBXLDfIo^;^?x>%ic(M4 z91tSlRWr7xO~7ZibK>RtB>HLfloZ*+x7sI6@a=R(*hs_Qmy?flRsPqx;dk=vHJ&{v z3}FY>pUT}$Uj=D5LKyR>Of6H{6_w@Bkm|mlriv(irOM$?x*4PJT#UB(uC(P{#wha_ z(NFoJiySW!WsFK!`?oXI@v`h&R;z4y^UNUyzh3Ik( zkw@4Ew9}LZLyr`OG^FAU{E~`;%5S9NNf!;g2)W3&<$L7zzT7Wd!MKNF{LzZMs9e-c-4f7MJ@H8bR+ z@=@xfYG9)VALAaACj?T=UlWlaI*Hz57*xy<3&b+9T0Bl!2SvH`m0e{&IZ_tLV!1{> zB|nB$&5TGR(dc6IHHI7c#!O>@vCMeFc+U9VCT(f99NQqDc{+xBl9(T<^x36ANG`HsDgV~$gf9~{5B^>Z8VHqC9G z+ih+yy1n7H+wF+kmu~0WF1rhNFZW>g2=`R?vF=md%iM2uU*-O+`%d=*?w`7!alhbx z%_G30l}D^cibsye8jq(uUh;U;;{%V6Jx+R@^SJCOJiR>s;d!U$JDxv!UiEVI^7m@# zHQX!TYopgC?>O&N@9y3My>IfK;$7-}i}zjLYrQvmpY%3;ruvln+~RY$&#OM?d|iD5 zd|UcP`zHBz@$KU~%y)wCOy32*%Y0w*{lNE#?>XPge$vm&FW4{KubbZ(zYTsL`hDj2 zjo(GT-~AK(^ZjS~FZ5sTf4~0|{?Gew^Zz}-5il)aL%?T&eu1%p9Rs@s_6uAU_(PWNDLsHaXqo z*Wk$Dyx@NXzY$#1)W7M}rdygdZI<8c-R7;D7d1cFqHBv~EzFj4T0YtG+g7oy#~C>Caj|i^asP;06}K+#<+wd@$Kp=M z{TO#GJ|w1nc)Y_;iE)X=iN}*#Bn?O!le8gee^PnU#iT!y z8zpBak4#>Wd}s2ya=ILG1C#Bz!zBc`p^dsq)G8$!MW(>}l zkTEmk){J{H)@S@H<7mcjnJqG7Gy7&1XRgUypZQGYmdw{O-^tvU`Elln%rlukWM0nv zqmxUgCY>TW6?AUj`2pR(l@?PyJqTB6+aTfM%6KW(i(Ap%tuvvf5~Fq#C1*?Z#f?q|L?VX7jQI*rII@**4gox9xCg?=rB} z@>c6xz1`}UR#!uULYjrN3JD8|3`q#d2+0YVjXc~L@?6M^A#aBUhK7YkhPDeGANpXJ z5oQnb4GRcs6xJ-PRajhD@36eE!iewN9EiFj>Vaoh{cbR#3Fr$!LuH5!VvF>Utz@K3 zk?FFp951KJd!g?T^!;H3Yx>?a_88?hVYAyjpfB<|`fi239j$(D^;<|_NN`AtkPuB@ zx~8uzrXYc-<5m#bah%dlj{+T}sQPV@+s##hC&&}qw z$!cD&*<4*(J+(TodcYr_{qZ`ZDx-_~`}!uQpYipIuX~=pdioT<4^IDd`iIkBoL+Kz z>ghX97o0jP#Hp>Poz{>oF2oVxeaZKv{1Wiv*{eev_>Yd>Fu?V!hcG`SFO$Zm3! z;bFuZDaIgUh%wuEz}R3MWSrG74yzK4BMQa|*Z&zOxOc{=P8#`ngB>+j!q zWgNF+YJKMwR);gRTlsRd%$G}P#kKNPxm?~R=g1N{MLr?N$(eGjETV-c$jyv8n;3tV zA-g_|t3iyaZ5T~s8B0@<+f0$gc-mVG6~h@z$1sLX62*+9a~VgM$hmTwoF`w9v*lNe zsP{6SKE!CcnX&YFM$*^CcCkb3VjSHsj*CwjL%(1I{Z?FJ1g#RkifUOZSIIK@yc{DZ z%7^4S#=ytqJ#wY|Qr;n5=lQ_0Y>bj;*i`RJ{I4Lv*MgMFMboB zh-+9nchL857w+Ot?48vj5X;D4+>ed2Ml=>{>0cW}GqDa`upW!$DbZX!CZfbMSS-(B z|2!+=#6LxfcvU2eSI`w(L`ShrB#IYBTWpaG@fOy@+t@Ylh|XfC=qlb7-NbvMyVxyy zh&>`ld?0#>eONq4L|^ft7$82v?l~q#igGbpoDieL=i(;ur5Go^5@W?lF;RRY^2HhK zp^IX=s1%dMcVecvAf{m>&k#R~67dT*%2lyY{6o};Tckj9nIcR?V6`nnSKNa=bxIV7 z3i-V}FTX)IRLFDkTX|Z(Bj3gL*(>+S59Cg4p*`|Fxf_e?ikKsQ7Nz1ccG^a*up8lN&ak`Kf-P&6w+~|_pEe5dL}v3yCOw7&aj=Hn&J#Q$TQX%c0>A_Im7NqWq>p6K}aAi3uuiJT0ff} zJcFET{h{=Rne>U;>;7C%;(9KzLv&A>OZt4C{c|26^s6%N%^-b2T@KgBHq7t(J0r=x zNcY4tT~Zl+vIyCnj=ssqFTF1J8|l10FGXqn^C5LPOeMAqja5otYR|6}I!h=;%?3)* z5T%4?;1?4+h5G~17P;sJMM)`K@5!B6q*XZ<(_hNa8j2T%#8@e;x)*AC73V_W+${V; zQiYIys!ltUy5w>_kdjr}hB@bwQ-O{x#f|6Q2>cRFn<_m7E!IvWqyc5ums?9sKAJgS z*D0UgK7)KhptwlW5yBl+ZWfwQh0EYc2=x6w;n0mw&8L+4P&t)+Rm)jzQAkMDX%=@1 z;NMI*eB+afm-Q`Iq&b(*Q}s`%)=>5MPi-6mPfN&s8mS7%OVw?z&QrCjYQ<>AFpI8Q z4%Sl^LrJQ4^~bH1yAVx22RDTZAYucOGwe~PgJTWX7W>M zR68ra7wKmeWx4#i-|$Q=6>XvC`o7t)xBZojB4XlqF4_0Kot@r~3dPR)jgs(-5SS+!&$6eaSr+U>tf!Jr$YAnQ+3aHH%^p(G`H zbLlJf@>VOuZS_56E!0YJ`y05STF8>C7{gBl8k@}T{w{3m%?UPAmeMxSK+^gxlzT-pM*ofn9MT@-hY8M z!rzub{F{FbTL5G2e}k)eQQdbLB2tWg<;rUwA1PdBWXDq)s<{=zmFi9CE6IC<`>r?LwFe3Sf}4(D}0H){2yUn6knQ;aNm$eNqgS>M=j(Z!d(Gt zvH{GmVC4Vu}J#=5;B#Q*7jzVj5B|f9hhIon3aU9 zWIXZAlw_27O~x^IOojILB8hM;@ttHWew@C};(C~j7HK@w+305OF@6zI#s%tdS;QI_ zslyM1FGBxktmOW0%8UM=%VSQ$WS?1bKm1R?e)BzMmO@-G4;f34Rd3M(_{bWOEo)fc z_(UYgsnq3+$g_22SL0suIBiml9nPMEnIJzAX|ziR+aTKgUU;!c#LGqIXYy4sQf@PU zkbTWx!Fh4S+$A3}_sNa$Vk4H^_sq(^7kyaejR8$$Q~Y3j>s}w(&79@pAnzB@U4^0t z`pezsAn!ae+Bhl3&{u9^7HlXO?Xk#y#!oOW80SPJ&kZEqKa8%(QDdNVT@AXo*!;sK zo&1K1=0=f-P<2u3_h14T<3w+Kh4Eko7z9QGAJ7`4fiA{B(3girm=xv$o5Q?{e16CH zlVP+Z{+wBZjGm|8_}VhXV3)082s)#ayomfpi|+W|_^FIB5pceD10)kx=m^-4pcyIfCifRTjNPKA12`BT7bFbj+Z6B<0nJ(CqU^D6ip>;iX! zrvdv#8Y=#NupGpK5i*l;{%JAM${R z69)?NOAE#Bf`XZ|#dhs(nKY|-rg(00Nq&J?Kci?$zIcRPwi)69?XJ@93hmxHYwpYv zv8cFY67!|fqFIy0tkSs?OU2aExwA{*yW)qxcHseGdLV97?W!57+S^gCn(0e8rd)Oo zaf5MfSSXE{5v%J!To-uj%G!@Z-?PH%o>~JmbgCBi9M@-DF1T!Pxr<$q2-{`bY1=;A zD%;Jr*|tPm2&=4a#x)rL&dwn+$TX$~Krc_{$lrf<7o;XC?Ho{74>= zAG5o2Tz(=ym7mFS`8oZcddcZ>8LL%Ku=24}uZ6tFYRGQZLiXr2kq_m;2D$p6ZCzNy z0>rW(MlV{*Dw$o=9zoq%B{0SiZ}ElgRl)|T_Uk*{{&Yw3ybIh?9FuY?BjI?N##*iq zYffocwvBn(hegY`gpJj|neq)NQ2tDwaFGw9IiH}^@yt61&}+M}zR-?Uz*eF$n%*Wo zS)~iX_r?#!_rYhCMf&5n!4JT1jqimYg&%|;hVP3Xj_-#bi61D-kiV%SkKR3q+H`}q z1b7@Gg4q#N<&?-K_}=)z_&)f}@%`~z;0NG0#`nT+g&&096yF!0l@H1(kuC89@qdI< zBV>uQ-ft2+la7we3RH6&u$7WfHyGj1QlbfLrA9u6j z7i&7)*SrpfW1Go&4r`fr>Nrbsr08N+IomVRYERly!c}!&?Ft&SQ;bX`Ok1;FS>M*y zy(GQE%__6(te?;=E9~ZRuB0q#5Qk0J;3^D$*2=G>&*U_?vLoB7TuP>@LrLjN&b-tfuNBkox|rI!N6;(lX=qHoO0un-m5i#Vr7WZj zbx$(Kx9Z8=_~3xltX^%Gt79<;&Q z^bXQ&rnL=`DQDE>VIWW5|D}gpJ+pISe81E;s*Dwf8)QOpYJSh!JW?B6&qzw$T?F@Qy zqULL96~5g zc9gy3U_!AnS@x8J2*t2Z*F&mv1eQD*%=;r*kxfHmj~4}m{w>}lTtP}KV{&UtDeWn} z15|bXTVqBfxu>E9l{7Eayx1?kq1Y;Ol`8YiLi$Bh- zaAHR6*F9k`Wxk}xp8~N(tVZLhU7u>!`X@<;h>~td!g=JVkUc?9_7@IFFYzII*#}+g zC;i#Gh!ww~j{`*Zql}W#GDf7xSWzK-JcQPxPre%MWxS6s0R^;XuIg8UHv(@e%Hu4z8 zp)&U6<}tq*D=OuDv7H^3g<>2toA1=Fi+GpaqbJ0AcGqr}x5!)NQmiSa-NmX$>-6!m)QxbVn^=<`J#MDZjt|zFSFOPl|8*}>`%UieP!+c zyd`(kYdQ4JF8MxIqc8h;t>_~zViQ_@BYTP~u@>!Um#)gnLf>s=_beL?;zj?=!-DC? z4%r9jyH~|)Xqo5PW829dnk(Al8Fr%F*|S^0o}b$ByPbK(IdPlZBX((9ZNFH?j+;ZD zIy%VC;97Zz5$ht>;Ts}^Je7}sFsKgix)K4VE1dxnoI+mJoJN5#|f2z#JzVh?uW zQOi<9Q`Fgt@(Xr1Ps*>@%{(o?mS@;Qt6=}^EW4WL*irjl{va#mkMe@NC@;yM$=%T>ij)N78I2f%$+%TM&SbYk&}uFOA1SiO6?=3 zl;qDV^c-D((>_{9S#weeFd$L-(R~ zY7)o<*iq!nsL0vOMVb{x(KIWoq*SZLQyR8-s(pqg*gm5H=aag-%%Cv)EbG>+2Dg$^ zY=v;S*lLjC>l&okD&NkG6^XZ(GFb>wrhu)RICg&V6$6+!7t>KDlU~GhJ!X0xMl9T5gsVEG**qtCet8kuyW9 z47C!W%g_N;h6*^#P(iB8XTltEm%Gt)@;$b>^4q%rDiMU#c^|ROjMN>=yqzgNY}1Iha~sH(lWY!S>Yr{ewn`GTT(cssMN|xrF7{rx1`u&hNV{$6S6EK z5<6H#c1W~{Oia)|mFws}d&b;StDyXnlH&PuXM1SBL^Zy<4o)hbKg$ZuD4blT3ScbJ z8RMtA>yB1XJaeME?qe$COp~oOQBp$pcC39l<18)`=e)KENlM6a*ZsV~)0)2tNgbR| zSfnQ;C2IcSr+GOk(bPLHQuT#T9Zl9{9bpZVX6p+-D-%s(!@G$MFS<9pNNISHr7wKy zXm5Bgxxq!EMVLipVw&|-E&a1Jn>9lcv$bYONX$<69MWTAe!=wl`6ZJ|eTNj5O)Z)= zeI%=YGxJNPyA7FvlAKtiR&doE%7eMYFz5QJk8^#sc16;fD>BENURW|qM5xC_i<#4B zPRA})vl_L6s(eytU*%}`3-bvu24I_ZQ|nsTe`>{$87^x>Y6W2nc3=}uajj+cyBaHR z8NZvES(ae;PsTnR<93JJ9Z)m?8=tjp*1HmTHo{hj+t@aR94>MCUP^BpvuEkzbnhqJ z%JwjK-&d}T)!`>?v4mZXZNy(S-o-s+n7H2?AK_LQ<+xuOAL8z1pG1lc25UH+$v+N- z!aD)5HtikZL@RvOJ2jYrd$W%0&D>rsje1=JXTX<$T@Q^T_y?TWjlUDT0k$g6HJowl z6^YtY^|c&RyiDe&PSC3rlOVXsT-^M<<{EB|c2DENd9S`82dLG8+B5m8Wvq3bjc`z{ zBB|5-!L$e`oRlkI( zQ@fkB`!w|!fvfMj{h?#@Q*Ko%>~_iRdtTG2(C$}m z<%GX-JBoYIZ4d6d+O@(5-L_MXu9w@k2DN*@Z3`)%(=pcFjc$*-t#w`1v~yRqNomZIGR?Pj~h>UiZwxV6F!)^3Cw zy^I*;db!!%gyWiaFKhRLcF#44x58&sj5Gb0`tGONJ>odPYeT!WyHmSw)W=xVI<_i0 z9WQG48SPpz8+3S`<008a7Q(`J4A=A^tn3RQ@h<9 z8RVR--F6OooFh!TEwtOtL7#K@>9B``9^ufgy~h5V{bzfncF$_}bOZN<4qL93=D3cr zo;s|<`|R`r`ws2Crrnp7OWZ%fX8U^kBlZWhyGpw&w0mm<*Sfo?K}?wnJ9C(2pGs(= zcE{RB5FTqEM8D6l)4%L}m1~7@bBO6;Ps2^rZoGE8*dvJvafa31X7(VvkKIkXhH_p1 z&~8g)oz4x(dC`>Sk^_2aWY$vZg1=OM)DFdAL+YC z^xfm?E-Pm0sb}@wg=&=B#>FY|=3s zl`9A9{72~0Ki2uj=rqmsT`zstPv8AUm-~iFWBBQCnei?;Ow%;X)ili4G%V0h&C`@D z(Ui~7_QkI{|AG41V)d-ptxGA<>F4WGe%5LFY8o18I={F5o0OY%7;Q<3OKqo#Ii%AE z@V+2cflj|u=ebSMBX%iDaFzY=p0*|S==6(K4y*?$_fh>6d+OxbS5rP(TO)mR`o~qy zGE`Grq-#1s*K~$XIaAX-UDt7ru4A6ABV#L1<>;sM_%638YUNB#&pW!lv-Gninw}qZ z`W`C15vKEbLdRUuIZW2&&em-`R+nC+OE1znOx2~&(odaNPqFH(O3%{IuFzK2GHrd` zt$Fy3zB@r#6Y^nYr^yXE&3aB!Nx502F~+MHW1NaH3RDccp5)0JEb6JZ^izkmb@!IG z_jcRH28Q}r)R)i|BQ=Q@WE^;0%o z%I7-&7j-yNhfk=K;+m%9gpPO9&o0x?{-o0!)G>Q>nzJf5aaPeFE-D(t1w{j{s`X`^ ze!0#wSG)UkKEG&c!*u>X>6)T}q5q)1d$XqSX3g!DI^_youjM-B3hk~^Im>r+o)!Ap zJpJrZeYb;-c}d5d(mD9(vQFx|75Z65d~$e0r7^zIF=$u9uj{AY)ifN{?f$N&WWUa5 zuclmec7YX&==~DgP=_*#XUt^x4-aCDqwe2IU zDy#QSx9ay!x3T7Xkriq6-swU8-s#8el?mRV5#kc~-U-FEubf~UA_qZw!CN9iyh{zX zgKg9X`-?YE1f>i8{t}~)SPK|`G#GoBEvYv@1T!YdoJl<+sj1?KU2#+Vrrme7drrHj zwEL@ecWU=>uBXy~AKf#)UGr!DG8n8cdiK<|Xr8{P)zA`ZJGMKA}hJLZ|9Niht_Q z5DvAkL@1BeGej|MX{Rk0Geb~&3IV+7v5)hy2jl_vO$_!GUgW3vtTj0I)Vsqimi-$3>T8qnu)5l;jw?G_`jdscYrK4%=>a1eW~i*OM6Q zEv_tfkQ8<5-7B>VvWGXA_OXk20O@^^H@~-mUEqDN8+-uvfW2TJ_zaYT6Xq}S0KN-* zMjqmlc}`B@oaZ#NT;&6{fnDHzup4{;_JF-$ANUNYv?thGS7ocGRJ#bC5AKbniD)YSJyT45X51>Og{!3SUu*bDZ7&p}TY4Ykkic0$R6>t)3` z$8P&>c9ELV;!5Z0Kjh-7Nx5c)^ZG;OtM>|VzXWG=NLdxv{h6DrJEW+zZkWG0{T=lQ zYvXETOw}WW`I~vhyxSS7RJ54?v{INaTfXy(@@xOpzOMCWey4mBifT(Hq(++tf9gD( z`m3dpkQ%M7`!l~VX$M-8Kl5vIxw+jc-8^pIK@9EUEJ^nc^9^$WF;^RwWFF@F3oBDj zNdCp2x@$gcer#^W-)jC7Nz#<#uD70~v@Pbhq#5Yh1wK;n7zOABaTbR({>yp%6C|=a^wAR;8l85!DN`>ANic)Caq_4HkFkd$<|ET$j zSqX2SC&l*K=l+Y|N1s>wiv*hT-)_8N{$3knevgdnKdTLEzQcMZiiHLm>W&!ktHtIcmrMhkO|`I@50R3l0suBbIvhs_7fv*z>qglC;Z zo2TK+pK`3P&z}mqE<*Q3bb<2KpGo-7f2w~e8PR7#YyN!S858s$?_77IeuTI#+IgYc zNB`;Zg^-8y+Sw{xsUf5JYeyuxy$2E7E@0(wf%ct}cC81isaP^+9%DwrLx!aOov;2CkR9k@75Lg?veX};6m_N00{XLc5%nFV95sW;)2wHC_ATP9+)oz@k*>|RcJtl>8jJ8cu^ z71j4aCSeD?%&C)C_)X_z!Khm0MFet3*`Vrd=s;X$eHy&0JsfuowQ^{C!UxJ{F$OBDqN%nj zJhWBertMK1b-kCo?xUX8cToJX9-b#g)z(wj)>GHkliF@4eg{8aUEA94qkPIKe96g# zQ&6Vr9KeZ{i&!wqX7$!JcjtX?KGUP?-&ohbv97-#CsF>v$@yF4Ex2oWYr>)H?59qJ zaN<(gM~$dWJo&5By}V^bUsHAV(H2t^&iZttq!FBc@zr&<>pJ`CI$M@h3teYVU1tZa zatkL)mU8;Th0`DRkgKY{p<6pxTji`T@H2Fq2Wl>OX)btaE_mrSZ>HNkSaZRk&5x4) znEqDGaoXRY{ZBx*;)t8(NaKdQ&|GM$xzJQ|AwWw(kd}fVEd@cE7k19qJj{tyB@1qv zFPx_{0+c-?UD~v3<96dOqAH>)yfXZO@LQd~5#jn5c1hj2@fSWK^qJ5N&fl2O-l1Lo z^b;Yk@mp2@3+>(dT5T#T?|QfOx$qGYRjqDo<<_!Y%NEX`PfO>oMTGNbZ}Atu=Bt}G ztNjI^4vuZ`YY}Yy?7@HWYf{N?SCb`8COdz5O~y1C7P>*lt9#e~b~T>Zc#!kgx6zSC zdm3#Ex-BR^C@iQ2Kch)rU?uP&#~XjDlwE-?0oRl(t(a5<-- zezu<#*IW98-x~0mZJFbs&Byq|_}Tc<_!4OgMT%``J6A$B=AyA^wRnEfoXkw6ucR{@ zO+rVE=d@BD@;?gse-1760>2HM>)pc1Gj)P$la}zO#q0c@LC)XdjMIDkUea>D1u3s! zrh18id-XKBc}-sqa(AUnu!?N`9S^U#H~PDfx9ueqHYZO|`6`r?C@lz!lhm1GoWq-~l{=7uJwB$ioWE z2NOX7n2p^s2b6$PPzL6aZa!E57J@}!v3VGt9EKN%8I%96toR}ye!w3DfItulqChl= z0lh&V&=>Rrxu8E700x4=UcYXW`LPs7AR(RGn+i-fD%v&%D{ip7q5$^Nab$& z#0DgD68+&mYIPjVR%Cuk%-d*XUv!Qi@CN}P5JZ9~5Dj8LZ_o$y1^qxS=nn>ffnYEg z0)~S;-hs;p6F~u(L|-oilfe`)6%>JKU^nVS>KMVZ%1k>k(x@RrV^>CL~1ILno6Xm5~-;~YATVMN~ER|si{P2Dv_E> zq^1(7sYGfjk(x@RrV^>CL~1ILno6Xm5~-;~YATVMN~ER|si{P2Dv_E>q^1(7spMpJ zqO;fECTGIYS)drq<}CAkPVFxM3(cMAoptD)o#>r)@c*n_Pnz>+mG61ic|8_oJgsn= zRya*7oTe2{(+a1twBxbm;+ZeRqebG;Nb!sS@#vL!bV@wy!0~z&SdF=%ARM#-kvtm( zqCpH$UsY1ScAz~_Uk2>Jnz4GvA&Id%8T&Pba4I@K9X|tPf=-|_=mNTeERYSlgB;KU z^aQ;rqYvl{`hi@~9}EBk!5}ag3;{z)KMV{fJOY0t7zIXyJZ$!SFcB1hVrEmb@#laN zPzuVxJZPQ|7J!9d5m*eCvW9RQxE(A5%fSk;65Ijq1b2bE!76YMxR3RU)!=^c0C*5Q z1lEAH;9>9xcoeJykAcU*6JR}f5^MlZfsJ4jcp82340ski2ev@lzi5S*X`QXq`V~&& z?@F6$|4uQkqBX9&91;@ar;0s2(FTqLh6*#3wzBP<|$I76HCJ3Of#xzf z-#jE2fMw<I;2<~z4ug-t5pWb71D}E~So`}DoCIHiQ@r1v&+7Fg^F>+&`xAYbf<}A;jrax{ z@eMTM8~;U{{r@`#UZORs(KQ&<*N|)M8`|0c zHsA{EzyaKVJMaLWzzZ4j2C4M=x%9d%=&r5s`W3kIDsMQAHJ?G6-$t6Bfp?qX-FC*R zcV&tB5>k8uDLw%&e`FS(hmOhz6F~tehK|{c9CJVkCfI zH<5DPsM$qk^?9^XK9~p!z&v8-g9TtASOgXW2c@0iZaH_$xm(WNa_*LMx12L*zR=?b z{6PQ+1d$*LM1vU68}tEvK|hcS`hx*rAQ%jWfZ-qyTRb031O=cN{Iw0g6^gb((N-wh z3PoF?Xsh^|)#o$d8&Cl*G2{4&8vG1?0hhrQ@GJJ$Z{RAp27U*B(B1_|@-*|GwD-Sh z?|(B(x`ZSYFm_GTHt#Rk&$}6U?qlV1HMk!<03HMnfi++)co;ka9tG>bW8iV{1XvHA z1RKCpU?bQBUeP`ADn0QkJ@G0%@hUy>Dn0QkJ@G0%@hUy>Dn0QkJ@G30apSOaCYfI% zJ73TUf3TUfMPqJ8Pdv>`Ay^&-rRM_@vJc#tWUJ! z$#PaVma^h;8@L@T1Ixh*uo9>*Gu{c*xBTt~tH3?rKH7aXxF0+K9t018HGmaJzWL~2 zCD6h9Tn^sqa`44Q2YclX-kft_Cp!2>q=R)62dgFy_R$@zn>eVO8@;6yYon}=aIJPB zKLiKCA#fOc1dae^oval)ST%L9hwsnYpg-RL@#pJ{{(@1RRa1Y~Rf3Vwd$F#b2iV-? zya2v`&&+rWE%Gn$GEhDARs8oTm-DvhTtknauXEjq=l$VYEAsG%XJO>y&x*A_dHHju zz@Jr2e^zZE4)8YE z3Elzkg7?Vv6a3Sln)Efmgd2RR9PadlJH6pfPgbVJ!l6!b9`m||#4RFjG5!+#RiwQK zJPOY9KJE9cW~qIBflV#2sRcGQCkr&Er%}^Zf4bL@+Ly6WtyPTl|ABHvVLNh7gTf|I z*q1j#`9cG2T2E;*ltx2oGL%NMDx$Q63!L#lHlnozU4phwXttlwY!}gN7tw4#q1i5? z*)F2lE~42kqS-E@*)F2lE~43fLbF{&vsIzttI+UOX!t5Ld=(nL3JqU{hOa`ySE1pn z(C}4g_$oAf6&k(@4PS+ZuR_CDq2a60@KtE|Dl~i*TCEbTR*6=tM5|Tm)ga4WQR_O9 zXt*jyfGS3SDn@`RMt~|tfGS3SDn@`RMt~|tfGS3SDn@``(Qv<_;eJKK{fdVB6^-@_ z+Uys-KGcWaqk5NGD~i@*Y$ZDCD|FNsXqwm1QD^8Um#}_*;)$QZFW@q`0?=sazYFNU z3+TTK=)Vi-zYFL;rRlEE#RFY<6>ih_(O^~PDN-mcxrZ_H8fCpmS^HQkJ4{c1kG+&j z=2=pGOR7pzeL{+N)!0RyRG+`Z^VYeH-DtKg>~vZ362=!~Q<<9&GEdTun`y_*wBZ}H z-&WdfGwt*+?eH+|z;2WID!hLVzCTR9=i&Jl@dDJp1h&w7|3%HWvLF8ny^NJO`28@v zeia@+2ag{X$2mn&&Yu3~=C|1C-9|IKj04nKp=<&Q6L(`fK<5D z8@~_e3;Kav&>su{1HoW01PljbXv>=bk|D-{@n8~ME(DXo6fhMOfoWhmm;q*jS)dp! zg%h`d+rcuh9IOBj!3OXY*a$X(&FqjqO^ZAOo(0bVYduw2-5&IwgY=$*wB|v2&p}%BAid`xz2_h; z%lD4KG4Lt)f_dtffc<8A&!_aBPqAx{Vb>nRu04ibdrW-G9N;YY4x9t$!S~N89N~+mW2@^rP+cqwS&^4NwD2`T={@ z^oMgu&Np%`z4%FHH!W%H50UpuE$2@l>zk3^7m$>fXvHmjb@^ZH25+U8yu$A8tH|~1 z%wZ3a?l^0D<+R-A^zrk^D}72+a*e(TIe^q>Nckn>W-2z2cd z@1kv=r){67{x8Gv1JwT{<5>`zVkb2_4j+Q4o!a*~;pF}n+EVf16)YQN1G!LdrKMV_ zE7DwMeEqxHBoDhZA4~)VU=m|vA(#xN0KTe3uXm%@yV2|2==E;&dN+E#8#BVsnGv33 z_Ir}q?@4CACz<`8WR6|QJoO;6!h_5T4>Bt}$gJ=nv%-Vykh}05aTmV8?ZWp5TsZmc zBGg&HA3!De5nKQlfjaT2b1mx)YiX7DSle{r zs}wF`EEosIgJMnqsdb2X^warZ0ayqYfyH16HT(y-8QcPv5_cQ89V`RO!3wYv+yU+c zcY(XXDsT_@zp+Mj<812{^vbJPxBrVZD>!->Nq-Km9!9#~K(dd+-EyS+5~mnpSRHL1$86~Re?bVDD)%5b~bO?2*W>l!AcURN9tLfd=bHKNk80;6%$N~RC=UJsYa$3fS$)- z3vES5tF@rliQ7TG$I;i9(2iATy8`&Zeg!%GLQdtJ@{m|*2CxBFUw{N^ga>7+m9qU^_3 zoWqgS+5k4-3hclE+<-gq0G=QfEty9?4QB^SspoCrcA(ZSmxC2xCAb6J3GM=SgH_-j za33wP8r%;a01twPz#6a?JPaNIkAijJG4MEe0;~s5f(_s)uo0*;u1{l`JOiEu&jD*x zXvL_Y)(t(Vsj>&78PSwAaR#|LgWQ}!Zq6V#XONpS$juq#<_vOk2Dv$d+?>Ih`13BG z+S#{O7j`4nr1O6ZY1cFEq1)@O==neXSzMvn-1^vMQFc1s|L%?ug z&7ReGtXDmev`f&h^pHBQSjG2H$LX`q=XB4T#wa|SKFU5AHhDR6qqMp;#a0AUjAQG8=Ni^MhNdL*syuT z&`?`wo4`=pee(V#HN|rH)SBO?8at|U(v7~=uaOXKC5%E+JCGkf3zifZ9u?|HO|mtW zOKx5^zh%wYQ7caJ-cfbVbI+Nw6UL48gzewFaVU{Bhdjc{T7CTLy7*6+?f+H$admFK zE}#4B(jRLOKg;%TUHl=|s_N6%m-|tJa_89!>(ZC2cS2PDW`e3&UHl2Tt3f^o>*7CU zg|IgNDYhwf@t^Vjfs;eFZE(n!5daQ_Izk;uj&R)2RK=;lrm|Wd@vHeE@;BdKqhyd@ z&7x+enD+dU?#7NW$3~qTbN~J4*|F7pvu)FS^RoCR)v0&&#=7AD+)=Ap%@`j=X<%q# z<3>StyQ7t%yzr=`#FUQ7k>TN~1gucd5-IcZT4%DMnUeXZZh_L8m?lf!7=p}a=HyZ=`cAwHCJbz^0g5aB@w|XTEo|HWH zsYN-9W_Hd=&zsw6OksA$^m%a6%3s&g*C`#>6nCBRN;<6g<9q>1$Jbm_^wh^oRK_CXCYDdLC}6uOo<|kPfeWY%nLW3zdOOw)?)DwlX_m*vuta-(4PD(krZR z)|@fMjvhCU9UMNj}aBrz*n*XRB`UR+ItX1FdrG z4!bHSCDm#LEe1md_zz4zSF|#FTHeH^=PplJ5fNTEb55H#{ojm`@ddIi*qIlr2&huUb>Z+vTBge~xv? z!)jhums<67E0>S1qek^~E0^*yIyL>A+Sa8$AzM%eU)Z2dU7TD~>` zPqqxLdCgz$Sdw>U!drROId$bK4PfQ}8A~LFXh)AZMUPQuBj_`cksXs$QbSXcm9&M~ z9pPPUNr|ef`WR8jU}~t{PA`%wWQ~i@J@ZBJR5rs7@_K-_}z`V zxHo7~8}0dT|C)EhWTSwZN_2GI`x9#RsMH;y_zV=IP5yHq4^IuXg{RWdd-k5171DY3 z!($fS?|O@UaPNN8b3*b*Df>LH?8;sGF!KAO-({CC#kNf zpAMwigGR;s#|O>{lzjtB0^|JSM(LdT%D%oeugc34iujvQ>?dE>#unRD zAF*POeP0{&yk<8>^FZGV}M)a+2T85yRh0$r9-k3ou+=br8oW@s0d~Ap?^i8*7^+bkW$@y}E8Tb}n;Pdic-BU62iP)B_7z`%hW=d>*g zoErntvQ4w;&18JdACWU6f1F^+psg>@dFfIErRoea+y=W=td!9!7MF~wxjJg$DEO5i zkI)}}u9+^^)c9CW@;z{;u1E@0-AFw)r~0OnB{+~+ZP==F45M28{{qy{IH0*i@6?+A zVy#3IuVmMX*JGo_CzX3$`~ex>AidI^R{GDF9q3jvBQ!N=F#3|B#>cQsnbcHGR?V1_ zl^)6c6FT^}4hy$?))DBM(W6y<^U$t}PTC>aylgYjX@RU!G|+1GiWhZUYr-^^6Z*`~ zjm#>2bVTl)z7g4_kM!y^Wl((kQJpQQJ%$}4fi^o&uD&do|1F+FYcy0Wav9Y&O7 zbs3kGFk((t*Kx^89&~w{FTE|k$mY79R=nbi75|A^)v8OcdbJgQjQ=ODK3-`%EB=uB z-yZ7Ht1-@s|LD5>>(hU1S*K2V)YxaGFK71^>yh`4F5A-KOLMeoq8^{39O0>Ikg^Or zbfGqp^xy=KqGaPJS;r}PQ$|5#M)BOH&9X`#8JRY*O=|I+=FPK8AMTSmbx^#gXU)9i z0(nPpm&ndV1L8fr!b4K$M2t=v1@adp z*Otk3byPB8(fpaJ3vHQVUUr!d%`I8;ZP1pDn_y7a{Zg&*^txsp)Nfjkkgmn6hxA+0 zI!L|{P_rjg`uo>hjKY|y86FTiVnUNnQwGE*k4jIUlpEiExL4ZPnaLy8mSlBJpON=& z-j{hrZ8|nDOd3_1)on~dhhfECI_IZ5N0D*5uQk$As*Or4?{FK2pVQ)Ae63qva<8Q$ z?nvyuqVJ%L^cBXAwu4gpOv|YGRxat*Ek4uSN+mrN)lf+~nlpoqTHEL%SW9t1>$WM+YMtI#=DlFmSZqc}w>T zD_-?4EB-jA7gT=NRJHl(t zwnjls8aL*jnqf&tucCB=uMEqajI7?x+Gj;&=VZ?tFn*5Y|94DIO6%UZaqsx7Q9T!X zwH=!3-pIq@VQ-h2mD0RTvnD>l!_u+}Qpe^x{M=mKT*8tw+lB@tn^MdRpf%4=w8dY=A7F)D)!)smGUoCI4Pzs=DKj@E z6RMwEcB(Zg!c1lO&!uE2O@kA|g5z3r>X=sOQ7|k%B_XD1xPNeRbnA8j0U?piLL+;1t#LPG=Yq`W z?lEnW0|Q#N4DxOq=+U@a$CP0m6rID6q7tMCTR_=qq1b1yPdnsqc>8}e%@{XfLiHw9 zOPxxOI(eE~$JH98iiaya4OguA&(${}{v!T>)-aX@{0yaG$HSG5$(H?6Z_D`DWbpI_ z_WpDF8@66udQb8lFele1XUt@;Sp^{x@|BwY-c3Ebb{;lb1qV*=+Cr73?AB*=OHR_X z9pTNm`gqlnR{STtUsNBjMg%MV7-ux<Ep{Fr+SNQ814M@3v~Y?{ zUR1O6PHc#`j2_iFq#DJ4Wa33CWgXcV-)%`vSUu9oZMLI}%EsQFQ5wFmY-_Y^S5|ZH z@^)Bq)&G)G4yvlEdAY_k24lMf)l@>C&Pnrkw#8r0rKtK?@rsXD{4u^qULUXcV#Obl z$qnMw$ZExZr1D`E@+|fF2b3}^E|5+#v5cC@(3Q82ed^XLPu^O3h!2csoj6hRZp|`9 zl;Xl5o_c_%+?3p^3MNV0+a1;~o%Z?7HHSO!A9y@hvrnegj3PC(>eRXp^PDoWUDIU6 zt2$WmoB(eSuj*jMA5wb@f055e)>@h~f7Mo2`p@)wzvNV&Fgime^TUEvsTQVKr}FfZ zn`^fF%l*DJV`P8-k%nvD$m-wo$lpq@>0IKZ^C?xXGhWHE6@OgZ+8|!hX~iGb-@V}f z2odGAGo|^Mc3t``Dkzr~HB7+y-$^))c#Z#OEnewn<`YUcrz9m=OIUj1tX7`1K62h9hs zH77Ewt$SIkj-hd0tuv!D2S$7NI-=tvBhzxDBYSuBYT~oX;o}nMKOrind2ExhkzJz# zB3rg>rnsyrG%ippRxcQX-gWjY6<=d~R2Tn&`jSjt`trK?-D+p$FXG>?k2idb<8|rZ zRy!nh>Fdi??X#21Ilo78Er(Bj={JZuXkn==0r^;n-6j>#KDfW~Laf7K`fFSAC4jJ@PuV zA5xq(e)hahZDX@y8)tQh&-I(vWYl!8jQsTM;$iIzM#i^|=+rYTGpAjA){rRbr}NhJ zyU!`FFX$Gx;+0%l@w?RypGwcD2`zQ;AF9(adza zvQ(tjw=gZ775T1XZbB2a5ZrZOV23%2C(9P2n#5*z?e7I^gH zj-p4cP1KRpke;Sb_&)A2$D_S(y8=bmgV0n*Sp&lE9-N*&xcV@(olEOqM;#Iq0tFL| z4_HBCOli1=78x1EBpx>j^D)(N{oKmQ80nEYDx+n)A=A6G?H}xD8nDuPlvgv~8SXxA z%e{w$g(Z)klNg)bHaIsmI=fwPZ?EX=!7-hS2FA4rYtt(%wr2~!Rz7b2Zn3?ZrQg!+ zrd4?z@*>i^hjhycNy!fF(jVGXYqvncT5=jl$(VDdrxj_aJ;-U~&|z(=d#2D__Mh`h z+Yg=9HD_#lch{PwGCMIYJE)}T;7ND#AEL<4iAiI;O7gpx3~ie{Dn<1(PuKL$Q6U}s zM9Jj3zNJgmviFEn_ShY9%2ErhE3NnsoGZardL@%q{BE`LT$jE+{{8FXl}uXc-&W_< z>eAQ8?^Is|tBY4U)Jp%3+O4UJS2|S1qeJx?aVs-J@vJWOLC(!8o5-S4=}Ie?z1n7A z)dwC2G~ltGSJY`c)_m2_Wi9!#77Wwvjlb!2Q(Jdez5-!!w{dP^r~J~kgJ&ftjR~yz z1vY!7jqXs--FAK3mgIMvJv?Dtr%cUcbO$RNe4|jUW@;NbDOHV^4zgM0o z%`ZPUKA;(q?uGu7ddd4Iv>(=ob&~cIYKql*z!zq)5f0_;Ic?mhRtKf%1p(!zD$1LX zY2(Js0xXr@C@4wS#!~L8gInr7Q0;Um@p0H2znqz$-Znb0QBs({ui=_GAtN^8ZQp?o zhvCwBJd4%=flYJ94j7d+FDtxjOjLAkY?odov6(iPq}aH0o2}is&@Sy_y7+lTH;&2j zZJgRVbzq#=sDQ{u9S6mEde|EK$M)>nc|`mepNQ7YL&Bm%L*?xWk&zubL`EiHljs_0 z342<%=m+CzXDikgOUtQPhurVnZM0G=d9mVm>RmkbZEayRhqu9sx0dp!0oAmqR`)w> z9*gI6XgwhHynDDl|jyXpV5_a*R=7S+C8Unl9To$mC$@98zY@9A{9v+tQC zGg)R!CbPlpi_8obPlG-N$11`HLLBE0rl!zGm@=XhD|N%+ zq>=!+xql36bUhEdY?1v@GI3xcZS;DLc#$&&3D@p1ncQxZiDp~Dm<2yVzPX|uyLw{( z1g(R0k1Hg`sQC`msUY{yQQD!U6AaUQ>BB!Qm9}$~V)@cjzbuuGG1-PM{ly){Qo-D! z(tE9?y2eGl-A8*vyo>soOm}nu;2@L`*;<-&{s0OjPy~S-T+={VK2r_Kk|H@+-suX)V zB&Wct0k-K%Ohn4za~D+|-QWAO6NR@=UVn=VOK$c@XXXSiy+p@XgVB1{bra@l~y+Sv<;dCx*a#ADP8lgpE?DP7TNg zg8NozxgD}x|n&gZdYd{s^4OrOgi2zVo&-jLoxDY;fz9SB*nO@%Y~ zuBr-z9Gzj1b&*p57R@49sL`azD!>m}zgsKJGpT`bp^)*4X-9igWq_Pn(-d7jEH+7L z57pYr8An?H=*28zgy27PzdFURe?N_SoiC@<#g{)sWinchS=X^0i!Xn?=vCv}p*t2| z{wUJ~0X6LGsE>%?1q?E%=gsYm(NS&=q|F1Lt%ejAlA0}6Q8Oo;PEOS>9>lG@4W10s zp$vCpBv=_#I%`Bv4V3RK$ha$s(tpd(Cj2A2TN9%Ry?=DKKRn>=h|{;)^p=*~p3x?I zcF@zhcg#N1nny1UPp)4AZw@1wqoVtJZ-V!r%=qL$9LPdOE>51C>s-DzI|9{Pa?E%xmI!vwRu zpU3d-gsA9D6lLc#u1=k0<5;7AWLM7Hr893FZD;^~np|0*s`~d5$NE2*e6CiXs#c{i z4<~zayT_VTa?`M`%|em2$(-nP7`6YSrf%SWsx8SbyK#O@bY1XcLZlX86*3w7n}E^_ ze^=+?`C6psRfv|zjU`2IUa~H!dQ2GjTgPma&S~2Qt?NL0`}#ncNLZ996$f;yw}e{O zYu$VOu56RCBkpSTs`7YRTuIE#Y)#X_M7_R9WGY^7GuM>YR3ss6La7USJ)v21ywj2H zvm`t1iT)pzS8`D7C@+5ztGffEU>aO^kwfq+jzTMhsKV^@yw$*P>2}UIkqz}nb>6`X zvxzZT4yI@HZE+{xuH@z^dpUf>%yfoV`eSAT+X?vbH zt+55gtM_b_MCSDxs&(=F4VjGI)b zq9&jd6wPoE(KBs>Le4!b9abDvUf=LhFF~+OyELA!QP=%``pA*#-&fR@YZaR)K4^Qt zX41p|U|4;y7!hFu{?HHb$Cp1*)C`J%lemRosX9`g9NB%kQCQrsnI@J%lg6kH&}=%VTU0;maQ=?nQh%bPu8B z*h8lI+Ce(%`Bt7J@%dJQ%(ln3@(ALVORWc)1k9J0c7M27xEQbp0h3wbBjm=dhq|A> zxPbK3g^!S{3RH=}8C8K$k6N{*S~6>jTKG3o+pwO*H?A){&NNw8pFxRC%G7E}cW&@e zzMMiy%fXkZC8JnMVdQJyixb^+ZYS{c;9|@YwmacO@WZQ7vbS&oGJpg4?SdvmqohEu ze4Nx$+d>5QEY>R>E7%%NLVrvbRiq_$hjSE9>}s^fB=*onaaqgzTd9w4L$g@YHdQas zm>`cQ(B8~Ff=qz0$c-`1wcMFN1zr(v0;9eJ-k?!5R)5{w>K|;H#PhGrx~AG8air7T z(vD1&q+VLr6sS+)j8w3bh1)fwYj`XSXbMwHyG?W zolkEx%Bibb(2o3p--Q2Jg7X9vF5b(*49k4?%wWo#8NX=iY)niyJ5x?sV#aTc8v{;T z%orf+-JQPXnS{ohFf?z1FKcmtHt%KRD2(2$9yhk>=iQG3aN$0$lH>(=95u25o{PbH~tTIo0yE zBj#IVanNVaU$yZYlC%3c?`4IbO>kS!er{rd_vO$hn+v#WcnU3fZz%xT-T?`hkqq?i z?|q<`e0E}@u$_Fiu$`_)NDRUn;KhsemWY&0$^51cYnCOE6;k(n(PXL;RZEUpyo$C% zH_?zCM{qoSnWXTlG(8s6ni4&pu3deNJ!$ELZeYwl@#$Te!05Jk?-dtVCe|ssr#5;+ z{b6l%VpnqLfNCA3KyZj|K&yhDj&;pDmlpOBo7E|j9-|f>Z!|e6#!j*oJ4q^NazQpM zoT*jUcp|HMNLfKL=8dX;i=pHE!JAwkM#G|yiaHPVl~5a?5N2_Vg^Kn<2rhr^+u&6O zh7Sx3toO+Mg9o$zj-Xx~PX#&yhPrrdZhvq5@=GqrX7~2Qk6pGSw>7qA%e1X`Bs8*V zv#SqhZfH~_hafhJL0}FsV~&V0B5IUAy!tT-W@6`U(i!qXV9nIougst}7&{jSWLSL% z6AY=$V#ix3nTb+_m>Nm_tGZm$9tbw~SML@N9O%fc_E?*{?RS%2>G)}NB9k>V#s}j) zTjT!WkZ-WP)%3*~I*T@p8!=`SCblcH&~OYAyK+(97C9Z%-N=H~#oXIl4iY@fnY5VEC+g&>|RV}VAt1JsN2YVYsk(%m(r)D2{F5HJky{~DxQ#5P2pebN!x+KV?VL%uuMuPH6NWKKQ9DMo}B$C?z98i zHr(lCULH_lG!fy0WJNyRINdrG;nPG((9% zZ%8wAb!~VuA*>>nur@j7j(5flWsbiBtS5pE6yBSQ&^d2Pno9y0VCX$`d5Gf{7cD_iUD9d{kR z>qv_|(`gN)+AbRMM)i>%-{6NkXT4pnaNgDFjpl%X4Zz(VV1UX2yc>7}xu$Sg1Nob{ za1pm|)9Be7u^-UYoMdaJ31?$5vy?pH)+;eDe%bKBG4l{J=had@OIh%*N?Ck;K3Aai z(5ekv4cglTg_TY!U4Re?d1a|IpJHw) zeE$*a@koVR{6K569%yZB4;y-qbmuA3rw>+8%trm~_DpRNt%nAAv<_X|NfCbN+ecc+ zHlQ}v>g{xg^EelP(-T4wV3A>srEs2j$$XbWz!&(MkxN*MfjC%lDr#_s6Afm4tN|zJ zR0K^&r6iy4KfWcI+;Y6X^x3*=q^W6SS8MA|`nfaLWs%^|($#4(n=PG2JlCtTLTohF zi^Y=K#rM(s^X$e_1Nht*(X@L!?V3n9yk<=}+-|D(>Gi&PlgX4!n&74sE*TYzAzaL^ zOJR5=UTx%@u}Dl5OGKm*#ruLDT03#bIr9EMek6Zd+UzMjpFbBKZ2k-WH%hcC!2_=b zPgRO}zDE_>_k@qfP|JliCbe3nQ}+^U(q@ktv@TiV(;ood=&l;GRif0`l%AMY7c%QY zZdu~L0(}Cq48NfHA&8s_TP&hrp2dpy!tZEP)9B7zs<+3c(iv^a>V_)!wiB<7Mm#<5 z5B`NMEk>PQr`ML32c~kZU6rlQMB9>;V8zM8<(QAzFz=!W;EO113K6qSEG&#=&}P4K zxNra3E{9`kVMQ~rmqB64RkDR-Fmq6tdbgux_IbZ;z)IAFpQN$<|T!oD{ zDuV>yAE|Be0j{^)qR^U*+6Hq)ukp!G)z>x3oKbjd-(MdC8yiE>*{O? zbGjEnQcI{Tg44Cjv3u?~N&}$gka@`xerI-A3k#g`y~L=2Afr(G@0~~tX`i9 z+am_jQKnXCbycL=t2YOMAXW3mYC6;gr{aP zFVP}D((*CNY%z;Ms5)n;%T~_kue+Pn+)%c#Y#1Y42I5`Bk&6{hA6T|%AlokRY7??D z4dKlHa%dJ~_#BY1ikR1zy%+J!6D5s-VJi#svJCKEwO+4QnYFreK+jpy4!vHb>4+NR zR;|LIv!^Wzl}gd1UN)%LbQ+D0CXD~)xx?D030jSzx;lr(A69rQ8dr5~$YcwupI0iC zYQJ24&MNErK&uSnERst+Mt9VCDS*<-{8(9J%zLadM%HP2R7X0>)p8vSZ*HS1WHH1Y zu@D`QBfP&?!52E8`ov?Q#NRo>{@_$jkeV+N}>Ln2t1SxCLh zc85sJCbfwa359Lhsxxkck# z2^O{por#!D0doms1poxo7qhLfEc;SDp2+BHC$_n(8mg5xqfTY(>0JiO?QIEXYh_n! zZYoe-uEqYKGq$uWg@i>=og*J$KfuOdQ`i!~dt@0RvI7oB*V_GkhrYb5!;{(k)YQwr zKc|n#3bV>aORwEA{!>pHdn?QhTBAv;u$1?5 z1IwVeqc?3%*y`%K+fGa5Hl5a~Qbf{Ac$o>2j>}gXa9vseB3`g(0J7i^6?9&@M!+Lh z08VW(DHT?m*bz5q17^LqnpEku3UyfrF+}X)j9#Bz2IT8zjmiZ6tIJuFW<)!J>&6^v z1$c03D(qVoUb0@aD?l5Of%7h(ozD;5Q26urmvwg+3C40u_=z8pgPkk1%a7d2gjza& zx?Az%rlL&=K~DOepR#3h)n`fDbq0kNCXr}|My1y~(pH1ktO6_5DAY}0lgq%nQysLK zLbcT{jm4t~`!$Zbx{%Qt)MV*%HYoqRMJ@NM!4{Y9N#PaeabfP*bU|=P(1X`>Wl;%! zVGzq8Uxm5Sw!|=vmXONmuCCVVTI@Ge?rjcA8{5L^ zkfgEAsW!_iWg3k|URkRs?~GeU2ErXN)97Hd&5=ko=On+fSA8kNPWRaVMs%?GZld8K-z-Dztt4>VQOR&W(UnbN6~%gZYQ zley;Jih#w@>Y_ctVh-3h!M+FkjSZs|m8>0C)_$etmfjmD#hvx8T31aj`O2?Xug>Qv zZUCJG_dt0AbVYS|LDq$(WPaoqq?2VmI+ek#Rmd$ho$Zg-{)0+vZ3qS3UFDgeT&JoAZW4TnFbcIjbdJg~p|E zD(xRreEOZ4DQG2!H$AfU5>@Q5$w(eqKuA8TLMYGD^Z3r3{?a=h1@i7bX)ft5mTn z6$EXn6@w|2ORG?MbU}qhAyZmZIc>p$+w9Oa__CsF!JOHYg+t zy`n)*cS8Xnsb7Sl1g~u{djw?`{MJMj)rIb7!$Dy?k;#qD>Uy8j6Ku@6nxjfzPNW4B z*V)wN%}sJ8MNZsh%X_+Fj@7;Xd!1Uj+NG7N&}W{EBR1;+p5mDO`+O94M=C6VrK35> zD9$RYlxZ~mKh=@(^O9Z8iLp}X z>FHWf-Pls9d$8uq)nDknaiX55I*fUq?tr0jGKjlCcYv=r>nqdUt?5)*578-&E{#HN zrG!`W37+s=on-txlt<@y7&v8=w=l==NqPU0jw-x)Z#anfh(=0zz9Qx6KzUk+hKzSd z=~^n1p3=>e9u^f{Twp$e)$pwBXVfAs_(}Ip7^jQB>@|q?;`aT=jQ`c z-#;f4PMcIY0_t4fnH1&IkAU#MjJX$LkAX=#&0RTlmc`ql z1omcO8M{Wa3d8b>GeQd#Bs(v8I9Vej3lw%;*0DVshWa(s@Bp$^7P^;y3yCT+VievY|yNtK}E5wvJ!it5Tr|-C71r z3bR6{z@lbITwmgvh38AVNoJ+R{_Ok~Qx3n&JKP+@uoKy$`;iG64qhZo_yDp<5%upm zl*Rj^jZH)1{8%S#=M1k%yV}r_VNSdU$1Qwyr2((7xt7B>@ea;CQ#!N3>)4Ha*rk!b zC%^sAj=GUeW*l6)o9LAWms-h-M>U^Ni>R)*rwY3*wg7bAyMm=eb-)e<_vE+_>16Y1kuGbHi_4v_;!Sgtc)Kkwz;YJNp|>* z^sCWVxM98G(V(arGFM(G2q~p~iCu%j5<^bbi#9|>VZ{8%_ zjcft=Vk@^9Fh+7g`t}Cuqa?st~1N zK(wIXFgy8G6!oc1keW%U0SnR2_1q$GF44HMTMUL+Al_HCv${JO@1DG{yVca|l64oy z{>+zk7IU*Fl8I#2>$Dq326pJhVlwf@*pB_iS_ zk(Lik?g)==4#;OU&b@o${zPxp&dONdnyZS#`@+VNj&%t&nfyx65bZfJ7*=yF3q2A+ zkW>jCCb!U)xp+l=qzE*rDy<&q`gy?1>?i=sRU^w%O8lN5*Dre!|vlci?BU z!=8b|hX`iyeB@tqc%~%!NI>>M&LNB`p`w|HL_b#^Q6HWSZc_Ftk7$l;4$dmc_Diy@ zt@wZGrR*bn3D$xHORt}M3f2wSPpGXE(TjL37(8i+7j+@gu*S*me`xq>^QWY@ckS$Y zxO->URnnWAKicqx?w#F_bnksQ^T>C%-L&=F_}hBZw(oxTyF`Bz)zN=EcO!XLSkCAU z+LDj_x4nfOJA`}RJweB?7gsa<)d_?RKRvx?dj6UOIQ;5z9Ih=+!eSgEpPqc~Ve&PK z@AgH@=c*!I5IHizc|2eW=rbvJgM5>WP>2pAN-ilO+oW$y)BJ8B!5cXDF@Gf_;ZzG( zg#IO0{wQJh%>BpQUe1dg){L(p-<^!}$xiIrh1Ps?d&&JmFP>&3m|&V8tl+>b{F2NQ zqY~X3@91tb5Bc_!b;qqzX?wHqMDF{0_dd5NxW-Yl>h3L(t>Fvq?!%DC+|SU~F21d9 z+6*79M71xTXhd#q-4!<426rId$yz;uCbmYluqIfuGojU3{)kGRTT5O-TcLScfXL`% zVT!PlQmUX~Wn!U7!9pon{@IA=-P}Nfx}h;32}I>(-l_IxX`|gG5th{(qfWnDs+8J{ zjgnil8G9y~HXFR6^&&^I$KAfYdD<9Es5R+S*ip&Vq@21;CZ#cJrs=5u07#Ai5?GGu z*-h%B$O;oNiY(q=fwjmV>8AcGmLaLarjRxwdvZmE)D(6EXvYqHqa?$ibNVHjXzc|X zZ=Kc!n$7xjJYcEhs?ldlHmS0zrn4DaHk~q3=qg**CU+kK3~$Y?Cm#`dXyiIQ!(@X) zqw0=lC3~*lBmIi->GkjaVFQKq71Y`TNNFv^e*!L{O0xI*z0&9I_{s*MV#B*YCYgJ1 z?gm7D&+jqWO&|W)hhBRPJa_J~xf@_fr&rLz1Xcmfhk4cP#Wxh*1gyuEm zvqTqby?MjXOyTJphBlF>U&SBg;JxH2@_eaYzE}_0hd=zW!rPlJzJWaT8vZcTv^^!O zN3F-AOtBGM>BSZM!j)b?LYqh1ZafX_8S+!aYEa&VyHv~pqO!SMw=>L|KQ_4-zdr4o;er!l2C{pp>%4PvOO$+5!6U_uwTsCKB-e{j8&g* z*R|E?kL}b(o9k+JYIc1}k{XIUJFT&Bl^b0f$ERIQu8n8^nruhd11Ct%`Gh~yQvw+bp3I19k?*zp*MI9&P+lOyo7u|H_ zm)GyTea6(XzQv!eGL9zW18ztAx`d}gRy`XgM6I%gjCBLou3LA@q4vJ(Hil<>b^b#& zO&yJikf+O)`tjuFw~l`H%Gt!|r?(~!Y|40@*06t7I5IQXWU;0Szb&gOQ>sI~1G>>e zt(}K&8XG;TJVyrjH@Q2ppGRN|qtX}iu_O{KvXTvsaVBi- zU@oO`sptkpPmxs65EfMCIpI%IlOc1~TUAjjw&d2P62r(Pw2vbV4uj647YFP+u0Ha> z@sH=Kyt5WdQd|A8T8k%9>m7`EMtX1{K~A)1}5IQF7lRf(y?kez-G|Eb!UV9bnP z0`g+6JLyESD~iNkT3qsuRE)Yi2hnwB+~LP?FpRM#M5U(COA^~WmfD-q?b zbgK;^vq@H~kXA^%`G6^tQ0pw=)vZ=ne^ex`EEAO}U5KBwnx!>LnW)y&j_HXh)t0uM zEo6(-txIb~HSUi6FN*?m1Ydk^sX`T$0CpsVL+k;s3 z{Wq;0+S_H#9k^-L=v6b(&I6sJ*Gxy-4vw$d=Ih@W8JI2GS{8P?Qx0ju>(0uy7>|_) z$1Y5b-*m7oGPXTF_1S|tPx^vuht}*%q_$r>G`hce&8G3zZN1L1K8MTE+-685-S+O) zh^Uw%w~-^5(R!9$2JzRB+SrQbCl2d1D-6+s2%;8awjjt zb2@W739?8V&_R5Ih!r~no{vP@-1=@966V!(V}K`i^$GaN0g4tY`ZWPFyhIR^$|3 z_OVCmPnq_|AC;Usgc`rBnyh}~jq1s&v({qY6^r`*3KmhCe3kfCninsw_xf4Hr8(Jtdmggu?^)aw88F4NS%u*;MQF5xaBHw!-v zx-{X88R#;9E?u5Oh0E!*M3|5Uk23k~gb-4h3xw~}9U`8XZ3t5sjm$N(Wbb`)}bGLCBp;{2b41x2P#*Zgf zP`Mr0U{b+6I-utBIbUi11?+K@*@#3%oyG}^E$(_qJUYwLzq;(M%6d^-N9&HfxV?UG zJ7pf;ZdbUP|{a-K3h3($@YriW>It>oYBJ!le6!RE=Y6x&cDg@a4I}0Hx z#(7f_5kTXer*vfYB1cz$xT|7a?JBOKe5iKHyr;)L^Dp5>0>)aI@#~;p|*7QmN>ZOyO`$7!SB^9hX~Wn z0SwLeOG96g!Wa-hH|M>kw!CaoGAWs=Uz>Vu_XV->ErCnxACo*LZ~ySXNV54Od#5I* zNXOJbC`QwQ15($36_284hCLrL3feV~IImk~A0&OF_ za#q|Hi}P3%P*ng%j)*Lzt`O;J5*czpJS8mi^{x-KP5B79fW#vHoJCZ2ulUwffNYnv zhIY1>RSAcrc6oj_XAZ22;7BKOPk7>NWo8?3dXPRff#y$TnW7jL=*+-i zfZc;)fT7{E{xR_ng!0?!j_tgB>n|_+$)$B)^OQYW_n7|XVR>elgbQCMYYI;fXXL{- zLsxrmyF^yd%(=Nry7wGr{qcw0er~x(a*uh|d=l@?-<$p({!>g%!){Q$U>%s2kk1wE z25SY=Tpf9twZmIzn0e+z;>K-5+dq@IY5UN&>9)%+X}jc#_A8FIT>@HKD`-M~N)^7< z(;1)^ipBQ1#rDLt$R#R$$>Mff@KRbl9{LHZ#KSD@J&YY>P3aru7CnM1ITN`bEo1Mc z?K<%4X&_&0C|n~YUyxk6dGpU_XX$u)1Z^C4C`fX}(F57wWE9i%bwOab;fk^QrGE}= z2nAa8Bf4uPeeS8%T`7n|FhSk8SZN3!|Al^YL9y;+z;jP;x zWRK*B_uhNoJvUCk70=-;K{GfoZ4vePHp@|;j66!JP89z3aN%%0z2lzy?!C8o2gFt` zPTs=oP}|$0d8YThqCO>kP(6$HQ>wzL2J&*lC$5@4eti0>Pi)?d-b|R;9`X`&Rah_b zH~~jDc^2JhL^d~eCR4OxDfyVeW3{VwuA0@xnHIg*>QHIj)oYBivj(?~FE`C(^j@32 zSWYr>t=wvwSVcd~6C*FMpX2nW4W+C;(6Viy20^ct$1%O~{xV?EW zA_5-c0Rs)an#Z&?MYg*O)&cc7{}RC#=#c7=76Q0MJa3!<7F;fVe4?eRgJrb_E>;R60Z=@%}50p-XyV;5GI%U<& zP&W}3B&&T<_3uED^>c6G%Y4XDdYqce!>Q z-oGxfDLJvp6$~WCXWS9L0CO_}d7=(0gz{1gY$Z61NF%d&F3zZd(E%u+D4S8)2LUGY z#KJC9Rcz7qeO&e4vu_D=qp_x@WOg*>Yx3*7I=f!y)7r@qPg^5j9&J*FWqPmHuA>)N z*wc=oe0qakKiEd!SDE7$yWJAQTOn=D`%)+yXiKj*h{d>Mwj-0U#crb#!6+nzE7>R% zhyaQ~#v7-Wk8?)Cq)nzaE`oLOSojJ{$5Os%tSdIKpR3+?_RnRlV{}mNd}GX~3OBIf zYJEBfIpoeeV@>{qC)XHdc+lGQT8f8j+!PPK)ch?zjZLp@(%2Rw!j|&^6KuT8P+@EJ z0T&cYB~+{`B8k6p4whhT73||&T+6vK!*k|)q)cXzo;2@UkQt~EtpYejWN%*Nbi(>1 z!m)j>VjyRlo|*QqOCXy0#kOJJ*_SxIZ@BF@l=HR=jtJ#k2fb&jGeNnt69mSI;_D-4 zUzBo&#@yh^BW;7u8RuZz%cx(6EK1LUhEe};LZyPRlt`$`>jrbinVA{?`gq~>=g!X}ediF&}{>aNO^L>Ek?1Jr_j2kb?6u6@t zM!hpn68jT{Ghf{E#qEE6>#b|Az4{u|?BQC;9i_~V(Bh~qg}MB&2h4vbvqgsu^K8P= z!?iL`E`5v-_2}Z0;sI?5USMr4@veQUSZm=XR@XvI+^c|4kf+>8`UB}BoMrFEqqr7@ zJQU}zAzoS(t^bphGmRacq0&T@vyv}yPw*q7c5ui*qMz=XKK}bH8;)?++wg}LVw_cg zCl}GyX`R@>-hG_)AO8_ol3WCNF`uRTDB6Y+maPB$<@J|yku|GUt-(Q4*f)?J=wPu1 zAWMiIy}bU|E%jV%)!6FQ2(crAAufP?P5(}9J-inYMn=jYn0x_s@~Lc|6J`mqyF-3a zR#>}{3$#S)6yoygGOYojy}4mJl0MFX+>a~xw?T>X!9xG$&$l)C^Lanc1gcaqd zmD*UrMI@UES7(X|JwY6|Utc4yHfAFfy1Cns3^9V|-r~-7sJkqS7H@i=DBZ~s+*x>= z-C3=uHnv3Bowwpn`W#=_gxi@+5Vg_yj#HLYVOv{!p}|37DRoa>DDP=+EWF*WQk$>p zCT@>AiLhQWcRwGdfq56#fLh1Os_PXC@{|`)pdJ$yFn7I_>fp;}NwY zu9GlN`-R{$P8Sz?R)AMTfFV}1jsLll85F?0)m&he@Dr~bK6**=QxMpd)yrQdE_7HJtw$+!JFLu zsPX6=yn86Q3S5kE-$uz}bDgZj13r=zNO8{-$7zjm@P(8hj^9t-NU3EOSz15D{b?z+ z{8har@FHGZ<5T#quqJ&M2G6G2 zyDvo^sspjLr94zYGIZ`EH&@O~RrpZxQJez!9B?$H;b*YMR^fz^9X7J0paZso)p&x& ze!=B5XZ$8 Date: Thu, 15 Feb 2024 15:22:17 -0300 Subject: [PATCH 49/60] colors and letter --- .../features/auth/pages/signIn/signInPage.tsx | 9 +++---- .../features/auth/pages/signUp/signUpPage.tsx | 9 +++---- frontend/src/providers/theme.config.ts | 25 +++++++++++-------- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/frontend/src/features/auth/pages/signIn/signInPage.tsx b/frontend/src/features/auth/pages/signIn/signInPage.tsx index e688f8d0..feabcbb3 100644 --- a/frontend/src/features/auth/pages/signIn/signInPage.tsx +++ b/frontend/src/features/auth/pages/signIn/signInPage.tsx @@ -66,11 +66,7 @@ export const SignInPage: FC = () => { - + Welcome Back @@ -110,7 +106,8 @@ export const SignInPage: FC = () => { fullWidth variant="contained" disabled={authLoading} - sx={{ mt: 3, mb: 2 }} + sx={{ mt: 3, mb: 2, fontSize: 18 }} + color="success" > Sign In diff --git a/frontend/src/features/auth/pages/signUp/signUpPage.tsx b/frontend/src/features/auth/pages/signUp/signUpPage.tsx index 2bbf276a..bcc91895 100644 --- a/frontend/src/features/auth/pages/signUp/signUpPage.tsx +++ b/frontend/src/features/auth/pages/signUp/signUpPage.tsx @@ -74,11 +74,7 @@ export const SignUpPage: FC = () => { - + Create an account @@ -120,7 +116,8 @@ export const SignUpPage: FC = () => { fullWidth variant="contained" disabled={authLoading} - sx={{ mt: 3, mb: 2 }} + sx={{ mt: 3, mb: 2, fontSize: 18 }} + color="success" > {authLoading ? : "Sign Up"} diff --git a/frontend/src/providers/theme.config.ts b/frontend/src/providers/theme.config.ts index b76333d7..f5e9dd1e 100644 --- a/frontend/src/providers/theme.config.ts +++ b/frontend/src/providers/theme.config.ts @@ -5,18 +5,26 @@ import { createTheme } from "@mui/material/styles"; // TODO - make this styles work export const theme = createTheme({ palette: { - // type: 'light', primary: { - main: "#323c3d", + main: "#101820", + light: "#223344", + dark: "#070A0E", }, secondary: { - main: "#f50057", + main: "#FFFFFF", }, background: { - default: "#f1f3f3", + default: "#F1F5F8", + }, + success: { + main: "#00B140", + light: "#00E052", + dark: "008F34", + contrastText: "#FFFFFF", }, }, typography: { + fontFamily: "Rethink-Sans", h1: { fontSize: 30, marginLeft: 30, @@ -27,12 +35,9 @@ export const theme = createTheme({ h3: { fontSize: 20, }, - // h4: { - // fontSize: 15 - // }, - // h5: { - // fontSize: 10 - // } + button: { + textTransform: "capitalize", + }, }, }); From 01f366cdd19c312b39a40cb6f3b3de01ed92ebd6 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Thu, 15 Feb 2024 16:01:31 -0300 Subject: [PATCH 50/60] fix: settings storage --- frontend/package.json | 1 - frontend/pnpm-lock.yaml | 13 ---- frontend/src/context/storage/useStorage.tsx | 68 +++++++++++++++++++ .../src/context/storage/utils/parseJson.ts | 16 +++++ .../src/context/workspaces/repositories.tsx | 2 +- .../components/ButtonsMenu/index.tsx | 2 +- .../PieceFormItem/InputElement/ArrayInput.tsx | 13 ++-- .../InputElement/InputElement.tsx | 2 +- .../Drawers/PieceFormDrawer/index.tsx | 12 ++-- .../Drawers/SettingsFormDrawer/index.tsx | 54 +++++++-------- .../components/WorkflowEditor/index.tsx | 2 +- .../context/workflowPanelContext.tsx | 2 +- .../context/workflowSettingsData.tsx | 2 +- frontend/src/providers/app.tsx | 2 +- frontend/src/utils/isEmpty.ts | 2 +- 15 files changed, 125 insertions(+), 68 deletions(-) create mode 100644 frontend/src/context/storage/useStorage.tsx create mode 100644 frontend/src/context/storage/utils/parseJson.ts diff --git a/frontend/package.json b/frontend/package.json index ff62b6a6..1d3aa667 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -16,7 +16,6 @@ "@mui/material": "^5.15.10", "@mui/x-data-grid": "^6.19.4", "@mui/x-date-pickers": "^6.19.4", - "@nathan-vm/use-storage": "^0.2.1", "@uiw/react-textarea-code-editor": "^2.1.9", "@vitejs/plugin-react": "^4.2.1", "axios": "^1.6.7", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index b6dd752b..9ed44ce8 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -35,9 +35,6 @@ dependencies: '@mui/x-date-pickers': specifier: ^6.19.4 version: 6.19.4(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@mui/material@5.15.10)(@mui/system@5.15.9)(@types/react@18.2.55)(dayjs@1.11.10)(react-dom@18.2.0)(react@18.2.0) - '@nathan-vm/use-storage': - specifier: ^0.2.1 - version: 0.2.1(react@18.2.0) '@uiw/react-textarea-code-editor': specifier: ^2.1.9 version: 2.1.9(@babel/runtime@7.23.9)(react-dom@18.2.0)(react@18.2.0) @@ -1290,16 +1287,6 @@ packages: - '@types/react' dev: false - /@nathan-vm/use-storage@0.2.1(react@18.2.0): - resolution: {integrity: sha512-Im1u/XYG9T4mOsXQk1DAnpVWNU2unw/n4AzWzzAJTE+Nt8kT1iP130w1+1Gj4lI7sNTS0dkwzRxUQYTa4EqvjA==} - engines: {node: '>=14'} - requiresBuild: true - peerDependencies: - react: '>=16' - dependencies: - react: 18.2.0 - dev: false - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} diff --git a/frontend/src/context/storage/useStorage.tsx b/frontend/src/context/storage/useStorage.tsx new file mode 100644 index 00000000..131afcdd --- /dev/null +++ b/frontend/src/context/storage/useStorage.tsx @@ -0,0 +1,68 @@ +import React, { + type ReactNode, + createContext, + useCallback, + useContext, +} from "react"; + +import { stringifyOrKepOriginal, tryParseJSON } from "./utils/parseJson"; + +interface IStorageContext { + getItem: (key: string) => T | null; + setItem: (key: string, value: any) => void; + removeItem: (key: string) => void; + clear: () => void; +} + +const defaultStorageState = { + getItem: (_k: string) => null, + setItem: (_k: string, _v: string | object) => {}, + removeItem: (_k: string) => {}, + clear: () => {}, +}; + +const StorageContext = createContext(defaultStorageState); + +export function useStorage(): IStorageContext { + const context = useContext(StorageContext); + + return context; +} + +export const StorageProvider: React.FC<{ children?: ReactNode }> = ({ + children, +}) => { + const getItem = useCallback(function (key: string) { + const rawValue = localStorage.getItem(key); + if (rawValue) { + const value = tryParseJSON(rawValue); + return value as T; + } + return null; + }, []); + + const setItem = useCallback(function (key: string, value: any) { + if (value !== undefined) { + localStorage.setItem(key, stringifyOrKepOriginal(value)); + } + }, []); + + const clear = useCallback(() => { + localStorage.clear(); + }, []); + + const removeItem = useCallback((key: string) => { + localStorage.removeItem(key); + }, []); + + const value: IStorageContext = { + getItem, + setItem, + clear, + removeItem, + }; + + return ( + {children} + ); +}; diff --git a/frontend/src/context/storage/utils/parseJson.ts b/frontend/src/context/storage/utils/parseJson.ts new file mode 100644 index 00000000..b3c69712 --- /dev/null +++ b/frontend/src/context/storage/utils/parseJson.ts @@ -0,0 +1,16 @@ +export function tryParseJSON(jsonString: any) { + try { + const value = JSON.parse(jsonString); + return value as T; + } catch (e) { + return jsonString; + } +} + +export function stringifyOrKepOriginal(json: any): string { + if (typeof json === "string") { + return json; + } else { + return JSON.stringify(json); + } +} diff --git a/frontend/src/context/workspaces/repositories.tsx b/frontend/src/context/workspaces/repositories.tsx index 87720546..f1d91107 100644 --- a/frontend/src/context/workspaces/repositories.tsx +++ b/frontend/src/context/workspaces/repositories.tsx @@ -1,4 +1,4 @@ -import { useStorage } from "@nathan-vm/use-storage"; +import { useStorage } from "context/storage/useStorage"; import { type IGetRepoPiecesResponseInterface, useAuthenticatedGetPieceRepositories, diff --git a/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx index 39d549ad..b6303c7f 100644 --- a/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx +++ b/frontend/src/features/workflowEditor/components/ButtonsMenu/index.tsx @@ -4,8 +4,8 @@ import IosShareIcon from "@mui/icons-material/IosShare"; import SaveIcon from "@mui/icons-material/Save"; import SettingsSuggestIcon from "@mui/icons-material/Settings"; import { Button, Grid, Menu, MenuItem, styled } from "@mui/material"; -import { useStorage } from "@nathan-vm/use-storage"; import { type ModalRef } from "components/Modal"; +import { useStorage } from "context/storage/useStorage"; import { type Differences, findDifferencesInJsonImported, diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx index 8f6f98b6..67688edf 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/ArrayInput.tsx @@ -80,18 +80,13 @@ const ArrayInput: React.FC = React.memo( } as unknown; } - console.log(defaultObj); - append([defaultObj] as any); }, [append, definitions, schema]); - const disableUpstream = useMemo(() => { - if (disableCheckboxOptions(subItemSchema)) { - console.log(subItemSchema); - } - - return disableCheckboxOptions(subItemSchema); - }, [subItemSchema]); + const disableUpstream = useMemo( + () => disableCheckboxOptions(subItemSchema), + [subItemSchema], + ); const options = useMemo(() => upstreamOptions[inputKey], []); diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx index 78cf2d51..98a55bae 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx @@ -66,7 +66,7 @@ const InputElement: React.FC = React.memo( const checkboxKey = isItemObject ? itemKey.replace(/(\.value)(?!.*\.value)/, "fromUpstream") : itemKey.replace(/\.value$/, ""); - console.log(checkboxKey); + return ( = (props) => { mode: "onChange", }); const { trigger, reset } = methods; - const data = methods.watch(); + const data = useWatch({ control: methods.control }); - const loadData = useCallback(async () => { + const loadData = useCallback(() => { setFormLoaded(false); const data = getWorkflowPieceDataById(formId); if (data) { @@ -139,7 +139,7 @@ export const PieceFormDrawer: React.FC = (props) => { clearDownstreamDataById, ]); - const saveData = useCallback(async () => { + const saveData = useCallback(() => { if (formId && open) { setWorkflowPieceDataById(formId, data as WorkflowPieceData); updateOutputSchema(); @@ -149,7 +149,7 @@ export const PieceFormDrawer: React.FC = (props) => { // load forage useEffect(() => { if (open) { - void loadData(); + loadData(); } else { setFormLoaded(false); reset(); @@ -158,7 +158,7 @@ export const PieceFormDrawer: React.FC = (props) => { // save on forage useEffect(() => { - void saveData(); + saveData(); }, [saveData]); if (!formLoaded) { diff --git a/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx index cedc3935..ecf18465 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/SettingsFormDrawer/index.tsx @@ -1,4 +1,4 @@ -import { Drawer, Grid, Typography, TextField } from "@mui/material"; +import { Drawer, Grid, Typography } from "@mui/material"; import DatetimeInput from "components/DatetimeInput"; import SelectInput from "components/SelectInput"; import TextInput from "components/TextInput"; @@ -18,13 +18,12 @@ import { import { useCallback, useEffect, - useState, forwardRef, useImperativeHandle, type ForwardedRef, } from "react"; -import { FormProvider, useForm } from "react-hook-form"; -import { yupResolver } from "utils"; +import { FormProvider, useForm, useWatch } from "react-hook-form"; +import { isEmpty, yupResolver } from "utils"; import * as yup from "yup"; interface ISettingsFormDrawerProps { @@ -125,34 +124,26 @@ const SettingsFormDrawer = forwardRef< useWorkflowsEditor(); const resolver = yupResolver(WorkflowSettingsFormSchema); - const methods = useForm({ mode: "onChange", resolver }); - const { register, watch, reset, trigger, getValues } = methods; - const formData = watch(); - - const [loaded, setLoaded] = useState(false); - - const validate = useCallback(() => { - if (loaded) void trigger(); - }, [loaded, trigger]); - - useEffect(() => { - validate(); - }, [validate]); + const methods = useForm({ + mode: "onChange", + resolver, + defaultValues: defaultSettingsData, + }); + const formData = useWatch({ control: methods.control }); const loadData = useCallback(() => { const data = getWorkflowSettingsData(); - if (Object.keys(data).length === 0) { - reset(defaultSettingsData); + if (isEmpty(data)) { + methods.reset(defaultSettingsData); setWorkflowSettingsData(defaultSettingsData); } else { - reset(data); + methods.reset(data); } - setLoaded(true); - }, [reset, getWorkflowSettingsData, setWorkflowSettingsData]); + }, [methods.reset, getWorkflowSettingsData, setWorkflowSettingsData]); const saveData = useCallback(() => { - if (open) { - setWorkflowSettingsData(formData); + if (open && !isEmpty(formData)) { + setWorkflowSettingsData(formData as any); } }, [formData, open, setWorkflowSettingsData]); @@ -174,7 +165,7 @@ const SettingsFormDrawer = forwardRef< [loadData], ); - if (Object.keys(formData).length === 0) { + if (isEmpty(formData)) { return null; } @@ -241,7 +232,7 @@ const SettingsFormDrawer = forwardRef< defaultValue={defaultSettingsData.config.endDateType} /> - {getValues().config.endDateType === + {formData?.config?.endDateType === endDateTypes.UserDefined && ( - {formData.storage.storageSource === storageSourcesAWS.AWS_S3 ? ( + {formData?.storage?.storageSource === + storageSourcesAWS.AWS_S3 ? ( <> - - diff --git a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx index 9e1c44a1..39d90b19 100644 --- a/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx +++ b/frontend/src/features/workflowEditor/components/WorkflowEditor/index.tsx @@ -46,7 +46,7 @@ export const WorkflowsEditorComponent: React.FC = () => { } }, [workflowPanelRef.current]); - useInterval(saveDataToLocalForage, 40000); + useInterval(saveDataToLocalForage, 1000); const { clearStorageData, diff --git a/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx b/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx index c7839cb5..690846d5 100644 --- a/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx +++ b/frontend/src/features/workflowEditor/context/workflowPanelContext.tsx @@ -1,4 +1,4 @@ -import { useStorage } from "@nathan-vm/use-storage"; +import { useStorage } from "context/storage/useStorage"; import React, { useCallback } from "react"; import { type Node, type Edge } from "reactflow"; import { createCustomContext, getUuid } from "utils"; diff --git a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx index 1621645f..9357ac1d 100644 --- a/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx +++ b/frontend/src/features/workflowEditor/context/workflowSettingsData.tsx @@ -1,4 +1,4 @@ -import { useStorage } from "@nathan-vm/use-storage"; +import { useStorage } from "context/storage/useStorage"; import React, { useCallback } from "react"; import { createCustomContext } from "utils"; diff --git a/frontend/src/providers/app.tsx b/frontend/src/providers/app.tsx index ae14ce93..eeee5f4e 100644 --- a/frontend/src/providers/app.tsx +++ b/frontend/src/providers/app.tsx @@ -1,7 +1,7 @@ import CssBaseline from "@mui/material/CssBaseline"; import { ThemeProvider } from "@mui/material/styles"; -import { StorageProvider } from "@nathan-vm/use-storage"; import { AuthenticationProvider } from "context/authentication"; +import { StorageProvider } from "context/storage/useStorage"; import { WorkspacesProvider } from "context/workspaces"; import PiecesProvider from "context/workspaces/repositories"; import { type FC } from "react"; diff --git a/frontend/src/utils/isEmpty.ts b/frontend/src/utils/isEmpty.ts index 82547728..4da0fffe 100644 --- a/frontend/src/utils/isEmpty.ts +++ b/frontend/src/utils/isEmpty.ts @@ -1,3 +1,3 @@ export const isEmpty = (obj: Record | any[]) => { - return Object.keys(obj).length === 0 && obj.constructor === Object; + return obj && Object.keys(obj).length === 0 && obj.constructor === Object; }; From f95251a4e9126f09587c9af55572c6a6cd8ffb9d Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Thu, 15 Feb 2024 16:42:31 -0300 Subject: [PATCH 51/60] favicon --- frontend/index.html | 5 +++++ frontend/public/favicon.ico | Bin 104931 -> 0 bytes .../public/favicon/android-chrome-192x192.png | Bin 0 -> 3063 bytes .../public/favicon/android-chrome-512x512.png | Bin 0 -> 12255 bytes frontend/public/favicon/apple-touch-icon.png | Bin 0 -> 2797 bytes frontend/public/favicon/favicon-16x16.png | Bin 0 -> 266 bytes frontend/public/favicon/favicon-32x32.png | Bin 0 -> 360 bytes frontend/public/favicon/favicon.ico | Bin 0 -> 15406 bytes frontend/public/favicon/site.webmanifest | 1 + frontend/public/manifest.json | 15 ++++++++++----- 10 files changed, 16 insertions(+), 5 deletions(-) delete mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/favicon/android-chrome-192x192.png create mode 100644 frontend/public/favicon/android-chrome-512x512.png create mode 100644 frontend/public/favicon/apple-touch-icon.png create mode 100644 frontend/public/favicon/favicon-16x16.png create mode 100644 frontend/public/favicon/favicon-32x32.png create mode 100644 frontend/public/favicon/favicon.ico create mode 100644 frontend/public/favicon/site.webmanifest diff --git a/frontend/index.html b/frontend/index.html index 4dc16fa1..218712f2 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -14,6 +14,11 @@ + + + + + Domino diff --git a/frontend/public/favicon.ico b/frontend/public/favicon.ico deleted file mode 100644 index c95fc68b480a2dd8665a991a797e186682a69dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104931 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%0D@gF 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 aQ0k^Q_vGwBD%L>Y&*gx-bE#9nrT+mQPeWb+ literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/apple-touch-icon.png b/frontend/public/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..20f2d760fc83e4808e2d45c4982a7ee2d2fd9868 GIT binary patch literal 2797 zcmdUxX*ASrAIFCw8Wi1QX>en*3|S*842DFOtTB<1Y&EtrWr?x=lMc!{+5L}O%32zG zmZHcyvQN^KWXsMlV&<9qocnps^YVGsInRsh`n|b+-|Kh1_0xLB)F>(lXTh8}Sa_|xEV$BV#P=U97 z$d$eTMa|~4Cyz~srN^}D-h5QMDQg>%DB@C#%YhGz+3ks-Z$t|YYY#b8is3yNh8dmn zJn3c6Kt!#UR`MqY#lDX~{;a=uUEPbH1Ca#O6FFr9ee##y4!VmKF6@d;stARlbc|Zwx0AP&o8?J6EAP6yxy$dC zJMF*+Ue}tN)FEil%liAmw!Ri)*e{e<*RA;0JXp3+gSFuWF*MD5*TPghiaaa*_76k@0NExr-$5K}EPu>HanFtf2;Dl3h zuPthel}i!be7N7BLEIujG@X9n#vM^9Xg-Y{=iBDZNf;Mv=?Q_zg+e`3k@Lg&OL=G3 z=|A`1dE8ouhqDg9DUu_Rd)aT`;uJ+ZP$kR`7U=7p)nz4@IIb?e?K8KK$D)cUS@yhc zzT_bMjKenN=RU)Ov4pJolx8l{!)}Dfie56r|5ARurdCU;d`p0u!fHwNa9?5xkLloU4~vREpP z6K=|HutDsJyN_Kd4RIBFMrjKiDO-{(zBPvS1vg82tT`&#8$E8fe%RMd}-;EON) zqRo6uDgspb`7^Isj&eVd4L_u~<>2sa{E=3AccJN{BEYTAZ}ek>kNm4OV|aL#(@=@b z)8%Y9HOrOf4!j9!b{KbzOkprHJC2>NR_K#`d6zA{-;+AAKlk}rwZr6%UDDgI;AS@? zu1(4$)%VvpU+g|t3&;n}B)JFSFMmjA06F$w+Ll-KDh-D;SGxlPJ4e5$*zWH)b6ai> zLWL2gSMa$rfv=y)>wbC_2M>SuP`D+qpKve&DXbS*DOPm=WxPYK-`eq(Kw$8?ciL`%{y(atlq%#;}uCcDaop`;?Iwx_72p*PHQ4y$46l8I=0dv~z<*A8vV+tu;ubxAN z!mUDZtOW%t*`vxP>R)O>zQ}A+=Y*pHHj>}4SEqwfK=K0RaLQ2tRO{l z)Q>63k!<#vphobZqlCiD4mQ^Hv}W6U_CEb6+u%L}0{@s@{Pzo3b5vLsO&vSyAcpAT}&Y_y+^c?_U=;?z#dm$l`w$*x6Eb0=~Yb){M5uy0Kx zwqtTdy=+%j_EH;hoNb;#L1C&Z(?`2iviv?Ov%$O-2d6^pKc_~_ZzUF2Usc+a)@(?<~$I`U_7*5XAbr!|M0XGWf< zMuns`+B}B`4Md0{bI<+f_c}p-Ll*O^Dy%?XPp`F63WR!!M+fAF51xiokA;e1#5XyS zdP8Ea%##v&XZ$noY%dm+_)JfWB~Eg7Bg+3|K4ed^l*H%%UOMyze((O=r9$GeRd140 z#`d$xmcQCksWc_c@DCGZ#sPsREJ0>)2 X)DqJ3GK5xX1nrEPywd literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/favicon-16x16.png b/frontend/public/favicon/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..c70506f6b0728d23bf51e22cb5ab116ac2debc68 GIT binary patch literal 266 zcmV+l0rmcgP)Px##7RU!R5(v#WS|f*QmCJSx&{bHC^#@MFn}-v0|VpV|Ns6h`~UwxBNH=gBm={L zW~gfqe0cHT0LSl9|L%$rG=UQvYuyPV2}mb_#e{+kNz_MHv0VZ>07K`;FXdRVgAQ<4vztk z|1$kD`uyzKn?V`|)QCo;g!KRK|9}6NGBEsSWMpEAA}S$~lP{>77szn|0JjBW5kWIu QcK`qY07*qoM6N<$g3K>$-v9sr literal 0 HcmV?d00001 diff --git a/frontend/public/favicon/favicon-32x32.png b/frontend/public/favicon/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..627911421c084648d18297774b807849a2d3fae8 GIT binary patch literal 360 zcmV-u0hj)XP)Px$B1uF+R9Hvtm$6DiF&KrgJK$`6j7>7?5QB1Lw>6|C|s(;w6dokpZ#;J_l@dT88(x`<+85WmSJ$guVc- zv}*57y&Trh5X=A!`u1zpSP$xQzy;9hkeCoC3c<#8oudH&d;$sqc$Wr%n0La0+YIn8 z9Y8r8pF#Kn;HdY6-WlLt$jSTeZEJJL7eqL&#!CUO0s$6UwKuNz8~{+S1h@xwXh z+!M0+P|br;J*h^IgqX1EP0Ub$Klw6vlQ1?#2FMO1ci;!jb&w$+luwZW00000m!#iN5l zTogjMZa+WM5aKP$W@m%vr-fK<3NeE^P=Q9j9Ae*Ju5HXA^(Z;E@uXwQ=_ym5^l-1r zsg90_pw1>_kmM)VlApKoet9poz9m=MxG#t9lly-S80T}fK2X9qe>3DW9BT>w zF+N@u@lCoIXb+e;=rJ>SP7&U#GUiuK)fKtby8jGN*r1^X+y)Kznv#w_+T3$Z%e z?ae90vSi?Q>$keNeQ&>P19iUz=NoDtHV^FIQBKd&*yxpoTiMBg-^YhDo-dwx)N-3m z8)se7-(-{8Fmn9B{D)$u(~=kb`*ggkcI^TD#%9No*QQN*J!Q-&>?HRDey=TWP-6UQ z6y}#%$1ict{O9L8s>%GPTDR03)Qj?0G(X*(IOW=nk61_lrkzi6#Q%n4$)zs7V=0O^ zPQTj~M_dbSNVyhe#qU_ghciMPj`Lks*;K23r84|x{c>42b#^Moe@W-JjB@H*d>^+| z75}jN4mb~$fi-G_zAdEqgpaiEz{_K#}Xv=u)w2gBCb_oBf jIW2jfo~5#}!+#!>L6*z_Gr$Zm1Iz$3zzi@0 Date: Thu, 15 Feb 2024 19:01:17 -0300 Subject: [PATCH 52/60] fix types erros --- frontend/package.json | 3 +- frontend/pnpm-lock.yaml | 11 +- .../WorkflowPanel/DefaultNode/index.tsx | 173 ------------------ 3 files changed, 9 insertions(+), 178 deletions(-) delete mode 100644 frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx diff --git a/frontend/package.json b/frontend/package.json index 1d3aa667..d92f0493 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,6 +23,7 @@ "cross-env": "^7.0.3", "dayjs": "^1.11.10", "elkjs": "^0.8.2", + "pdfjs-dist": "^3.11.174", "plotly.js": "^2.29.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -32,7 +33,7 @@ "react-pdf": "^7.7.0", "react-plotly.js": "^2.6.0", "react-router-dom": "^6.22.0", - "react-to-print": "^2.15.0", + "react-to-print": "^2.14.15", "react-toastify": "^9.1.3", "reactflow": "^11.10.3", "remark-gfm": "^4.0.0", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 9ed44ce8..1d746a67 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -56,6 +56,9 @@ dependencies: elkjs: specifier: ^0.8.2 version: 0.8.2 + pdfjs-dist: + specifier: ^3.11.174 + version: 3.11.174 plotly.js: specifier: ^2.29.1 version: 2.29.1(mapbox-gl@1.13.3) @@ -84,8 +87,8 @@ dependencies: specifier: ^6.22.0 version: 6.22.0(react-dom@18.2.0)(react@18.2.0) react-to-print: - specifier: ^2.15.0 - version: 2.15.0(react-dom@18.2.0)(react@18.2.0) + specifier: ^2.14.15 + version: 2.14.15(react-dom@18.2.0)(react@18.2.0) react-toastify: specifier: ^9.1.3 version: 9.1.3(react-dom@18.2.0)(react@18.2.0) @@ -6388,8 +6391,8 @@ packages: react: 18.2.0 dev: false - /react-to-print@2.15.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-B5M2F2Mit1+glO64x9vCcNL2TiAmZ6iegybVvDs6NhNyTo1MXYlODoNky8vboWFnkcO5R/wz6XlTUK9HFIlWiQ==} + /react-to-print@2.14.15(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-SKnwOzU2cJ8eaAkoJO7+gNhvfEDmm+Y34IdcHsjtHioUevUPhprqbVtvNJlZ2JkGJ8ExK2QNWM9pXECTDR5D8w==} peerDependencies: react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 diff --git a/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx deleted file mode 100644 index e30c310a..00000000 --- a/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/DefaultNode/index.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { Icon } from "@iconify/react"; -import { Paper, Typography } from "@mui/material"; -import theme from "providers/theme.config"; -import React, { type CSSProperties, memo, useMemo } from "react"; -import { Handle, Position } from "reactflow"; -import { getUuidSlice, useMouseProximity } from "utils"; - -import { type DefaultNodeProps } from "../types"; - -export const CustomNode = memo(({ id, data, selected }) => { - const [isNear, ElementRef] = useMouseProximity(150); - - const handleStyle = useMemo( - () => - isNear - ? { - border: 0, - borderRadius: "16px", - backgroundColor: theme.palette.info.main, - transition: "ease 100", - zIndex: 2, - width: "12px", - height: "12px", - } - : { - border: 0, - borderRadius: "16px", - backgroundColor: "transparent", - transition: "ease 100", - zIndex: 2, - }, - [isNear], - ); - - const extendedClassExt = useMemo<"input" | "default" | "output">(() => { - const dominoReactflowClassTypeMap = Object.freeze({ - source: "input", - default: "default", - sink: "output", - }); - if ( - !data?.style.nodeType || - !["default", "source", "sink"].includes(data?.style.nodeType) - ) { - return "default"; - } else { - return dominoReactflowClassTypeMap[data.style.nodeType]; - } - }, [data]); - - const nodeTypeRenderHandleMap = useMemo( - () => ({ - input: { - renderTargetHandle: false, - renderSourceHandle: true, - }, - output: { - renderTargetHandle: true, - renderSourceHandle: false, - }, - default: { - renderTargetHandle: true, - renderSourceHandle: true, - }, - }), - [], - ); - - const nodeStyle = useMemo(() => { - return { - ...data.style.nodeStyle, - display: "flex", - flexDirection: "row", - justifyContent: "space-evenly", - alignItems: "center", - - position: "relative", - padding: 1, - textAlign: "center", - width: 150, - height: 70, - lineHeight: "60px", - border: selected ? "2px" : "", - borderStyle: selected ? "solid" : "", - borderColor: selected ? theme.palette.info.dark : "", - borderRadius: selected ? "3px" : "", - ...(data.validationError && { - backgroundColor: theme.palette.error.light, - color: theme.palette.error.contrastText, - }), - } satisfies CSSProperties; - }, [data, selected]); - - const { sourcePosition, targetPosition } = useMemo( - () => ({ - ...(data.orientation === "horizontal" - ? { - targetPosition: Position.Left, - sourcePosition: Position.Right, - } - : { - targetPosition: Position.Top, - sourcePosition: Position.Bottom, - }), - }), - [data], - ); - - const icon = useMemo(() => { - if (data.style.useIcon) { - const name = data.style.iconClassName; - return { - name, - style: { - width: "20px", - height: "20px", - margin: "5px", - ...data.style.iconStyle, - }, - }; - } - }, [data]); - - return ( - <> - {nodeTypeRenderHandleMap[extendedClassExt].renderSourceHandle && ( - - )} - {nodeTypeRenderHandleMap[extendedClassExt].renderTargetHandle && ( - - )} - - {icon && } -

- - {data?.style?.label ? data?.style?.label : data?.name} - - - {getUuidSlice(id)} - -
- - - ); -}); - -CustomNode.displayName = "CustomNode"; From f69fc5c039f815c24a6bffc5716b97fb90cd542f Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 16 Feb 2024 07:16:10 -0300 Subject: [PATCH 53/60] using default none value to avoid breaking old pieces --- src/domino/custom_operators/docker_operator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/custom_operators/docker_operator.py b/src/domino/custom_operators/docker_operator.py index 17548760..ef30516e 100644 --- a/src/domino/custom_operators/docker_operator.py +++ b/src/domino/custom_operators/docker_operator.py @@ -191,5 +191,5 @@ def execute(self, context: Context) -> Optional[str]: # env var format = {"name": "value"} self._prepare_execute_environment(context=context) result = super().execute(context=context) - self._shared_storage_usage_in_bytes = result['_shared_storage_usage_in_bytes'] + self._shared_storage_usage_in_bytes = result.get('_shared_storage_usage_in_bytes', None) return result From e2cc6d65215a281dfe617902f2e1e749e648745a Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 16 Feb 2024 08:49:33 -0300 Subject: [PATCH 54/60] using main colors in runs states panel and table --- .../components/WorkflowDetail/States/index.tsx | 4 ++-- .../WorkflowDetail/WorkflowPanel/RunNode/index.tsx | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/features/myWorkflows/components/WorkflowDetail/States/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/States/index.tsx index e7569853..6921b566 100644 --- a/frontend/src/features/myWorkflows/components/WorkflowDetail/States/index.tsx +++ b/frontend/src/features/myWorkflows/components/WorkflowDetail/States/index.tsx @@ -14,7 +14,7 @@ export const States: React.FC = ({ state }) => { label="Success" color="success" style={{ - backgroundColor: theme.palette.success.light, + backgroundColor: theme.palette.success.main, color: theme.palette.success.contrastText, fontWeight: "bold", }} @@ -27,7 +27,7 @@ export const States: React.FC = ({ state }) => { label="Failed" color="error" style={{ - backgroundColor: theme.palette.error.light, + backgroundColor: theme.palette.error.main, color: theme.palette.success.contrastText, fontWeight: "bold", }} diff --git a/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx index 2a4354a5..0ff0dc3d 100644 --- a/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx +++ b/frontend/src/features/myWorkflows/components/WorkflowDetail/WorkflowPanel/RunNode/index.tsx @@ -64,9 +64,9 @@ const RunNode = memo(({ id, data, selected }) => { switch (state) { case taskState.success: - colors.backgroundColor = theme.palette.success.light; + colors.backgroundColor = theme.palette.success.main; colors.color = theme.palette.getContrastText( - theme.palette.success.light, + theme.palette.success.main, ); break; case taskState.running: @@ -75,8 +75,8 @@ const RunNode = memo(({ id, data, selected }) => { break; case taskState.failed: - colors.backgroundColor = theme.palette.error.light; - colors.color = theme.palette.getContrastText(theme.palette.error.light); + colors.backgroundColor = theme.palette.error.main; + colors.color = theme.palette.getContrastText(theme.palette.error.main); break; } From 81cd9ec9064e1c09633e20859954da3db12196b8 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Fri, 16 Feb 2024 08:53:12 -0300 Subject: [PATCH 55/60] workspace cards using palette --- .../components/workspaces/WorkspaceListItem.tsx | 10 +++++++--- frontend/src/providers/theme.config.ts | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx index 7ee62119..6c7d641b 100644 --- a/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx +++ b/frontend/src/features/workspaces/components/workspaces/WorkspaceListItem.tsx @@ -17,6 +17,7 @@ import { Chip, } from "@mui/material"; import { type IWorkspaceSummary } from "context/workspaces/types"; +import theme from "providers/theme.config"; import { type FC } from "react"; import { useNavigate } from "react-router-dom"; @@ -51,7 +52,7 @@ export const WorkspaceListItem: FC<{ sx={{ display: "flex", flexDirection: "column", - borderColor: isSelected ? "green" : "primary", + borderColor: isSelected ? theme.palette.success.main : "primary", }} > Selected diff --git a/frontend/src/providers/theme.config.ts b/frontend/src/providers/theme.config.ts index f5e9dd1e..ed79875b 100644 --- a/frontend/src/providers/theme.config.ts +++ b/frontend/src/providers/theme.config.ts @@ -19,7 +19,7 @@ export const theme = createTheme({ success: { main: "#00B140", light: "#00E052", - dark: "008F34", + dark: "#008F34", contrastText: "#FFFFFF", }, }, From 4cad78490d850b08a47785090b13a9c2da9bd7da Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Mon, 19 Feb 2024 01:43:28 -0300 Subject: [PATCH 56/60] fix: dockerfile frontend --- frontend/Dockerfile.dev | 2 +- frontend/Dockerfile.prod | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/frontend/Dockerfile.dev b/frontend/Dockerfile.dev index 1bbcfad1..38117907 100644 --- a/frontend/Dockerfile.dev +++ b/frontend/Dockerfile.dev @@ -8,7 +8,7 @@ RUN corepack enable FROM base as build WORKDIR /usr/src/app COPY package.json pnpm-lock.yaml ./ -RUN pnpm install +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile # Debug Stage FROM base as debug diff --git a/frontend/Dockerfile.prod b/frontend/Dockerfile.prod index eace19cd..5bb5a767 100644 --- a/frontend/Dockerfile.prod +++ b/frontend/Dockerfile.prod @@ -1,16 +1,17 @@ -# Install pnpm -FROM node:18-alpine as base +# Stage 1: Build the React app +FROM node:18-slim as build ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable - -# Build the React app -FROM base as build +# Set the working directory WORKDIR /app + +# Copy package.json and yarn.lock files COPY package.json pnpm-lock.yaml ./ -RUN pnpm install -# Import ENVs to the builded app +# Install dependencies +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile + RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ -o import-meta-env -y @@ -18,7 +19,7 @@ RUN npx pkg ./node_modules/@import-meta-env/cli/bin/import-meta-env.js \ COPY . . # Build the app for production -RUN pnpm build +RUN pnpm run build # Stage 2: Create a minimal NGINX image FROM nginx:1.25.2 From fe60912dde268ed323cf8f5e4feb84175f1d2845 Mon Sep 17 00:00:00 2001 From: Nathan Vieira Marcelino Date: Mon, 19 Feb 2024 08:39:26 -0300 Subject: [PATCH 57/60] fix: input array itemKey --- .../PieceFormItem/InputElement/InputElement.tsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx index 98a55bae..e0ad13fe 100644 --- a/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx +++ b/frontend/src/features/workflowEditor/components/Drawers/PieceFormDrawer/PieceForm/PieceFormItem/InputElement/InputElement.tsx @@ -78,14 +78,14 @@ const InputElement: React.FC = React.memo( return ( ); } else if (isNumberType(schema, optionalType)) { return ( - name={itemKey} + name={isItemArray ? `${itemKey}.value` : itemKey} type={optionalType === "integer" ? "int" : "float"} label={schema.title} defaultValue={ @@ -99,12 +99,15 @@ const InputElement: React.FC = React.memo( ); } else if (isBooleanType(schema)) { return ( - name={itemKey} label={schema.title} /> + + name={isItemArray ? `${itemKey}.value` : itemKey} + label={schema.title} + /> ); } else if (isDateOrTimeType(schema, optionalType)) { return ( - name={itemKey} + name={isItemArray ? `${itemKey}.value` : itemKey} label={schema.title} type={(schema as StringProperty).format} /> @@ -113,7 +116,7 @@ const InputElement: React.FC = React.memo( const language = extractCodeEditorLanguage(schema as StringProperty); return ( - name={itemKey} + name={isItemArray ? `${itemKey}.value` : itemKey} language={language} placeholder={`Enter your ${language} code here.`} /> @@ -122,7 +125,7 @@ const InputElement: React.FC = React.memo( return ( variant="outlined" - name={itemKey} + name={isItemArray ? `${itemKey}.value` : itemKey} label={schema.title} /> ); @@ -130,7 +133,7 @@ const InputElement: React.FC = React.memo( return ( variant="outlined" - name={itemKey} + name={isItemArray ? `${itemKey}.value` : itemKey} label={schema.title} /> ); From 8e4b08a2edf0e89bcf4a4b53c0af3138c7859f7c Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 19 Feb 2024 11:10:35 -0300 Subject: [PATCH 58/60] gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 979ce3bd..88290ff2 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ pieces_repository_test/* airflow/* domino_data/* +.vscode/* + **/**.pyc **/**.swn **/**.swl From 50fab7fd19d7f556801dd15abc203acc14058355 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Vaz?= Date: Mon, 19 Feb 2024 11:10:55 -0300 Subject: [PATCH 59/60] Delete .vscode directory --- .vscode/launch.json | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 9ac5fd20..00000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "chrome", - "request": "launch", - "name": "Chrome Debug", - "userDataDir": false, - "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}/frontend/src", - "enableContentValidation": false, - "sourceMapPathOverrides": { - "webpack:///./src/*": "${webRoot}/*" - }, - "runtimeArgs": [ - "--remote-debugging-port=9222" - ], - "sourceMaps": true, - "pathMapping": {"url": "/src/", "path": "${webRoot}/"} - }, - { - "type": "msedge", - "request": "launch", - "name": "Edge Debug", - "userDataDir": false, - "url": "http://localhost:3000", - "webRoot": "${workspaceFolder}/frontend/src", - "enableContentValidation": false, - "sourceMapPathOverrides": { - "webpack:///./src/*": "${webRoot}/*" - }, - "runtimeArgs": [ - "--remote-debugging-port=9222" - ], - "sourceMaps": true, - "pathMapping": {"url": "/src/", "path": "${webRoot}/"} - }, - ] -} \ No newline at end of file From a357276eca49a61594b18f6ac0d5fc0600c2b5e6 Mon Sep 17 00:00:00 2001 From: vinicvaz Date: Mon, 19 Feb 2024 11:11:55 -0300 Subject: [PATCH 60/60] minor version --- src/domino/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/domino/VERSION b/src/domino/VERSION index bbde4bee..899f24fc 100644 --- a/src/domino/VERSION +++ b/src/domino/VERSION @@ -1 +1 @@ -0.8.5 \ No newline at end of file +0.9.0 \ No newline at end of file