From 65715f7ad3901b4336118b2f905814b7251659bf Mon Sep 17 00:00:00 2001 From: Hein Date: Thu, 30 Apr 2026 16:04:04 +0200 Subject: [PATCH] fix: remove redundant code in processing logic --- internal/app/app.go | 1 + internal/app/ui/dist/placeholder.txt | 1 - .../sql_public_agent_guardrails.go | 3 +- .../sql_public_agent_skills.go | 3 +- .../sql_public_chat_histories.go | 2 +- .../generatedmodels/sql_public_embeddings.go | 2 +- .../sql_public_important_dates.go | 2 +- .../generatedmodels/sql_public_learnings.go | 2 +- .../sql_public_plan_dependencies.go | 63 ++ .../sql_public_plan_guardrails.go | 63 ++ .../sql_public_plan_related_plans.go | 63 ++ .../generatedmodels/sql_public_plan_skills.go | 63 ++ internal/generatedmodels/sql_public_plans.go | 80 ++ .../sql_public_professional_contacts.go | 2 +- .../generatedmodels/sql_public_projects.go | 1 + .../generatedmodels/sql_public_recipes.go | 6 +- .../sql_public_shopping_lists.go | 2 +- internal/mcpserver/server.go | 117 ++- internal/store/model_adapters.go | 52 +- internal/store/plans.go | 477 +++++++++ internal/tools/plans.go | 344 +++++++ internal/types/plan.go | 83 ++ llm/memory.md | 28 +- migrations/020_generated_schema.sql | 962 +++++++++++++++++- schema/plans.dbml | 92 ++ ui/src/api.ts | 15 + ui/src/components/plans/PlansPage.svelte | 197 ++++ ui/src/components/shell/AdminShell.svelte | 3 + ui/src/components/shell/AppSidebar.svelte | 1 + ui/src/types.ts | 20 +- ui/tsconfig.tsbuildinfo | 2 +- 31 files changed, 2691 insertions(+), 61 deletions(-) delete mode 100644 internal/app/ui/dist/placeholder.txt create mode 100644 internal/generatedmodels/sql_public_plan_dependencies.go create mode 100644 internal/generatedmodels/sql_public_plan_guardrails.go create mode 100644 internal/generatedmodels/sql_public_plan_related_plans.go create mode 100644 internal/generatedmodels/sql_public_plan_skills.go create mode 100644 internal/generatedmodels/sql_public_plans.go create mode 100644 internal/store/plans.go create mode 100644 internal/tools/plans.go create mode 100644 internal/types/plan.go create mode 100644 schema/plans.dbml create mode 100644 ui/src/components/plans/PlansPage.svelte diff --git a/internal/app/app.go b/internal/app/app.go index 1d2670c..9949eef 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -205,6 +205,7 @@ func routes(logger *slog.Logger, cfg *config.Config, info buildinfo.Info, db *st Projects: tools.NewProjectsTool(db, activeProjects), Version: tools.NewVersionTool(cfg.MCP.ServerName, info), Learnings: tools.NewLearningsTool(db, activeProjects, cfg.Search), + Plans: tools.NewPlansTool(db, activeProjects, cfg.Search), Context: tools.NewContextTool(db, embeddings, cfg.Search, activeProjects), Recall: tools.NewRecallTool(db, embeddings, cfg.Search, activeProjects), Summarize: tools.NewSummarizeTool(db, embeddings, metadata, cfg.Search, activeProjects), diff --git a/internal/app/ui/dist/placeholder.txt b/internal/app/ui/dist/placeholder.txt deleted file mode 100644 index 484c870..0000000 --- a/internal/app/ui/dist/placeholder.txt +++ /dev/null @@ -1 +0,0 @@ -placeholder file to keep ui/dist present for go:embed in test environments diff --git a/internal/generatedmodels/sql_public_agent_guardrails.go b/internal/generatedmodels/sql_public_agent_guardrails.go index 5cb8743..c8d83dc 100644 --- a/internal/generatedmodels/sql_public_agent_guardrails.go +++ b/internal/generatedmodels/sql_public_agent_guardrails.go @@ -15,8 +15,9 @@ type ModelPublicAgentGuardrails struct { Description resolvespec_common.SqlString `bun:"description,type:text,default:'',notnull," json:"description"` Name resolvespec_common.SqlString `bun:"name,type:text,notnull," json:"name"` Severity resolvespec_common.SqlString `bun:"severity,type:text,default:'medium',notnull," json:"severity"` - Tags resolvespec_common.SqlString `bun:"tags,type:text,nullzero," json:"tags"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` + RelGuardrailIDPublicPlanGuardrails []*ModelPublicPlanGuardrails `bun:"rel:has-many,join:id=guardrail_id" json:"relguardrailidpublicplanguardrails,omitempty"` // Has many ModelPublicPlanGuardrails RelGuardrailIDPublicProjectGuardrails []*ModelPublicProjectGuardrails `bun:"rel:has-many,join:id=guardrail_id" json:"relguardrailidpublicprojectguardrails,omitempty"` // Has many ModelPublicProjectGuardrails } diff --git a/internal/generatedmodels/sql_public_agent_skills.go b/internal/generatedmodels/sql_public_agent_skills.go index a799f83..2342855 100644 --- a/internal/generatedmodels/sql_public_agent_skills.go +++ b/internal/generatedmodels/sql_public_agent_skills.go @@ -14,9 +14,10 @@ type ModelPublicAgentSkills struct { CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` Description resolvespec_common.SqlString `bun:"description,type:text,default:'',notnull," json:"description"` Name resolvespec_common.SqlString `bun:"name,type:text,notnull," json:"name"` - Tags resolvespec_common.SqlString `bun:"tags,type:text,nullzero," json:"tags"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` RelRelatedSkillIDPublicLearnings []*ModelPublicLearnings `bun:"rel:has-many,join:id=related_skill_id" json:"relrelatedskillidpubliclearnings,omitempty"` // Has many ModelPublicLearnings + RelSkillIDPublicPlanSkills []*ModelPublicPlanSkills `bun:"rel:has-many,join:id=skill_id" json:"relskillidpublicplanskills,omitempty"` // Has many ModelPublicPlanSkills RelSkillIDPublicProjectSkills []*ModelPublicProjectSkills `bun:"rel:has-many,join:id=skill_id" json:"relskillidpublicprojectskills,omitempty"` // Has many ModelPublicProjectSkills } diff --git a/internal/generatedmodels/sql_public_chat_histories.go b/internal/generatedmodels/sql_public_chat_histories.go index be126c1..ae5fd12 100644 --- a/internal/generatedmodels/sql_public_chat_histories.go +++ b/internal/generatedmodels/sql_public_chat_histories.go @@ -13,7 +13,7 @@ type ModelPublicChatHistories struct { AgentID resolvespec_common.SqlString `bun:"agent_id,type:text,nullzero," json:"agent_id"` Channel resolvespec_common.SqlString `bun:"channel,type:text,nullzero," json:"channel"` CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` - Messages resolvespec_common.SqlJSONB `bun:"messages,type:jsonb,default:'[',notnull," json:"messages"` + Messages resolvespec_common.SqlJSONB `bun:"messages,type:jsonb,default:'',notnull," json:"messages"` Metadata resolvespec_common.SqlJSONB `bun:"metadata,type:jsonb,default:'{}',notnull," json:"metadata"` ProjectID resolvespec_common.SqlUUID `bun:"project_id,type:uuid,nullzero," json:"project_id"` SessionID resolvespec_common.SqlString `bun:"session_id,type:text,notnull," json:"session_id"` diff --git a/internal/generatedmodels/sql_public_embeddings.go b/internal/generatedmodels/sql_public_embeddings.go index 276c0da..c69780e 100644 --- a/internal/generatedmodels/sql_public_embeddings.go +++ b/internal/generatedmodels/sql_public_embeddings.go @@ -11,7 +11,7 @@ type ModelPublicEmbeddings struct { bun.BaseModel `bun:"table:public.embeddings,alias:embeddings"` ID resolvespec_common.SqlInt64 `bun:"id,type:bigserial,pk,autoincrement," json:"id"` CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),nullzero," json:"created_at"` - Dim resolvespec_common.SqlInt32 `bun:"dim,type:int,notnull," json:"dim"` + Dim int32 `bun:"dim,type:int,notnull," json:"dim"` Embedding resolvespec_common.SqlString `bun:"embedding,type:vector,notnull," json:"embedding"` GUID resolvespec_common.SqlUUID `bun:"guid,type:uuid,default:gen_random_uuid(),notnull," json:"guid"` Model resolvespec_common.SqlString `bun:"model,type:text,notnull,unique:uidx_embeddings_thought_id_model," json:"model"` diff --git a/internal/generatedmodels/sql_public_important_dates.go b/internal/generatedmodels/sql_public_important_dates.go index d5e8007..24dcc46 100644 --- a/internal/generatedmodels/sql_public_important_dates.go +++ b/internal/generatedmodels/sql_public_important_dates.go @@ -15,7 +15,7 @@ type ModelPublicImportantDates struct { FamilyMemberID resolvespec_common.SqlUUID `bun:"family_member_id,type:uuid,nullzero," json:"family_member_id"` Notes resolvespec_common.SqlString `bun:"notes,type:text,nullzero," json:"notes"` RecurringYearly bool `bun:"recurring_yearly,type:boolean,default:false,notnull," json:"recurring_yearly"` - ReminderDaysBefore resolvespec_common.SqlInt32 `bun:"reminder_days_before,type:int,default:7,notnull," json:"reminder_days_before"` + ReminderDaysBefore int32 `bun:"reminder_days_before,type:int,default:7,notnull," json:"reminder_days_before"` Title resolvespec_common.SqlString `bun:"title,type:text,notnull," json:"title"` RelFamilyMemberID *ModelPublicFamilyMembers `bun:"rel:has-one,join:family_member_id=id" json:"relfamilymemberid,omitempty"` // Has one ModelPublicFamilyMembers } diff --git a/internal/generatedmodels/sql_public_learnings.go b/internal/generatedmodels/sql_public_learnings.go index 736f56f..eac1446 100644 --- a/internal/generatedmodels/sql_public_learnings.go +++ b/internal/generatedmodels/sql_public_learnings.go @@ -28,7 +28,7 @@ type ModelPublicLearnings struct { Status resolvespec_common.SqlString `bun:"status,type:text,default:'pending',notnull," json:"status"` Summary resolvespec_common.SqlString `bun:"summary,type:text,notnull," json:"summary"` SupersedesLearningID resolvespec_common.SqlUUID `bun:"supersedes_learning_id,type:uuid,nullzero," json:"supersedes_learning_id"` - Tags resolvespec_common.SqlString `bun:"tags,type:text,nullzero," json:"tags"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` RelDuplicateOfLearningID *ModelPublicLearnings `bun:"rel:has-one,join:duplicate_of_learning_id=id" json:"relduplicateoflearningid,omitempty"` // Has one ModelPublicLearnings RelProjectID *ModelPublicProjects `bun:"rel:has-one,join:project_id=guid" json:"relprojectid,omitempty"` // Has one ModelPublicProjects diff --git a/internal/generatedmodels/sql_public_plan_dependencies.go b/internal/generatedmodels/sql_public_plan_dependencies.go new file mode 100644 index 0000000..36f9153 --- /dev/null +++ b/internal/generatedmodels/sql_public_plan_dependencies.go @@ -0,0 +1,63 @@ +// Code generated by relspecgo. DO NOT EDIT. +package generatedmodels + +import ( + "fmt" + resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes" + "github.com/uptrace/bun" +) + +type ModelPublicPlanDependencies struct { + bun.BaseModel `bun:"table:public.plan_dependencies,alias:plan_dependencies"` + ID resolvespec_common.SqlInt32 `bun:"id,type:serial,pk,autoincrement," json:"id"` + CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` + DependsOnPlanID resolvespec_common.SqlUUID `bun:"depends_on_plan_id,type:uuid,notnull,unique:uidx_plan_dependencies_plan_id_depends_on_plan_id," json:"depends_on_plan_id"` + PlanID resolvespec_common.SqlUUID `bun:"plan_id,type:uuid,notnull,unique:uidx_plan_dependencies_plan_id_depends_on_plan_id," json:"plan_id"` + RelDependsOnPlanID *ModelPublicPlans `bun:"rel:has-one,join:depends_on_plan_id=id" json:"reldependsonplanid,omitempty"` // Has one ModelPublicPlans + RelPlanID *ModelPublicPlans `bun:"rel:has-one,join:plan_id=id" json:"relplanid,omitempty"` // Has one ModelPublicPlans +} + +// TableName returns the table name for ModelPublicPlanDependencies +func (m ModelPublicPlanDependencies) TableName() string { + return "public.plan_dependencies" +} + +// TableNameOnly returns the table name without schema for ModelPublicPlanDependencies +func (m ModelPublicPlanDependencies) TableNameOnly() string { + return "plan_dependencies" +} + +// SchemaName returns the schema name for ModelPublicPlanDependencies +func (m ModelPublicPlanDependencies) SchemaName() string { + return "public" +} + +// GetID returns the primary key value +func (m ModelPublicPlanDependencies) GetID() int64 { + return m.ID.Int64() +} + +// GetIDStr returns the primary key as a string +func (m ModelPublicPlanDependencies) GetIDStr() string { + return fmt.Sprintf("%v", m.ID) +} + +// SetID sets the primary key value +func (m ModelPublicPlanDependencies) SetID(newid int64) { + m.UpdateID(newid) +} + +// UpdateID updates the primary key value +func (m *ModelPublicPlanDependencies) UpdateID(newid int64) { + m.ID.FromString(fmt.Sprintf("%d", newid)) +} + +// GetIDName returns the name of the primary key column +func (m ModelPublicPlanDependencies) GetIDName() string { + return "id" +} + +// GetPrefix returns the table prefix +func (m ModelPublicPlanDependencies) GetPrefix() string { + return "PDL" +} diff --git a/internal/generatedmodels/sql_public_plan_guardrails.go b/internal/generatedmodels/sql_public_plan_guardrails.go new file mode 100644 index 0000000..4c2f750 --- /dev/null +++ b/internal/generatedmodels/sql_public_plan_guardrails.go @@ -0,0 +1,63 @@ +// Code generated by relspecgo. DO NOT EDIT. +package generatedmodels + +import ( + "fmt" + resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes" + "github.com/uptrace/bun" +) + +type ModelPublicPlanGuardrails struct { + bun.BaseModel `bun:"table:public.plan_guardrails,alias:plan_guardrails"` + ID resolvespec_common.SqlInt32 `bun:"id,type:serial,pk,autoincrement," json:"id"` + CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` + GuardrailID resolvespec_common.SqlUUID `bun:"guardrail_id,type:uuid,notnull,unique:uidx_plan_guardrails_plan_id_guardrail_id," json:"guardrail_id"` + PlanID resolvespec_common.SqlUUID `bun:"plan_id,type:uuid,notnull,unique:uidx_plan_guardrails_plan_id_guardrail_id," json:"plan_id"` + RelGuardrailID *ModelPublicAgentGuardrails `bun:"rel:has-one,join:guardrail_id=id" json:"relguardrailid,omitempty"` // Has one ModelPublicAgentGuardrails + RelPlanID *ModelPublicPlans `bun:"rel:has-one,join:plan_id=id" json:"relplanid,omitempty"` // Has one ModelPublicPlans +} + +// TableName returns the table name for ModelPublicPlanGuardrails +func (m ModelPublicPlanGuardrails) TableName() string { + return "public.plan_guardrails" +} + +// TableNameOnly returns the table name without schema for ModelPublicPlanGuardrails +func (m ModelPublicPlanGuardrails) TableNameOnly() string { + return "plan_guardrails" +} + +// SchemaName returns the schema name for ModelPublicPlanGuardrails +func (m ModelPublicPlanGuardrails) SchemaName() string { + return "public" +} + +// GetID returns the primary key value +func (m ModelPublicPlanGuardrails) GetID() int64 { + return m.ID.Int64() +} + +// GetIDStr returns the primary key as a string +func (m ModelPublicPlanGuardrails) GetIDStr() string { + return fmt.Sprintf("%v", m.ID) +} + +// SetID sets the primary key value +func (m ModelPublicPlanGuardrails) SetID(newid int64) { + m.UpdateID(newid) +} + +// UpdateID updates the primary key value +func (m *ModelPublicPlanGuardrails) UpdateID(newid int64) { + m.ID.FromString(fmt.Sprintf("%d", newid)) +} + +// GetIDName returns the name of the primary key column +func (m ModelPublicPlanGuardrails) GetIDName() string { + return "id" +} + +// GetPrefix returns the table prefix +func (m ModelPublicPlanGuardrails) GetPrefix() string { + return "PGL" +} diff --git a/internal/generatedmodels/sql_public_plan_related_plans.go b/internal/generatedmodels/sql_public_plan_related_plans.go new file mode 100644 index 0000000..1c52fa1 --- /dev/null +++ b/internal/generatedmodels/sql_public_plan_related_plans.go @@ -0,0 +1,63 @@ +// Code generated by relspecgo. DO NOT EDIT. +package generatedmodels + +import ( + "fmt" + resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes" + "github.com/uptrace/bun" +) + +type ModelPublicPlanRelatedPlans struct { + bun.BaseModel `bun:"table:public.plan_related_plans,alias:plan_related_plans"` + ID resolvespec_common.SqlInt32 `bun:"id,type:serial,pk,autoincrement," json:"id"` + CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` + PlanAID resolvespec_common.SqlUUID `bun:"plan_a_id,type:uuid,notnull,unique:uidx_plan_related_plans_plan_a_id_plan_b_id," json:"plan_a_id"` + PlanBID resolvespec_common.SqlUUID `bun:"plan_b_id,type:uuid,notnull,unique:uidx_plan_related_plans_plan_a_id_plan_b_id," json:"plan_b_id"` + RelPlanAID *ModelPublicPlans `bun:"rel:has-one,join:plan_a_id=id" json:"relplanaid,omitempty"` // Has one ModelPublicPlans + RelPlanBID *ModelPublicPlans `bun:"rel:has-one,join:plan_b_id=id" json:"relplanbid,omitempty"` // Has one ModelPublicPlans +} + +// TableName returns the table name for ModelPublicPlanRelatedPlans +func (m ModelPublicPlanRelatedPlans) TableName() string { + return "public.plan_related_plans" +} + +// TableNameOnly returns the table name without schema for ModelPublicPlanRelatedPlans +func (m ModelPublicPlanRelatedPlans) TableNameOnly() string { + return "plan_related_plans" +} + +// SchemaName returns the schema name for ModelPublicPlanRelatedPlans +func (m ModelPublicPlanRelatedPlans) SchemaName() string { + return "public" +} + +// GetID returns the primary key value +func (m ModelPublicPlanRelatedPlans) GetID() int64 { + return m.ID.Int64() +} + +// GetIDStr returns the primary key as a string +func (m ModelPublicPlanRelatedPlans) GetIDStr() string { + return fmt.Sprintf("%v", m.ID) +} + +// SetID sets the primary key value +func (m ModelPublicPlanRelatedPlans) SetID(newid int64) { + m.UpdateID(newid) +} + +// UpdateID updates the primary key value +func (m *ModelPublicPlanRelatedPlans) UpdateID(newid int64) { + m.ID.FromString(fmt.Sprintf("%d", newid)) +} + +// GetIDName returns the name of the primary key column +func (m ModelPublicPlanRelatedPlans) GetIDName() string { + return "id" +} + +// GetPrefix returns the table prefix +func (m ModelPublicPlanRelatedPlans) GetPrefix() string { + return "PRP" +} diff --git a/internal/generatedmodels/sql_public_plan_skills.go b/internal/generatedmodels/sql_public_plan_skills.go new file mode 100644 index 0000000..42947b6 --- /dev/null +++ b/internal/generatedmodels/sql_public_plan_skills.go @@ -0,0 +1,63 @@ +// Code generated by relspecgo. DO NOT EDIT. +package generatedmodels + +import ( + "fmt" + resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes" + "github.com/uptrace/bun" +) + +type ModelPublicPlanSkills struct { + bun.BaseModel `bun:"table:public.plan_skills,alias:plan_skills"` + ID resolvespec_common.SqlInt32 `bun:"id,type:serial,pk,autoincrement," json:"id"` + CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` + PlanID resolvespec_common.SqlUUID `bun:"plan_id,type:uuid,notnull,unique:uidx_plan_skills_plan_id_skill_id," json:"plan_id"` + SkillID resolvespec_common.SqlUUID `bun:"skill_id,type:uuid,notnull,unique:uidx_plan_skills_plan_id_skill_id," json:"skill_id"` + RelPlanID *ModelPublicPlans `bun:"rel:has-one,join:plan_id=id" json:"relplanid,omitempty"` // Has one ModelPublicPlans + RelSkillID *ModelPublicAgentSkills `bun:"rel:has-one,join:skill_id=id" json:"relskillid,omitempty"` // Has one ModelPublicAgentSkills +} + +// TableName returns the table name for ModelPublicPlanSkills +func (m ModelPublicPlanSkills) TableName() string { + return "public.plan_skills" +} + +// TableNameOnly returns the table name without schema for ModelPublicPlanSkills +func (m ModelPublicPlanSkills) TableNameOnly() string { + return "plan_skills" +} + +// SchemaName returns the schema name for ModelPublicPlanSkills +func (m ModelPublicPlanSkills) SchemaName() string { + return "public" +} + +// GetID returns the primary key value +func (m ModelPublicPlanSkills) GetID() int64 { + return m.ID.Int64() +} + +// GetIDStr returns the primary key as a string +func (m ModelPublicPlanSkills) GetIDStr() string { + return fmt.Sprintf("%v", m.ID) +} + +// SetID sets the primary key value +func (m ModelPublicPlanSkills) SetID(newid int64) { + m.UpdateID(newid) +} + +// UpdateID updates the primary key value +func (m *ModelPublicPlanSkills) UpdateID(newid int64) { + m.ID.FromString(fmt.Sprintf("%d", newid)) +} + +// GetIDName returns the name of the primary key column +func (m ModelPublicPlanSkills) GetIDName() string { + return "id" +} + +// GetPrefix returns the table prefix +func (m ModelPublicPlanSkills) GetPrefix() string { + return "PSL" +} diff --git a/internal/generatedmodels/sql_public_plans.go b/internal/generatedmodels/sql_public_plans.go new file mode 100644 index 0000000..096e964 --- /dev/null +++ b/internal/generatedmodels/sql_public_plans.go @@ -0,0 +1,80 @@ +// Code generated by relspecgo. DO NOT EDIT. +package generatedmodels + +import ( + "fmt" + resolvespec_common "github.com/bitechdev/ResolveSpec/pkg/spectypes" + "github.com/uptrace/bun" +) + +type ModelPublicPlans struct { + bun.BaseModel `bun:"table:public.plans,alias:plans"` + ID resolvespec_common.SqlUUID `bun:"id,type:uuid,pk,default:gen_random_uuid()," json:"id"` + CompletedAt resolvespec_common.SqlTimeStamp `bun:"completed_at,type:timestamptz,nullzero," json:"completed_at"` + CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` + Description resolvespec_common.SqlString `bun:"description,type:text,default:'',notnull," json:"description"` + DueDate resolvespec_common.SqlTimeStamp `bun:"due_date,type:timestamptz,nullzero," json:"due_date"` + LastReviewedAt resolvespec_common.SqlTimeStamp `bun:"last_reviewed_at,type:timestamptz,nullzero," json:"last_reviewed_at"` + Owner resolvespec_common.SqlString `bun:"owner,type:text,nullzero," json:"owner"` + Priority resolvespec_common.SqlString `bun:"priority,type:text,default:'medium',notnull," json:"priority"` // low, medium, high, critical + ProjectID resolvespec_common.SqlUUID `bun:"project_id,type:uuid,nullzero," json:"project_id"` + ReviewedBy resolvespec_common.SqlString `bun:"reviewed_by,type:text,nullzero," json:"reviewed_by"` + Status resolvespec_common.SqlString `bun:"status,type:text,default:'draft',notnull," json:"status"` // draft, active, blocked, completed, cancelled, superseded + SupersedesPlanID resolvespec_common.SqlUUID `bun:"supersedes_plan_id,type:uuid,nullzero," json:"supersedes_plan_id"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` + Title resolvespec_common.SqlString `bun:"title,type:text,notnull," json:"title"` + UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` + RelProjectID *ModelPublicProjects `bun:"rel:has-one,join:project_id=guid" json:"relprojectid,omitempty"` // Has one ModelPublicProjects + RelSupersedesPlanID *ModelPublicPlans `bun:"rel:has-one,join:supersedes_plan_id=id" json:"relsupersedesplanid,omitempty"` // Has one ModelPublicPlans + RelDependsOnPlanIDPublicPlanDependencies []*ModelPublicPlanDependencies `bun:"rel:has-many,join:id=depends_on_plan_id" json:"reldependsonplanidpublicplandependencies,omitempty"` // Has many ModelPublicPlanDependencies + RelPlanIDPublicPlanDependencies []*ModelPublicPlanDependencies `bun:"rel:has-many,join:id=plan_id" json:"relplanidpublicplandependencies,omitempty"` // Has many ModelPublicPlanDependencies + RelPlanAIDPublicPlanRelatedPlans []*ModelPublicPlanRelatedPlans `bun:"rel:has-many,join:id=plan_a_id" json:"relplanaidpublicplanrelatedplans,omitempty"` // Has many ModelPublicPlanRelatedPlans + RelPlanBIDPublicPlanRelatedPlans []*ModelPublicPlanRelatedPlans `bun:"rel:has-many,join:id=plan_b_id" json:"relplanbidpublicplanrelatedplans,omitempty"` // Has many ModelPublicPlanRelatedPlans + RelPlanIDPublicPlanSkills []*ModelPublicPlanSkills `bun:"rel:has-many,join:id=plan_id" json:"relplanidpublicplanskills,omitempty"` // Has many ModelPublicPlanSkills + RelPlanIDPublicPlanGuardrails []*ModelPublicPlanGuardrails `bun:"rel:has-many,join:id=plan_id" json:"relplanidpublicplanguardrails,omitempty"` // Has many ModelPublicPlanGuardrails +} + +// TableName returns the table name for ModelPublicPlans +func (m ModelPublicPlans) TableName() string { + return "public.plans" +} + +// TableNameOnly returns the table name without schema for ModelPublicPlans +func (m ModelPublicPlans) TableNameOnly() string { + return "plans" +} + +// SchemaName returns the schema name for ModelPublicPlans +func (m ModelPublicPlans) SchemaName() string { + return "public" +} + +// GetID returns the primary key value +func (m ModelPublicPlans) GetID() int64 { + return m.ID.Int64() +} + +// GetIDStr returns the primary key as a string +func (m ModelPublicPlans) GetIDStr() string { + return fmt.Sprintf("%v", m.ID) +} + +// SetID sets the primary key value +func (m ModelPublicPlans) SetID(newid int64) { + m.UpdateID(newid) +} + +// UpdateID updates the primary key value +func (m *ModelPublicPlans) UpdateID(newid int64) { + m.ID.FromString(fmt.Sprintf("%d", newid)) +} + +// GetIDName returns the name of the primary key column +func (m ModelPublicPlans) GetIDName() string { + return "id" +} + +// GetPrefix returns the table prefix +func (m ModelPublicPlans) GetPrefix() string { + return "PLA" +} diff --git a/internal/generatedmodels/sql_public_professional_contacts.go b/internal/generatedmodels/sql_public_professional_contacts.go index 768cb14..422ea43 100644 --- a/internal/generatedmodels/sql_public_professional_contacts.go +++ b/internal/generatedmodels/sql_public_professional_contacts.go @@ -20,7 +20,7 @@ type ModelPublicProfessionalContacts struct { Name resolvespec_common.SqlString `bun:"name,type:text,notnull," json:"name"` Notes resolvespec_common.SqlString `bun:"notes,type:text,nullzero," json:"notes"` Phone resolvespec_common.SqlString `bun:"phone,type:text,nullzero," json:"phone"` - Tags resolvespec_common.SqlString `bun:"tags,type:text,nullzero," json:"tags"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` Title resolvespec_common.SqlString `bun:"title,type:text,nullzero," json:"title"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` RelContactIDPublicContactInteractions []*ModelPublicContactInteractions `bun:"rel:has-many,join:id=contact_id" json:"relcontactidpubliccontactinteractions,omitempty"` // Has many ModelPublicContactInteractions diff --git a/internal/generatedmodels/sql_public_projects.go b/internal/generatedmodels/sql_public_projects.go index efd9441..92ad209 100644 --- a/internal/generatedmodels/sql_public_projects.go +++ b/internal/generatedmodels/sql_public_projects.go @@ -20,6 +20,7 @@ type ModelPublicProjects struct { RelProjectIDPublicStoredFiles []*ModelPublicStoredFiles `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpublicstoredfiles,omitempty"` // Has many ModelPublicStoredFiles RelProjectIDPublicChatHistories []*ModelPublicChatHistories `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpublicchathistories,omitempty"` // Has many ModelPublicChatHistories RelProjectIDPublicLearnings []*ModelPublicLearnings `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpubliclearnings,omitempty"` // Has many ModelPublicLearnings + RelProjectIDPublicPlans []*ModelPublicPlans `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpublicplans,omitempty"` // Has many ModelPublicPlans RelProjectIDPublicProjectSkills []*ModelPublicProjectSkills `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpublicprojectskills,omitempty"` // Has many ModelPublicProjectSkills RelProjectIDPublicProjectGuardrails []*ModelPublicProjectGuardrails `bun:"rel:has-many,join:guid=project_id" json:"relprojectidpublicprojectguardrails,omitempty"` // Has many ModelPublicProjectGuardrails } diff --git a/internal/generatedmodels/sql_public_recipes.go b/internal/generatedmodels/sql_public_recipes.go index 786535b..3f7fa23 100644 --- a/internal/generatedmodels/sql_public_recipes.go +++ b/internal/generatedmodels/sql_public_recipes.go @@ -13,14 +13,14 @@ type ModelPublicRecipes struct { CookTimeMinutes resolvespec_common.SqlInt32 `bun:"cook_time_minutes,type:int,nullzero," json:"cook_time_minutes"` CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` Cuisine resolvespec_common.SqlString `bun:"cuisine,type:text,nullzero," json:"cuisine"` - Ingredients resolvespec_common.SqlJSONB `bun:"ingredients,type:jsonb,default:'[',notnull," json:"ingredients"` - Instructions resolvespec_common.SqlJSONB `bun:"instructions,type:jsonb,default:'[',notnull," json:"instructions"` + Ingredients resolvespec_common.SqlJSONB `bun:"ingredients,type:jsonb,default:'',notnull," json:"ingredients"` + Instructions resolvespec_common.SqlJSONB `bun:"instructions,type:jsonb,default:'',notnull," json:"instructions"` Name resolvespec_common.SqlString `bun:"name,type:text,notnull," json:"name"` Notes resolvespec_common.SqlString `bun:"notes,type:text,nullzero," json:"notes"` PrepTimeMinutes resolvespec_common.SqlInt32 `bun:"prep_time_minutes,type:int,nullzero," json:"prep_time_minutes"` Rating resolvespec_common.SqlInt32 `bun:"rating,type:int,nullzero," json:"rating"` Servings resolvespec_common.SqlInt32 `bun:"servings,type:int,nullzero," json:"servings"` - Tags resolvespec_common.SqlString `bun:"tags,type:text,nullzero," json:"tags"` + Tags resolvespec_common.SqlString `bun:"tags,type:text,default:'{}',notnull," json:"tags"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` RelRecipeIDPublicMealPlans []*ModelPublicMealPlans `bun:"rel:has-many,join:id=recipe_id" json:"relrecipeidpublicmealplans,omitempty"` // Has many ModelPublicMealPlans } diff --git a/internal/generatedmodels/sql_public_shopping_lists.go b/internal/generatedmodels/sql_public_shopping_lists.go index 09d8e0b..43048b6 100644 --- a/internal/generatedmodels/sql_public_shopping_lists.go +++ b/internal/generatedmodels/sql_public_shopping_lists.go @@ -11,7 +11,7 @@ type ModelPublicShoppingLists struct { bun.BaseModel `bun:"table:public.shopping_lists,alias:shopping_lists"` ID resolvespec_common.SqlUUID `bun:"id,type:uuid,pk,default:gen_random_uuid()," json:"id"` CreatedAt resolvespec_common.SqlTimeStamp `bun:"created_at,type:timestamptz,default:now(),notnull," json:"created_at"` - Items resolvespec_common.SqlJSONB `bun:"items,type:jsonb,default:'[',notnull," json:"items"` + Items resolvespec_common.SqlJSONB `bun:"items,type:jsonb,default:'',notnull," json:"items"` Notes resolvespec_common.SqlString `bun:"notes,type:text,nullzero," json:"notes"` UpdatedAt resolvespec_common.SqlTimeStamp `bun:"updated_at,type:timestamptz,default:now(),notnull," json:"updated_at"` WeekStart resolvespec_common.SqlDate `bun:"week_start,type:date,notnull," json:"week_start"` diff --git a/internal/mcpserver/server.go b/internal/mcpserver/server.go index 5f53f5f..0c81cd9 100644 --- a/internal/mcpserver/server.go +++ b/internal/mcpserver/server.go @@ -41,6 +41,7 @@ type ToolSet struct { ChatHistory *tools.ChatHistoryTool Describe *tools.DescribeTool Learnings *tools.LearningsTool + Plans *tools.PlansTool } // Handlers groups the HTTP handlers produced for an MCP server instance. @@ -85,6 +86,7 @@ func NewHandlers(cfg config.MCPConfig, logger *slog.Logger, toolSet ToolSet, onS registerThoughtTools, registerProjectTools, registerLearningTools, + registerPlanTools, registerFileTools, registerMaintenanceTools, registerSkillTools, @@ -273,6 +275,100 @@ func registerLearningTools(server *mcp.Server, logger *slog.Logger, toolSet Tool return nil } +func registerPlanTools(server *mcp.Server, logger *slog.Logger, toolSet ToolSet) error { + if err := addTool(server, logger, &mcp.Tool{ + Name: "create_plan", + Description: "Create a structured plan linked to a project.", + }, toolSet.Plans.Create); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "get_plan", + Description: "Retrieve a plan with its dependencies, related plans, skills, and guardrails.", + }, toolSet.Plans.Get); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "update_plan", + Description: "Update plan fields; only provided fields are changed.", + }, toolSet.Plans.Update); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "delete_plan", + Description: "Hard-delete a plan by id.", + }, toolSet.Plans.Delete); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "list_plans", + Description: "List plans with optional project, status, priority, owner, tag, and text filters.", + }, toolSet.Plans.List); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "add_plan_dependency", + Description: "Mark plan_id as depending on depends_on_plan_id (must complete first).", + }, toolSet.Plans.AddDependency); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "remove_plan_dependency", + Description: "Remove a dependency between two plans.", + }, toolSet.Plans.RemoveDependency); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "add_related_plan", + Description: "Link two plans as thematically related (bidirectional).", + }, toolSet.Plans.AddRelated); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "remove_related_plan", + Description: "Unlink two related plans.", + }, toolSet.Plans.RemoveRelated); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "add_plan_skill", + Description: "Link an agent skill to a plan.", + }, toolSet.Plans.AddSkill); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "remove_plan_skill", + Description: "Unlink an agent skill from a plan.", + }, toolSet.Plans.RemoveSkill); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "list_plan_skills", + Description: "List skills linked to a plan.", + }, toolSet.Plans.ListSkills); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "add_plan_guardrail", + Description: "Link an agent guardrail to a plan.", + }, toolSet.Plans.AddGuardrail); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "remove_plan_guardrail", + Description: "Unlink an agent guardrail from a plan.", + }, toolSet.Plans.RemoveGuardrail); err != nil { + return err + } + if err := addTool(server, logger, &mcp.Tool{ + Name: "list_plan_guardrails", + Description: "List guardrails linked to a plan.", + }, toolSet.Plans.ListGuardrails); err != nil { + return err + } + return nil +} + func registerFileTools(server *mcp.Server, logger *slog.Logger, toolSet ToolSet) error { server.AddResourceTemplate(&mcp.ResourceTemplate{ Name: "stored_file", @@ -460,7 +556,7 @@ func registerChatHistoryTools(server *mcp.Server, logger *slog.Logger, toolSet T func registerDescribeTools(server *mcp.Server, logger *slog.Logger, toolSet ToolSet) error { if err := addTool(server, logger, &mcp.Tool{ Name: "describe_tools", - Description: "Call first each session. All tools with categories and usage notes. Categories: system, thoughts, projects, files, admin, maintenance, skills, chat, meta.", + Description: "Call first each session. All tools with categories and usage notes. Categories: system, thoughts, projects, files, admin, maintenance, skills, plans, chat, meta.", }, toolSet.Describe.Describe); err != nil { return err } @@ -506,6 +602,23 @@ func BuildToolCatalog() []tools.ToolEntry { {Name: "get_learning", Description: "Retrieve a structured learning by id.", Category: "projects"}, {Name: "list_learnings", Description: "List structured learnings with optional project, category, area, status, priority, tag, and text filters.", Category: "projects"}, + // plans + {Name: "create_plan", Description: "Create a structured plan with status, priority, owner, due date, and optional project link.", Category: "plans"}, + {Name: "get_plan", Description: "Retrieve a full plan including dependencies (depends_on/blocks), related plans, linked skills, and guardrails.", Category: "plans"}, + {Name: "update_plan", Description: "Partially update a plan; only provided fields are changed. Use mark_reviewed to stamp last_reviewed_at.", Category: "plans"}, + {Name: "delete_plan", Description: "Hard-delete a plan by id.", Category: "plans"}, + {Name: "list_plans", Description: "List plans with optional filters: project, status, priority, owner, tag, and full-text query.", Category: "plans"}, + {Name: "add_plan_dependency", Description: "Declare that plan_id cannot proceed until depends_on_plan_id is complete.", Category: "plans"}, + {Name: "remove_plan_dependency", Description: "Remove a directional dependency between two plans.", Category: "plans"}, + {Name: "add_related_plan", Description: "Link two plans as thematically related (bidirectional, order-independent).", Category: "plans"}, + {Name: "remove_related_plan", Description: "Unlink two related plans.", Category: "plans"}, + {Name: "add_plan_skill", Description: "Link an agent skill to a plan so it is loaded with the plan's context.", Category: "plans"}, + {Name: "remove_plan_skill", Description: "Unlink an agent skill from a plan.", Category: "plans"}, + {Name: "list_plan_skills", Description: "List all skills linked to a plan.", Category: "plans"}, + {Name: "add_plan_guardrail", Description: "Link an agent guardrail to a plan so it applies during plan execution.", Category: "plans"}, + {Name: "remove_plan_guardrail", Description: "Unlink an agent guardrail from a plan.", Category: "plans"}, + {Name: "list_plan_guardrails", Description: "List all guardrails linked to a plan.", Category: "plans"}, + // files {Name: "upload_file", Description: "Stage a file and get an amcs://files/{id} resource URI. Use content_path (absolute server-side path, no size limit) for large or binary files, or content_base64 (≤10 MB) for small files. Pass thought_id/project to link immediately, or omit and pass the URI to save_file later.", Category: "files"}, {Name: "save_file", Description: "Store a file and optionally link it to a thought. Use content_base64 (≤10 MB) for small files, or content_uri (amcs://files/{id} from a prior upload_file) for previously staged files. For files larger than 10 MB, use upload_file with content_path first. If the goal is to retain the artifact, store the file directly instead of reading or summarising it first.", Category: "files"}, @@ -544,7 +657,7 @@ func BuildToolCatalog() []tools.ToolEntry { {Name: "delete_chat_history", Description: "Permanently delete a saved chat history by id.", Category: "chat"}, // meta - {Name: "describe_tools", Description: "Call this first in every session. Returns all available MCP tools with names, descriptions, categories, and your accumulated usage notes. Filter by category to narrow results. Available categories: system, thoughts, projects, files, admin, household, maintenance, calendar, meals, crm, skills, chat, meta.", Category: "meta"}, + {Name: "describe_tools", Description: "Call this first in every session. Returns all available MCP tools with names, descriptions, categories, and your accumulated usage notes. Filter by category to narrow results. Available categories: system, thoughts, projects, files, admin, household, maintenance, calendar, meals, crm, skills, plans, chat, meta.", Category: "meta"}, {Name: "annotate_tool", Description: "Persist usage notes, gotchas, or workflow patterns for a specific tool. Notes survive across sessions and are returned by describe_tools. Call this whenever you discover something non-obvious about a tool's behaviour. Pass an empty string to clear notes.", Category: "meta"}, } } diff --git a/internal/store/model_adapters.go b/internal/store/model_adapters.go index 067edde..7a3b540 100644 --- a/internal/store/model_adapters.go +++ b/internal/store/model_adapters.go @@ -246,7 +246,7 @@ func importantDateFromModel(m generatedmodels.ModelPublicImportantDates, memberN Title: m.Title.String(), DateValue: m.DateValue.Time(), RecurringYearly: m.RecurringYearly, - ReminderDaysBefore: int(m.ReminderDaysBefore.Int64()), + ReminderDaysBefore: int(m.ReminderDaysBefore), Notes: m.Notes.String(), CreatedAt: m.CreatedAt.Time(), } @@ -418,6 +418,56 @@ func shoppingListFromModel(m generatedmodels.ModelPublicShoppingLists) ext.Shopp return list } +func planFromModel(m generatedmodels.ModelPublicPlans, tags []string) ext.Plan { + var projectID *uuid.UUID + if m.ProjectID.Valid { + id := m.ProjectID.UUID() + projectID = &id + } + + var dueDate *time.Time + if m.DueDate.Valid { + t := m.DueDate.Time() + dueDate = &t + } + + var completedAt *time.Time + if m.CompletedAt.Valid { + t := m.CompletedAt.Time() + completedAt = &t + } + + var lastReviewedAt *time.Time + if m.LastReviewedAt.Valid { + t := m.LastReviewedAt.Time() + lastReviewedAt = &t + } + + var supersedesPlanID *uuid.UUID + if m.SupersedesPlanID.Valid { + id := m.SupersedesPlanID.UUID() + supersedesPlanID = &id + } + + return ext.Plan{ + ID: m.ID.UUID(), + Title: m.Title.String(), + Description: m.Description.String(), + Status: ext.PlanStatus(m.Status.String()), + Priority: ext.PlanPriority(m.Priority.String()), + ProjectID: projectID, + Owner: m.Owner.String(), + DueDate: dueDate, + CompletedAt: completedAt, + ReviewedBy: m.ReviewedBy.String(), + LastReviewedAt: lastReviewedAt, + SupersedesPlanID: supersedesPlanID, + Tags: tags, + CreatedAt: m.CreatedAt.Time(), + UpdatedAt: m.UpdatedAt.Time(), + } +} + func learningFromModel(m generatedmodels.ModelPublicLearnings, tags []string) ext.Learning { var projectID *uuid.UUID if m.ProjectID.Valid { diff --git a/internal/store/plans.go b/internal/store/plans.go new file mode 100644 index 0000000..912c562 --- /dev/null +++ b/internal/store/plans.go @@ -0,0 +1,477 @@ +package store + +import ( + "context" + "fmt" + "strings" + "github.com/google/uuid" + "github.com/jackc/pgx/v5" + + "git.warky.dev/wdevs/amcs/internal/generatedmodels" + ext "git.warky.dev/wdevs/amcs/internal/types" +) + +const planColumns = ` + id, title, description, status, priority, project_id, owner, due_date, + completed_at, reviewed_by, last_reviewed_at, supersedes_plan_id, tags::text[], created_at, updated_at` + +func (db *DB) CreatePlan(ctx context.Context, plan ext.Plan) (ext.Plan, error) { + row := db.pool.QueryRow(ctx, ` + insert into plans (title, description, status, priority, project_id, owner, due_date, + completed_at, reviewed_by, last_reviewed_at, supersedes_plan_id, tags) + values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) + returning`+planColumns, + strings.TrimSpace(plan.Title), + strings.TrimSpace(plan.Description), + string(plan.Status), + string(plan.Priority), + plan.ProjectID, + nullableText(plan.Owner), + plan.DueDate, + plan.CompletedAt, + nullableText(plan.ReviewedBy), + plan.LastReviewedAt, + plan.SupersedesPlanID, + plan.Tags, + ) + return scanPlan(row) +} + +func (db *DB) GetPlan(ctx context.Context, id uuid.UUID) (ext.Plan, error) { + row := db.pool.QueryRow(ctx, `select`+planColumns+` from plans where id = $1`, id) + plan, err := scanPlan(row) + if err != nil { + if err == pgx.ErrNoRows { + return ext.Plan{}, fmt.Errorf("plan not found: %s", id) + } + return ext.Plan{}, fmt.Errorf("get plan: %w", err) + } + return plan, nil +} + +func (db *DB) GetPlanDetail(ctx context.Context, id uuid.UUID) (ext.PlanDetail, error) { + plan, err := db.GetPlan(ctx, id) + if err != nil { + return ext.PlanDetail{}, err + } + + dependsOn, err := db.listPlansByQuery(ctx, ` + select`+planColumns+` + from plans p + join plan_dependencies pd on pd.depends_on_plan_id = p.id + where pd.plan_id = $1 order by p.title`, id) + if err != nil { + return ext.PlanDetail{}, fmt.Errorf("get plan depends_on: %w", err) + } + + blocks, err := db.listPlansByQuery(ctx, ` + select`+planColumns+` + from plans p + join plan_dependencies pd on pd.plan_id = p.id + where pd.depends_on_plan_id = $1 order by p.title`, id) + if err != nil { + return ext.PlanDetail{}, fmt.Errorf("get plan blocks: %w", err) + } + + related, err := db.listPlansByQuery(ctx, ` + select`+planColumns+` + from plans p + where p.id in ( + select plan_b_id from plan_related_plans where plan_a_id = $1 + union + select plan_a_id from plan_related_plans where plan_b_id = $1 + ) order by p.title`, id) + if err != nil { + return ext.PlanDetail{}, fmt.Errorf("get plan related: %w", err) + } + + skills, err := db.ListPlanSkills(ctx, id) + if err != nil { + return ext.PlanDetail{}, fmt.Errorf("get plan skills: %w", err) + } + + guardrails, err := db.ListPlanGuardrails(ctx, id) + if err != nil { + return ext.PlanDetail{}, fmt.Errorf("get plan guardrails: %w", err) + } + + return ext.PlanDetail{ + Plan: plan, + DependsOn: dependsOn, + Blocks: blocks, + RelatedPlans: related, + Skills: skills, + Guardrails: guardrails, + }, nil +} + +func (db *DB) UpdatePlan(ctx context.Context, id uuid.UUID, u ext.PlanUpdate) (ext.Plan, error) { + sets := []string{"updated_at = now()"} + args := []any{} + + if u.Title != nil { + args = append(args, strings.TrimSpace(*u.Title)) + sets = append(sets, fmt.Sprintf("title = $%d", len(args))) + } + if u.Description != nil { + args = append(args, strings.TrimSpace(*u.Description)) + sets = append(sets, fmt.Sprintf("description = $%d", len(args))) + } + if u.Status != nil { + args = append(args, strings.TrimSpace(*u.Status)) + sets = append(sets, fmt.Sprintf("status = $%d", len(args))) + } + if u.Priority != nil { + args = append(args, strings.TrimSpace(*u.Priority)) + sets = append(sets, fmt.Sprintf("priority = $%d", len(args))) + } + if u.Owner != nil { + args = append(args, nullableText(*u.Owner)) + sets = append(sets, fmt.Sprintf("owner = $%d", len(args))) + } + if u.ClearDueDate { + sets = append(sets, "due_date = null") + } else if u.DueDate != nil { + args = append(args, *u.DueDate) + sets = append(sets, fmt.Sprintf("due_date = $%d", len(args))) + } + if u.ClearCompletedAt { + sets = append(sets, "completed_at = null") + } else if u.CompletedAt != nil { + args = append(args, *u.CompletedAt) + sets = append(sets, fmt.Sprintf("completed_at = $%d", len(args))) + } + if u.ReviewedBy != nil { + args = append(args, nullableText(*u.ReviewedBy)) + sets = append(sets, fmt.Sprintf("reviewed_by = $%d", len(args))) + } + if u.MarkReviewed { + sets = append(sets, "last_reviewed_at = now()") + } + if u.ClearSupersedesPlanID { + sets = append(sets, "supersedes_plan_id = null") + } else if u.SupersedesPlanID != nil { + args = append(args, *u.SupersedesPlanID) + sets = append(sets, fmt.Sprintf("supersedes_plan_id = $%d", len(args))) + } + if u.Tags != nil { + args = append(args, *u.Tags) + sets = append(sets, fmt.Sprintf("tags = $%d", len(args))) + } + + args = append(args, id) + query := fmt.Sprintf( + "update plans set %s where id = $%d returning%s", + strings.Join(sets, ", "), len(args), planColumns, + ) + + row := db.pool.QueryRow(ctx, query, args...) + plan, err := scanPlan(row) + if err != nil { + if err == pgx.ErrNoRows { + return ext.Plan{}, fmt.Errorf("plan not found: %s", id) + } + return ext.Plan{}, fmt.Errorf("update plan: %w", err) + } + return plan, nil +} + +func (db *DB) DeletePlan(ctx context.Context, id uuid.UUID) error { + tag, err := db.pool.Exec(ctx, `delete from plans where id = $1`, id) + if err != nil { + return fmt.Errorf("delete plan: %w", err) + } + if tag.RowsAffected() == 0 { + return fmt.Errorf("plan not found") + } + return nil +} + +func (db *DB) ListPlans(ctx context.Context, filter ext.PlanFilter) ([]ext.Plan, error) { + args := make([]any, 0, 8) + conditions := make([]string, 0, 8) + + if filter.ProjectID != nil { + args = append(args, *filter.ProjectID) + conditions = append(conditions, fmt.Sprintf("project_id = $%d", len(args))) + } + if v := strings.TrimSpace(filter.Status); v != "" { + args = append(args, v) + conditions = append(conditions, fmt.Sprintf("status = $%d", len(args))) + } + if v := strings.TrimSpace(filter.Priority); v != "" { + args = append(args, v) + conditions = append(conditions, fmt.Sprintf("priority = $%d", len(args))) + } + if v := strings.TrimSpace(filter.Owner); v != "" { + args = append(args, v) + conditions = append(conditions, fmt.Sprintf("owner = $%d", len(args))) + } + if v := strings.TrimSpace(filter.Tag); v != "" { + args = append(args, v) + conditions = append(conditions, fmt.Sprintf("$%d = any(tags)", len(args))) + } + if v := strings.TrimSpace(filter.Query); v != "" { + args = append(args, v) + conditions = append(conditions, fmt.Sprintf( + "to_tsvector('simple', title || ' ' || coalesce(description, '')) @@ websearch_to_tsquery('simple', $%d)", len(args))) + } + + query := "select" + planColumns + " from plans" + if len(conditions) > 0 { + query += " where " + strings.Join(conditions, " and ") + } + query += " order by updated_at desc" + if filter.Limit > 0 { + args = append(args, filter.Limit) + query += fmt.Sprintf(" limit $%d", len(args)) + } + + return db.listPlansByQuery(ctx, query, args...) +} + +// Dependencies + +func (db *DB) AddPlanDependency(ctx context.Context, planID, dependsOnPlanID uuid.UUID) error { + _, err := db.pool.Exec(ctx, ` + insert into plan_dependencies (plan_id, depends_on_plan_id) + values ($1, $2) + on conflict do nothing + `, planID, dependsOnPlanID) + if err != nil { + return fmt.Errorf("add plan dependency: %w", err) + } + return nil +} + +func (db *DB) RemovePlanDependency(ctx context.Context, planID, dependsOnPlanID uuid.UUID) error { + tag, err := db.pool.Exec(ctx, ` + delete from plan_dependencies where plan_id = $1 and depends_on_plan_id = $2 + `, planID, dependsOnPlanID) + if err != nil { + return fmt.Errorf("remove plan dependency: %w", err) + } + if tag.RowsAffected() == 0 { + return fmt.Errorf("plan dependency not found") + } + return nil +} + +// Related Plans + +func (db *DB) AddRelatedPlan(ctx context.Context, planAID, planBID uuid.UUID) error { + a, b := canonicalPlanPair(planAID, planBID) + _, err := db.pool.Exec(ctx, ` + insert into plan_related_plans (plan_a_id, plan_b_id) + values ($1, $2) + on conflict do nothing + `, a, b) + if err != nil { + return fmt.Errorf("add related plan: %w", err) + } + return nil +} + +func (db *DB) RemoveRelatedPlan(ctx context.Context, planAID, planBID uuid.UUID) error { + a, b := canonicalPlanPair(planAID, planBID) + tag, err := db.pool.Exec(ctx, ` + delete from plan_related_plans where plan_a_id = $1 and plan_b_id = $2 + `, a, b) + if err != nil { + return fmt.Errorf("remove related plan: %w", err) + } + if tag.RowsAffected() == 0 { + return fmt.Errorf("related plan link not found") + } + return nil +} + +// Plan Skills + +func (db *DB) AddPlanSkill(ctx context.Context, planID, skillID uuid.UUID) error { + _, err := db.pool.Exec(ctx, ` + insert into plan_skills (plan_id, skill_id) values ($1, $2) on conflict do nothing + `, planID, skillID) + if err != nil { + return fmt.Errorf("add plan skill: %w", err) + } + return nil +} + +func (db *DB) RemovePlanSkill(ctx context.Context, planID, skillID uuid.UUID) error { + tag, err := db.pool.Exec(ctx, ` + delete from plan_skills where plan_id = $1 and skill_id = $2 + `, planID, skillID) + if err != nil { + return fmt.Errorf("remove plan skill: %w", err) + } + if tag.RowsAffected() == 0 { + return fmt.Errorf("plan skill link not found") + } + return nil +} + +func (db *DB) ListPlanSkills(ctx context.Context, planID uuid.UUID) ([]ext.AgentSkill, error) { + rows, err := db.pool.Query(ctx, ` + select s.id, s.name, s.description, s.content, s.tags::text[], s.created_at, s.updated_at + from agent_skills s + join plan_skills ps on ps.skill_id = s.id + where ps.plan_id = $1 + order by s.name + `, planID) + if err != nil { + return nil, fmt.Errorf("list plan skills: %w", err) + } + defer rows.Close() + + var skills []ext.AgentSkill + for rows.Next() { + var model generatedmodels.ModelPublicAgentSkills + var tags []string + if err := rows.Scan(&model.ID, &model.Name, &model.Description, &model.Content, &tags, &model.CreatedAt, &model.UpdatedAt); err != nil { + return nil, fmt.Errorf("scan plan skill: %w", err) + } + s := ext.AgentSkill{ + ID: model.ID.UUID(), + Name: model.Name.String(), + Description: model.Description.String(), + Content: model.Content.String(), + Tags: tags, + CreatedAt: model.CreatedAt.Time(), + UpdatedAt: model.UpdatedAt.Time(), + } + if s.Tags == nil { + s.Tags = []string{} + } + skills = append(skills, s) + } + return skills, rows.Err() +} + +// Plan Guardrails + +func (db *DB) AddPlanGuardrail(ctx context.Context, planID, guardrailID uuid.UUID) error { + _, err := db.pool.Exec(ctx, ` + insert into plan_guardrails (plan_id, guardrail_id) values ($1, $2) on conflict do nothing + `, planID, guardrailID) + if err != nil { + return fmt.Errorf("add plan guardrail: %w", err) + } + return nil +} + +func (db *DB) RemovePlanGuardrail(ctx context.Context, planID, guardrailID uuid.UUID) error { + tag, err := db.pool.Exec(ctx, ` + delete from plan_guardrails where plan_id = $1 and guardrail_id = $2 + `, planID, guardrailID) + if err != nil { + return fmt.Errorf("remove plan guardrail: %w", err) + } + if tag.RowsAffected() == 0 { + return fmt.Errorf("plan guardrail link not found") + } + return nil +} + +func (db *DB) ListPlanGuardrails(ctx context.Context, planID uuid.UUID) ([]ext.AgentGuardrail, error) { + rows, err := db.pool.Query(ctx, ` + select g.id, g.name, g.description, g.content, g.severity, g.tags::text[], g.created_at, g.updated_at + from agent_guardrails g + join plan_guardrails pg on pg.guardrail_id = g.id + where pg.plan_id = $1 + order by g.name + `, planID) + if err != nil { + return nil, fmt.Errorf("list plan guardrails: %w", err) + } + defer rows.Close() + + var guardrails []ext.AgentGuardrail + for rows.Next() { + var model generatedmodels.ModelPublicAgentGuardrails + var tags []string + if err := rows.Scan(&model.ID, &model.Name, &model.Description, &model.Content, &model.Severity, &tags, &model.CreatedAt, &model.UpdatedAt); err != nil { + return nil, fmt.Errorf("scan plan guardrail: %w", err) + } + g := ext.AgentGuardrail{ + ID: model.ID.UUID(), + Name: model.Name.String(), + Description: model.Description.String(), + Content: model.Content.String(), + Severity: model.Severity.String(), + Tags: tags, + CreatedAt: model.CreatedAt.Time(), + UpdatedAt: model.UpdatedAt.Time(), + } + if g.Tags == nil { + g.Tags = []string{} + } + guardrails = append(guardrails, g) + } + return guardrails, rows.Err() +} + +// helpers + +type planScanner interface { + Scan(dest ...any) error +} + +func scanPlan(row planScanner) (ext.Plan, error) { + var model generatedmodels.ModelPublicPlans + var tags []string + err := row.Scan( + &model.ID, + &model.Title, + &model.Description, + &model.Status, + &model.Priority, + &model.ProjectID, + &model.Owner, + &model.DueDate, + &model.CompletedAt, + &model.ReviewedBy, + &model.LastReviewedAt, + &model.SupersedesPlanID, + &tags, + &model.CreatedAt, + &model.UpdatedAt, + ) + if err != nil { + return ext.Plan{}, err + } + if tags == nil { + tags = []string{} + } + return planFromModel(model, tags), nil +} + +func (db *DB) listPlansByQuery(ctx context.Context, query string, args ...any) ([]ext.Plan, error) { + rows, err := db.pool.Query(ctx, query, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + plans := make([]ext.Plan, 0) + for rows.Next() { + plan, err := scanPlan(rows) + if err != nil { + return nil, fmt.Errorf("scan plan: %w", err) + } + plans = append(plans, plan) + } + if err := rows.Err(); err != nil { + return nil, fmt.Errorf("iterate plans: %w", err) + } + return plans, nil +} + +// canonicalPlanPair ensures the smaller UUID is always plan_a_id to prevent duplicates. +func canonicalPlanPair(a, b uuid.UUID) (uuid.UUID, uuid.UUID) { + if strings.Compare(a.String(), b.String()) <= 0 { + return a, b + } + return b, a +} + diff --git a/internal/tools/plans.go b/internal/tools/plans.go new file mode 100644 index 0000000..31dd44b --- /dev/null +++ b/internal/tools/plans.go @@ -0,0 +1,344 @@ +package tools + +import ( + "context" + "strings" + "time" + + "github.com/google/uuid" + "github.com/modelcontextprotocol/go-sdk/mcp" + + "git.warky.dev/wdevs/amcs/internal/config" + "git.warky.dev/wdevs/amcs/internal/session" + "git.warky.dev/wdevs/amcs/internal/store" + thoughttypes "git.warky.dev/wdevs/amcs/internal/types" +) + +type PlansTool struct { + store *store.DB + sessions *session.ActiveProjects + cfg config.SearchConfig +} + +func NewPlansTool(db *store.DB, sessions *session.ActiveProjects, cfg config.SearchConfig) *PlansTool { + return &PlansTool{store: db, sessions: sessions, cfg: cfg} +} + +// --- I/O types --- + +type CreatePlanInput struct { + Title string `json:"title" jsonschema:"plan title"` + Description string `json:"description,omitempty"` + Status string `json:"status,omitempty" jsonschema:"draft|active|blocked|completed|cancelled|superseded"` + Priority string `json:"priority,omitempty" jsonschema:"low|medium|high|critical"` + Project string `json:"project,omitempty" jsonschema:"project name or id; falls back to active session project"` + Owner string `json:"owner,omitempty"` + DueDate string `json:"due_date,omitempty" jsonschema:"RFC3339 timestamp"` + SupersedesPlanID *uuid.UUID `json:"supersedes_plan_id,omitempty"` + Tags []string `json:"tags,omitempty"` +} + +type CreatePlanOutput struct { + Plan thoughttypes.Plan `json:"plan"` +} + +type GetPlanInput struct { + ID uuid.UUID `json:"id" jsonschema:"plan id"` +} + +type GetPlanOutput struct { + Plan thoughttypes.PlanDetail `json:"plan"` +} + +type UpdatePlanInput struct { + ID uuid.UUID `json:"id" jsonschema:"plan id"` + Title string `json:"title,omitempty"` + Description string `json:"description,omitempty"` + Status string `json:"status,omitempty" jsonschema:"draft|active|blocked|completed|cancelled|superseded"` + Priority string `json:"priority,omitempty" jsonschema:"low|medium|high|critical"` + Owner *string `json:"owner,omitempty" jsonschema:"empty string clears the owner"` + DueDate string `json:"due_date,omitempty" jsonschema:"RFC3339; omit to keep, 'clear' to remove"` + ClearDueDate bool `json:"clear_due_date,omitempty"` + CompletedAt string `json:"completed_at,omitempty" jsonschema:"RFC3339; omit to keep, 'clear' to remove"` + ClearCompletedAt bool `json:"clear_completed_at,omitempty"` + ReviewedBy *string `json:"reviewed_by,omitempty" jsonschema:"empty string clears the reviewer"` + MarkReviewed bool `json:"mark_reviewed,omitempty" jsonschema:"set last_reviewed_at to now"` + SupersedesPlanID *uuid.UUID `json:"supersedes_plan_id,omitempty"` + ClearSupersedesPlanID bool `json:"clear_supersedes_plan_id,omitempty"` + Tags *[]string `json:"tags,omitempty" jsonschema:"replaces all tags when provided; pass [] to clear"` +} + +type UpdatePlanOutput struct { + Plan thoughttypes.Plan `json:"plan"` +} + +type DeletePlanInput struct { + ID uuid.UUID `json:"id" jsonschema:"plan id"` +} + +type DeletePlanOutput struct { + Deleted bool `json:"deleted"` +} + +type ListPlansInput struct { + Limit int `json:"limit,omitempty"` + Project string `json:"project,omitempty" jsonschema:"project name or id; falls back to active session project"` + Status string `json:"status,omitempty"` + Priority string `json:"priority,omitempty"` + Owner string `json:"owner,omitempty"` + Tag string `json:"tag,omitempty"` + Query string `json:"query,omitempty"` +} + +type ListPlansOutput struct { + Plans []thoughttypes.Plan `json:"plans"` +} + +type PlanDependencyInput struct { + PlanID uuid.UUID `json:"plan_id" jsonschema:"the plan that depends on another"` + DependsOnPlanID uuid.UUID `json:"depends_on_plan_id" jsonschema:"the plan that must complete first"` +} + +type PlanRelatedInput struct { + PlanAID uuid.UUID `json:"plan_a_id"` + PlanBID uuid.UUID `json:"plan_b_id"` +} + +type PlanLinkOutput struct { + OK bool `json:"ok"` +} + +type PlanSkillInput struct { + PlanID uuid.UUID `json:"plan_id"` + SkillID uuid.UUID `json:"skill_id"` +} + +type ListPlanSkillsInput struct { + PlanID uuid.UUID `json:"plan_id"` +} + +type ListPlanSkillsOutput struct { + Skills []thoughttypes.AgentSkill `json:"skills"` +} + +type PlanGuardrailInput struct { + PlanID uuid.UUID `json:"plan_id"` + GuardrailID uuid.UUID `json:"guardrail_id"` +} + +type ListPlanGuardrailsInput struct { + PlanID uuid.UUID `json:"plan_id"` +} + +type ListPlanGuardrailsOutput struct { + Guardrails []thoughttypes.AgentGuardrail `json:"guardrails"` +} + +// --- Handlers --- + +func (t *PlansTool) Create(ctx context.Context, req *mcp.CallToolRequest, in CreatePlanInput) (*mcp.CallToolResult, CreatePlanOutput, error) { + title := strings.TrimSpace(in.Title) + if title == "" { + return nil, CreatePlanOutput{}, errRequiredField("title") + } + + project, err := resolveProject(ctx, t.store, t.sessions, req, in.Project, false) + if err != nil { + return nil, CreatePlanOutput{}, err + } + + plan := thoughttypes.Plan{ + Title: title, + Description: strings.TrimSpace(in.Description), + Status: thoughttypes.PlanStatus(defaultString(strings.TrimSpace(in.Status), string(thoughttypes.PlanStatusDraft))), + Priority: thoughttypes.PlanPriority(defaultString(strings.TrimSpace(in.Priority), string(thoughttypes.PlanPriorityMedium))), + Owner: strings.TrimSpace(in.Owner), + SupersedesPlanID: in.SupersedesPlanID, + Tags: normalizeStringSlice(in.Tags), + } + if project != nil { + plan.ProjectID = &project.ID + } + if v := strings.TrimSpace(in.DueDate); v != "" { + t, err := time.Parse(time.RFC3339, v) + if err != nil { + return nil, CreatePlanOutput{}, errInvalidField("due_date", "invalid due_date", "use RFC3339 format") + } + plan.DueDate = &t + } + + created, err := t.store.CreatePlan(ctx, plan) + if err != nil { + return nil, CreatePlanOutput{}, err + } + return nil, CreatePlanOutput{Plan: created}, nil +} + +func (t *PlansTool) Get(ctx context.Context, _ *mcp.CallToolRequest, in GetPlanInput) (*mcp.CallToolResult, GetPlanOutput, error) { + detail, err := t.store.GetPlanDetail(ctx, in.ID) + if err != nil { + return nil, GetPlanOutput{}, err + } + return nil, GetPlanOutput{Plan: detail}, nil +} + +func (t *PlansTool) Update(ctx context.Context, _ *mcp.CallToolRequest, in UpdatePlanInput) (*mcp.CallToolResult, UpdatePlanOutput, error) { + u := thoughttypes.PlanUpdate{ + ReviewedBy: in.ReviewedBy, + MarkReviewed: in.MarkReviewed, + ClearDueDate: in.ClearDueDate, + ClearCompletedAt: in.ClearCompletedAt, + ClearSupersedesPlanID: in.ClearSupersedesPlanID, + SupersedesPlanID: in.SupersedesPlanID, + Tags: in.Tags, + Owner: in.Owner, + } + if v := strings.TrimSpace(in.Title); v != "" { + u.Title = &v + } + if v := strings.TrimSpace(in.Description); v != "" { + u.Description = &v + } + if v := strings.TrimSpace(in.Status); v != "" { + u.Status = &v + } + if v := strings.TrimSpace(in.Priority); v != "" { + u.Priority = &v + } + if v := strings.TrimSpace(in.DueDate); v != "" && !in.ClearDueDate { + parsed, err := time.Parse(time.RFC3339, v) + if err != nil { + return nil, UpdatePlanOutput{}, errInvalidField("due_date", "invalid due_date", "use RFC3339 format") + } + u.DueDate = &parsed + } + if v := strings.TrimSpace(in.CompletedAt); v != "" && !in.ClearCompletedAt { + parsed, err := time.Parse(time.RFC3339, v) + if err != nil { + return nil, UpdatePlanOutput{}, errInvalidField("completed_at", "invalid completed_at", "use RFC3339 format") + } + u.CompletedAt = &parsed + } + + plan, err := t.store.UpdatePlan(ctx, in.ID, u) + if err != nil { + return nil, UpdatePlanOutput{}, err + } + return nil, UpdatePlanOutput{Plan: plan}, nil +} + +func (t *PlansTool) Delete(ctx context.Context, _ *mcp.CallToolRequest, in DeletePlanInput) (*mcp.CallToolResult, DeletePlanOutput, error) { + if err := t.store.DeletePlan(ctx, in.ID); err != nil { + return nil, DeletePlanOutput{}, err + } + return nil, DeletePlanOutput{Deleted: true}, nil +} + +func (t *PlansTool) List(ctx context.Context, req *mcp.CallToolRequest, in ListPlansInput) (*mcp.CallToolResult, ListPlansOutput, error) { + project, err := resolveProject(ctx, t.store, t.sessions, req, in.Project, false) + if err != nil { + return nil, ListPlansOutput{}, err + } + + filter := thoughttypes.PlanFilter{ + Limit: normalizeLimit(in.Limit, t.cfg), + Status: strings.TrimSpace(in.Status), + Priority: strings.TrimSpace(in.Priority), + Owner: strings.TrimSpace(in.Owner), + Tag: strings.TrimSpace(in.Tag), + Query: strings.TrimSpace(in.Query), + } + if project != nil { + filter.ProjectID = &project.ID + } + + plans, err := t.store.ListPlans(ctx, filter) + if err != nil { + return nil, ListPlansOutput{}, err + } + return nil, ListPlansOutput{Plans: plans}, nil +} + +func (t *PlansTool) AddDependency(ctx context.Context, _ *mcp.CallToolRequest, in PlanDependencyInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if in.PlanID == in.DependsOnPlanID { + return nil, PlanLinkOutput{}, errInvalidField("depends_on_plan_id", "a plan cannot depend on itself", "use a different plan id") + } + if err := t.store.AddPlanDependency(ctx, in.PlanID, in.DependsOnPlanID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) RemoveDependency(ctx context.Context, _ *mcp.CallToolRequest, in PlanDependencyInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.RemovePlanDependency(ctx, in.PlanID, in.DependsOnPlanID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) AddRelated(ctx context.Context, _ *mcp.CallToolRequest, in PlanRelatedInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if in.PlanAID == in.PlanBID { + return nil, PlanLinkOutput{}, errInvalidField("plan_b_id", "a plan cannot be related to itself", "use a different plan id") + } + if err := t.store.AddRelatedPlan(ctx, in.PlanAID, in.PlanBID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) RemoveRelated(ctx context.Context, _ *mcp.CallToolRequest, in PlanRelatedInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.RemoveRelatedPlan(ctx, in.PlanAID, in.PlanBID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) AddSkill(ctx context.Context, _ *mcp.CallToolRequest, in PlanSkillInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.AddPlanSkill(ctx, in.PlanID, in.SkillID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) RemoveSkill(ctx context.Context, _ *mcp.CallToolRequest, in PlanSkillInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.RemovePlanSkill(ctx, in.PlanID, in.SkillID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) ListSkills(ctx context.Context, _ *mcp.CallToolRequest, in ListPlanSkillsInput) (*mcp.CallToolResult, ListPlanSkillsOutput, error) { + skills, err := t.store.ListPlanSkills(ctx, in.PlanID) + if err != nil { + return nil, ListPlanSkillsOutput{}, err + } + if skills == nil { + skills = []thoughttypes.AgentSkill{} + } + return nil, ListPlanSkillsOutput{Skills: skills}, nil +} + +func (t *PlansTool) AddGuardrail(ctx context.Context, _ *mcp.CallToolRequest, in PlanGuardrailInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.AddPlanGuardrail(ctx, in.PlanID, in.GuardrailID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) RemoveGuardrail(ctx context.Context, _ *mcp.CallToolRequest, in PlanGuardrailInput) (*mcp.CallToolResult, PlanLinkOutput, error) { + if err := t.store.RemovePlanGuardrail(ctx, in.PlanID, in.GuardrailID); err != nil { + return nil, PlanLinkOutput{}, err + } + return nil, PlanLinkOutput{OK: true}, nil +} + +func (t *PlansTool) ListGuardrails(ctx context.Context, _ *mcp.CallToolRequest, in ListPlanGuardrailsInput) (*mcp.CallToolResult, ListPlanGuardrailsOutput, error) { + guardrails, err := t.store.ListPlanGuardrails(ctx, in.PlanID) + if err != nil { + return nil, ListPlanGuardrailsOutput{}, err + } + if guardrails == nil { + guardrails = []thoughttypes.AgentGuardrail{} + } + return nil, ListPlanGuardrailsOutput{Guardrails: guardrails}, nil +} diff --git a/internal/types/plan.go b/internal/types/plan.go new file mode 100644 index 0000000..78290b1 --- /dev/null +++ b/internal/types/plan.go @@ -0,0 +1,83 @@ +package types + +import ( + "time" + + "github.com/google/uuid" +) + +type PlanStatus string + +const ( + PlanStatusDraft PlanStatus = "draft" + PlanStatusActive PlanStatus = "active" + PlanStatusBlocked PlanStatus = "blocked" + PlanStatusCompleted PlanStatus = "completed" + PlanStatusCancelled PlanStatus = "cancelled" + PlanStatusSuperseded PlanStatus = "superseded" +) + +type PlanPriority string + +const ( + PlanPriorityLow PlanPriority = "low" + PlanPriorityMedium PlanPriority = "medium" + PlanPriorityHigh PlanPriority = "high" + PlanPriorityCritical PlanPriority = "critical" +) + +type Plan struct { + ID uuid.UUID `json:"id"` + Title string `json:"title"` + Description string `json:"description"` + Status PlanStatus `json:"status"` + Priority PlanPriority `json:"priority"` + ProjectID *uuid.UUID `json:"project_id,omitempty"` + Owner string `json:"owner,omitempty"` + DueDate *time.Time `json:"due_date,omitempty"` + CompletedAt *time.Time `json:"completed_at,omitempty"` + ReviewedBy string `json:"reviewed_by,omitempty"` + LastReviewedAt *time.Time `json:"last_reviewed_at,omitempty"` + SupersedesPlanID *uuid.UUID `json:"supersedes_plan_id,omitempty"` + Tags []string `json:"tags"` + CreatedAt time.Time `json:"created_at"` + UpdatedAt time.Time `json:"updated_at"` +} + +// PlanDetail enriches Plan with all related records, returned by get_plan. +type PlanDetail struct { + Plan + DependsOn []Plan `json:"depends_on"` + Blocks []Plan `json:"blocks"` + RelatedPlans []Plan `json:"related_plans"` + Skills []AgentSkill `json:"skills"` + Guardrails []AgentGuardrail `json:"guardrails"` +} + +type PlanFilter struct { + Limit int + ProjectID *uuid.UUID + Status string + Priority string + Owner string + Tag string + Query string +} + +// PlanUpdate describes a partial update; nil pointer fields are not touched. +type PlanUpdate struct { + Title *string + Description *string + Status *string + Priority *string + Owner *string // "" to clear + DueDate *time.Time // nil = no change + ClearDueDate bool // true = set NULL (takes priority over DueDate) + CompletedAt *time.Time + ClearCompletedAt bool + ReviewedBy *string // "" to clear + MarkReviewed bool // sets last_reviewed_at = now() + SupersedesPlanID *uuid.UUID + ClearSupersedesPlanID bool + Tags *[]string // nil = no change; replace when non-nil +} diff --git a/llm/memory.md b/llm/memory.md index b72c3bc..14dfae3 100644 --- a/llm/memory.md +++ b/llm/memory.md @@ -89,6 +89,32 @@ Do not abandon the project scope or retry without a project. The project simply - Do not base64-encode a file to pass it to `save_file` if an `amcs://files/{id}` URI is already available from a prior `upload_file` or HTTP upload. - When saving, choose the narrowest correct scope: project if project-specific, global if not. +## Plans + +Plans are structured, trackable work items linked to projects. Use plans for multi-step goals, workstreams, or anything that needs an owner, due date, status lifecycle, or explicit dependency tracking. + +- **Status lifecycle**: `draft` → `active` → `blocked` | `completed` | `cancelled` | `superseded` +- **Priority**: `low`, `medium` (default), `high`, `critical` +- Create plans with `create_plan` (required: `title`; optional: `description`, `status`, `priority`, `project`, `owner`, `due_date`, `supersedes_plan_id`, `tags`). +- Retrieve a full plan with `get_plan` — returns the plan plus `depends_on`, `blocks`, `related_plans`, `skills`, and `guardrails` in a single call. +- Partially update a plan with `update_plan` (only provided fields change). Use `mark_reviewed: true` to stamp `last_reviewed_at` without manually passing a timestamp. +- List and filter with `list_plans` (project/status/priority/owner/tag/query). +- Delete permanently with `delete_plan`. + +**Dependencies** (directional — "A cannot proceed until B is done"): +- `add_plan_dependency` / `remove_plan_dependency` using `plan_id` and `depends_on_plan_id`. +- `get_plan` returns `depends_on` (plans this plan waits on) and `blocks` (plans waiting on this one). + +**Related plans** (bidirectional — thematically linked, no ordering): +- `add_related_plan` / `remove_related_plan` using `plan_a_id` and `plan_b_id` (order does not matter). + +**Plan skills and guardrails** (agent behaviour scoped to a plan): +- `add_plan_skill` / `remove_plan_skill` / `list_plan_skills` +- `add_plan_guardrail` / `remove_plan_guardrail` / `list_plan_guardrails` +- Load plan skills and guardrails alongside project skills/guardrails when working within a specific plan's scope. + +**Freshness**: use `last_reviewed_at` and `reviewed_by` to track whether a plan is current. Set `mark_reviewed: true` on `update_plan` after reviewing a plan so staleness is visible in `list_plans` results. + ## Tool Annotations As you learn non-obvious behaviours, gotchas, or workflow patterns for individual tools, persist them with `annotate_tool`: @@ -109,4 +135,4 @@ Notes are returned by `describe_tools` in future sessions. Annotate whenever you ## Short Operational Form -At the start of every session, call `describe_tools` to read the full tool list and any accumulated usage notes. Use AMCS memory in project scope when the current work matches a known project; if no clear project matches, global notebook memory is allowed for non-project-specific information. At the start of every project session call `list_project_skills` and `list_project_guardrails` and apply what is returned; only create new skills or guardrails if none exist. If your MCP client does not preserve sessions across calls, pass `project` explicitly instead of relying on `set_active_project`. Store raw/durable notes with `capture_thought`, and store curated durable lessons with `add_learning`. For binary files or files larger than 10 MB, call `upload_file` with `content_path` to stage the file and get an `amcs://files/{id}` URI, then pass that URI to `save_file` as `content_uri` to link it to a thought. For small files, use `save_file` or `upload_file` with `content_base64` directly. Browse stored files with `list_files`, and load them with `load_file` only when their contents are needed. Stored files can also be read as raw binary via MCP resources at `amcs://files/{id}`. Never store project-specific memory globally when a matching project exists, and never store memory in the wrong project. If project matching is ambiguous, ask the user. If a tool returns `project_not_found`, call `create_project` with that name and retry — never drop the project scope. Whenever you discover a non-obvious tool behaviour, gotcha, or workflow pattern, record it with `annotate_tool` so future sessions benefit. +At the start of every session, call `describe_tools` to read the full tool list and any accumulated usage notes. Use AMCS memory in project scope when the current work matches a known project; if no clear project matches, global notebook memory is allowed for non-project-specific information. At the start of every project session call `list_project_skills` and `list_project_guardrails` and apply what is returned; only create new skills or guardrails if none exist. If your MCP client does not preserve sessions across calls, pass `project` explicitly instead of relying on `set_active_project`. Store raw/durable notes with `capture_thought`, store curated durable lessons with `add_learning`, and track structured multi-step goals with `create_plan`. Use `get_plan` to load a plan's full context including dependencies, related plans, and linked skills/guardrails. Stamp `last_reviewed_at` on plans you review with `update_plan mark_reviewed: true`. For binary files or files larger than 10 MB, call `upload_file` with `content_path` to stage the file and get an `amcs://files/{id}` URI, then pass that URI to `save_file` as `content_uri` to link it to a thought. For small files, use `save_file` or `upload_file` with `content_base64` directly. Browse stored files with `list_files`, and load them with `load_file` only when their contents are needed. Stored files can also be read as raw binary via MCP resources at `amcs://files/{id}`. Never store project-specific memory globally when a matching project exists, and never store memory in the wrong project. If project matching is ambiguous, ask the user. If a tool returns `project_not_found`, call `create_project` with that name and retry — never drop the project scope. Whenever you discover a non-obvious tool behaviour, gotcha, or workflow pattern, record it with `annotate_tool` so future sessions benefit. diff --git a/migrations/020_generated_schema.sql b/migrations/020_generated_schema.sql index 4e7c9e5..2d56c12 100644 --- a/migrations/020_generated_schema.sql +++ b/migrations/020_generated_schema.sql @@ -45,6 +45,34 @@ CREATE SEQUENCE IF NOT EXISTS public.identity_tool_annotations_id START 1 CACHE 1; +CREATE SEQUENCE IF NOT EXISTS public.identity_plan_dependencies_id + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + +CREATE SEQUENCE IF NOT EXISTS public.identity_plan_related_plans_id + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + +CREATE SEQUENCE IF NOT EXISTS public.identity_plan_skills_id + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + +CREATE SEQUENCE IF NOT EXISTS public.identity_plan_guardrails_id + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 1 + CACHE 1; + CREATE SEQUENCE IF NOT EXISTS public.identity_project_skills_id INCREMENT 1 MINVALUE 1 @@ -146,7 +174,7 @@ CREATE TABLE IF NOT EXISTS public.professional_contacts ( name text NOT NULL, notes text, phone text, - tags text, + tags text[] NOT NULL DEFAULT '''{}''', title text, updated_at timestamptz NOT NULL DEFAULT now() ); @@ -243,14 +271,14 @@ CREATE TABLE IF NOT EXISTS public.recipes ( created_at timestamptz NOT NULL DEFAULT now(), cuisine text, id uuid NOT NULL DEFAULT gen_random_uuid(), - ingredients jsonb NOT NULL DEFAULT '''[', - instructions jsonb NOT NULL DEFAULT '''[', + ingredients jsonb NOT NULL DEFAULT '''[]''', + instructions jsonb NOT NULL DEFAULT '''[]''', name text NOT NULL, notes text, prep_time_minutes integer, rating integer, servings integer, - tags text, + tags text[] NOT NULL DEFAULT '''{}''', updated_at timestamptz NOT NULL DEFAULT now() ); @@ -269,7 +297,7 @@ CREATE TABLE IF NOT EXISTS public.meal_plans ( CREATE TABLE IF NOT EXISTS public.shopping_lists ( created_at timestamptz NOT NULL DEFAULT now(), id uuid NOT NULL DEFAULT gen_random_uuid(), - items jsonb NOT NULL DEFAULT '''[', + items jsonb NOT NULL DEFAULT '''[]''', notes text, updated_at timestamptz NOT NULL DEFAULT now(), week_start date NOT NULL @@ -280,7 +308,7 @@ CREATE TABLE IF NOT EXISTS public.chat_histories ( channel text, created_at timestamptz NOT NULL DEFAULT now(), id uuid NOT NULL DEFAULT gen_random_uuid(), - messages jsonb NOT NULL DEFAULT '''[', + messages jsonb NOT NULL DEFAULT '''[]''', metadata jsonb NOT NULL DEFAULT '''{}''', project_id uuid, session_id text NOT NULL, @@ -317,17 +345,63 @@ CREATE TABLE IF NOT EXISTS public.learnings ( status text NOT NULL DEFAULT 'pending', summary text NOT NULL, supersedes_learning_id uuid, - tags text, + tags text[] NOT NULL DEFAULT '''{}''', updated_at timestamptz NOT NULL DEFAULT now() ); +CREATE TABLE IF NOT EXISTS public.plans ( + completed_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + description text NOT NULL DEFAULT '', + due_date timestamptz, + id uuid NOT NULL DEFAULT gen_random_uuid(), + last_reviewed_at timestamptz, + owner text, + priority text NOT NULL DEFAULT 'medium', + project_id uuid, + reviewed_by text, + status text NOT NULL DEFAULT 'draft', + supersedes_plan_id uuid, + tags text[] NOT NULL DEFAULT '''{}''', + title text NOT NULL, + updated_at timestamptz NOT NULL DEFAULT now() +); + +CREATE TABLE IF NOT EXISTS public.plan_dependencies ( + created_at timestamptz NOT NULL DEFAULT now(), + depends_on_plan_id uuid NOT NULL, + id serial NOT NULL, + plan_id uuid NOT NULL +); + +CREATE TABLE IF NOT EXISTS public.plan_related_plans ( + created_at timestamptz NOT NULL DEFAULT now(), + id serial NOT NULL, + plan_a_id uuid NOT NULL, + plan_b_id uuid NOT NULL +); + +CREATE TABLE IF NOT EXISTS public.plan_skills ( + created_at timestamptz NOT NULL DEFAULT now(), + id serial NOT NULL, + plan_id uuid NOT NULL, + skill_id uuid NOT NULL +); + +CREATE TABLE IF NOT EXISTS public.plan_guardrails ( + created_at timestamptz NOT NULL DEFAULT now(), + guardrail_id uuid NOT NULL, + id serial NOT NULL, + plan_id uuid NOT NULL +); + CREATE TABLE IF NOT EXISTS public.agent_skills ( content text NOT NULL, created_at timestamptz NOT NULL DEFAULT now(), description text NOT NULL DEFAULT '', id uuid NOT NULL DEFAULT gen_random_uuid(), name text NOT NULL, - tags text, + tags text[] NOT NULL DEFAULT '''{}''', updated_at timestamptz NOT NULL DEFAULT now() ); @@ -338,7 +412,7 @@ CREATE TABLE IF NOT EXISTS public.agent_guardrails ( id uuid NOT NULL DEFAULT gen_random_uuid(), name text NOT NULL, severity text NOT NULL DEFAULT 'medium', - tags text, + tags text[] NOT NULL DEFAULT '''{}''', updated_at timestamptz NOT NULL DEFAULT now() ); @@ -1197,7 +1271,7 @@ BEGIN AND table_name = 'professional_contacts' AND column_name = 'tags' ) THEN - ALTER TABLE public.professional_contacts ADD COLUMN tags text; + ALTER TABLE public.professional_contacts ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; END IF; END; $$; @@ -2146,7 +2220,7 @@ BEGIN AND table_name = 'recipes' AND column_name = 'ingredients' ) THEN - ALTER TABLE public.recipes ADD COLUMN ingredients jsonb NOT NULL DEFAULT '''['; + ALTER TABLE public.recipes ADD COLUMN ingredients jsonb NOT NULL DEFAULT '''[]'''; END IF; END; $$; @@ -2159,7 +2233,7 @@ BEGIN AND table_name = 'recipes' AND column_name = 'instructions' ) THEN - ALTER TABLE public.recipes ADD COLUMN instructions jsonb NOT NULL DEFAULT '''['; + ALTER TABLE public.recipes ADD COLUMN instructions jsonb NOT NULL DEFAULT '''[]'''; END IF; END; $$; @@ -2237,7 +2311,7 @@ BEGIN AND table_name = 'recipes' AND column_name = 'tags' ) THEN - ALTER TABLE public.recipes ADD COLUMN tags text; + ALTER TABLE public.recipes ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; END IF; END; $$; @@ -2406,7 +2480,7 @@ BEGIN AND table_name = 'shopping_lists' AND column_name = 'items' ) THEN - ALTER TABLE public.shopping_lists ADD COLUMN items jsonb NOT NULL DEFAULT '''['; + ALTER TABLE public.shopping_lists ADD COLUMN items jsonb NOT NULL DEFAULT '''[]'''; END IF; END; $$; @@ -2510,7 +2584,7 @@ BEGIN AND table_name = 'chat_histories' AND column_name = 'messages' ) THEN - ALTER TABLE public.chat_histories ADD COLUMN messages jsonb NOT NULL DEFAULT '''['; + ALTER TABLE public.chat_histories ADD COLUMN messages jsonb NOT NULL DEFAULT '''[]'''; END IF; END; $$; @@ -2913,7 +2987,7 @@ BEGIN AND table_name = 'learnings' AND column_name = 'tags' ) THEN - ALTER TABLE public.learnings ADD COLUMN tags text; + ALTER TABLE public.learnings ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; END IF; END; $$; @@ -2931,6 +3005,409 @@ BEGIN END; $$; +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'completed_at' + ) THEN + ALTER TABLE public.plans ADD COLUMN completed_at timestamptz; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'created_at' + ) THEN + ALTER TABLE public.plans ADD COLUMN created_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'description' + ) THEN + ALTER TABLE public.plans ADD COLUMN description text NOT NULL DEFAULT ''; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'due_date' + ) THEN + ALTER TABLE public.plans ADD COLUMN due_date timestamptz; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'id' + ) THEN + ALTER TABLE public.plans ADD COLUMN id uuid NOT NULL DEFAULT gen_random_uuid(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'last_reviewed_at' + ) THEN + ALTER TABLE public.plans ADD COLUMN last_reviewed_at timestamptz; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'owner' + ) THEN + ALTER TABLE public.plans ADD COLUMN owner text; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'priority' + ) THEN + ALTER TABLE public.plans ADD COLUMN priority text NOT NULL DEFAULT 'medium'; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'project_id' + ) THEN + ALTER TABLE public.plans ADD COLUMN project_id uuid; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'reviewed_by' + ) THEN + ALTER TABLE public.plans ADD COLUMN reviewed_by text; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'status' + ) THEN + ALTER TABLE public.plans ADD COLUMN status text NOT NULL DEFAULT 'draft'; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'supersedes_plan_id' + ) THEN + ALTER TABLE public.plans ADD COLUMN supersedes_plan_id uuid; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'tags' + ) THEN + ALTER TABLE public.plans ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'title' + ) THEN + ALTER TABLE public.plans ADD COLUMN title text NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plans' + AND column_name = 'updated_at' + ) THEN + ALTER TABLE public.plans ADD COLUMN updated_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND column_name = 'created_at' + ) THEN + ALTER TABLE public.plan_dependencies ADD COLUMN created_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND column_name = 'depends_on_plan_id' + ) THEN + ALTER TABLE public.plan_dependencies ADD COLUMN depends_on_plan_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND column_name = 'id' + ) THEN + ALTER TABLE public.plan_dependencies ADD COLUMN id serial NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND column_name = 'plan_id' + ) THEN + ALTER TABLE public.plan_dependencies ADD COLUMN plan_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND column_name = 'created_at' + ) THEN + ALTER TABLE public.plan_related_plans ADD COLUMN created_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND column_name = 'id' + ) THEN + ALTER TABLE public.plan_related_plans ADD COLUMN id serial NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND column_name = 'plan_a_id' + ) THEN + ALTER TABLE public.plan_related_plans ADD COLUMN plan_a_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND column_name = 'plan_b_id' + ) THEN + ALTER TABLE public.plan_related_plans ADD COLUMN plan_b_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND column_name = 'created_at' + ) THEN + ALTER TABLE public.plan_skills ADD COLUMN created_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND column_name = 'id' + ) THEN + ALTER TABLE public.plan_skills ADD COLUMN id serial NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND column_name = 'plan_id' + ) THEN + ALTER TABLE public.plan_skills ADD COLUMN plan_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND column_name = 'skill_id' + ) THEN + ALTER TABLE public.plan_skills ADD COLUMN skill_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND column_name = 'created_at' + ) THEN + ALTER TABLE public.plan_guardrails ADD COLUMN created_at timestamptz NOT NULL DEFAULT now(); + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND column_name = 'guardrail_id' + ) THEN + ALTER TABLE public.plan_guardrails ADD COLUMN guardrail_id uuid NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND column_name = 'id' + ) THEN + ALTER TABLE public.plan_guardrails ADD COLUMN id serial NOT NULL; + END IF; +END; +$$; + +DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND column_name = 'plan_id' + ) THEN + ALTER TABLE public.plan_guardrails ADD COLUMN plan_id uuid NOT NULL; + END IF; +END; +$$; + DO $$ BEGIN IF NOT EXISTS ( @@ -3004,7 +3481,7 @@ BEGIN AND table_name = 'agent_skills' AND column_name = 'tags' ) THEN - ALTER TABLE public.agent_skills ADD COLUMN tags text; + ALTER TABLE public.agent_skills ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; END IF; END; $$; @@ -3108,7 +3585,7 @@ BEGIN AND table_name = 'agent_guardrails' AND column_name = 'tags' ) THEN - ALTER TABLE public.agent_guardrails ADD COLUMN tags text; + ALTER TABLE public.agent_guardrails ADD COLUMN tags text[] NOT NULL DEFAULT '''{}'''; END IF; END; $$; @@ -3244,7 +3721,7 @@ BEGIN AND constraint_name IN ('family_members_pkey', 'public_family_members_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.family_members DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.family_members DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3272,7 +3749,7 @@ BEGIN AND constraint_name IN ('activities_pkey', 'public_activities_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.activities DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.activities DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3300,7 +3777,7 @@ BEGIN AND constraint_name IN ('important_dates_pkey', 'public_important_dates_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.important_dates DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.important_dates DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3328,7 +3805,7 @@ BEGIN AND constraint_name IN ('thoughts_pkey', 'public_thoughts_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.thoughts DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.thoughts DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3356,7 +3833,7 @@ BEGIN AND constraint_name IN ('projects_pkey', 'public_projects_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.projects DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.projects DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3384,7 +3861,7 @@ BEGIN AND constraint_name IN ('thought_links_pkey', 'public_thought_links_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.thought_links DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.thought_links DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3412,7 +3889,7 @@ BEGIN AND constraint_name IN ('embeddings_pkey', 'public_embeddings_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.embeddings DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.embeddings DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3440,7 +3917,7 @@ BEGIN AND constraint_name IN ('professional_contacts_pkey', 'public_professional_contacts_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.professional_contacts DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.professional_contacts DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3468,7 +3945,7 @@ BEGIN AND constraint_name IN ('contact_interactions_pkey', 'public_contact_interactions_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.contact_interactions DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.contact_interactions DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3496,7 +3973,7 @@ BEGIN AND constraint_name IN ('opportunities_pkey', 'public_opportunities_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.opportunities DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.opportunities DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3524,7 +4001,7 @@ BEGIN AND constraint_name IN ('stored_files_pkey', 'public_stored_files_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.stored_files DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.stored_files DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3552,7 +4029,7 @@ BEGIN AND constraint_name IN ('household_items_pkey', 'public_household_items_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.household_items DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.household_items DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3580,7 +4057,7 @@ BEGIN AND constraint_name IN ('household_vendors_pkey', 'public_household_vendors_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.household_vendors DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.household_vendors DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3608,7 +4085,7 @@ BEGIN AND constraint_name IN ('maintenance_tasks_pkey', 'public_maintenance_tasks_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.maintenance_tasks DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.maintenance_tasks DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3636,7 +4113,7 @@ BEGIN AND constraint_name IN ('maintenance_logs_pkey', 'public_maintenance_logs_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.maintenance_logs DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.maintenance_logs DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3664,7 +4141,7 @@ BEGIN AND constraint_name IN ('recipes_pkey', 'public_recipes_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.recipes DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.recipes DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3692,7 +4169,7 @@ BEGIN AND constraint_name IN ('meal_plans_pkey', 'public_meal_plans_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.meal_plans DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.meal_plans DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3720,7 +4197,7 @@ BEGIN AND constraint_name IN ('shopping_lists_pkey', 'public_shopping_lists_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.shopping_lists DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.shopping_lists DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3748,7 +4225,7 @@ BEGIN AND constraint_name IN ('chat_histories_pkey', 'public_chat_histories_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.chat_histories DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.chat_histories DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3776,7 +4253,7 @@ BEGIN AND constraint_name IN ('tool_annotations_pkey', 'public_tool_annotations_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.tool_annotations DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.tool_annotations DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3804,7 +4281,7 @@ BEGIN AND constraint_name IN ('learnings_pkey', 'public_learnings_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.learnings DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.learnings DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3819,6 +4296,146 @@ BEGIN END; $$; +DO $$ +DECLARE + auto_pk_name text; +BEGIN + -- Drop auto-generated primary key if it exists + SELECT constraint_name INTO auto_pk_name + FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plans' + AND constraint_type = 'PRIMARY KEY' + AND constraint_name IN ('plans_pkey', 'public_plans_pkey'); + + IF auto_pk_name IS NOT NULL THEN + EXECUTE 'ALTER TABLE public.plans DROP CONSTRAINT ' || quote_ident(auto_pk_name); + END IF; + + -- Add named primary key if it doesn't exist + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plans' + AND constraint_name = 'pk_public_plans' + ) THEN + ALTER TABLE public.plans ADD CONSTRAINT pk_public_plans PRIMARY KEY (id); + END IF; +END; +$$; + +DO $$ +DECLARE + auto_pk_name text; +BEGIN + -- Drop auto-generated primary key if it exists + SELECT constraint_name INTO auto_pk_name + FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND constraint_type = 'PRIMARY KEY' + AND constraint_name IN ('plan_dependencies_pkey', 'public_plan_dependencies_pkey'); + + IF auto_pk_name IS NOT NULL THEN + EXECUTE 'ALTER TABLE public.plan_dependencies DROP CONSTRAINT ' || quote_ident(auto_pk_name); + END IF; + + -- Add named primary key if it doesn't exist + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND constraint_name = 'pk_public_plan_dependencies' + ) THEN + ALTER TABLE public.plan_dependencies ADD CONSTRAINT pk_public_plan_dependencies PRIMARY KEY (id); + END IF; +END; +$$; + +DO $$ +DECLARE + auto_pk_name text; +BEGIN + -- Drop auto-generated primary key if it exists + SELECT constraint_name INTO auto_pk_name + FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND constraint_type = 'PRIMARY KEY' + AND constraint_name IN ('plan_related_plans_pkey', 'public_plan_related_plans_pkey'); + + IF auto_pk_name IS NOT NULL THEN + EXECUTE 'ALTER TABLE public.plan_related_plans DROP CONSTRAINT ' || quote_ident(auto_pk_name); + END IF; + + -- Add named primary key if it doesn't exist + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND constraint_name = 'pk_public_plan_related_plans' + ) THEN + ALTER TABLE public.plan_related_plans ADD CONSTRAINT pk_public_plan_related_plans PRIMARY KEY (id); + END IF; +END; +$$; + +DO $$ +DECLARE + auto_pk_name text; +BEGIN + -- Drop auto-generated primary key if it exists + SELECT constraint_name INTO auto_pk_name + FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND constraint_type = 'PRIMARY KEY' + AND constraint_name IN ('plan_skills_pkey', 'public_plan_skills_pkey'); + + IF auto_pk_name IS NOT NULL THEN + EXECUTE 'ALTER TABLE public.plan_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name); + END IF; + + -- Add named primary key if it doesn't exist + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND constraint_name = 'pk_public_plan_skills' + ) THEN + ALTER TABLE public.plan_skills ADD CONSTRAINT pk_public_plan_skills PRIMARY KEY (id); + END IF; +END; +$$; + +DO $$ +DECLARE + auto_pk_name text; +BEGIN + -- Drop auto-generated primary key if it exists + SELECT constraint_name INTO auto_pk_name + FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND constraint_type = 'PRIMARY KEY' + AND constraint_name IN ('plan_guardrails_pkey', 'public_plan_guardrails_pkey'); + + IF auto_pk_name IS NOT NULL THEN + EXECUTE 'ALTER TABLE public.plan_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name); + END IF; + + -- Add named primary key if it doesn't exist + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND constraint_name = 'pk_public_plan_guardrails' + ) THEN + ALTER TABLE public.plan_guardrails ADD CONSTRAINT pk_public_plan_guardrails PRIMARY KEY (id); + END IF; +END; +$$; + DO $$ DECLARE auto_pk_name text; @@ -3832,7 +4449,7 @@ BEGIN AND constraint_name IN ('agent_skills_pkey', 'public_agent_skills_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.agent_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.agent_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3860,7 +4477,7 @@ BEGIN AND constraint_name IN ('agent_guardrails_pkey', 'public_agent_guardrails_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.agent_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.agent_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3888,7 +4505,7 @@ BEGIN AND constraint_name IN ('project_skills_pkey', 'public_project_skills_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.project_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.project_skills DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3916,7 +4533,7 @@ BEGIN AND constraint_name IN ('project_guardrails_pkey', 'public_project_guardrails_pkey'); IF auto_pk_name IS NOT NULL THEN - EXECUTE 'ALTER TABLE public.project_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name) || ' cascade'; + EXECUTE 'ALTER TABLE public.project_guardrails DROP CONSTRAINT ' || quote_ident(auto_pk_name); END IF; -- Add named primary key if it doesn't exist @@ -3956,6 +4573,24 @@ CREATE INDEX IF NOT EXISTS idx_learnings_summary CREATE INDEX IF NOT EXISTS idx_learnings_tags ON public.learnings USING gin (tags gin_trgm_ops); +CREATE INDEX IF NOT EXISTS idx_plans_tags + ON public.plans USING gin (tags gin_trgm_ops); + +CREATE INDEX IF NOT EXISTS idx_plans_title + ON public.plans USING gin (title gin_trgm_ops); + +CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_dependencies_plan_id_depends_on_plan_id + ON public.plan_dependencies USING btree (plan_id, depends_on_plan_id); + +CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_related_plans_plan_a_id_plan_b_id + ON public.plan_related_plans USING btree (plan_a_id, plan_b_id); + +CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_skills_plan_id_skill_id + ON public.plan_skills USING btree (plan_id, skill_id); + +CREATE UNIQUE INDEX IF NOT EXISTS uidx_plan_guardrails_plan_id_guardrail_id + ON public.plan_guardrails USING btree (plan_id, guardrail_id); + CREATE INDEX IF NOT EXISTS idx_project_skills_project_id_skill_id ON public.project_skills USING btree (project_id, skill_id); @@ -4371,6 +5006,166 @@ BEGIN END IF; END; $$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plans' + AND constraint_name = 'fk_plans_project_id' + ) THEN + ALTER TABLE public.plans + ADD CONSTRAINT fk_plans_project_id + FOREIGN KEY (project_id) + REFERENCES public.projects (guid) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plans' + AND constraint_name = 'fk_plans_supersedes_plan_id' + ) THEN + ALTER TABLE public.plans + ADD CONSTRAINT fk_plans_supersedes_plan_id + FOREIGN KEY (supersedes_plan_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND constraint_name = 'fk_plan_dependencies_depends_on_plan_id' + ) THEN + ALTER TABLE public.plan_dependencies + ADD CONSTRAINT fk_plan_dependencies_depends_on_plan_id + FOREIGN KEY (depends_on_plan_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_dependencies' + AND constraint_name = 'fk_plan_dependencies_plan_id' + ) THEN + ALTER TABLE public.plan_dependencies + ADD CONSTRAINT fk_plan_dependencies_plan_id + FOREIGN KEY (plan_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND constraint_name = 'fk_plan_related_plans_plan_a_id' + ) THEN + ALTER TABLE public.plan_related_plans + ADD CONSTRAINT fk_plan_related_plans_plan_a_id + FOREIGN KEY (plan_a_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_related_plans' + AND constraint_name = 'fk_plan_related_plans_plan_b_id' + ) THEN + ALTER TABLE public.plan_related_plans + ADD CONSTRAINT fk_plan_related_plans_plan_b_id + FOREIGN KEY (plan_b_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND constraint_name = 'fk_plan_skills_plan_id' + ) THEN + ALTER TABLE public.plan_skills + ADD CONSTRAINT fk_plan_skills_plan_id + FOREIGN KEY (plan_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_skills' + AND constraint_name = 'fk_plan_skills_skill_id' + ) THEN + ALTER TABLE public.plan_skills + ADD CONSTRAINT fk_plan_skills_skill_id + FOREIGN KEY (skill_id) + REFERENCES public.agent_skills (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND constraint_name = 'fk_plan_guardrails_guardrail_id' + ) THEN + ALTER TABLE public.plan_guardrails + ADD CONSTRAINT fk_plan_guardrails_guardrail_id + FOREIGN KEY (guardrail_id) + REFERENCES public.agent_guardrails (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ +BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.table_constraints + WHERE table_schema = 'public' + AND table_name = 'plan_guardrails' + AND constraint_name = 'fk_plan_guardrails_plan_id' + ) THEN + ALTER TABLE public.plan_guardrails + ADD CONSTRAINT fk_plan_guardrails_plan_id + FOREIGN KEY (plan_id) + REFERENCES public.plans (id) + ON DELETE NO ACTION + ON UPDATE NO ACTION; + END IF; +END; +$$;DO $$ BEGIN IF NOT EXISTS ( SELECT 1 FROM information_schema.table_constraints @@ -4550,6 +5345,82 @@ BEGIN END; $$; DO $$ +DECLARE + m_cnt bigint; +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_class c + INNER JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = 'identity_plan_dependencies_id' + AND n.nspname = 'public' + AND c.relkind = 'S' + ) THEN + SELECT COALESCE(MAX(id), 0) + 1 + FROM public.plan_dependencies + INTO m_cnt; + + PERFORM setval('public.identity_plan_dependencies_id'::regclass, m_cnt); + END IF; +END; +$$; +DO $$ +DECLARE + m_cnt bigint; +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_class c + INNER JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = 'identity_plan_related_plans_id' + AND n.nspname = 'public' + AND c.relkind = 'S' + ) THEN + SELECT COALESCE(MAX(id), 0) + 1 + FROM public.plan_related_plans + INTO m_cnt; + + PERFORM setval('public.identity_plan_related_plans_id'::regclass, m_cnt); + END IF; +END; +$$; +DO $$ +DECLARE + m_cnt bigint; +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_class c + INNER JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = 'identity_plan_skills_id' + AND n.nspname = 'public' + AND c.relkind = 'S' + ) THEN + SELECT COALESCE(MAX(id), 0) + 1 + FROM public.plan_skills + INTO m_cnt; + + PERFORM setval('public.identity_plan_skills_id'::regclass, m_cnt); + END IF; +END; +$$; +DO $$ +DECLARE + m_cnt bigint; +BEGIN + IF EXISTS ( + SELECT 1 FROM pg_class c + INNER JOIN pg_namespace n ON n.oid = c.relnamespace + WHERE c.relname = 'identity_plan_guardrails_id' + AND n.nspname = 'public' + AND c.relkind = 'S' + ) THEN + SELECT COALESCE(MAX(id), 0) + 1 + FROM public.plan_guardrails + INTO m_cnt; + + PERFORM setval('public.identity_plan_guardrails_id'::regclass, m_cnt); + END IF; +END; +$$; +DO $$ DECLARE m_cnt bigint; BEGIN @@ -4607,6 +5478,11 @@ $$; + + + + + diff --git a/schema/plans.dbml b/schema/plans.dbml new file mode 100644 index 0000000..f886b82 --- /dev/null +++ b/schema/plans.dbml @@ -0,0 +1,92 @@ +Table plans { + id uuid [pk, default: `gen_random_uuid()`] + title text [not null] + description text [not null, default: ''] + status text [not null, default: 'draft'] // draft, active, blocked, completed, cancelled, superseded + priority text [not null, default: 'medium'] // low, medium, high, critical + project_id uuid [ref: > projects.guid] + owner text + due_date timestamptz + completed_at timestamptz + reviewed_by text + last_reviewed_at timestamptz + supersedes_plan_id uuid [ref: > plans.id] + tags "text[]" [not null, default: `'{}'`] + created_at timestamptz [not null, default: `now()`] + updated_at timestamptz [not null, default: `now()`] + + indexes { + project_id + status + priority + owner + due_date + last_reviewed_at + tags [type: gin] + title [type: gin] + } +} + +// Directional: plan_id cannot proceed until depends_on_plan_id is complete +Table plan_dependencies { + id serial [pk] + plan_id uuid [not null, ref: > plans.id] + depends_on_plan_id uuid [not null, ref: > plans.id] + created_at timestamptz [not null, default: `now()`] + + indexes { + (plan_id, depends_on_plan_id) [unique] + plan_id + depends_on_plan_id + } +} + +// Bidirectional: store with plan_a_id < plan_b_id to avoid duplicates +Table plan_related_plans { + id serial [pk] + plan_a_id uuid [not null, ref: > plans.id] + plan_b_id uuid [not null, ref: > plans.id] + created_at timestamptz [not null, default: `now()`] + + indexes { + (plan_a_id, plan_b_id) [unique] + plan_a_id + plan_b_id + } +} + +Table plan_skills { + id serial [pk] + plan_id uuid [not null, ref: > plans.id] + skill_id uuid [not null, ref: > agent_skills.id] + created_at timestamptz [not null, default: `now()`] + + indexes { + (plan_id, skill_id) [unique] + plan_id + } +} + +Table plan_guardrails { + id serial [pk] + plan_id uuid [not null, ref: > plans.id] + guardrail_id uuid [not null, ref: > agent_guardrails.id] + created_at timestamptz [not null, default: `now()`] + + indexes { + (plan_id, guardrail_id) [unique] + plan_id + } +} + +// Cross-file refs (for relspecgo merge) +Ref: plans.project_id > projects.guid [delete: set null] +Ref: plans.supersedes_plan_id > plans.id [delete: set null] +Ref: plan_dependencies.plan_id > plans.id [delete: cascade] +Ref: plan_dependencies.depends_on_plan_id > plans.id [delete: cascade] +Ref: plan_related_plans.plan_a_id > plans.id [delete: cascade] +Ref: plan_related_plans.plan_b_id > plans.id [delete: cascade] +Ref: plan_skills.plan_id > plans.id [delete: cascade] +Ref: plan_skills.skill_id > agent_skills.id [delete: cascade] +Ref: plan_guardrails.plan_id > plans.id [delete: cascade] +Ref: plan_guardrails.guardrail_id > agent_guardrails.id [delete: cascade] diff --git a/ui/src/api.ts b/ui/src/api.ts index 34d9052..521d32a 100644 --- a/ui/src/api.ts +++ b/ui/src/api.ts @@ -313,6 +313,21 @@ export const api = { dry_run: input?.dry_run ?? false }) }, + plans: { + list: async (params?: { status?: string; priority?: string; project_id?: string; limit?: number }) => { + const filters: ResolveSpecFilter[] = []; + if (params?.status) filters.push({ column: 'status', operator: 'eq', value: params.status }); + if (params?.priority) filters.push({ column: 'priority', operator: 'eq', value: params.priority }); + if (params?.project_id) filters.push({ column: 'project_id', operator: 'eq', value: params.project_id }); + + const rows = await rsReadMany & { tags?: unknown }>('plans', { + filters, + limit: params?.limit ?? 500, + sort: [{ column: 'updated_at', direction: 'desc' }] + }); + return rows.map((row) => ({ ...row, tags: normalizeTags(row.tags) })); + } + }, stats: async () => { type StatsThoughtRow = { metadata?: { diff --git a/ui/src/components/plans/PlansPage.svelte b/ui/src/components/plans/PlansPage.svelte new file mode 100644 index 0000000..6bfd91a --- /dev/null +++ b/ui/src/components/plans/PlansPage.svelte @@ -0,0 +1,197 @@ + + +
+
+
+

Plans

+

+ {#if gridTotal === null} + Server-backed grid + {:else} + {gridTotal} plan{gridTotal !== 1 ? "s" : ""} + {/if} +

+
+
+ +
+
+ +
+ + +
+
diff --git a/ui/src/components/shell/AdminShell.svelte b/ui/src/components/shell/AdminShell.svelte index b59e725..6f9efb0 100644 --- a/ui/src/components/shell/AdminShell.svelte +++ b/ui/src/components/shell/AdminShell.svelte @@ -3,6 +3,7 @@ import FilesPage from '../files/FilesPage.svelte'; import GuardrailsPage from '../guardrails/GuardrailsPage.svelte'; import LearningsPage from '../learnings/LearningsPage.svelte'; + import PlansPage from '../plans/PlansPage.svelte'; import MaintenancePage from '../maintenance/MaintenancePage.svelte'; import DashboardPage from '../dashboard/DashboardPage.svelte'; import ProjectsPage from '../projects/ProjectsPage.svelte'; @@ -41,6 +42,8 @@ {:else if currentPage === 'learnings'} + {:else if currentPage === 'plans'} + {:else if currentPage === 'skills'} {:else if currentPage === 'guardrails'} diff --git a/ui/src/components/shell/AppSidebar.svelte b/ui/src/components/shell/AppSidebar.svelte index 0c7f643..669b387 100644 --- a/ui/src/components/shell/AppSidebar.svelte +++ b/ui/src/components/shell/AppSidebar.svelte @@ -16,6 +16,7 @@ { id: 'projects', label: 'Projects', description: 'Browse and manage projects.' }, { id: 'thoughts', label: 'Thoughts', description: 'Search and inspect thoughts.' }, { id: 'learnings', label: 'Learnings', description: 'Curated insights and outcomes.' }, + { id: 'plans', label: 'Plans', description: 'Structured plans and workstreams.' }, { id: 'skills', label: 'Skills', description: 'Agent skill registry.' }, { id: 'guardrails', label: 'Guardrails', description: 'Agent guardrail registry.' }, { id: 'files', label: 'Files', description: 'Stored file inventory.' }, diff --git a/ui/src/types.ts b/ui/src/types.ts index 89bdb72..2539b5f 100644 --- a/ui/src/types.ts +++ b/ui/src/types.ts @@ -56,7 +56,7 @@ export type NavItem = { disabled?: boolean; }; -export type ShellPage = 'dashboard' | 'projects' | 'thoughts' | 'learnings' | 'skills' | 'guardrails' | 'files' | 'maintenance'; +export type ShellPage = 'dashboard' | 'projects' | 'thoughts' | 'learnings' | 'plans' | 'skills' | 'guardrails' | 'files' | 'maintenance'; export type Project = { id: string; @@ -181,6 +181,24 @@ export type Learning = { updated_at: string; }; +export type Plan = { + id: string; + title: string; + description: string; + status: 'draft' | 'active' | 'blocked' | 'completed' | 'cancelled' | 'superseded'; + priority: 'low' | 'medium' | 'high' | 'critical'; + project_id?: string; + owner?: string; + due_date?: string; + completed_at?: string; + reviewed_by?: string; + last_reviewed_at?: string; + supersedes_plan_id?: string; + tags: string[]; + created_at: string; + updated_at: string; +}; + export type MaintenanceTask = { id: string; name: string; diff --git a/ui/tsconfig.tsbuildinfo b/ui/tsconfig.tsbuildinfo index a9e5760..5a99f10 100644 --- a/ui/tsconfig.tsbuildinfo +++ b/ui/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.iterator.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/typescript.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/lib.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/parser-options.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/ts-estree.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/index.d.ts","./node_modules/.pnpm/esrap@2.2.4/node_modules/esrap/types/index.d.ts","./node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts","./node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","./node_modules/.pnpm/locate-character@3.0.0/node_modules/locate-character/types/index.d.ts","./node_modules/.pnpm/svelte@5.55.1/node_modules/svelte/types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Button.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/ErrorBoundary.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/ErrorManager.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/BetterMenu.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/MenuRenderer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/store.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/ButtonCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/DateTimeCtrl.utils.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/DateTimeCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/IconButtonCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/InlineWrapper.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/NativeSelectCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/NumberInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/PasswordInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/SwitchCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/TextAreaCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/TextInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/Former.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerButtonArea.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerDrawer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerModal.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/formerState.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerResolveSpecAPI.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerRestHeadSpecAPI.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/index.d.ts","./node_modules/.pnpm/@warkypublic+resolvespec-js@1.0.1/node_modules/@warkypublic/resolvespec-js/dist/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/Boxer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerTarget.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerBaseAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/store.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Types/generic_grid.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/components/Gridler.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/components/GridlerFull.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/adapters/GridlerResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/adapters/GridlerRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/scrolling.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/selection.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/helpers.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/cellCache.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/TextRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/NumberRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/MarkdownRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/ImageRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/UriRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/BubbleRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/DrilldownRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/CurrencyRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/PercentageRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/DatetimeRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/shared.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-menu@2.5.1/node_modules/@svar-ui/svelte-menu/types/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-toolbar@2.5.1/node_modules/@svar-ui/svelte-toolbar/types/index.d.ts","./node_modules/.pnpm/@svar-ui+lib-state@1.9.6/node_modules/@svar-ui/lib-state/dist/index.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/DataStore.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/types.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/export/index.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/hotkeys.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/scroll.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/editors.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/package.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/assignChecks.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/toolbarButtons.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/menuOptions.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/actionHandlers.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/filters.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/print.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-grid@2.6.2/node_modules/@svar-ui/svelte-grid/types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/SvarkGrid.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/adapters/SvarkResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/adapters/SvarkRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/SvarkGenericColumnsAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/svarGridMapping.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/contextMenu.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/utils/PropsWithChildren.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Portal/Portal.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Portal/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/OverlayStack/overlayStack.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/OverlayStack/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.i18n.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStoreProvider.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStoreContext.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/Screenshot.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/Screenshot.util.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/VTree.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/VTreeResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/ContentEditor.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/actions/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/stores/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/utils/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.37_highlight.js@11.8.0_svelte@5.55.1_unified@11.0.5/node_modules/@warkypublic/svelix/dist/index.d.ts","./src/shellState.ts","./src/types.ts","./src/api.ts","./src/main.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/web-globals/streams.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@24.12.2/node_modules/@types/node/index.d.ts","./node_modules/.pnpm/rollup@4.60.1/node_modules/rollup/dist/rollup.d.ts","./node_modules/.pnpm/rollup@4.60.1/node_modules/rollup/dist/parseAst.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/hmrPayload.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/customEvent.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/hot.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/dist/node/module-runner.d.ts","./node_modules/.pnpm/esbuild@0.25.12/node_modules/esbuild/lib/main.d.ts","./node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/previous-map.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/input.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/declaration.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/root.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/warning.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/processor.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/result.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/document.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/rule.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/node.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/comment.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/container.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/at-rule.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/list.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/postcss.d.ts","./node_modules/.pnpm/postcss@8.5.8/node_modules/postcss/lib/postcss.d.mts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/ast.d.ts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/targets.d.ts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/index.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/internal/lightningcssOptions.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/importGlob.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/types/metadata.d.ts","./node_modules/.pnpm/vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0/node_modules/vite/dist/node/index.d.ts","./node_modules/.pnpm/@sveltejs+vite-plugin-svelte-inspector@4.0.1_@sveltejs+vite-plugin-svelte@5.1.1_svelte@_97e1c21032c44205c0833644a8b1b73d/node_modules/@sveltejs/vite-plugin-svelte-inspector/types/index.d.ts","./node_modules/.pnpm/@sveltejs+vite-plugin-svelte@5.1.1_svelte@5.55.1_vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0_/node_modules/@sveltejs/vite-plugin-svelte/types/index.d.ts","./node_modules/.pnpm/@tailwindcss+vite@4.2.2_vite@6.4.1_@types+node@24.12.2_jiti@2.6.1_lightningcss@1.32.0_/node_modules/@tailwindcss/vite/dist/index.d.mts","./vite.config.ts"],"fileIdsList":[[160,162,217,271,288,289],[162,217,271,288,289],[160,217,271,288,289],[217,271,288,289],[161,162,163,164,165,166,167,168,169,170,171,172,173,217,271,288,289],[160,161,217,271,288,289],[92,158,159,174,217,271,288,289],[92,217,271,288,289],[217,271,288,289,357],[92,217,271,288,289,357,358],[217,268,269,271,288,289],[217,270,271,288,289],[271,288,289],[217,271,276,288,289,306],[217,271,272,277,282,288,289,291,303,314],[217,271,272,273,282,288,289,291],[217,271,274,288,289,315],[217,271,275,276,283,288,289,292],[217,271,276,288,289,303,311],[217,271,277,279,282,288,289,291],[217,270,271,278,288,289],[217,271,279,280,288,289],[217,271,281,282,288,289],[217,270,271,282,288,289],[217,271,282,283,284,288,289,303,314],[217,271,282,283,284,288,289,298,303,306],[217,263,271,279,282,285,288,289,291,303,314],[217,271,282,283,285,286,288,289,291,303,311,314],[217,271,285,287,288,289,303,311,314],[215,216,217,218,219,220,221,222,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320],[217,271,282,288,289],[217,271,288,289,290,314],[217,271,279,282,288,289,291,303],[217,271,288,289,292],[217,271,288,289,293],[217,270,271,288,289,294],[217,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320],[217,271,288,289,296],[217,271,288,289,297],[217,271,282,288,289,298,299],[217,271,288,289,298,300,315,317],[217,271,283,288,289],[217,271,282,288,289,303,304,306],[217,271,288,289,305,306],[217,271,288,289,303,304],[217,271,288,289,306],[217,271,288,289,307],[217,268,271,288,289,303,308,314],[217,271,282,288,289,309,310],[217,271,288,289,309,310],[217,271,276,288,289,291,303,311],[217,271,288,289,312],[217,271,288,289,291,313],[217,271,285,288,289,297,314],[217,271,276,288,289,315],[217,271,288,289,303,316],[217,271,288,289,290,317],[217,271,288,289,318],[217,271,276,288,289],[217,263,271,288,289],[217,271,288,289,319],[217,263,271,282,284,288,289,294,303,306,314,316,317,319],[217,271,288,289,303,320],[82,217,271,288,289],[83,84,85,86,217,271,288,289],[82,84,217,271,288,289],[83,86,217,271,288,289],[92,98,217,271,288,289],[98,99,100,101,217,271,288,289],[92,127,217,271,288,289],[126,127,217,271,288,289],[126,127,130,217,271,288,289],[127,128,129,130,131,132,133,217,271,288,289],[92,126,217,271,288,289],[92,202,217,271,288,289],[202,203,217,271,288,289],[95,217,271,288,289],[94,95,96,217,271,288,289],[92,117,217,271,288,289],[117,217,271,288,289],[117,118,119,120,121,122,123,124,217,271,288,289],[92,104,105,217,271,288,289],[105,106,217,271,288,289],[92,104,217,271,288,289],[103,104,105,107,108,109,110,111,112,113,114,115,217,271,288,289],[92,189,217,271,288,289],[189,217,271,288,289],[189,190,191,192,193,217,271,288,289],[126,136,217,271,288,289],[92,136,217,271,288,289],[135,136,137,138,139,140,141,142,143,144,156,217,271,288,289],[136,217,271,288,289],[136,145,146,147,148,149,150,151,152,153,154,155,217,271,288,289],[135,217,271,288,289],[187,217,271,288,289],[92,184,217,271,288,289],[185,217,271,288,289],[195,196,217,271,288,289],[92,135,176,217,271,288,289],[126,176,217,271,288,289],[135,176,177,178,179,180,181,182,217,271,288,289],[92,126,175,217,271,288,289],[135,176,217,271,288,289],[92,198,217,271,288,289],[126,198,217,271,288,289],[198,199,200,217,271,288,289],[93,97,102,116,125,134,157,183,186,188,194,197,201,204,205,217,271,288,289],[206,207,208,209,217,271,288,289],[184,217,271,288,289],[87,88,217,271,288,289],[217,271,288,289,350,351],[217,271,288,289,345],[217,271,288,289,343,345],[217,271,288,289,334,342,343,344,346,348],[217,271,288,289,332],[217,271,288,289,335,340,345,348],[217,271,288,289,331,348],[217,271,288,289,335,336,339,340,341,348],[217,271,288,289,335,336,337,339,340,348],[217,271,288,289,332,333,334,335,336,340,341,342,344,345,346,348],[217,271,288,289,348],[217,271,288,289,330,332,333,334,335,336,337,339,340,341,342,343,344,345,346,347],[217,271,288,289,330,348],[217,271,288,289,335,337,338,340,341,348],[217,271,288,289,339,348],[217,271,288,289,340,341,345,348],[217,271,288,289,333,343],[217,271,288,289,322,356,357],[90,217,271,288,289,322],[88,89,90,91,92,217,271,288,289,322],[217,229,232,235,236,271,288,289,314],[217,232,271,288,289,303,314],[217,232,236,271,288,289,314],[217,271,288,289,303],[217,226,271,288,289],[217,230,271,288,289],[217,228,229,232,271,288,289,314],[217,271,288,289,291,311],[217,271,288,289,321],[217,226,271,288,289,321],[217,228,232,271,288,289,291,314],[217,223,224,225,227,231,271,282,288,289,303,314],[217,232,240,248,271,288,289],[217,224,230,271,288,289],[217,232,257,258,271,288,289],[217,224,227,232,271,288,289,306,314,321],[217,232,271,288,289],[217,228,232,271,288,289,314],[217,223,271,288,289],[217,226,227,228,230,231,232,233,234,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,258,259,260,261,262,271,288,289],[217,232,250,253,271,279,288,289],[217,232,240,241,242,271,288,289],[217,230,232,241,243,271,288,289],[217,231,271,288,289],[217,224,226,232,271,288,289],[217,232,236,241,243,271,288,289],[217,236,271,288,289],[217,230,232,235,271,288,289,314],[217,224,228,232,240,271,288,289],[217,232,250,271,288,289],[217,243,271,288,289],[217,226,232,257,271,288,289,306,319,321],[217,271,282,283,285,286,287,288,289,291,303,311,314,320,321,322,323,324,325,327,328,329,349,353,354,355,356,357],[217,271,288,289,324,325,326,327],[217,271,288,289,324],[217,271,288,289,325],[217,271,288,289,352],[217,271,288,289,322,357],[211,212,217,271,288,289],[210,217,271,288,289],[217,271,288,289,357,359,360]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"2ab096661c711e4a81cc464fa1e6feb929a54f5340b46b0a07ac6bbf857471f0","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"60037901da1a425516449b9a20073aa03386cce92f7a1fd902d7602be3a7c2e9","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"22adec94ef7047a6c9d1af3cb96be87a335908bf9ef386ae9fd50eeb37f44c47","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"73f78680d4c08509933daf80947902f6ff41b6230f94dd002ae372620adb0f60","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5239f5c01bcfa9cd32f37c496cf19c61d69d37e48be9de612b541aac915805b","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"e134052a6b1ded61693b4037f615dc72f14e2881e79c1ddbff6c514c8a516b05","impliedFormat":1},{"version":"33a1caf57a6f7318c7ce2c8a8a35137bd7c064d140f324e8f47b94cd129305b5","impliedFormat":1},{"version":"c86a92cecb2e497a418b41a0a76f60e1306797f86db40e5261ef46a35ffa2f23","impliedFormat":1},{"version":"12bffdbf179bfe787334d1aa31393bac5b79a84d2285ad94bcf36c1cce9eed57","impliedFormat":1},{"version":"e81484fc62d5e6add90882339bb2cdba0c87b85ca4002add438d0771ce2fdfa7","impliedFormat":1},{"version":"92ebc3261b20037c4e078cd3d26bccedb719b3eec653925e103b6ced4a936c0d","impliedFormat":1},{"version":"d8f8d36a0350f1b4e25f0d6c8cab7fb484a770cb02c4c92b8215ad421615d248","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ecd7b4429a2b12f50ef619043fca298eb99a9b7f9e8edabd60c9bbb7fa8f036b","impliedFormat":99},{"version":"327a4d13326928f96dd7f2adff6f0a81b78f24213881ab524102f0d495093426","affectsGlobalScope":true,"impliedFormat":99},{"version":"a905afed02ca04de37a87a71dce96d0378a356c4a6f80bd83a47b157e004bf93","impliedFormat":99},{"version":"e4350719d0e03c746d15f12b0dc9a6688f43c4b95f40b7f4a6c7e7acb3a03885","impliedFormat":99},{"version":"e57187701b89ee5751436fa34dbc0d2a5ab978d1bb7fcbaf099a6c1e8cd793a8","impliedFormat":99},{"version":"fd53471dbeff886ddf87abc3fede7d966329810b68b93e33d09247b71257a195","impliedFormat":99},{"version":"c5fe1d44f0dccd899d9c4f64bea872dbe107e51b22d4b7c75f03463a34436328","impliedFormat":99},{"version":"b152f22825a35a280b612ff68b45da5185eaf0bf5e5ae9a4695f77256cc0339c","impliedFormat":99},{"version":"fb524ec05d0710845a6aed52c6ae5050361bdb95e8ade5bff531684537dcbf0b","impliedFormat":99},{"version":"3001a9fc75f4244b8023940b15c19e952131de7925b32641db9fd32f1f9e84c8","impliedFormat":99},{"version":"25809a51da3d841a18576b5f28e5e50925ef5dd887366edfd21a221ae3e19579","impliedFormat":99},{"version":"fc1e4331c60eb9b3176cc4059a5e8a8195cfae717cd0da79840a849e185857fc","impliedFormat":99},{"version":"1bb61bfe36363dd38d539c5cf32d20fd0e629932674a4e43a97ace409fd7d52d","impliedFormat":99},{"version":"68e7a0f9065ad86bd278385aa4e946016786af7c366d28204898922e67fb7134","impliedFormat":99},{"version":"9c22e13043a914591a16f4c36d73b030407e4b94bdfb7deecb5220ecd0fb6448","impliedFormat":99},{"version":"08892f89ccea9c2f985c66978b8625fe1585de59517453f170deee5f59f7240e","impliedFormat":99},{"version":"c136c6a118b2319185b40dc8b1f231c5a9f30bc53afc2b9324779a1ae232fae2","impliedFormat":99},{"version":"64612c72997de98b9c18e0f83f67f94050d7d68a2202a68167abe9c7eba848c3","impliedFormat":99},{"version":"45b10ebe3694c9f0444874ef7e41fe18a020c98023e1bb8adbfb7d3f7fea7e05","impliedFormat":99},{"version":"7c57d6cbd99c27b1c2682a4c1c528436a559cc806319b15d8479fad863054be0","impliedFormat":99},{"version":"5635e7a39b73c9495c3064a7e0e3645c0e2067ed19839811ed38e382bc63a82f","impliedFormat":99},{"version":"097f8ff08b1d44f9fd49a1ed8967eb06e4cef09aba924f7d5d8927e03690fe57","impliedFormat":99},{"version":"1a63f19abddfdb73938e2f43132ba7be2b83a6fc868925c2b3b85ecf61258bf1","impliedFormat":99},{"version":"cc1d1afea5fa8d8ea53b9c338e5f3e78e873edd1540fad0581584e7bf4c5f689","impliedFormat":99},{"version":"fbf3f6d79821ff4adfc5c0429a9740cf1d7e5f54bb96f4fd2cc861a2c4627dd5","impliedFormat":99},{"version":"526b4c93c14f3ab5d8359028eff9b3163ab1e245438ee151f6c9870c3962e47c","impliedFormat":99},{"version":"9e799be8f86acf28e5d3a391ed1dcdd0f0c7fc0abfdc8ffb3f71df8b9d8c2805","impliedFormat":99},{"version":"f9ed5bf3e750c814f9421d8bf2164360ff3d2d0edbd566f7b835659598b739f9","impliedFormat":99},{"version":"38fcea8a14d1464a4b86e144112c18d142a786889d123ef2f063a9792d4c969d","impliedFormat":99},{"version":"aba76cc946da09633f94ef50c3229002a1cf921b9d4c55b17eb7d9ebcaac8f3a","impliedFormat":99},{"version":"5bc2fc3deeeb3f637d172c09340f9f56af98fc7b21277671b5f139e1f10decc7","impliedFormat":99},{"version":"491ec10156c847dff8aff5f37a5c044f80de8278961ac3cfaf3acf57685a5b55","impliedFormat":99},{"version":"8887f6ccfc6af80b3e2253c408b39cd3734cde192ea36da065908826b8d4eab5","impliedFormat":99},{"version":"f86bc26bfea569cff26727c31e7a3b8bbdb6dab92684e0043a9e4cb71c008c48","impliedFormat":99},{"version":"29215d204bad7125c0978bcc76354a81f662b858c3f425263c90705ce3258223","impliedFormat":99},{"version":"5285c98045f06fe92818a0618974be7b3a73030bae18db857e73a9b569b4e0ec","impliedFormat":99},{"version":"6e0cdada9350b73f261ec2ce2f234aaef408b8b47607a73ec826d942338934d9","impliedFormat":99},{"version":"652c61a5fcccd2f1bc84258ed4631f155dc4e4b1d9fc2d45b73b2d49f246d196","impliedFormat":99},{"version":"f51c7eb51332761761aed350d17fa6b598b079618f9339570b258d0cedc343f4","impliedFormat":99},{"version":"95c650a8a4f6cdff2f8bda2f3410249181a4865bc96baa0965a3591e724d1a54","impliedFormat":99},{"version":"5ac0c6a8a8c8516ff9bf19df12431b996ba91cd4a495f8c9b2ec6226d8d7af84","impliedFormat":99},{"version":"40f49fdb6df880961ab9c71f0b092ef3a57403c2c93f02d201ab5b42b63bd835","impliedFormat":99},{"version":"4b33bbb30f1d83dd324e0dbcf211bc23af274dc7eed4f069d488def46618ee77","impliedFormat":99},{"version":"7274c5fba9ce81f169f236a0dd4435a035612aaf2057edfa3d5a741154be90e2","impliedFormat":99},{"version":"d5622666a1558d8140fc711377f15cf973b9270da3f2ea297d2b2894478d67a1","impliedFormat":99},{"version":"cd53c8bb1fd87ecc3b59577a2a8c69761aa2715064cfa974375817b8b9a0b57f","impliedFormat":99},{"version":"b275f323e4495b432d7903e43540badba766c5cb7e0403d08a642aba18958172","impliedFormat":99},{"version":"daab60287791d6863803003c9cefd8523a04a698b4d4fa4ac763750047aa7d0f","impliedFormat":99},{"version":"29814cecbbb443f88a0b27fffd7674dcaceba7fbb4c78628808f846e13d23dba","impliedFormat":99},{"version":"e6ad4046411730a1b43b518cd9c5c2c7faefe8390de7bce4a18227e67ba7cdec","impliedFormat":99},{"version":"963324b64f1bb989150e2dc6bfec90af490679fb0da9e3cd902b1293b7914456","impliedFormat":99},{"version":"21c04ac6beedf4ac4095d8f9079743d94cfc4bb98b41c27c28a2c9d7bf34153a","impliedFormat":99},{"version":"66d788d9bdc8746e8ea833d68830e874c4be23b4d42aa9606c06a4ec73a6e8bf","impliedFormat":99},{"version":"c48f0225d9a8882b6b87d8c73839b76250de0649128b1f2ee63f2a90496a505a","impliedFormat":99},{"version":"ab98970abc7dc033fca9cb8d495d5a5385c306c29cc88cf53439759ad21dfece","impliedFormat":99},{"version":"b4f758a4a022423d9bbe7f1fb0904d110ca4ee1b05611bc614b8fcf72ddf60ab","impliedFormat":99},{"version":"9734bca266e9175e54de464e1cfa73c23fc436516ea938b7e879ce094268833c","impliedFormat":99},{"version":"2274fadc52605a2cbe59f24b70f8f28a825274fad7c5701dbe72a159f751ce66","impliedFormat":99},{"version":"1a0180a67d5d259034c9ee0201a83a5bdd50dfae2b685b527aec15965078f131","impliedFormat":99},{"version":"b9c63995eeb9b6b7da7ccefe417deb433ebeccfb4b4a6e4d312863653979a73c","impliedFormat":99},{"version":"abe2decebbc431a855cad5b98d3f0665e8f37a1008302426619156e5d979e1d2","impliedFormat":99},{"version":"a169b9a43cb3b79fb2cadf4ecee6801dd5e127d892784192db618680ebd2c849","impliedFormat":99},{"version":"9a4e3d778baadf091b01a8e1746ac355add9892ff99de44d2053d1a54d826af8","impliedFormat":99},{"version":"4ec1f760451c58ed62f7a4668cf72bd337bba7d9271f3e7f87f73fbbebf27114","impliedFormat":99},{"version":"e6e7b2074218f002421fb70fa27d696c6290b80b2b64494b69cdc6921a295226","impliedFormat":99},{"version":"347a9e6919aa85c3e6bca3312b933a5be3b88e32ddb9cba1827ec20fe47fc3d6","impliedFormat":99},{"version":"11ca32427d9b2993b1b26d1838dd83156a3726228fe7a847e48335f0d4e98d84","impliedFormat":99},{"version":"0727c101dfff99bf87f5e4d9fa545397208e2b422f12925c78f9385c5a05106f","impliedFormat":99},{"version":"77471ce3d064ddd6a18fd4ddbb9e9fa8a02f82f2998e2c2fc28e4697ee27cbe2","impliedFormat":99},{"version":"98814cc9c86563d3055710cc1ec1016881740617b5c7477a98691498e9d22325","impliedFormat":99},{"version":"52b18322448a17aff3cc0cdc2744b694547709bd2519019c6d0c3eb07fa70eca","impliedFormat":99},{"version":"d9a5b0ce85ba99ebdc6f331cf76fcb5c53deef955321aabc43908a7d6228c9cc","impliedFormat":99},{"version":"229393564401c3745dfa736ae6f3a4acf8cb77ddf1dbaeb71c9a92cb7712ed17","impliedFormat":99},{"version":"f5f0ab6e8aafcae7c6d44e240ef2bc585c74da0cf6589fbca7a955c54f42434f","impliedFormat":99},{"version":"40b8a3b16023234d53f73476b7000a9860ba0f7151c419cbd9379be0bb55326a","impliedFormat":99},{"version":"b7231373d77b515c6fe5d94c98d19194ca500b0079560c611ed6447efbfd81bb","impliedFormat":99},{"version":"27dd17965218bb0f21c37dae0585ce7ea1b218da55ac9e5e9b278966efc7117f","impliedFormat":99},{"version":"1863dc3f7b0148da166c778c1be430bc28bdfc521471da7e0f477da2c383e367","impliedFormat":99},{"version":"29fd59d2fa79e806ee095f8f717fad67618e5aec456e3af633b0ccffff18607e","impliedFormat":99},{"version":"e4462bfa3a3e937cf99e8962eba84d58a5da6373568e5bc9d95a93d985c0cbdd","impliedFormat":99},{"version":"b558a33c045ec8b2172592167c00bd509c87f94fc1bd823aa3653e12f41c8cd6","impliedFormat":99},{"version":"2070498773ac26829518b81113862f466480fec3c70872bb98aac2dc4399dc5f","impliedFormat":99},{"version":"2810c9e539772dddb3cab5c372dfebfc0b43dffed5379829a6ad0e46b2417b7d","impliedFormat":99},{"version":"693bf93edd54139cb3ae52764dd90a597a7470c09c3dfa10796697aeab89dda0","impliedFormat":99},{"version":"77746154cc6097685d47e9549c2765ddffcc097a37f1757f0ab47ecf127e4e90","impliedFormat":99},{"version":"770e725bcc0eecb4f43c57081834059b0ec75c4fae2fc9fc2372ec8c6defeeea","impliedFormat":99},{"version":"c4de476eb5a3a4529416793916d895d1eb5bdab6816e7eee28242a20beb0ba3e","impliedFormat":99},{"version":"8b6ac355c0533163d6de2a8195d7487de55f224356604ea1287f5eaafa800f77","impliedFormat":99},{"version":"871f0aa6805bfdb7016ef6d9b7d91bea186313ae0d8b5ec68e4336612b42247a","impliedFormat":99},{"version":"b420afbf1aa414f8a1a74df17c92f85f819b02f514bac968ec4108b9e104cbe6","impliedFormat":99},{"version":"9954e6ed4d2b7db85ee78a957ba40ad3c101822b37fee9bf33b37dfe6acbb2d7","impliedFormat":99},{"version":"d0ab5357dc3d58f1b358a041b2817336dd9bc7b82e9100038fe2682fbe6c55f2","impliedFormat":99},{"version":"528c8fa9f14096f9b1185efd50f2109ebb4a8d8b4cb6f5e57a62696393640b76","impliedFormat":99},{"version":"e9821512a916787f2b8285fd216cb13574f05652f7f2e909e7aed1da672ca5a3","impliedFormat":99},{"version":"2160af385c6b935a102df656649e44fec4730aa8e7731a9d26ecde30b56bd4f9","impliedFormat":99},{"version":"6fa95db16fdb2fe0a0ded0dc65291fd79102375895100343e24dcbc68ba93fb0","impliedFormat":99},{"version":"1ed96ef0d61cebf36f68a6e3bd3cf75f235f4484eede30d76f460f028fcf8491","impliedFormat":99},{"version":"916d34997267951fe5ce374c97b8fab49bac659126cadffd76036ed76918d48c","impliedFormat":99},{"version":"1baafd7898f8c55e305f3f3ae65041b865a2470ab557ccde11a60ebf0dc65a5a","impliedFormat":99},{"version":"585ab0e81f9f0ee6d87bf554940b9815f24363736d05749a951ccc56aa3b4434","impliedFormat":99},{"version":"bbb22ad18701d95ffeb10b73218a0a35641efd08bdd7bc5911a99f4c3611fb7e","impliedFormat":99},{"version":"78aa0f3ddc88336018634d454df3204f85c2b0ec3a4190f9e5ca872e6cfd724e","impliedFormat":99},{"version":"e6755349321dbccf04161152fddf3abe20a4e7760c210c867eb75a2c1ffc4356","impliedFormat":99},{"version":"c1df7a514cbc1ae6f36639281e29284701b98e256167bcd88c1a61c7439463be","impliedFormat":99},{"version":"7cd2fde35bdf275bb5d85af1aa2c48cdba1c11af0bd35f83702fe44d7d417746","impliedFormat":99},{"version":"8f978bf43cab30807eda385f94292d5cb0870f4df4e932c839ea112c17a67f8b","impliedFormat":99},{"version":"db8b974165a91b057c583c8fed26dc838322a3e7d97e5390ee75a05071f80dc1","impliedFormat":99},{"version":"fe48e0e1908f91ec0b692a0f6b0710e3cc7e8609b70615361dd36bce2c2c93b2","impliedFormat":99},{"version":"235e7076e6d3a1897974a1ba6eee13c6e16cdb0b0e3b344769f8b9afceb90da5","impliedFormat":99},{"version":"412e4e2053c07a103f91926f71a7411807eedcc949b2ec7bc0320cc4907c29dd","impliedFormat":99},{"version":"3ce06809910a2644158aeb3902edabd9532d55a68358838dcda5699301d18f65","impliedFormat":99},{"version":"dba55de47c3b8ab9fa6196da346e8961d8013424934b2e5aa5e1d44da691592e","impliedFormat":99},{"version":"4c6a6c1681a038d6b1304143a5878fd67146d0f1c592ce1a47605a4b1088cdae","impliedFormat":99},{"version":"6ff417b0549025b54909d40180058fc3d67954eee0b7eb6845bf8ee0a371f3e4","impliedFormat":99},{"version":"7fbc5153c50e46924f60a1886937caab58716a63e3160387be5b9467dd517899","impliedFormat":99},{"version":"dd6b35cbf377167300420c0f0dd70c14a4337421c24dedfa927023eef8b98036","impliedFormat":99},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"4567158e839cb913b45372e2388a5b22b98adbc251de4469eee411db1750657b","impliedFormat":99},{"version":"8935e3741e5bc8ba12bbf48e1c0e3f7afd1bd8558e650ffaf525c2a22c4a7b12","impliedFormat":99},"6f8df94098f4a3e2778242ded8fcbbbccf207d86e0eb0bc1943b1cf32f838d24","e9381ce29d132b74e0c6ace49f67c45c38fa3ae3f4580277a803c9c812f7e56c","66543d67f152d4149720fdeada39673dc89953ba8bab57c44d8795a43a2879f1","c1f2e9a35f3d6987a47135db6c2084f3b563b3ecc667c169e92f75a6327a3b60",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"3806cdd6b48ba01a9198134e62a384ec217a98f316d4baef74dd46d62c947a63","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"3910dab597c40e173bf0e0d419d3ce9682c54ebf6ae84849f9b829b1451a17ec","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"486c074a5c0f2254345c0d1c9540380f5463999e42d7e1a159305ea823d3c4b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1},{"version":"ee70b8037ecdf0de6c04f35277f253663a536d7e38f1539d270e4e916d225a3f","affectsGlobalScope":true,"impliedFormat":1},{"version":"a660aa95476042d3fdcc1343cf6bb8fdf24772d31712b1db321c5a4dcc325434","impliedFormat":1},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"11443a1dcfaaa404c68d53368b5b818712b95dd19f188cab1669c39bee8b84b3","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"035d0934d304483f07148427a5bd5b98ac265dae914a6b49749fe23fbd893ec7","impliedFormat":99},{"version":"e2ed5b81cbed3a511b21a18ab2539e79ac1f4bc1d1d28f8d35d8104caa3b429f","impliedFormat":99},{"version":"161c8e0690c46021506e32fda85956d785b70f309ae97011fd27374c065cac9b","affectsGlobalScope":true,"impliedFormat":1},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"7965dc3c7648e2a7a586d11781cabb43d4859920716bc2fdc523da912b06570d","impliedFormat":1},{"version":"90c2bd9a3e72fe08b8fa5982e78cb8dc855a1157b26e11e37a793283c52bf64b","impliedFormat":1},{"version":"a8122fe390a2a987079e06c573b1471296114677923c1c094c24a53ddd7344a2","impliedFormat":1},{"version":"70c2cb19c0c42061a39351156653aa0cf5ba1ecdc8a07424dd38e3a1f1e3c7f4","impliedFormat":1},{"version":"a8fb10fd8c7bc7d9b8f546d4d186d1027f8a9002a639bec689b5000dab68e35c","impliedFormat":1},{"version":"c9b467ea59b86bd27714a879b9ad43c16f186012a26d0f7110b1322025ceaa83","impliedFormat":1},{"version":"57ea19c2e6ba094d8087c721bac30ff1c681081dbd8b167ac068590ef633e7a5","impliedFormat":1},{"version":"cba81ec9ae7bc31a4dc56f33c054131e037649d6b9a2cfa245124c67e23e4721","impliedFormat":1},{"version":"ad193f61ba708e01218496f093c23626aa3808c296844a99189be7108a9c8343","impliedFormat":1},{"version":"a0544b3c8b70b2f319a99ea380b55ab5394ede9188cdee452a5d0ce264f258b2","impliedFormat":1},{"version":"8c654c17c334c7c168c1c36e5336896dc2c892de940886c1639bebd9fc7b9be4","impliedFormat":1},{"version":"6a4da742485d5c2eb6bcb322ae96993999ffecbd5660b0219a5f5678d8225bb0","impliedFormat":1},{"version":"c65ca21d7002bdb431f9ab3c7a6e765a489aa5196e7e0ef00aed55b1294df599","impliedFormat":1},{"version":"c8fc655c2c4bafc155ceee01c84ab3d6c03192ced5d3f2de82e20f3d1bd7f9fa","impliedFormat":1},{"version":"be5a7ff3b47f7e553565e9483bdcadb0ca2040ac9e5ec7b81c7e115a81059882","impliedFormat":1},{"version":"1a93f36ecdb60a95e3a3621b561763e2952da81962fae217ab5441ac1d77ffc5","impliedFormat":1},{"version":"2a771d907aebf9391ac1f50e4ad37952943515eeea0dcc7e78aa08f508294668","impliedFormat":1},{"version":"0146fd6262c3fd3da51cb0254bb6b9a4e42931eb2f56329edd4c199cb9aaf804","impliedFormat":1},{"version":"183f480885db5caa5a8acb833c2be04f98056bdcc5fb29e969ff86e07efe57ab","impliedFormat":99},{"version":"3fd8a5aefd8c3feb3936ca66f5aa89dff7bf6e6537b4158dbd0f6e0d65ed3b9e","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"41c41c6e90133bb2a14f7561f29944771886e5535945b2b372e2f6ed6987746e","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":1},{"version":"7870becb94cbc11d2d01b77c4422589adcba4d8e59f726246d40cd0d129784d8","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f698624bbbb060ece7c0e51b7236520ebada74b747d7523c7df376453ed6fea","impliedFormat":1},{"version":"f70b8328a15ca1d10b1436b691e134a49bc30dcf3183a69bfaa7ba77e1b78ecd","impliedFormat":1},{"version":"683b035f752e318d02e303894e767a1ac16ac4493baa2b593195d7976e6b7310","impliedFormat":99},{"version":"75ee0696ad8e1cefd1bd386fb58023682f061e5e3361e84df0c4410be3f1b0f5","impliedFormat":99},{"version":"7a9910f3139f025f9c04808fbf944b8615afed0f49cdd9536556f4a6e2cbd40c","impliedFormat":99},{"version":"7757c6ca7a8ad1992401c6aff33633d6a088515be5a39d7ee188b35bfc8e5f8e","impliedFormat":99},"4e77009eb8be90ca5b5f5bc5f9ba3cc71c897caa0240d4224efc00fe63f8d43f"],"root":[[211,214],361],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":false,"composite":true,"module":99,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[161,1],[166,2],[163,2],[172,2],[171,1],[168,1],[170,3],[169,3],[164,4],[174,5],[167,4],[173,2],[165,4],[162,6],[160,4],[175,7],[158,8],[159,8],[358,9],[359,10],[360,9],[90,4],[268,11],[269,11],[270,12],[217,13],[271,14],[272,15],[273,16],[215,4],[274,17],[275,18],[276,19],[277,20],[278,21],[279,22],[280,22],[281,23],[282,24],[283,25],[284,26],[218,4],[216,4],[285,27],[286,28],[287,29],[321,30],[288,31],[289,4],[290,32],[291,33],[292,34],[293,35],[294,36],[295,37],[296,38],[297,39],[298,40],[299,40],[300,41],[301,4],[302,42],[303,43],[305,44],[304,45],[306,46],[307,47],[308,48],[309,49],[310,50],[311,51],[312,52],[313,53],[314,54],[315,55],[316,56],[317,57],[318,58],[219,4],[220,59],[221,4],[222,4],[264,60],[265,61],[266,4],[267,46],[319,62],[320,63],[83,64],[87,65],[84,4],[85,66],[86,67],[126,4],[207,4],[99,68],[100,8],[102,69],[101,68],[98,8],[128,70],[130,71],[131,72],[132,72],[129,8],[134,73],[133,70],[127,74],[93,8],[203,75],[204,76],[202,4],[94,8],[96,77],[97,78],[95,4],[118,79],[119,79],[120,79],[121,79],[123,80],[124,80],[122,80],[125,81],[117,8],[103,8],[106,82],[105,4],[107,83],[108,8],[109,8],[110,84],[111,84],[112,84],[113,84],[114,84],[115,84],[116,85],[104,4],[190,86],[191,86],[189,4],[193,87],[192,86],[194,88],[139,89],[140,89],[137,90],[138,90],[157,91],[150,92],[152,92],[154,92],[151,92],[148,92],[147,4],[146,92],[153,92],[145,4],[149,92],[156,93],[155,4],[136,94],[144,92],[143,4],[141,92],[142,92],[188,95],[187,8],[185,96],[186,97],[195,8],[196,4],[197,98],[177,99],[178,100],[179,100],[183,101],[176,102],[180,103],[182,4],[181,103],[135,4],[205,94],[199,104],[200,105],[201,106],[198,74],[206,107],[210,108],[208,4],[184,8],[209,109],[329,4],[88,110],[350,4],[352,111],[351,4],[91,4],[89,4],[346,112],[344,113],[345,114],[333,115],[334,113],[341,116],[332,117],[337,118],[347,4],[338,119],[343,120],[349,121],[348,122],[331,123],[339,124],[340,125],[335,126],[342,112],[336,127],[323,128],[322,129],[330,4],[92,130],[80,4],[81,4],[13,4],[15,4],[14,4],[2,4],[16,4],[17,4],[18,4],[19,4],[20,4],[21,4],[22,4],[23,4],[3,4],[24,4],[25,4],[4,4],[26,4],[30,4],[27,4],[28,4],[29,4],[31,4],[32,4],[33,4],[5,4],[34,4],[35,4],[36,4],[37,4],[6,4],[41,4],[38,4],[39,4],[40,4],[42,4],[7,4],[43,4],[48,4],[49,4],[44,4],[45,4],[46,4],[47,4],[8,4],[53,4],[50,4],[51,4],[52,4],[54,4],[9,4],[55,4],[56,4],[57,4],[59,4],[58,4],[60,4],[61,4],[10,4],[62,4],[63,4],[64,4],[11,4],[65,4],[66,4],[67,4],[68,4],[69,4],[1,4],[70,4],[71,4],[12,4],[75,4],[73,4],[78,4],[77,4],[72,4],[76,4],[74,4],[79,4],[82,4],[240,131],[252,132],[238,133],[253,134],[262,135],[229,136],[230,137],[228,138],[261,139],[256,140],[260,141],[232,142],[249,143],[231,144],[259,145],[226,146],[227,140],[233,147],[234,4],[239,148],[237,147],[224,149],[263,150],[254,151],[243,152],[242,147],[244,153],[247,154],[241,155],[245,156],[257,139],[235,157],[236,158],[248,159],[225,134],[251,160],[250,147],[246,161],[255,4],[223,4],[258,162],[357,163],[328,164],[327,165],[325,165],[324,4],[326,166],[355,4],[354,4],[353,167],[356,168],[213,169],[214,8],[211,170],[212,4],[361,171]],"semanticDiagnosticsPerFile":[[160,[{"start":4583,"length":4,"code":2416,"category":1,"messageText":{"messageText":"Property 'exec' in type 'EventResolver' is not assignable to the same property in base type 'IEventBus'.","category":1,"code":2416,"next":[{"messageText":"Type '(name: keyof T, ev: CommonEvent) => Promise' is not assignable to type '(name: keyof T, ev: T[keyof T]) => Promise'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'ev' and 'ev' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'T[keyof T]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string] | T[number] | T[symbol]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string]' is not assignable to type 'CommonEvent'.","category":1,"code":2322}]}]}]}]}]}},{"start":4860,"length":4,"code":2416,"category":1,"messageText":{"messageText":"Property 'exec' in type 'EventBusRouter' is not assignable to the same property in base type 'IEventBus'.","category":1,"code":2416,"next":[{"messageText":"Type '(name: keyof T, ev: CommonEvent) => Promise' is not assignable to type '(name: keyof T, ev: T[keyof T]) => Promise'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'ev' and 'ev' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'T[keyof T]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string] | T[number] | T[symbol]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string]' is not assignable to type 'CommonEvent'.","category":1,"code":2322}]}]}]}]}]}}]],[211,[{"start":261,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."},{"start":305,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."},{"start":354,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."}]]],"affectedFilesPendingEmit":[213,214,211,212,361],"emitSignatures":[211,212,213,214,361],"version":"5.9.3"} \ No newline at end of file +{"fileNames":["./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es5.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.dom.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.object.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2024.string.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.float16.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.iterator.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.promise.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.es2025.regexp.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.array.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.date.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.error.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.temporal.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/.pnpm/typescript@6.0.3/node_modules/typescript/lib/typescript.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/lib.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/parser-options.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/ts-estree.d.ts","./node_modules/.pnpm/@typescript-eslint+types@8.58.0/node_modules/@typescript-eslint/types/dist/index.d.ts","./node_modules/.pnpm/esrap@2.2.4/node_modules/esrap/types/index.d.ts","./node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.d.mts","./node_modules/.pnpm/@types+estree@1.0.8/node_modules/@types/estree/index.d.ts","./node_modules/.pnpm/locate-character@3.0.0/node_modules/locate-character/types/index.d.ts","./node_modules/.pnpm/svelte@5.55.5/node_modules/svelte/types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Button.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/ErrorBoundary.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/ErrorManager.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ErrorBoundary/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/BetterMenu.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/MenuRenderer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/store.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/BetterMenu/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/ButtonCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/DateTimeCtrl.utils.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/DateTimeCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/DateTimeCtrl/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/IconButtonCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/InlineWrapper.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/NativeSelectCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/NumberInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/PasswordInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/SwitchCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/TextAreaCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/TextInputCtrl.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/FormerControllers/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/Former.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerButtonArea.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerDrawer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerModal.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/formerState.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerResolveSpecAPI.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/FormerRestHeadSpecAPI.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Former/index.d.ts","./node_modules/.pnpm/@warkypublic+resolvespec-js@1.0.1/node_modules/@warkypublic/resolvespec-js/dist/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/Boxer.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerTarget.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerBaseAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/BoxerRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/store.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Boxer/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Types/generic_grid.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/components/Gridler.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/components/GridlerFull.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/adapters/GridlerResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/adapters/GridlerRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/scrolling.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/selection.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/helpers.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/utils/cellCache.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/TextRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/NumberRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/MarkdownRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/ImageRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/UriRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/BubbleRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/DrilldownRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/CurrencyRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/PercentageRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/DatetimeRenderer.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/shared.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/renderers/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Gridler/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-menu@2.5.1/node_modules/@svar-ui/svelte-menu/types/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-toolbar@2.5.1/node_modules/@svar-ui/svelte-toolbar/types/index.d.ts","./node_modules/.pnpm/@svar-ui+lib-state@1.9.6/node_modules/@svar-ui/lib-state/dist/index.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/DataStore.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/types.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/export/index.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/hotkeys.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/scroll.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/editors.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/package.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/assignChecks.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/toolbarButtons.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/menuOptions.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/helpers/actionHandlers.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/filters.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/print.d.ts","./node_modules/.pnpm/@svar-ui+grid-store@2.6.2/node_modules/@svar-ui/grid-store/dist/types/index.d.ts","./node_modules/.pnpm/@svar-ui+svelte-grid@2.6.2/node_modules/@svar-ui/svelte-grid/types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/SvarkGrid.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/adapters/SvarkResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/adapters/SvarkRestHeaderSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/SvarkGenericColumnsAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/svarGridMapping.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/utils/contextMenu.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/SvarkGrid/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/utils/PropsWithChildren.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Portal/Portal.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Portal/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/OverlayStack/overlayStack.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/OverlayStack/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStore.i18n.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStoreProvider.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/GlobalStateStoreContext.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/GlobalStateStore/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/Screenshot.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/Screenshot.util.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Screenshot/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/VTree.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/VTreeResolveSpecAdapter.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/VTree/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/types.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/ContentEditor.svelte.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/ContentEditor/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/Types/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/components/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/actions/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/stores/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/utils/index.d.ts","./node_modules/.pnpm/@warkypublic+svelix@0.1.39_highlight.js@11.8.0_svelte@5.55.5_unified@11.0.5/node_modules/@warkypublic/svelix/dist/index.d.ts","./src/shellState.ts","./src/types.ts","./src/api.ts","./src/gridTheme.ts","./src/main.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/globals.typedarray.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/buffer.buffer.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/globals.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/abortcontroller.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/blob.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/console.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/crypto.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/domexception.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/encoding.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/events.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/utility.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/header.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/readable.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/fetch.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/formdata.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/connector.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/client-stats.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/client.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/errors.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/global-dispatcher.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/global-origin.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/pool-stats.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/pool.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/handlers.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/balanced-pool.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/round-robin-pool.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/h2c-client.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-call-history.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-client.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-pool.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/snapshot-agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/mock-errors.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/retry-handler.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/retry-agent.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/api.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/cache-interceptor.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/interceptors.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/util.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/cookies.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/patch.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/websocket.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/eventsource.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/content-type.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/cache.d.ts","./node_modules/.pnpm/undici-types@7.19.2/node_modules/undici-types/index.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/fetch.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/importmeta.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/messaging.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/navigator.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/performance.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/storage.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/streams.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/timers.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/web-globals/url.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/assert.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/assert/strict.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/async_hooks.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/buffer.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/child_process.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/cluster.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/console.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/constants.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/crypto.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/dgram.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/dns.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/dns/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/domain.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/events.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/fs.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/fs/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/http.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/http2.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/https.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/inspector.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/inspector.generated.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/inspector/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/module.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/net.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/os.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/path.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/path/posix.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/path/win32.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/perf_hooks.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/process.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/punycode.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/querystring.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/quic.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/readline.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/readline/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/repl.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/sea.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/sqlite.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/stream.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/stream/consumers.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/stream/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/stream/web.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/string_decoder.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/test.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/test/reporters.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/timers.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/timers/promises.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/tls.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/trace_events.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/tty.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/url.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/util.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/util/types.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/v8.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/vm.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/wasi.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/worker_threads.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/zlib.d.ts","./node_modules/.pnpm/@types+node@25.6.0/node_modules/@types/node/index.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/hmrPayload.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/customEvent.d.ts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/shared/logging-C6h4g8dA.d.mts","./node_modules/.pnpm/@oxc-project+types@0.127.0/node_modules/@oxc-project/types/types.d.ts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/shared/binding-zH1vcmbM.d.mts","./node_modules/.pnpm/@rolldown+pluginutils@1.0.0-rc.17/node_modules/@rolldown/pluginutils/dist/filter/composable-filters.d.ts","./node_modules/.pnpm/@rolldown+pluginutils@1.0.0-rc.17/node_modules/@rolldown/pluginutils/dist/filter/filter-vite-plugins.d.ts","./node_modules/.pnpm/@rolldown+pluginutils@1.0.0-rc.17/node_modules/@rolldown/pluginutils/dist/filter/simple-filters.d.ts","./node_modules/.pnpm/@rolldown+pluginutils@1.0.0-rc.17/node_modules/@rolldown/pluginutils/dist/filter/index.d.ts","./node_modules/.pnpm/@rolldown+pluginutils@1.0.0-rc.17/node_modules/@rolldown/pluginutils/dist/index.d.ts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/shared/define-config-5HJ1b9vG.d.mts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/index.d.mts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/parse-ast-index.d.mts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/internal/rollupTypeCompat.d.ts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/shared/constructors-D0W3rNfA.d.mts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/plugins-index.d.mts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/shared/transform-DgZ3paSD.d.mts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/utils-index.d.mts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/hot.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/dist/node/module-runner.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/internal/esbuildOptions.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/metadata.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/internal/terserOptions.d.ts","./node_modules/.pnpm/source-map-js@1.2.1/node_modules/source-map-js/source-map.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/previous-map.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/input.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/css-syntax-error.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/declaration.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/root.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/warning.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/lazy-result.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/no-work-result.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/processor.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/result.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/document.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/rule.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/node.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/comment.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/container.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/at-rule.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/list.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/postcss.d.ts","./node_modules/.pnpm/postcss@8.5.12/node_modules/postcss/lib/postcss.d.mts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/ast.d.ts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/targets.d.ts","./node_modules/.pnpm/lightningcss@1.32.0/node_modules/lightningcss/node/index.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/internal/lightningcssOptions.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/internal/cssPreprocessorOptions.d.ts","./node_modules/.pnpm/rolldown@1.0.0-rc.17/node_modules/rolldown/dist/filter-index.d.mts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/types/importGlob.d.ts","./node_modules/.pnpm/vite@8.0.10_@types+node@25.6.0_jiti@2.6.1/node_modules/vite/dist/node/index.d.ts","./node_modules/.pnpm/@sveltejs+vite-plugin-svelte@7.0.0_svelte@5.55.5_vite@8.0.10_@types+node@25.6.0_jiti@2.6.1_/node_modules/@sveltejs/vite-plugin-svelte/types/index.d.ts","./node_modules/.pnpm/@tailwindcss+vite@4.2.4_vite@8.0.10_@types+node@25.6.0_jiti@2.6.1_/node_modules/@tailwindcss/vite/dist/index.d.mts","./vite.config.ts"],"fileIdsList":[[225,288,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,351,352,353],[225,288,296,300,303,305,306,307,319,354],[167,169,225,288,296,300,303,305,306,307,319],[169,225,288,296,300,303,305,306,307,319],[167,225,288,296,300,303,305,306,307,319],[168,169,170,171,172,173,174,175,176,177,178,179,180,225,288,296,300,303,305,306,307,319],[167,168,225,288,296,300,303,305,306,307,319],[99,165,166,181,225,288,296,300,303,305,306,307,319],[99,225,288,296,300,303,305,306,307,319],[99,225,288,296,300,303,305,306,307,319,396],[225,288,296,300,303,305,306,307,319,396],[225,285,286,288,296,300,303,305,306,307,319],[225,287,288,296,300,303,305,306,307,319],[288,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,327],[225,288,289,294,296,299,300,303,305,306,307,309,319,324,336],[225,288,289,290,296,299,300,303,305,306,307,319],[225,288,291,296,300,303,305,306,307,319,337],[225,288,292,293,296,300,303,305,306,307,310,319],[225,288,293,296,300,303,305,306,307,319,324,333],[225,288,294,296,299,300,303,305,306,307,309,319],[225,287,288,295,296,300,303,305,306,307,319],[225,288,296,297,300,303,305,306,307,319],[225,288,296,298,299,300,303,305,306,307,319],[225,287,288,296,299,300,303,305,306,307,319],[225,288,296,299,300,301,303,305,306,307,319,324,336],[225,288,296,299,300,301,303,305,306,307,319,324,327],[225,275,288,296,299,300,302,303,305,306,307,309,319,324,336],[225,288,296,299,300,302,303,305,306,307,309,319,324,333,336],[225,288,296,300,302,303,304,305,306,307,319,324,333,336],[223,224,225,226,227,228,229,230,231,232,233,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343],[225,288,296,299,300,303,305,306,307,319],[225,288,296,300,303,305,307,319],[225,288,296,300,303,305,306,307,308,319,336],[225,288,296,299,300,303,305,306,307,309,319,324],[225,288,296,300,303,305,306,307,310,319],[225,288,296,300,303,305,306,307,311,319],[225,288,296,299,300,303,305,306,307,314,319],[225,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343],[225,288,296,300,303,305,306,307,316,319],[225,288,296,300,303,305,306,307,317,319],[225,288,293,296,300,303,305,306,307,309,319,327],[225,288,296,299,300,303,305,306,307,319,320],[225,288,296,300,303,305,306,307,319,321,337,340],[225,288,296,299,300,303,305,306,307,319,324,326,327],[225,288,296,300,303,305,306,307,319,325,327],[225,288,296,300,303,305,306,307,319,327,337],[225,288,296,300,303,305,306,307,319,328],[225,285,288,296,300,303,305,306,307,319,324,330,336],[225,288,296,300,303,305,306,307,319,324,329],[225,288,296,299,300,303,305,306,307,319,331,332],[225,288,296,300,303,305,306,307,319,331,332],[225,288,293,296,300,303,305,306,307,309,319,324,333],[225,288,296,300,303,305,306,307,319,334],[225,288,296,300,303,305,306,307,309,319,335],[225,288,296,300,302,303,305,306,307,317,319,336],[225,288,296,300,303,305,306,307,319,337,338],[225,288,293,296,300,303,305,306,307,319,338],[225,288,296,300,303,305,306,307,319,324,339],[225,288,296,300,303,305,306,307,308,319,340],[225,288,296,300,303,305,306,307,319,341],[225,288,291,296,300,303,305,306,307,319],[225,288,293,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,337],[225,275,288,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,336],[225,288,296,300,303,305,306,307,319,342],[225,288,296,300,303,305,306,307,314,319],[225,288,296,300,303,305,306,307,319,332],[225,275,288,296,299,300,301,303,305,306,307,314,319,324,327,336,339,340,342],[225,288,296,300,303,305,306,307,319,324,343],[89,225,288,296,300,303,305,306,307,319],[90,91,92,93,225,288,296,300,303,305,306,307,319],[89,91,225,288,296,300,303,305,306,307,319],[90,93,225,288,296,300,303,305,306,307,319],[99,105,225,288,296,300,303,305,306,307,319],[105,106,107,108,225,288,296,300,303,305,306,307,319],[99,134,225,288,296,300,303,305,306,307,319],[133,134,225,288,296,300,303,305,306,307,319],[133,134,137,225,288,296,300,303,305,306,307,319],[134,135,136,137,138,139,140,225,288,296,300,303,305,306,307,319],[99,133,225,288,296,300,303,305,306,307,319],[99,209,225,288,296,300,303,305,306,307,319],[209,210,225,288,296,300,303,305,306,307,319],[102,225,288,296,300,303,305,306,307,319],[101,102,103,225,288,296,300,303,305,306,307,319],[99,124,225,288,296,300,303,305,306,307,319],[124,225,288,296,300,303,305,306,307,319],[124,125,126,127,128,129,130,131,225,288,296,300,303,305,306,307,319],[99,111,112,225,288,296,300,303,305,306,307,319],[112,113,225,288,296,300,303,305,306,307,319],[99,111,225,288,296,300,303,305,306,307,319],[110,111,112,114,115,116,117,118,119,120,121,122,225,288,296,300,303,305,306,307,319],[99,196,225,288,296,300,303,305,306,307,319],[196,225,288,296,300,303,305,306,307,319],[196,197,198,199,200,225,288,296,300,303,305,306,307,319],[133,143,225,288,296,300,303,305,306,307,319],[99,143,225,288,296,300,303,305,306,307,319],[142,143,144,145,146,147,148,149,150,151,163,225,288,296,300,303,305,306,307,319],[143,225,288,296,300,303,305,306,307,319],[143,152,153,154,155,156,157,158,159,160,161,162,225,288,296,300,303,305,306,307,319],[142,225,288,296,300,303,305,306,307,319],[194,225,288,296,300,303,305,306,307,319],[99,191,225,288,296,300,303,305,306,307,319],[192,225,288,296,300,303,305,306,307,319],[202,203,225,288,296,300,303,305,306,307,319],[99,142,183,225,288,296,300,303,305,306,307,319],[133,183,225,288,296,300,303,305,306,307,319],[142,183,184,185,186,187,188,189,225,288,296,300,303,305,306,307,319],[99,133,182,225,288,296,300,303,305,306,307,319],[142,183,225,288,296,300,303,305,306,307,319],[99,205,225,288,296,300,303,305,306,307,319],[133,205,225,288,296,300,303,305,306,307,319],[205,206,207,225,288,296,300,303,305,306,307,319],[100,104,109,123,132,141,164,190,193,195,201,204,208,211,212,225,288,296,300,303,305,306,307,319],[213,214,215,216,225,288,296,300,303,305,306,307,319],[191,225,288,296,300,303,305,306,307,319],[94,95,225,288,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,389,390],[225,288,296,300,303,305,306,307,319,384],[225,288,296,300,303,305,306,307,319,382,384],[225,288,296,300,303,305,306,307,319,373,381,382,383,385,387],[225,288,296,300,303,305,306,307,319,371],[225,288,296,300,303,305,306,307,319,374,379,384,387],[225,288,296,300,303,305,306,307,319,370,387],[225,288,296,300,303,305,306,307,319,374,375,378,379,380,387],[225,288,296,300,303,305,306,307,319,374,375,376,378,379,387],[225,288,296,300,303,305,306,307,319,371,372,373,374,375,379,380,381,383,384,385,387],[225,288,296,300,303,305,306,307,319,387],[225,288,296,300,303,305,306,307,319,369,371,372,373,374,375,376,378,379,380,381,382,383,384,385,386],[225,288,296,300,303,305,306,307,319,369,387],[225,288,296,300,303,305,306,307,319,374,376,377,379,380,387],[225,288,296,300,303,305,306,307,319,378,387],[225,288,296,300,303,305,306,307,319,379,380,384,387],[225,288,296,300,303,305,306,307,319,372,382],[225,288,296,300,303,305,306,307,319,356],[225,288,296,300,303,305,306,307,319,348,350,356],[225,288,296,300,303,305,306,307,319,349,350],[225,288,296,300,303,305,306,307,319,350,356,360],[225,288,296,300,303,305,306,307,319,349],[225,288,296,300,303,305,306,307,319,350,356],[225,288,296,300,303,305,306,307,319,348,349,350,355],[225,288,296,300,303,305,306,307,319,348,350],[225,288,296,300,303,305,306,307,319,349,350,362],[95,96,97,98,99,225,288,296,300,303,305,306,307,319],[225,240,243,246,247,288,296,300,303,305,306,307,319,336],[225,243,288,296,300,303,305,306,307,319,324,336],[225,243,247,288,296,300,303,305,306,307,319,336],[225,288,296,300,303,305,306,307,319,324],[225,237,288,296,300,303,305,306,307,319],[225,241,288,296,300,303,305,306,307,319],[225,239,240,243,288,296,300,303,305,306,307,319,336],[225,288,296,300,303,305,306,307,309,319,333],[225,288,296,300,303,305,306,307,319,344],[225,237,288,296,300,303,305,306,307,319,344],[225,239,243,288,296,300,303,305,306,307,309,319,336],[225,234,235,236,238,242,288,296,299,300,303,305,306,307,319,324,336],[225,243,252,260,288,296,300,303,305,306,307,319],[225,235,241,288,296,300,303,305,306,307,319],[225,243,269,270,288,296,300,303,305,306,307,319],[225,235,238,243,288,296,300,303,305,306,307,319,327,336,344],[225,243,288,296,300,303,305,306,307,319],[225,239,243,288,296,300,303,305,306,307,319,336],[225,234,288,296,300,303,305,306,307,319],[225,237,238,239,241,242,243,244,245,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,270,271,272,273,274,288,296,300,303,305,306,307,319],[225,243,262,265,288,296,300,303,305,306,307,319],[225,243,252,253,254,288,296,300,303,305,306,307,319],[225,241,243,253,255,288,296,300,303,305,306,307,319],[225,242,288,296,300,303,305,306,307,319],[225,235,237,243,288,296,300,303,305,306,307,319],[225,243,247,253,255,288,296,300,303,305,306,307,319],[225,247,288,296,300,303,305,306,307,319],[225,241,243,246,288,296,300,303,305,306,307,319,336],[225,235,239,243,252,288,296,300,303,305,306,307,319],[225,243,262,288,296,300,303,305,306,307,319],[225,255,288,296,300,303,305,306,307,319],[225,237,243,269,288,296,300,303,305,306,307,319,327,342,344],[225,288,296,300,303,305,306,307,319,345],[225,288,296,299,300,302,303,304,305,306,307,309,319,324,333,336,343,344,345,346,347,357,358,359,361,363,365,366,367,368,388,392,393,394,395,396],[225,288,296,300,303,305,306,307,319,345,346,347,364],[225,288,296,300,303,305,306,307,319,347],[225,288,296,300,303,305,306,307,319,391],[225,288,296,300,303,305,306,307,319,357,367,396],[225,288,296,300,303,305,306,307,319,357,396],[218,219,225,288,296,300,303,305,306,307,319],[217,225,288,296,300,303,305,306,307,319],[225,288,296,300,303,305,306,307,319,396,397,398]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"8a15b4607d9a499e2dbeed9ec0d3c0d7372c850b2d5f1fb259e8f6d41d468a84","impliedFormat":1},{"version":"26e0fe14baee4e127f4365d1ae0b276f400562e45e19e35fd2d4c296684715e6","impliedFormat":1},{"version":"1e9332c23e9a907175e0ffc6a49e236f97b48838cc8aec9ce7e4cec21e544b65","impliedFormat":1},{"version":"3753fbc1113dc511214802a2342280a8b284ab9094f6420e7aa171e868679f91","impliedFormat":1},{"version":"999ca32883495a866aa5737fe1babc764a469e4cde6ee6b136a4b9ae68853e4b","impliedFormat":1},{"version":"17f13ecb98cbc39243f2eee1f16d45cd8ec4706b03ee314f1915f1a8b42f6984","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"db9709688f82c9e5f65a119c64d835f906efe5f559d08b11642d56eb85b79357","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b25b8c874acd1a4cf8444c3617e037d444d19080ac9f634b405583fd10ce1f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"37be57d7c90cf1f8112ee2636a068d8fd181289f82b744160ec56a7dc158a9f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a917a49ac94cd26b754ab84e113369a75d1a47a710661d7cd25e961cc797065f","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d3261badeb7843d157ef3e6f5d1427d0eeb0af0cf9df84a62cfd29fd47ac86e","affectsGlobalScope":true,"impliedFormat":1},{"version":"195daca651dde22f2167ac0d0a05e215308119a3100f5e6268e8317d05a92526","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b11e4285cd2bb164a4dc09248bdec69e9842517db4ca47c1ba913011e44ff2f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0508571a52475e245b02bc50fa1394065a0a3d05277fbf5120c3784b85651799","affectsGlobalScope":true,"impliedFormat":1},{"version":"8f9af488f510c3015af3cc8c267a9e9d96c4dd38a1fdff0e11dc5a544711415b","affectsGlobalScope":true,"impliedFormat":1},{"version":"fc611fea8d30ea72c6bbfb599c9b4d393ce22e2f5bfef2172534781e7d138104","affectsGlobalScope":true,"impliedFormat":1},{"version":"0bd714129fca875f7d4c477a1a392200b0bcd13fb2e80928cd334b63830ea047","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2c9037ae6cd2c52d80ceef0b3c5ffdb488627d71529cf4f63776daf11161c9a","affectsGlobalScope":true,"impliedFormat":1},{"version":"135d5cf4d345f59f1a9caadfafcd858d3d9cc68290db616cc85797224448cccc","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc238c3f81c2984751932b6aab223cd5b830e0ac6cad76389e5e9d2ffc03287d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a07f9b76d361f572620927e5735b77d6d2101c23cdd94383eb5b706e7b36357","affectsGlobalScope":true,"impliedFormat":1},{"version":"7c4e8dc6ab834cc6baa0227e030606d29e3e8449a9f67cdf5605ea5493c4db29","affectsGlobalScope":true,"impliedFormat":1},{"version":"de7ba0fd02e06cd9a5bd4ab441ed0e122735786e67dde1e849cced1cd8b46b78","affectsGlobalScope":true,"impliedFormat":1},{"version":"6148e4e88d720a06855071c3db02069434142a8332cf9c182cda551adedf3156","affectsGlobalScope":true,"impliedFormat":1},{"version":"d63dba625b108316a40c95a4425f8d4294e0deeccfd6c7e59d819efa19e23409","affectsGlobalScope":true,"impliedFormat":1},{"version":"0568d6befee03dd435bed4fc25c4e46865b24bdcb8c563fdc21f580a2c301904","affectsGlobalScope":true,"impliedFormat":1},{"version":"30d62269b05b584741f19a5369852d5d34895aa2ac4fd948956f886d15f9cc0d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"ffbe6d7b295306b2ba88030f65b74c107d8d99bdcf596ea99c62a02f606108b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"996fb27b15277369c68a4ba46ed138b4e9e839a02fb4ec756f7997629242fd9f","affectsGlobalScope":true,"impliedFormat":1},{"version":"79b712591b270d4778c89706ca2cfc56ddb8c3f895840e477388f1710dc5eda9","affectsGlobalScope":true,"impliedFormat":1},{"version":"20884846cef428b992b9bd032e70a4ef88e349263f63aeddf04dda837a7dba26","affectsGlobalScope":true,"impliedFormat":1},{"version":"5fcab789c73a97cd43828ee3cc94a61264cf24d4c44472ce64ced0e0f148bdb2","affectsGlobalScope":true,"impliedFormat":1},{"version":"db59a81f070c1880ad645b2c0275022baa6a0c4f0acdc58d29d349c6efcf0903","affectsGlobalScope":true,"impliedFormat":1},{"version":"673294292640f5722b700e7d814e17aaf7d93f83a48a2c9b38f33cbc940ad8b0","affectsGlobalScope":true,"impliedFormat":1},{"version":"d786b48f934cbca483b3c6d0a798cb43bbb4ada283e76fb22c28e53ae05b9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"142efd4ce210576f777dc34df121777be89eda476942d6d6663b03dcb53be3ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"379bc41580c2d774f82e828c70308f24a005b490c25ba34d679d84bcf05c3d9d","affectsGlobalScope":true,"impliedFormat":1},{"version":"ed484fb2aa8a1a23d0277056ec3336e0a0b52f9b8d6a961f338a642faf43235d","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ffedae1d1c2d53fdbca1c96d3c7dda544281f7d262f99b6880634f8fd8d9820","affectsGlobalScope":true,"impliedFormat":1},{"version":"83a730b125d477dd264df8ba479afab27a3dae7152b005c214ab94dc7ee44fd3","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"c967e03c8dbb4770f7e2f0b71b5d13593de679a41cc2b60266c4b69f1342a263","impliedFormat":1},{"version":"33a1caf57a6f7318c7ce2c8a8a35137bd7c064d140f324e8f47b94cd129305b5","impliedFormat":1},{"version":"c86a92cecb2e497a418b41a0a76f60e1306797f86db40e5261ef46a35ffa2f23","impliedFormat":1},{"version":"12bffdbf179bfe787334d1aa31393bac5b79a84d2285ad94bcf36c1cce9eed57","impliedFormat":1},{"version":"e81484fc62d5e6add90882339bb2cdba0c87b85ca4002add438d0771ce2fdfa7","impliedFormat":1},{"version":"92ebc3261b20037c4e078cd3d26bccedb719b3eec653925e103b6ced4a936c0d","impliedFormat":1},{"version":"d8f8d36a0350f1b4e25f0d6c8cab7fb484a770cb02c4c92b8215ad421615d248","impliedFormat":99},{"version":"2be2227c3810dfd84e46674fd33b8d09a4a28ad9cb633ed536effd411665ea1e","impliedFormat":99},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"ecd7b4429a2b12f50ef619043fca298eb99a9b7f9e8edabd60c9bbb7fa8f036b","impliedFormat":99},{"version":"327a4d13326928f96dd7f2adff6f0a81b78f24213881ab524102f0d495093426","affectsGlobalScope":true,"impliedFormat":99},{"version":"a905afed02ca04de37a87a71dce96d0378a356c4a6f80bd83a47b157e004bf93","impliedFormat":99},{"version":"e4350719d0e03c746d15f12b0dc9a6688f43c4b95f40b7f4a6c7e7acb3a03885","impliedFormat":99},{"version":"e57187701b89ee5751436fa34dbc0d2a5ab978d1bb7fcbaf099a6c1e8cd793a8","impliedFormat":99},{"version":"fd53471dbeff886ddf87abc3fede7d966329810b68b93e33d09247b71257a195","impliedFormat":99},{"version":"c5fe1d44f0dccd899d9c4f64bea872dbe107e51b22d4b7c75f03463a34436328","impliedFormat":99},{"version":"b152f22825a35a280b612ff68b45da5185eaf0bf5e5ae9a4695f77256cc0339c","impliedFormat":99},{"version":"fb524ec05d0710845a6aed52c6ae5050361bdb95e8ade5bff531684537dcbf0b","impliedFormat":99},{"version":"3001a9fc75f4244b8023940b15c19e952131de7925b32641db9fd32f1f9e84c8","impliedFormat":99},{"version":"25809a51da3d841a18576b5f28e5e50925ef5dd887366edfd21a221ae3e19579","impliedFormat":99},{"version":"fc1e4331c60eb9b3176cc4059a5e8a8195cfae717cd0da79840a849e185857fc","impliedFormat":99},{"version":"1bb61bfe36363dd38d539c5cf32d20fd0e629932674a4e43a97ace409fd7d52d","impliedFormat":99},{"version":"68e7a0f9065ad86bd278385aa4e946016786af7c366d28204898922e67fb7134","impliedFormat":99},{"version":"9c22e13043a914591a16f4c36d73b030407e4b94bdfb7deecb5220ecd0fb6448","impliedFormat":99},{"version":"08892f89ccea9c2f985c66978b8625fe1585de59517453f170deee5f59f7240e","impliedFormat":99},{"version":"c136c6a118b2319185b40dc8b1f231c5a9f30bc53afc2b9324779a1ae232fae2","impliedFormat":99},{"version":"64612c72997de98b9c18e0f83f67f94050d7d68a2202a68167abe9c7eba848c3","impliedFormat":99},{"version":"45b10ebe3694c9f0444874ef7e41fe18a020c98023e1bb8adbfb7d3f7fea7e05","impliedFormat":99},{"version":"7c57d6cbd99c27b1c2682a4c1c528436a559cc806319b15d8479fad863054be0","impliedFormat":99},{"version":"5635e7a39b73c9495c3064a7e0e3645c0e2067ed19839811ed38e382bc63a82f","impliedFormat":99},{"version":"097f8ff08b1d44f9fd49a1ed8967eb06e4cef09aba924f7d5d8927e03690fe57","impliedFormat":99},{"version":"1a63f19abddfdb73938e2f43132ba7be2b83a6fc868925c2b3b85ecf61258bf1","impliedFormat":99},{"version":"cc1d1afea5fa8d8ea53b9c338e5f3e78e873edd1540fad0581584e7bf4c5f689","impliedFormat":99},{"version":"fbf3f6d79821ff4adfc5c0429a9740cf1d7e5f54bb96f4fd2cc861a2c4627dd5","impliedFormat":99},{"version":"526b4c93c14f3ab5d8359028eff9b3163ab1e245438ee151f6c9870c3962e47c","impliedFormat":99},{"version":"9e799be8f86acf28e5d3a391ed1dcdd0f0c7fc0abfdc8ffb3f71df8b9d8c2805","impliedFormat":99},{"version":"f9ed5bf3e750c814f9421d8bf2164360ff3d2d0edbd566f7b835659598b739f9","impliedFormat":99},{"version":"38fcea8a14d1464a4b86e144112c18d142a786889d123ef2f063a9792d4c969d","impliedFormat":99},{"version":"aba76cc946da09633f94ef50c3229002a1cf921b9d4c55b17eb7d9ebcaac8f3a","impliedFormat":99},{"version":"5bc2fc3deeeb3f637d172c09340f9f56af98fc7b21277671b5f139e1f10decc7","impliedFormat":99},{"version":"491ec10156c847dff8aff5f37a5c044f80de8278961ac3cfaf3acf57685a5b55","impliedFormat":99},{"version":"8887f6ccfc6af80b3e2253c408b39cd3734cde192ea36da065908826b8d4eab5","impliedFormat":99},{"version":"f86bc26bfea569cff26727c31e7a3b8bbdb6dab92684e0043a9e4cb71c008c48","impliedFormat":99},{"version":"29215d204bad7125c0978bcc76354a81f662b858c3f425263c90705ce3258223","impliedFormat":99},{"version":"5285c98045f06fe92818a0618974be7b3a73030bae18db857e73a9b569b4e0ec","impliedFormat":99},{"version":"6e0cdada9350b73f261ec2ce2f234aaef408b8b47607a73ec826d942338934d9","impliedFormat":99},{"version":"652c61a5fcccd2f1bc84258ed4631f155dc4e4b1d9fc2d45b73b2d49f246d196","impliedFormat":99},{"version":"f51c7eb51332761761aed350d17fa6b598b079618f9339570b258d0cedc343f4","impliedFormat":99},{"version":"95c650a8a4f6cdff2f8bda2f3410249181a4865bc96baa0965a3591e724d1a54","impliedFormat":99},{"version":"5ac0c6a8a8c8516ff9bf19df12431b996ba91cd4a495f8c9b2ec6226d8d7af84","impliedFormat":99},{"version":"40f49fdb6df880961ab9c71f0b092ef3a57403c2c93f02d201ab5b42b63bd835","impliedFormat":99},{"version":"4b33bbb30f1d83dd324e0dbcf211bc23af274dc7eed4f069d488def46618ee77","impliedFormat":99},{"version":"7274c5fba9ce81f169f236a0dd4435a035612aaf2057edfa3d5a741154be90e2","impliedFormat":99},{"version":"d5622666a1558d8140fc711377f15cf973b9270da3f2ea297d2b2894478d67a1","impliedFormat":99},{"version":"cd53c8bb1fd87ecc3b59577a2a8c69761aa2715064cfa974375817b8b9a0b57f","impliedFormat":99},{"version":"b275f323e4495b432d7903e43540badba766c5cb7e0403d08a642aba18958172","impliedFormat":99},{"version":"daab60287791d6863803003c9cefd8523a04a698b4d4fa4ac763750047aa7d0f","impliedFormat":99},{"version":"29814cecbbb443f88a0b27fffd7674dcaceba7fbb4c78628808f846e13d23dba","impliedFormat":99},{"version":"e6ad4046411730a1b43b518cd9c5c2c7faefe8390de7bce4a18227e67ba7cdec","impliedFormat":99},{"version":"963324b64f1bb989150e2dc6bfec90af490679fb0da9e3cd902b1293b7914456","impliedFormat":99},{"version":"21c04ac6beedf4ac4095d8f9079743d94cfc4bb98b41c27c28a2c9d7bf34153a","impliedFormat":99},{"version":"66d788d9bdc8746e8ea833d68830e874c4be23b4d42aa9606c06a4ec73a6e8bf","impliedFormat":99},{"version":"c48f0225d9a8882b6b87d8c73839b76250de0649128b1f2ee63f2a90496a505a","impliedFormat":99},{"version":"ab98970abc7dc033fca9cb8d495d5a5385c306c29cc88cf53439759ad21dfece","impliedFormat":99},{"version":"b4f758a4a022423d9bbe7f1fb0904d110ca4ee1b05611bc614b8fcf72ddf60ab","impliedFormat":99},{"version":"9734bca266e9175e54de464e1cfa73c23fc436516ea938b7e879ce094268833c","impliedFormat":99},{"version":"2274fadc52605a2cbe59f24b70f8f28a825274fad7c5701dbe72a159f751ce66","impliedFormat":99},{"version":"1a0180a67d5d259034c9ee0201a83a5bdd50dfae2b685b527aec15965078f131","impliedFormat":99},{"version":"b9c63995eeb9b6b7da7ccefe417deb433ebeccfb4b4a6e4d312863653979a73c","impliedFormat":99},{"version":"abe2decebbc431a855cad5b98d3f0665e8f37a1008302426619156e5d979e1d2","impliedFormat":99},{"version":"a169b9a43cb3b79fb2cadf4ecee6801dd5e127d892784192db618680ebd2c849","impliedFormat":99},{"version":"9a4e3d778baadf091b01a8e1746ac355add9892ff99de44d2053d1a54d826af8","impliedFormat":99},{"version":"4ec1f760451c58ed62f7a4668cf72bd337bba7d9271f3e7f87f73fbbebf27114","impliedFormat":99},{"version":"e6e7b2074218f002421fb70fa27d696c6290b80b2b64494b69cdc6921a295226","impliedFormat":99},{"version":"347a9e6919aa85c3e6bca3312b933a5be3b88e32ddb9cba1827ec20fe47fc3d6","impliedFormat":99},{"version":"11ca32427d9b2993b1b26d1838dd83156a3726228fe7a847e48335f0d4e98d84","impliedFormat":99},{"version":"0727c101dfff99bf87f5e4d9fa545397208e2b422f12925c78f9385c5a05106f","impliedFormat":99},{"version":"77471ce3d064ddd6a18fd4ddbb9e9fa8a02f82f2998e2c2fc28e4697ee27cbe2","impliedFormat":99},{"version":"98814cc9c86563d3055710cc1ec1016881740617b5c7477a98691498e9d22325","impliedFormat":99},{"version":"52b18322448a17aff3cc0cdc2744b694547709bd2519019c6d0c3eb07fa70eca","impliedFormat":99},{"version":"d9a5b0ce85ba99ebdc6f331cf76fcb5c53deef955321aabc43908a7d6228c9cc","impliedFormat":99},{"version":"229393564401c3745dfa736ae6f3a4acf8cb77ddf1dbaeb71c9a92cb7712ed17","impliedFormat":99},{"version":"f5f0ab6e8aafcae7c6d44e240ef2bc585c74da0cf6589fbca7a955c54f42434f","impliedFormat":99},{"version":"40b8a3b16023234d53f73476b7000a9860ba0f7151c419cbd9379be0bb55326a","impliedFormat":99},{"version":"b7231373d77b515c6fe5d94c98d19194ca500b0079560c611ed6447efbfd81bb","impliedFormat":99},{"version":"27dd17965218bb0f21c37dae0585ce7ea1b218da55ac9e5e9b278966efc7117f","impliedFormat":99},{"version":"1863dc3f7b0148da166c778c1be430bc28bdfc521471da7e0f477da2c383e367","impliedFormat":99},{"version":"29fd59d2fa79e806ee095f8f717fad67618e5aec456e3af633b0ccffff18607e","impliedFormat":99},{"version":"e4462bfa3a3e937cf99e8962eba84d58a5da6373568e5bc9d95a93d985c0cbdd","impliedFormat":99},{"version":"b558a33c045ec8b2172592167c00bd509c87f94fc1bd823aa3653e12f41c8cd6","impliedFormat":99},{"version":"2070498773ac26829518b81113862f466480fec3c70872bb98aac2dc4399dc5f","impliedFormat":99},{"version":"2810c9e539772dddb3cab5c372dfebfc0b43dffed5379829a6ad0e46b2417b7d","impliedFormat":99},{"version":"693bf93edd54139cb3ae52764dd90a597a7470c09c3dfa10796697aeab89dda0","impliedFormat":99},{"version":"77746154cc6097685d47e9549c2765ddffcc097a37f1757f0ab47ecf127e4e90","impliedFormat":99},{"version":"770e725bcc0eecb4f43c57081834059b0ec75c4fae2fc9fc2372ec8c6defeeea","impliedFormat":99},{"version":"c4de476eb5a3a4529416793916d895d1eb5bdab6816e7eee28242a20beb0ba3e","impliedFormat":99},{"version":"8b6ac355c0533163d6de2a8195d7487de55f224356604ea1287f5eaafa800f77","impliedFormat":99},{"version":"871f0aa6805bfdb7016ef6d9b7d91bea186313ae0d8b5ec68e4336612b42247a","impliedFormat":99},{"version":"b420afbf1aa414f8a1a74df17c92f85f819b02f514bac968ec4108b9e104cbe6","impliedFormat":99},{"version":"9954e6ed4d2b7db85ee78a957ba40ad3c101822b37fee9bf33b37dfe6acbb2d7","impliedFormat":99},{"version":"d0ab5357dc3d58f1b358a041b2817336dd9bc7b82e9100038fe2682fbe6c55f2","impliedFormat":99},{"version":"528c8fa9f14096f9b1185efd50f2109ebb4a8d8b4cb6f5e57a62696393640b76","impliedFormat":99},{"version":"e9821512a916787f2b8285fd216cb13574f05652f7f2e909e7aed1da672ca5a3","impliedFormat":99},{"version":"2160af385c6b935a102df656649e44fec4730aa8e7731a9d26ecde30b56bd4f9","impliedFormat":99},{"version":"6fa95db16fdb2fe0a0ded0dc65291fd79102375895100343e24dcbc68ba93fb0","impliedFormat":99},{"version":"1ed96ef0d61cebf36f68a6e3bd3cf75f235f4484eede30d76f460f028fcf8491","impliedFormat":99},{"version":"916d34997267951fe5ce374c97b8fab49bac659126cadffd76036ed76918d48c","impliedFormat":99},{"version":"1baafd7898f8c55e305f3f3ae65041b865a2470ab557ccde11a60ebf0dc65a5a","impliedFormat":99},{"version":"585ab0e81f9f0ee6d87bf554940b9815f24363736d05749a951ccc56aa3b4434","impliedFormat":99},{"version":"bbb22ad18701d95ffeb10b73218a0a35641efd08bdd7bc5911a99f4c3611fb7e","impliedFormat":99},{"version":"78aa0f3ddc88336018634d454df3204f85c2b0ec3a4190f9e5ca872e6cfd724e","impliedFormat":99},{"version":"e6755349321dbccf04161152fddf3abe20a4e7760c210c867eb75a2c1ffc4356","impliedFormat":99},{"version":"c1df7a514cbc1ae6f36639281e29284701b98e256167bcd88c1a61c7439463be","impliedFormat":99},{"version":"7cd2fde35bdf275bb5d85af1aa2c48cdba1c11af0bd35f83702fe44d7d417746","impliedFormat":99},{"version":"8f978bf43cab30807eda385f94292d5cb0870f4df4e932c839ea112c17a67f8b","impliedFormat":99},{"version":"db8b974165a91b057c583c8fed26dc838322a3e7d97e5390ee75a05071f80dc1","impliedFormat":99},{"version":"fe48e0e1908f91ec0b692a0f6b0710e3cc7e8609b70615361dd36bce2c2c93b2","impliedFormat":99},{"version":"235e7076e6d3a1897974a1ba6eee13c6e16cdb0b0e3b344769f8b9afceb90da5","impliedFormat":99},{"version":"412e4e2053c07a103f91926f71a7411807eedcc949b2ec7bc0320cc4907c29dd","impliedFormat":99},{"version":"3ce06809910a2644158aeb3902edabd9532d55a68358838dcda5699301d18f65","impliedFormat":99},{"version":"dba55de47c3b8ab9fa6196da346e8961d8013424934b2e5aa5e1d44da691592e","impliedFormat":99},{"version":"4c6a6c1681a038d6b1304143a5878fd67146d0f1c592ce1a47605a4b1088cdae","impliedFormat":99},{"version":"6ff417b0549025b54909d40180058fc3d67954eee0b7eb6845bf8ee0a371f3e4","impliedFormat":99},{"version":"7fbc5153c50e46924f60a1886937caab58716a63e3160387be5b9467dd517899","impliedFormat":99},{"version":"dd6b35cbf377167300420c0f0dd70c14a4337421c24dedfa927023eef8b98036","impliedFormat":99},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","impliedFormat":99},{"version":"4567158e839cb913b45372e2388a5b22b98adbc251de4469eee411db1750657b","impliedFormat":99},{"version":"8935e3741e5bc8ba12bbf48e1c0e3f7afd1bd8558e650ffaf525c2a22c4a7b12","impliedFormat":99},"6f8df94098f4a3e2778242ded8fcbbbccf207d86e0eb0bc1943b1cf32f838d24","883c4adfa6fd93a48adc2ae333c525bae3cbfc17fff93f968e5705ee57cd125e","b86123393310b7cf24fe03c2ffc09d169796554b6be3f3a6056602be2d9feaf2","6d9bba2a4352fed1b482b58178092616b285b0beaedc8d87100eb560f47cffba","c1f2e9a35f3d6987a47135db6c2084f3b563b3ecc667c169e92f75a6327a3b60",{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc2110f7decca6bfb9392e30421cfa1436479e4a6756e8fec6cbc22625d4f881","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"4137ebf04166f3a325f056aa56101adc75e9dceb30404a1844eb8604d89770e2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"98498b101803bb3dde9f76a56e65c14b75db1cc8bec5f4db72be541570f74fc5","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"d2ae155afe8a01cc0ae612d99117cf8ef16692ba7c4366590156fdec1bcf2d8c","impliedFormat":1},{"version":"3f5e5d9be35913db9fea42a63f3df0b7e3c8703b97670a2125587b4dbbd56d7c","impliedFormat":1},{"version":"8caeb65fdc3bfe0d13f86f67324fcb2d858ed1c55f1f0cce892eb1acfb9f3239","impliedFormat":1},{"version":"57c23df0b5f7a8e26363a3849b0bc7763f6b241207157c8e40089d1df4116f35","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b8bc0c17b54081b0878673989216229e575d67a10874e84566a21025a2461ee","impliedFormat":1},{"version":"5b0db5a58b73498792a29bfebc333438e61906fef75da898b410e24e52229e6f","impliedFormat":1},{"version":"dbe055b2b29a7bab2c1ca8f259436306adb43f469dca7e639a02cd3695d3f621","impliedFormat":1},{"version":"1678b04557dca52feab73cc67610918a7f5e25bfdba3e7fa081acd625d93106d","impliedFormat":1},{"version":"e3905f6902f0b69e5eefc230daa69fdd4ab707a973ec2d086d65af1b3ea47ef0","impliedFormat":1},{"version":"2ea729503db9793f2691162fec3dd1118cab62e96d025f8eeb376d43ec293395","impliedFormat":1},{"version":"9ec87fea42b92894b0f209931a880789d43c3397d09dd99c631ae40a2f7071d1","impliedFormat":1},{"version":"c68e88cdfadfb6c8ba5fc38e58a3a166b0beae77b1f05b7d921150a32a5ffb8d","impliedFormat":1},{"version":"2bc7aa4fba46df0bd495425a7c8201437a7d465f83854fac859df2d67f664df3","impliedFormat":1},{"version":"41d17e1ad9a002feb11c8cdd2777e5bbc0cdb1e3f595d237e4dded0b6949983b","impliedFormat":1},{"version":"07e4e61e946a9c15045539ecd5f5d2d02e7aab6fa82567826857e09cf0f37c2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c4714ccc29149efb8777a1da0b04b8d2258f5d13ddbf4cd3c3d361fb531ac86","impliedFormat":1},{"version":"3ff275f84f89f8a7c0543da838f9da9614201abc4ce74c533029825adfb4433d","impliedFormat":1},{"version":"0eb5d0cbf09de5d34542b977fd6a933bb2e0817bffe8e1a541b2f1ad1b9af1ff","impliedFormat":1},{"version":"f9713757bcdfa4d58b48c0fb249e752c94a3eee8bf4532b906094246ac49ef88","impliedFormat":1},{"version":"2c2bdaa1d8ead9f68628d6d9d250e46ee8e81aa4898b4769a36956ae15e060fe","impliedFormat":1},{"version":"c32c840c62d8bd7aeb3147aa6754cd2d922b990a6b6634530cb2ebdce5adc8e9","impliedFormat":1},{"version":"e1c1a0b4d1ead0de9eca52203aeb1f771f21e6238d6fcd15aa56ac2a02f1b7bf","impliedFormat":1},{"version":"82b91e4e42e6c41bc7fc1b6c2dc5eba6a2ba98375eb1f210e6ff6bba2d54177e","impliedFormat":1},{"version":"6fe28249ac0c7bc19a79aa9264baf00efbd080e868dbe1d3052033ad1c64f206","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbed824fec91efefc7bbdcb8b43d1a531fdbebd0e2ef19481501ff365a93cb70","impliedFormat":1},{"version":"d0716593b3f2b0451bcf0c24cfa86dec2235c325c89f201934248b7c742715fc","impliedFormat":1},{"version":"ec501101c2a96133a6c695f934c8f6642149cc728571b29cbb7b770984c1088e","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"2991bca2cc0f0628a278df2a2ccdb8d6cbcb700f3761abbed62bba137d5b1790","impliedFormat":1},{"version":"ce8653341224f8b45ff46d2a06f2cacb96f841f768a886c9d8dd8ec0878b11bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"230763250f20449fa7b3c9273e1967adb0023dc890d4be1553faca658ee65971","impliedFormat":1},{"version":"c3e9078b60cb329d1221f5878e88cecfa3e74460550e605a58fcfb41a66029ff","impliedFormat":1},{"version":"a74edb3bab7394a9dbde529d60632be590def2f5f01024dbd85441587fbfbbe0","impliedFormat":1},{"version":"0ea59f7d3e51440baa64f429253759b106cfcbaf51e474cae606e02265b37cf8","impliedFormat":1},{"version":"bc18a1991ba681f03e13285fa1d7b99b03b67ee671b7bc936254467177543890","impliedFormat":1},{"version":"00049ccc87f3f37726db03c01ca68fe74fd9c0109b68c29eb9923ebec2c76b13","impliedFormat":1},{"version":"fa94bbf532b7af8f394b95fa310980d6e20bd2d4c871c6a6cb9f70f03750a44b","impliedFormat":1},{"version":"68d3f35108e2608b1f2f28b36d19d7055f31c4465cc5692cbd06c716a9fe7973","impliedFormat":1},{"version":"a6d543044570fbeed13a7f9925a868081cd2b14ef59cdd9da6ae76d41cab03d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"7fa2214bb0d64701bc6f9ce8cde2fd2ff8c571e0b23065fa04a8a5a6beb91511","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"eab2f3179607acb3d44b2db2a76dd7d621c5039b145dc160a1ee733963f9d2f5","impliedFormat":1},{"version":"841983e39bd4cbb463be385e92fda11057cab368bf27100a801c492f1d86cbaa","impliedFormat":1},{"version":"6f5383b3df1cdf4ff1aa7fb0850f77042b5786b5e65ec9a9b6be56ebfe4d9036","impliedFormat":1},{"version":"62fc21ed9ccbd83bd1166de277a4b5daaa8d15b5fa614c75610d20f3b73fba87","impliedFormat":1},{"version":"e4156ddb25aa0e3b5303d372f26957b36778f0f6bbd4326359269873295e3058","affectsGlobalScope":true,"impliedFormat":1},{"version":"cc1b433a84cae05ddc5672d4823170af78606ad21ecef60dbc4570190cbf1357","impliedFormat":1},{"version":"9d3821bc75c59577e52643324cec92fc2145642e8d17cf7ee07a3181f21d985d","impliedFormat":1},{"version":"7f78cfb2b343838612c192cb251746e3a7c62ac7675726a47e130d9b213f6580","impliedFormat":1},{"version":"201db9cf1687fab1adf5282fcba861f382b32303dc4f67c89d59655e78a25461","impliedFormat":1},{"version":"c77fb31bc17fd241d3922a9f88c59e3361cdf76d1328ba9412fc6bf7310b638d","impliedFormat":1},{"version":"0a20eaf2e4b1e3c1e1f87f7bccb0c936375b23b022baeea750519b7c9bc6ce83","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"a16b91b27bd6b706c687c88cbc8a7d4ee98e5ed6043026d6b84bda923c0aed67","impliedFormat":1},{"version":"694b812e0ed11285e8822cf8131e3ce7083a500b3b1d185fff9ed1089677bd0a","impliedFormat":1},{"version":"99ab6d0d660ce4d21efb52288a39fd35bb3f556980ec5463b1ae8f304a3bbc85","impliedFormat":1},{"version":"6eeded8c7e352be6e0efb83f4935ec752513c4d22043b52522b90849a49a3a11","impliedFormat":1},{"version":"6c1ad90050ffbb151cacc68e2d06ea1a26a945659391e32651f5d42b86fd7f2c","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1},{"version":"3b89216a7e38a454985ad17bb2ff85792837dc812f2a89fa5f60ad0a2e216fa7","impliedFormat":99},{"version":"16fe60bb544cfedfd2b5bb2f7d0b3957be7978706d57d9f06edc9c0c8dbdba23","impliedFormat":99},{"version":"82179358c2d9d7347f1602dc9300039a2250e483137b38ebf31d4d2e5519c181","impliedFormat":99},{"version":"c73fdf42528325dd17940937ed787b15ae3445c6a2dae1a2b74bc4d87d337ca2","impliedFormat":99},{"version":"e8e17dfef3cfa9f0847ac93dd535a9896af7fb57c1a1b164484bb1b0ee4a25d8","impliedFormat":99},{"version":"51d2ffea2d1ee4a81c775938588c1e16620281adb60cbc26579a2fc6baa10bd2","impliedFormat":99},{"version":"148debd12783ded0a60d115daeacd8136f77757ae89a05c4e18de6dd77646fd2","impliedFormat":99},{"version":"0088b02dca63c47b273a140d0a3944bdc6dc2eb765fff0ca98e3c3a2786b3a5a","impliedFormat":99},{"version":"a651d06b780fa354231f19b040cbcde484bede3218885752b4f9e9a8f72d3b5f","impliedFormat":99},{"version":"06e26f75bed4c8389a8a63f0e6d6a9068038873dc95d8d1338e8c370a0ae8bc3","impliedFormat":99},{"version":"a2155e2675fd1af52b0b70779371c28611cdd1076b29d0f68bf93b983e5ddce0","impliedFormat":99},{"version":"a413e4b0b99280e1e58f5fe7b2b585e8a9be4996df8c58585399c9e2ca8a683e","impliedFormat":99},{"version":"609ab2c225766bc0851251c1db0fd5492673e190074045d21dc5dc7c3c46d785","impliedFormat":99},{"version":"c074e054c9db79055d37d7d70131e9a3234b8186773b3edb617c13f80bcf8774","impliedFormat":99},{"version":"7d3e062a778b8f5ea4f0cac7e925e31f88e6739812ebc5f827474324a4048f14","impliedFormat":99},{"version":"7f3857dc5cfe1e5e977edb14e931d9939a952e8e41997263a927f8f0299ea652","impliedFormat":99},{"version":"3559624d0102d10d7765c292c60ccbc229541534db32061e06df88bfe1064636","impliedFormat":99},{"version":"5a9834c603c65aee5cba0c1d6b3c7aee85cdc7862832a23165c6aa4139c165f2","impliedFormat":99},{"version":"a7d7b5fa83cd7b3b4c2aa73bc29e7cbd53d5690b74f6fb39a5558af0a94967ba","impliedFormat":99},{"version":"4e003c868b0d8f8ad200b96cbc653e18e513fa23e1c19c4fe3cc25d4394efc47","impliedFormat":99},{"version":"605450898939e8abce51e8085a41b60640278337a969c33cd6b169e7c4f9c3f2","impliedFormat":99},{"version":"e0864480ea083087d705f9405bd6bf59b795e8474c3447f0d6413b2bce535a09","impliedFormat":99},{"version":"e67cbea16f1994af89efd700542dbf3828a46a52b29e4d67e801bd7869dc103c","impliedFormat":99},{"version":"f582b0fcbf1eea9b318ab92fb89ea9ab2ebb84f9b60af89328a91155e1afce72","impliedFormat":99},{"version":"402e5c534fb2b85fa771170595db3ac0dd532112c8fa44fc23f233bc6967488b","impliedFormat":1},{"version":"52dcc257df5119fb66d864625112ce5033ac51a4c2afe376a0b299d2f7f76e4a","impliedFormat":1},{"version":"e5bab5f871ef708d52d47b3e5d0aa72a08ee7a152f33931d9a60809711a2a9a3","impliedFormat":1},{"version":"e16dc2a81595736024a206c7d5c8a39bfe2e6039208ef29981d0d95434ba8fcf","impliedFormat":1},{"version":"cc4a4903fb698ca1d961d4c10dce658aa3a479faf40509d526f122b044eaf6a4","impliedFormat":1},{"version":"19ee8416e6473ed6c7adb868fa796b5653cf0fa2a337658e677eaa0d134388c3","impliedFormat":1},{"version":"1328ab4e442614b28cdb3d4b414cf68325c0da0dca07287a338d0654b7a00261","impliedFormat":1},{"version":"a039dc21f045919f3cbee2ec13812cc6cc3eebc99dae4be00973230f468d19a6","impliedFormat":1},{"version":"3fbe57af01460e49dcd29df55d6931e1672bc6f1be0fb073d11410bc16f9037d","impliedFormat":1},{"version":"f760be449e8562ec5c09bb5187e8e1eabf3c113c0c58cddda53ef8c69f3e2131","impliedFormat":1},{"version":"44325ed13294fce6ab825b82947bbeed2611db7dad9d9135260192f375e5a189","impliedFormat":1},{"version":"e392e8fb5b514eafc585601c1d781485aa6dd6a320e75daf1064a4c6918a1b45","impliedFormat":1},{"version":"46e4a36e8ddbdfb4e7330e11c81c970dc8b218611df9183d39c41c5f8c653b55","impliedFormat":1},{"version":"370bde134aa8c2abc926d0e99d3a4d5d5dba65c6ee65459137e4f02670cbf841","impliedFormat":1},{"version":"6332f565867cf4a740a70e30f31cefba37ef7cebcf74f22eab8d744fde6d193e","impliedFormat":1},{"version":"2977b7884aedc895a1d0c9c210c7cf3272c29d6959a08a6fa3ff71e0aff08175","impliedFormat":1},{"version":"17f2922d41ddd032830a91371c948cd9ce903b35c95adca72271a54584f19b0b","impliedFormat":1},{"version":"3eed76ede2a1a14d7c9bb0a642041282dcc264811139d3dd275c9fe14efc9840","impliedFormat":1},{"version":"e3cf0611709328b449ec13f8c436712d62003620ce480139fae46ce001c2ee9f","impliedFormat":1},{"version":"8d369483f0c2b9ee388129cfdb6a43bc8112b377e86a41884bd06e19ce04f4c1","impliedFormat":99},{"version":"3fd8a5aefd8c3feb3936ca66f5aa89dff7bf6e6537b4158dbd0f6e0d65ed3b9e","impliedFormat":1},{"version":"a18642ddf216f162052a16cba0944892c4c4c977d3306a87cb673d46abbb0cbf","impliedFormat":1},{"version":"41c41c6e90133bb2a14f7561f29944771886e5535945b2b372e2f6ed6987746e","impliedFormat":1},{"version":"4ec16d7a4e366c06a4573d299e15fe6207fc080f41beac5da06f4af33ea9761e","impliedFormat":99},{"version":"960bd764c62ac43edc24eaa2af958a4b4f1fa5d27df5237e176d0143b36a39c6","affectsGlobalScope":true,"impliedFormat":99},{"version":"f093d4bd6a9267be5f8ecbfbca19f4f3359b3839883206150c5d833606569e84","impliedFormat":99},{"version":"59f8dc89b9e724a6a667f52cdf4b90b6816ae6c9842ce176d38fcc973669009e","affectsGlobalScope":true,"impliedFormat":99},{"version":"4a13397dffad4475c45c70fde584c925fe8c9218b3c7ab94397b68fc434f63b6","impliedFormat":99},{"version":"05e2bf342be0c23c12213d58095e33848101c44f6e6d836902475f773d17a2a6","impliedFormat":99},{"version":"7757c6ca7a8ad1992401c6aff33633d6a088515be5a39d7ee188b35bfc8e5f8e","impliedFormat":99},"327dad0a596efd15c6f7f9a96fd4faaa1d4cb8afa13382cdd88078d9c84425f8"],"root":[[218,222],399],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":false,"composite":true,"module":99,"strict":true,"target":9,"verbatimModuleSyntax":true},"referencedMap":[[349,1],[351,1],[352,1],[354,2],[353,1],[355,3],[168,4],[173,5],[170,5],[179,5],[178,4],[175,4],[177,6],[176,6],[171,1],[181,7],[174,1],[180,5],[172,1],[169,8],[167,1],[182,9],[165,10],[166,10],[397,11],[398,12],[97,1],[285,13],[286,13],[287,14],[225,15],[288,16],[289,17],[290,18],[223,1],[291,19],[292,20],[293,21],[294,22],[295,23],[296,24],[297,24],[298,25],[299,26],[300,27],[301,28],[226,1],[224,1],[302,29],[303,30],[304,31],[344,32],[305,33],[306,34],[307,33],[308,35],[309,36],[310,37],[311,38],[312,38],[313,38],[314,39],[315,40],[316,41],[317,42],[318,43],[319,44],[320,44],[321,45],[322,1],[323,1],[324,46],[325,47],[326,46],[327,48],[328,49],[329,50],[330,51],[331,52],[332,53],[333,54],[334,55],[335,56],[336,57],[337,58],[338,59],[339,60],[340,61],[341,62],[227,33],[228,1],[229,63],[230,64],[231,1],[232,65],[233,1],[276,66],[277,67],[278,68],[279,68],[280,69],[281,1],[282,16],[283,70],[284,67],[342,71],[343,72],[90,73],[94,74],[91,1],[92,75],[93,76],[133,1],[214,1],[106,77],[107,10],[109,78],[108,77],[105,10],[135,79],[137,80],[138,81],[139,81],[136,10],[141,82],[140,79],[134,83],[100,10],[210,84],[211,85],[209,1],[101,10],[103,86],[104,87],[102,1],[125,88],[126,88],[127,88],[128,88],[130,89],[131,89],[129,89],[132,90],[124,10],[110,10],[113,91],[112,1],[114,92],[115,10],[116,10],[117,93],[118,93],[119,93],[120,93],[121,93],[122,93],[123,94],[111,1],[197,95],[198,95],[196,1],[200,96],[199,95],[201,97],[146,98],[147,98],[144,99],[145,99],[164,100],[157,101],[159,101],[161,101],[158,101],[155,101],[154,1],[153,101],[160,101],[152,1],[156,101],[163,102],[162,1],[143,103],[151,101],[150,1],[148,101],[149,101],[195,104],[194,10],[192,105],[193,106],[202,10],[203,1],[204,107],[184,108],[185,109],[186,109],[190,110],[183,111],[187,112],[189,1],[188,112],[142,1],[212,103],[206,113],[207,114],[208,115],[205,83],[213,116],[217,117],[215,1],[191,10],[216,118],[95,119],[389,1],[391,120],[390,1],[98,1],[96,1],[385,121],[383,122],[384,123],[372,124],[373,122],[380,125],[371,126],[376,127],[386,1],[377,128],[382,129],[388,130],[387,131],[370,132],[378,133],[379,134],[374,135],[381,121],[375,136],[394,137],[357,138],[358,139],[361,140],[350,141],[360,142],[356,143],[348,1],[362,144],[363,145],[369,1],[99,146],[87,1],[88,1],[14,1],[16,1],[15,1],[2,1],[17,1],[18,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[3,1],[25,1],[26,1],[4,1],[27,1],[31,1],[28,1],[29,1],[30,1],[32,1],[33,1],[34,1],[5,1],[35,1],[36,1],[37,1],[38,1],[6,1],[42,1],[39,1],[40,1],[41,1],[43,1],[7,1],[44,1],[49,1],[50,1],[45,1],[46,1],[47,1],[48,1],[8,1],[54,1],[51,1],[52,1],[53,1],[55,1],[9,1],[56,1],[57,1],[58,1],[60,1],[59,1],[61,1],[62,1],[10,1],[63,1],[64,1],[65,1],[11,1],[66,1],[67,1],[68,1],[69,1],[70,1],[71,1],[12,1],[72,1],[73,1],[74,1],[75,1],[76,1],[1,1],[77,1],[78,1],[13,1],[79,1],[80,1],[81,1],[82,1],[83,1],[84,1],[85,1],[86,1],[89,1],[252,147],[264,148],[249,149],[265,150],[274,151],[240,152],[241,153],[239,154],[273,155],[268,156],[272,157],[243,158],[261,159],[242,160],[271,161],[237,162],[238,156],[244,163],[245,1],[251,164],[248,163],[235,165],[275,166],[266,167],[255,168],[254,163],[256,169],[259,170],[253,171],[257,172],[269,155],[246,173],[247,174],[260,175],[236,150],[263,176],[262,163],[250,174],[258,177],[267,1],[234,1],[270,178],[346,179],[396,180],[365,181],[347,179],[345,1],[364,182],[395,1],[393,1],[366,1],[392,183],[359,184],[368,1],[367,185],[220,186],[221,187],[222,10],[218,187],[219,1],[399,188]],"semanticDiagnosticsPerFile":[[167,[{"start":4583,"length":4,"code":2416,"category":1,"messageText":{"messageText":"Property 'exec' in type 'EventResolver' is not assignable to the same property in base type 'IEventBus'.","category":1,"code":2416,"next":[{"messageText":"Type '(name: keyof T, ev: CommonEvent) => Promise' is not assignable to type '(name: keyof T, ev: T[keyof T]) => Promise'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'ev' and 'ev' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'T[keyof T]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string] | T[number] | T[symbol]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string]' is not assignable to type 'CommonEvent'.","category":1,"code":2322}]}]}]}]}]}},{"start":4860,"length":4,"code":2416,"category":1,"messageText":{"messageText":"Property 'exec' in type 'EventBusRouter' is not assignable to the same property in base type 'IEventBus'.","category":1,"code":2416,"next":[{"messageText":"Type '(name: keyof T, ev: CommonEvent) => Promise' is not assignable to type '(name: keyof T, ev: T[keyof T]) => Promise'.","category":1,"code":2322,"next":[{"messageText":"Types of parameters 'ev' and 'ev' are incompatible.","category":1,"code":2328,"next":[{"messageText":"Type 'T[keyof T]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string] | T[number] | T[symbol]' is not assignable to type 'CommonEvent'.","category":1,"code":2322,"next":[{"messageText":"Type 'T[string]' is not assignable to type 'CommonEvent'.","category":1,"code":2322}]}]}]}]}]}}]],[218,[{"start":261,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."},{"start":305,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."},{"start":354,"length":3,"code":2339,"category":1,"messageText":"Property 'env' does not exist on type 'ImportMeta'."}]],[222,[{"start":7,"length":11,"messageText":"Cannot find module or type declarations for side-effect import of './app.css'.","category":1,"code":2882}]]],"affectedFilesPendingEmit":[220,221,222,218,219,399],"emitSignatures":[218,219,220,221,222,399],"version":"6.0.3"} \ No newline at end of file