@masterteam/governance 0.0.13 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2910,7 +2910,7 @@ class GovernanceRulesList {
2910
2910
  return String(ruleType.key ?? ruleType.type ?? '').trim();
2911
2911
  }
2912
2912
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: GovernanceRulesList, deps: [], target: i0.ɵɵFactoryTarget.Component });
2913
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: GovernanceRulesList, isStandalone: true, selector: "mt-governance-rules-list", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "scopeCol", first: true, predicate: ["scopeCol"], descendants: true, isSignal: true }, { propertyName: "whenCol", first: true, predicate: ["whenCol"], descendants: true, isSignal: true }, { propertyName: "priorityCol", first: true, predicate: ["priorityCol"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"getRuleTypeLabel(row.ruleTypeKey)\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon class=\"text-lg\" [icon]=\"getAppliesToIcon(row)\"></mt-icon>\r\n <span>{{ getAppliesToLabel(row) }}</span>\r\n @if (\r\n row.targetModuleKey &&\r\n getAppliesToLabel(row) !== t(\"wizard.applies-to.phase-gate.label\")\r\n ) {\r\n <span class=\"text-slate-500\">&rarr; {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #whenCol let-row>\r\n <span>{{ getWhenLabel(row) }}</span>\r\n </ng-template>\r\n\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"governance-rules-list-table\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "exportFilename", "actionShape", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "component", type: Chip, selector: "mt-chip", inputs: ["label", "icon", "image", "removable", "removeIcon", "styleClass"], outputs: ["onRemove", "onImageError"] }] });
2913
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.8", type: GovernanceRulesList, isStandalone: true, selector: "mt-governance-rules-list", viewQueries: [{ propertyName: "typeCol", first: true, predicate: ["typeCol"], descendants: true, isSignal: true }, { propertyName: "scopeCol", first: true, predicate: ["scopeCol"], descendants: true, isSignal: true }, { propertyName: "whenCol", first: true, predicate: ["whenCol"], descendants: true, isSignal: true }, { propertyName: "priorityCol", first: true, predicate: ["priorityCol"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"getRuleTypeLabel(row.ruleTypeKey)\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon class=\"text-lg\" [icon]=\"getAppliesToIcon(row)\"></mt-icon>\r\n <span>{{ getAppliesToLabel(row) }}</span>\r\n @if (\r\n row.targetModuleKey &&\r\n getAppliesToLabel(row) !== t(\"wizard.applies-to.phase-gate.label\")\r\n ) {\r\n <span class=\"text-slate-500\">&rarr; {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #whenCol let-row>\r\n <span>{{ getWhenLabel(row) }}</span>\r\n </ng-template>\r\n\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"governance-rules-list-table\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: Table, selector: "mt-table", inputs: ["filters", "data", "columns", "rowActions", "size", "showGridlines", "stripedRows", "selectableRows", "clickableRows", "generalSearch", "lazyLocalSearch", "showFilters", "loading", "updating", "lazy", "lazyLocalSort", "lazyTotalRecords", "reorderableColumns", "reorderableRows", "dataKey", "storageKey", "storageMode", "exportable", "exportFilename", "actionShape", "tableLayout", "tabs", "tabsOptionLabel", "tabsOptionValue", "activeTab", "actions", "paginatorPosition", "alwaysShowPaginator", "rowsPerPageOptions", "pageSize", "currentPage", "first", "filterTerm"], outputs: ["selectionChange", "cellChange", "lazyLoad", "columnReorder", "rowReorder", "rowClick", "filtersChange", "activeTabChange", "onTabChange", "pageSizeChange", "currentPageChange", "firstChange", "filterTermChange"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "component", type: Chip, selector: "mt-chip", inputs: ["label", "icon", "image", "removable", "removeIcon", "styleClass"], outputs: ["onRemove", "onImageError"] }] });
2914
2914
  }
2915
2915
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.8", ngImport: i0, type: GovernanceRulesList, decorators: [{
2916
2916
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.models.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.mapper.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.config.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.summary.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.utils.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\n ConfigurationFieldSchema,\n GovernanceRule,\n Translatable,\n GovernanceRuleType,\n} from '../../../../store/governance';\n\nexport type GovernanceRuleAppliesTo =\n | 'level'\n | 'any-module'\n | 'specific-module'\n | 'phase-gate';\n\nexport type GovernanceRuleActionKey =\n | 'create'\n | 'update'\n | 'delete'\n | 'manage-phase-gate'\n | 'move-phase-gate';\n\nexport type GovernanceRuleRecipeKey =\n | 'require-module'\n | 'prevent-module'\n | 'module-max-count'\n | 'module-min-count'\n | 'phase-gate-completed'\n | 'phase-gate-module-required'\n | 'no-active-request'\n | 'property-value'\n | 'property-has-value'\n | 'mandatory-gate-items-completed';\n\nexport interface GovernanceRuleWizardFormValue {\n key: string;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n appliesTo: GovernanceRuleAppliesTo;\n selectedModuleKey: string | null;\n actionKey: GovernanceRuleActionKey | null;\n recipeKey: GovernanceRuleRecipeKey | null;\n requiredModuleKey: string | null;\n blockedModuleKey: string | null;\n countedModuleKey: string | null;\n countValue: number | null;\n phaseGateSchemaId: string | null;\n requestSchemaId: string | null;\n blockingStatuses: string[];\n propertyKey: string | null;\n operator: string | null;\n expectedValue: string;\n priority: number | null;\n stopOnFailure: boolean;\n isActive: boolean;\n}\n\nexport interface GovernanceLegacyFormValue {\n key: string;\n priority: number | null;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n ruleType: string;\n targetScope: string;\n targetModuleKey: string;\n targetOperationKey: string;\n stopOnFailure: boolean;\n isActive: boolean;\n [key: string]: unknown;\n}\n\nexport interface GovernanceRuleRecipeDefinition {\n key: GovernanceRuleRecipeKey;\n ruleTypeKeys: readonly string[];\n labelKey: string;\n}\n\nexport interface GovernanceTranslatedOption<TValue extends string = string> {\n value: TValue;\n labelKey: string;\n}\n\nexport const GOVERNANCE_RULE_RECIPE_DEFINITIONS: readonly GovernanceRuleRecipeDefinition[] =\n [\n {\n key: 'require-module',\n ruleTypeKeys: ['ModuleExists'],\n labelKey: 'wizard.recipes.require-module.label',\n },\n {\n key: 'prevent-module',\n ruleTypeKeys: ['ModuleNotExists', 'ModuleDoesNotExist'],\n labelKey: 'wizard.recipes.prevent-module.label',\n },\n {\n key: 'module-max-count',\n ruleTypeKeys: ['ModuleMaxCount'],\n labelKey: 'wizard.recipes.module-max-count.label',\n },\n {\n key: 'module-min-count',\n ruleTypeKeys: ['ModuleMinCount'],\n labelKey: 'wizard.recipes.module-min-count.label',\n },\n {\n key: 'phase-gate-completed',\n ruleTypeKeys: ['PhaseGateCompleted'],\n labelKey: 'wizard.recipes.phase-gate-completed.label',\n },\n {\n key: 'phase-gate-module-required',\n ruleTypeKeys: ['PhaseGateModuleRequired'],\n labelKey: 'wizard.recipes.phase-gate-module-required.label',\n },\n {\n key: 'no-active-request',\n ruleTypeKeys: ['NoActiveRequest'],\n labelKey: 'wizard.recipes.no-active-request.label',\n },\n {\n key: 'property-value',\n ruleTypeKeys: ['PropertyValueEquals', 'FieldValue'],\n labelKey: 'wizard.recipes.property-value.label',\n },\n {\n key: 'property-has-value',\n ruleTypeKeys: ['PropertyHasValue'],\n labelKey: 'wizard.recipes.property-has-value.label',\n },\n {\n key: 'mandatory-gate-items-completed',\n ruleTypeKeys: ['PhaseGateMandatoryItemsCompleted'],\n labelKey: 'wizard.recipes.mandatory-gate-items-completed.label',\n },\n ];\n\nexport const GOVERNANCE_APPLIES_TO_OPTIONS: GovernanceTranslatedOption<GovernanceRuleAppliesTo>[] =\n [\n {\n value: 'level',\n labelKey: 'wizard.applies-to.level.label',\n },\n {\n value: 'any-module',\n labelKey: 'wizard.applies-to.any-module.label',\n },\n {\n value: 'specific-module',\n labelKey: 'wizard.applies-to.specific-module.label',\n },\n {\n value: 'phase-gate',\n labelKey: 'wizard.applies-to.phase-gate.label',\n },\n ];\n\nexport const GOVERNANCE_ACTION_OPTIONS: GovernanceTranslatedOption<GovernanceRuleActionKey>[] =\n [\n {\n value: 'create',\n labelKey: 'wizard.actions.create',\n },\n {\n value: 'update',\n labelKey: 'wizard.actions.update',\n },\n {\n value: 'delete',\n labelKey: 'wizard.actions.delete',\n },\n {\n value: 'manage-phase-gate',\n labelKey: 'wizard.actions.manage-phase-gate',\n },\n {\n value: 'move-phase-gate',\n labelKey: 'wizard.actions.move-phase-gate',\n },\n ];\n\nexport const GOVERNANCE_OPERATOR_OPTIONS: GovernanceTranslatedOption[] = [\n {\n value: 'Equals',\n labelKey: 'wizard.operators.Equals',\n },\n {\n value: 'NotEquals',\n labelKey: 'wizard.operators.NotEquals',\n },\n {\n value: 'Contains',\n labelKey: 'wizard.operators.Contains',\n },\n {\n value: 'GreaterThan',\n labelKey: 'wizard.operators.GreaterThan',\n },\n {\n value: 'LessThan',\n labelKey: 'wizard.operators.LessThan',\n },\n];\n\nexport const GOVERNANCE_PROPERTY_OPERATORS = [\n 'Equals',\n 'NotEquals',\n 'Contains',\n 'GreaterThan',\n 'LessThan',\n] as const;\n\nexport const DEFAULT_BLOCKING_STATUSES = [\n 'Pending',\n 'Draft',\n 'InProgress',\n] as const;\n\nexport const DEFAULT_GOVERNANCE_RULE_FORM_VALUE: GovernanceRuleWizardFormValue =\n {\n key: '',\n name: { en: '', ar: '' },\n description: { en: '', ar: '' },\n errorMessage: { en: '', ar: '' },\n appliesTo: 'any-module',\n selectedModuleKey: null,\n actionKey: null,\n recipeKey: null,\n requiredModuleKey: null,\n blockedModuleKey: null,\n countedModuleKey: null,\n countValue: 1,\n phaseGateSchemaId: null,\n requestSchemaId: null,\n blockingStatuses: [],\n propertyKey: null,\n operator: 'Equals',\n expectedValue: '',\n priority: 10,\n stopOnFailure: true,\n isActive: true,\n };\n\nexport function readGovernanceRuleTypeKey(\n ruleType: GovernanceRuleType,\n): string {\n return String(ruleType.key ?? ruleType.type ?? '').trim();\n}\n\nexport function readGovernanceRuleKey(rule: GovernanceRule): string {\n return String(rule.ruleTypeKey ?? '').trim();\n}\n\nexport function resolveRecipeDefinition(\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleRecipeDefinition | null {\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find(\n (definition) => definition.key === recipeKey,\n ) ?? null\n );\n}\n\nexport function resolveRecipeByRuleTypeKey(\n ruleTypeKey: string | null | undefined,\n): GovernanceRuleRecipeKey | null {\n const normalized = String(ruleTypeKey ?? '').trim();\n if (!normalized) {\n return null;\n }\n\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find((definition) =>\n definition.ruleTypeKeys.some((key) => key === normalized),\n )?.key ?? null\n );\n}\n\nexport function findRuleTypeByRecipe(\n ruleTypes: GovernanceRuleType[],\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleType | null {\n const definition = resolveRecipeDefinition(recipeKey);\n if (!definition) {\n return null;\n }\n\n return (\n ruleTypes.find((ruleType) =>\n definition.ruleTypeKeys.includes(readGovernanceRuleTypeKey(ruleType)),\n ) ?? null\n );\n}\n\nexport function findConfigurationSchemaField(\n ruleType: GovernanceRuleType | null,\n fieldKey: string,\n): ConfigurationFieldSchema | null {\n if (!ruleType) {\n return null;\n }\n\n return (\n ruleType.configurationSchema.find((field) => field.key === fieldKey) ?? null\n );\n}\n","import {\n CreateGovernanceRuleDto,\n GovernanceRule,\n GovernanceRuleType,\n UpdateGovernanceRuleDto,\n} from '../../../../store/governance';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleKey,\n readGovernanceRuleTypeKey,\n resolveRecipeByRuleTypeKey,\n} from './governance-rule-form.models';\n\nexport function mapAppliesToToTargetScope(\n appliesTo: GovernanceRuleAppliesTo,\n): 'Level' | 'Module' {\n switch (appliesTo) {\n case 'level':\n return 'Level';\n case 'phase-gate':\n case 'any-module':\n case 'specific-module':\n default:\n return 'Module';\n }\n}\n\nexport function mapActionToOperationKey(\n actionKey: GovernanceRuleActionKey,\n): 'Create' | 'Update' | 'Delete' | 'MovePhaseGate' {\n switch (actionKey) {\n case 'update':\n case 'manage-phase-gate':\n return 'Update';\n case 'delete':\n return 'Delete';\n case 'move-phase-gate':\n return 'MovePhaseGate';\n case 'create':\n default:\n return 'Create';\n }\n}\n\nexport function mapOperationKeyToAction(\n operationKey: string | null | undefined,\n isPhaseGateTarget = false,\n): GovernanceRuleActionKey | null {\n switch (\n String(operationKey ?? '')\n .trim()\n .toLowerCase()\n ) {\n case 'create':\n return isPhaseGateTarget ? null : 'create';\n case 'update':\n return isPhaseGateTarget ? 'manage-phase-gate' : 'update';\n case 'delete':\n return isPhaseGateTarget ? null : 'delete';\n case 'movephasegate':\n return isPhaseGateTarget ? 'move-phase-gate' : null;\n default:\n return null;\n }\n}\n\nfunction toNullableString(value: unknown): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const text = String(value).trim();\n return text ? text : null;\n}\n\nfunction toNullableNumber(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const numeric =\n typeof value === 'number'\n ? value\n : Number(String(value).replace(/[^\\d.-]/g, ''));\n return Number.isFinite(numeric) ? numeric : null;\n}\n\nfunction toStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((item) => toNullableString(item))\n .filter((item): item is string => !!item);\n}\n\nfunction trimBilingualValue(\n value:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n) {\n return {\n en: value.en.trim(),\n ar: value.ar.trim(),\n };\n}\n\nfunction normalizeKeySegment(value: string): string {\n return value\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction resolveRuleKey(\n currentKey: unknown,\n name:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n fallback: unknown,\n): string {\n const existingKey = toNullableString(currentKey);\n if (existingKey) {\n return existingKey;\n }\n\n const nameKey = normalizeKeySegment(name.en);\n if (nameKey) {\n return nameKey;\n }\n\n const fallbackKey = normalizeKeySegment(String(fallback ?? ''));\n return fallbackKey || 'governance-rule';\n}\n\nfunction buildRecipeConfiguration(\n formValue: GovernanceRuleWizardFormValue,\n): Record<string, unknown> | undefined {\n switch (formValue.recipeKey) {\n case 'require-module': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const minCount = toNullableNumber(formValue.countValue);\n return minCount && minCount > 1\n ? { requiredModuleKey, minCount }\n : { requiredModuleKey };\n }\n case 'prevent-module': {\n const moduleKey = toNullableString(formValue.blockedModuleKey);\n return moduleKey ? { moduleKey } : undefined;\n }\n case 'module-max-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const maxCount = toNullableNumber(formValue.countValue);\n return moduleKey && maxCount !== null\n ? { moduleKey, maxCount }\n : undefined;\n }\n case 'module-min-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const minCount = toNullableNumber(formValue.countValue);\n return moduleKey && minCount !== null\n ? { moduleKey, minCount }\n : undefined;\n }\n case 'phase-gate-completed': {\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : undefined;\n }\n case 'phase-gate-module-required': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null\n ? { requiredModuleKey, phaseGateSchemaId }\n : { requiredModuleKey };\n }\n case 'no-active-request': {\n const requestSchemaId = toNullableNumber(formValue.requestSchemaId);\n const blockingStatuses = toStringArray(formValue.blockingStatuses);\n const configuration: Record<string, unknown> = {};\n\n if (requestSchemaId !== null) {\n configuration['requestSchemaId'] = requestSchemaId;\n }\n\n if (blockingStatuses.length > 0) {\n configuration['blockingStatuses'] = blockingStatuses;\n }\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n }\n case 'property-value': {\n const propertyKey = toNullableString(formValue.propertyKey);\n const operator = toNullableString(formValue.operator);\n const expectedValue = toNullableString(formValue.expectedValue);\n return propertyKey && operator && expectedValue !== null\n ? { propertyKey, operator, expectedValue }\n : undefined;\n }\n case 'property-has-value': {\n const propertyKey = toNullableString(formValue.propertyKey);\n return propertyKey ? { propertyKey } : undefined;\n }\n case 'mandatory-gate-items-completed': {\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : {};\n }\n default:\n return undefined;\n }\n}\n\nexport function buildCreatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleTypeKey = readGovernanceRuleTypeKey(ruleType);\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleTypeKey),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType: ruleTypeKey,\n targetScope: mapAppliesToToTargetScope(formValue.appliesTo),\n targetModuleKey:\n formValue.appliesTo === 'phase-gate'\n ? 'PhaseGate'\n : formValue.appliesTo === 'specific-module'\n ? (toNullableString(formValue.selectedModuleKey) ?? undefined)\n : undefined,\n targetOperationKey:\n formValue.actionKey !== null\n ? mapActionToOperationKey(formValue.actionKey)\n : undefined,\n configuration: buildRecipeConfiguration(formValue),\n priority: toNullableNumber(formValue.priority) ?? 10,\n stopOnFailure: formValue.stopOnFailure ?? true,\n };\n}\n\nexport function buildUpdatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): UpdateGovernanceRuleDto {\n return {\n ...buildCreatePayload(formValue, ruleType),\n isActive: formValue.isActive ?? true,\n };\n}\n\nexport function mapRuleToWizardFormValue(\n rule: GovernanceRule,\n): GovernanceRuleWizardFormValue | null {\n const recipeKey = resolveRecipeByRuleTypeKey(readGovernanceRuleKey(rule));\n if (!recipeKey) {\n return null;\n }\n\n const appliesTo = resolveAppliesTo(rule, recipeKey);\n const actionKey = mapOperationKeyToAction(\n rule.targetOperationKey,\n isPhaseGateTarget(rule),\n );\n if (!actionKey) {\n return null;\n }\n\n const configuration = rule.configuration ?? {};\n const formValue: GovernanceRuleWizardFormValue = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n key: rule.key ?? '',\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n appliesTo,\n selectedModuleKey:\n appliesTo === 'specific-module'\n ? toNullableString(rule.targetModuleKey)\n : null,\n actionKey,\n recipeKey,\n priority: rule.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure: rule.stopOnFailure ?? true,\n isActive: rule.isActive ?? true,\n requiredModuleKey: toNullableString(\n configuration['requiredModuleKey'] ?? configuration['moduleKey'],\n ),\n blockedModuleKey: toNullableString(configuration['moduleKey']),\n countedModuleKey: toNullableString(configuration['moduleKey']),\n countValue:\n toNullableNumber(\n configuration['maxCount'] ??\n configuration['minCount'] ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n ) ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateSchemaId: toNullableString(configuration['phaseGateSchemaId']),\n requestSchemaId: toNullableString(configuration['requestSchemaId']),\n blockingStatuses: toStringArray(configuration['blockingStatuses']),\n propertyKey: toNullableString(\n configuration['propertyKey'] ?? configuration['fieldKey'],\n ),\n operator:\n toNullableString(configuration['operator']) ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n toNullableString(\n configuration['expectedValue'] ?? configuration['value'],\n ) ?? '',\n };\n\n if (recipeKey === 'prevent-module') {\n formValue.blockedModuleKey = toNullableString(configuration['moduleKey']);\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'phase-gate-completed') {\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'no-active-request') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n if (recipeKey === 'property-value') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n if (recipeKey === 'property-has-value') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n formValue.expectedValue = '';\n }\n\n if (recipeKey === 'mandatory-gate-items-completed') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n formValue.propertyKey = null;\n formValue.expectedValue = '';\n }\n\n return formValue;\n}\n\nfunction isPhaseGateTarget(rule: GovernanceRule): boolean {\n const scope = String(rule.targetScope ?? '')\n .trim()\n .toLowerCase();\n const targetModuleKey = String(rule.targetModuleKey ?? '')\n .trim()\n .toLowerCase();\n\n return scope === 'phasegate' || targetModuleKey === 'phasegate';\n}\n\nfunction resolveAppliesTo(\n rule: GovernanceRule,\n _recipeKey: GovernanceRuleRecipeKey,\n): GovernanceRuleAppliesTo {\n const scope = String(rule.targetScope ?? '').trim();\n\n if (scope === 'Level') {\n return 'level';\n }\n\n if (isPhaseGateTarget(rule)) {\n return 'phase-gate';\n }\n\n return String(rule.targetModuleKey ?? '').trim()\n ? 'specific-module'\n : 'any-module';\n}\n\nexport function mapRuleToLegacyFormValue(\n rule: GovernanceRule,\n): GovernanceLegacyFormValue {\n const formData: GovernanceLegacyFormValue = {\n key: rule.key,\n priority: rule.priority,\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n ruleType: rule.ruleTypeKey,\n targetScope: rule.targetScope,\n targetModuleKey: rule.targetModuleKey ?? '',\n targetOperationKey: rule.targetOperationKey ?? '',\n stopOnFailure: rule.stopOnFailure,\n isActive: rule.isActive,\n };\n\n Object.entries(rule.configuration ?? {}).forEach(([key, value]) => {\n formData[`config_${key}`] = value;\n });\n\n return formData;\n}\n\nexport function packLegacyFormToCreateDto(\n formValue: GovernanceLegacyFormValue,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleType = String(formValue.ruleType ?? '');\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleType),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType,\n targetScope: String(formValue.targetScope ?? ''),\n targetModuleKey: String(formValue.targetModuleKey ?? '') || undefined,\n targetOperationKey: String(formValue.targetOperationKey ?? '') || undefined,\n configuration: extractLegacyConfiguration(formValue),\n priority: Number(formValue.priority ?? 0),\n stopOnFailure: Boolean(formValue.stopOnFailure ?? true),\n };\n}\n\nexport function packLegacyFormToUpdateDto(\n formValue: GovernanceLegacyFormValue,\n): UpdateGovernanceRuleDto {\n return {\n ...packLegacyFormToCreateDto(formValue),\n isActive: Boolean(formValue.isActive ?? true),\n };\n}\n\nfunction extractLegacyConfiguration(\n formValue: GovernanceLegacyFormValue,\n): Record<string, unknown> | undefined {\n const configuration: Record<string, unknown> = {};\n\n Object.entries(formValue).forEach(([key, value]) => {\n if (\n key.startsWith('config_') &&\n value !== null &&\n value !== undefined &&\n value !== ''\n ) {\n configuration[key.replace('config_', '')] = value;\n }\n });\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n}\n","import {\n BaseFieldConfig,\n DateFieldConfig,\n DynamicFormConfig,\n MultiSelectFieldConfig,\n NumberFieldConfig,\n RadioCardsFieldConfig,\n SelectFieldConfig,\n TextareaFieldConfig,\n TextFieldConfig,\n ToggleFieldConfig,\n ValidatorConfig,\n} from '@masterteam/components';\nimport {\n ConfigurationFieldOption,\n ConfigurationFieldSchema,\n GovernanceRuleType,\n} from '../../../../store/governance';\nimport { GovernanceRuleRecipeKey } from './governance-rule-form.models';\nimport { GOVERNANCE_OPERATOR_OPTIONS } from './governance-rule-form.models';\n\ntype GovernanceTranslateFn = (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n) => string;\n\nexport interface GovernanceWizardFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n recipeKey: GovernanceRuleRecipeKey | null;\n appliesToOptions: { id: string; name: string }[];\n actionOptions: { id: string; name: string }[];\n recipeOptions: { id: string; name: string }[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n blockingStatuses: string[];\n}\n\nexport interface GovernanceLegacyFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n langCode: 'en' | 'ar';\n selectedRuleType: GovernanceRuleType | null;\n ruleTypeOptions: ConfigurationFieldOption[];\n scopeOptions: ConfigurationFieldOption[];\n operationOptions: ConfigurationFieldOption[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nexport function buildWizardFormConfig({\n translate,\n isEdit,\n recipeKey,\n appliesToOptions,\n actionOptions,\n recipeOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n blockingStatuses,\n}: GovernanceWizardFormConfigContext): DynamicFormConfig {\n const statusOptions = blockingStatuses.map((status) => ({\n label: status,\n value: status,\n }));\n const operatorOptions = GOVERNANCE_OPERATOR_OPTIONS.map((option) => ({\n label: translate(option.labelKey),\n value: option.value,\n }));\n const countLabel =\n recipeKey === 'module-min-count'\n ? translate('wizard.min-count-label')\n : translate('wizard.max-count-label');\n\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n rows: 3,\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n rows: 3,\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 6,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'appliesTo',\n type: 'header',\n label: translate('wizard.where-question'),\n order: 2,\n fields: [\n new RadioCardsFieldConfig({\n key: 'appliesTo',\n options: appliesToOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n new SelectFieldConfig({\n key: 'selectedModuleKey',\n label: translate('wizard.specific-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'appliesTo',\n value: 'specific-module',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'action',\n type: 'header',\n label: translate('wizard.when-question'),\n order: 3,\n fields: [\n new RadioCardsFieldConfig({\n key: 'actionKey',\n options: actionOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'recipe',\n type: 'header',\n label: translate('wizard.what-question'),\n order: 4,\n fields: [\n new RadioCardsFieldConfig({\n key: 'recipeKey',\n options: recipeOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'details',\n type: 'header',\n label: translate('wizard.details-question'),\n order: 5,\n fields: [\n new SelectFieldConfig({\n key: 'requiredModuleKey',\n label: translate('wizard.required-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'require-module',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'blockedModuleKey',\n label: translate('wizard.blocked-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'prevent-module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'countedModuleKey',\n label: translate('wizard.counted-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new NumberFieldConfig({\n key: 'countValue',\n label: countLabel,\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(1),\n ],\n min: 1,\n order: 4,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateCompletedSchemaId',\n label: translate('wizard.phase-gate-required-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 5,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-completed',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateOptionalSchemaId',\n label: translate('wizard.phase-gate-optional-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 6,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'mandatory-gate-items-completed',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'requestSchemaId',\n label: translate('wizard.request-schema-label'),\n placeholder: translate('wizard.request-schema-hint'),\n options: requestSchemaOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 7,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new MultiSelectFieldConfig({\n key: 'blockingStatuses',\n label: translate('wizard.blocking-statuses-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: statusOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 8,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'propertyKey',\n label: translate('wizard.property-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: propertyOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 9,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'property-has-value',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'operator',\n label: translate('wizard.operator-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: operatorOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 10,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n new TextFieldConfig({\n key: 'expectedValue',\n label: translate('wizard.expected-value-label'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 11,\n colSpan: 12,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'advanced',\n type: 'header',\n label: translate('execution-settings'),\n order: 6,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(0),\n ],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 2,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n hidden: !isEdit,\n order: 3,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\nexport function buildLegacyFormConfig({\n translate,\n isEdit,\n langCode,\n selectedRuleType,\n ruleTypeOptions,\n scopeOptions,\n operationOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyFormConfigContext): DynamicFormConfig {\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n placeholder: '10',\n validators: [ValidatorConfig.required(), ValidatorConfig.min(0)],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n placeholder: translate('name-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n placeholder: translate('name-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n placeholder: translate('description-en-placeholder'),\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n placeholder: translate('description-ar-placeholder'),\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n placeholder: translate('error-message-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 6,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n placeholder: translate('error-message-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 7,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'ruleTarget',\n type: 'header',\n label: translate('rule-target'),\n order: 2,\n fields: [\n new SelectFieldConfig({\n key: 'ruleType',\n label: translate('rule-type'),\n options: ruleTypeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 1,\n colSpan: 6,\n readonly: isEdit,\n }),\n new SelectFieldConfig({\n key: 'targetScope',\n label: translate('target-scope'),\n options: scopeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new SelectFieldConfig({\n key: 'targetModuleKey',\n label: translate('target-module'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'targetScope',\n value: 'Module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'targetOperationKey',\n label: translate('target-operation'),\n options: operationOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 4,\n colSpan: 6,\n }),\n ],\n },\n ...(selectedRuleType\n ? [\n buildLegacyConfigurationSection({\n translate,\n ruleType: selectedRuleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ]\n : []),\n {\n key: 'executionSettings',\n type: 'header',\n label: translate('execution-settings'),\n order: 4,\n fields: [\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 1,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n order: 2,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\ninterface GovernanceLegacyConfigurationSectionContext {\n translate: GovernanceTranslateFn;\n ruleType: GovernanceRuleType;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction buildLegacyConfigurationSection({\n translate,\n ruleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyConfigurationSectionContext) {\n return {\n key: 'configuration',\n type: 'header' as const,\n label: translate('rule-configuration'),\n order: 3,\n fields: ruleType.configurationSchema.map((field, index) =>\n schemaFieldToFormField({\n field,\n order: index + 1,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ),\n };\n}\n\ninterface GovernanceSchemaFieldToFormFieldContext {\n field: ConfigurationFieldSchema;\n order: number;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction schemaFieldToFormField({\n field,\n order,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceSchemaFieldToFormFieldContext): BaseFieldConfig {\n const label = field.label[langCode] || field.label.en;\n const colSpan = field.colSpan ?? 6;\n const validators = field.required ? [ValidatorConfig.required()] : [];\n\n switch (field.type) {\n case 'text':\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'textarea':\n return new TextareaFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'number':\n return new NumberFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n min: field.min,\n max: field.max,\n order,\n colSpan,\n });\n case 'select':\n return new SelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'multi-select':\n return new MultiSelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'checkbox':\n return new ToggleFieldConfig({\n key: `config_${field.key}`,\n label,\n order,\n colSpan,\n });\n case 'date':\n return new DateFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n default:\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n }\n}\n\nfunction getLegacyOptionsForField(\n field: ConfigurationFieldSchema,\n requestSchemaOptions: ConfigurationFieldOption[],\n propertyOptions: ConfigurationFieldOption[],\n): ConfigurationFieldOption[] {\n switch (field.optionsSource) {\n case 'requestSchema':\n return requestSchemaOptions;\n case 'properties':\n return propertyOptions;\n case 'auto-populated':\n case 'static':\n default:\n return field.options ?? [];\n }\n}\n","import { ConfigurationFieldOption } from '../../../../store/governance';\nimport {\n GOVERNANCE_OPERATOR_OPTIONS,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleWizardFormValue,\n} from './governance-rule-form.models';\n\nexport interface GovernanceSummaryContext {\n value: GovernanceRuleWizardFormValue;\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n translate: (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ) => string;\n}\n\nexport function buildActionPrompt(\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n translate: GovernanceSummaryContext['translate'],\n): string {\n return translate('wizard.summary.action', {\n object: translate(`wizard.summary.objects.${appliesTo}`),\n action: translate(`wizard.summary.actions.${actionKey}`),\n });\n}\n\nexport function buildSummary({\n value,\n translate,\n ...context\n}: GovernanceSummaryContext): string {\n if (!value.actionKey || !value.recipeKey) {\n return translate('wizard.summary-empty');\n }\n\n return translate('wizard.summary.full', {\n action: buildActionPrompt(value.appliesTo, value.actionKey, translate),\n detail: resolveRecipeSummary({ value, translate, ...context }),\n });\n}\n\nfunction resolveRecipeSummary({\n value,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n translate,\n}: GovernanceSummaryContext): string {\n switch (value.recipeKey) {\n case 'require-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.require-module', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.module'),\n });\n }\n case 'prevent-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.blockedModuleKey,\n );\n return translate('wizard.summary.prevent-module', {\n module:\n moduleLabel ??\n value.blockedModuleKey ??\n translate('wizard.summary.fallbacks.selected-module'),\n });\n }\n case 'module-max-count':\n return translate('wizard.summary.module-max-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'module-min-count':\n return translate('wizard.summary.module-min-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'phase-gate-completed': {\n const phaseGateLabel = findOptionLabel(\n phaseGateOptions,\n value.phaseGateSchemaId,\n );\n return translate('wizard.summary.phase-gate-completed', {\n phaseGate:\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\n });\n }\n case 'phase-gate-module-required': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.phase-gate-module-required', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.required-module'),\n });\n }\n case 'no-active-request': {\n const requestLabel = findOptionLabel(\n requestSchemaOptions,\n value.requestSchemaId,\n );\n return translate('wizard.summary.no-active-request', {\n request: requestLabel ?? translate('wizard.summary.fallbacks.request'),\n });\n }\n case 'property-value': {\n const propertyLabel =\n findOptionLabel(propertyOptions, value.propertyKey) ??\n value.propertyKey ??\n translate('wizard.summary.fallbacks.property');\n\n return translate('wizard.summary.property-value', {\n property: propertyLabel,\n operator: resolveOperatorText(value.operator, translate),\n expectedValue: value.expectedValue || '',\n }).trim();\n }\n case 'property-has-value': {\n const propertyLabel =\n findOptionLabel(propertyOptions, value.propertyKey) ??\n value.propertyKey ??\n translate('wizard.summary.fallbacks.property');\n\n return translate('wizard.summary.property-has-value', {\n property: propertyLabel,\n });\n }\n case 'mandatory-gate-items-completed': {\n const phaseGateLabel = findOptionLabel(\n phaseGateOptions,\n value.phaseGateSchemaId,\n );\n return translate('wizard.summary.mandatory-gate-items-completed', {\n phaseGate:\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\n });\n }\n default:\n return translate('wizard.summary-empty');\n }\n}\n\nfunction resolveOperatorText(\n operator: string | null,\n translate: GovernanceSummaryContext['translate'],\n): string {\n const option = GOVERNANCE_OPERATOR_OPTIONS.find(\n (item) => item.value === operator,\n );\n\n return option\n ? translate(option.labelKey).toLowerCase()\n : translate('wizard.summary.fallbacks.operator');\n}\n\nfunction findOptionLabel(\n options: ConfigurationFieldOption[],\n value: string | null,\n): string | null {\n if (!value) {\n return null;\n }\n\n return options.find((option) => option.value === value)?.label ?? null;\n}\n","import { GovernanceRuleType } from '../../../../store/governance';\nimport {\n mapActionToOperationKey,\n mapAppliesToToTargetScope,\n} from './governance-rule-form.mapper';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n resolveRecipeDefinition,\n} from './governance-rule-form.models';\n\nexport type GovernanceRuleWizardFormState = GovernanceRuleWizardFormValue & {\n phaseGateCompletedSchemaId: string | null;\n phaseGateOptionalSchemaId: string | null;\n};\n\nexport const DEFAULT_WIZARD_FORM_STATE: GovernanceRuleWizardFormState = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n phaseGateCompletedSchemaId: null,\n phaseGateOptionalSchemaId: null,\n};\n\nexport function mapWizardFormValueToState(\n value: GovernanceRuleWizardFormValue,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n phaseGateCompletedSchemaId:\n value.recipeKey === 'phase-gate-completed'\n ? value.phaseGateSchemaId\n : null,\n phaseGateOptionalSchemaId:\n value.recipeKey === 'phase-gate-module-required' ||\n value.recipeKey === 'mandatory-gate-items-completed'\n ? value.phaseGateSchemaId\n : null,\n };\n}\n\nexport function normalizeWizardFormState(\n value: Partial<GovernanceRuleWizardFormState> | null | undefined,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n name: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.name,\n ...value?.name,\n },\n description: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.description,\n ...value?.description,\n },\n errorMessage: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.errorMessage,\n ...value?.errorMessage,\n },\n selectedModuleKey: value?.selectedModuleKey ?? null,\n actionKey: value?.actionKey ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.actionKey,\n recipeKey: value?.recipeKey ?? null,\n requiredModuleKey: value?.requiredModuleKey ?? null,\n blockedModuleKey: value?.blockedModuleKey ?? null,\n countedModuleKey: value?.countedModuleKey ?? null,\n countValue:\n value?.countValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateCompletedSchemaId: value?.phaseGateCompletedSchemaId ?? null,\n phaseGateOptionalSchemaId: value?.phaseGateOptionalSchemaId ?? null,\n phaseGateSchemaId: value?.phaseGateSchemaId ?? null,\n requestSchemaId: value?.requestSchemaId ?? null,\n blockingStatuses: Array.isArray(value?.blockingStatuses)\n ? value.blockingStatuses\n : [...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.blockingStatuses],\n propertyKey: value?.propertyKey ?? null,\n operator: value?.operator ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n value?.expectedValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.expectedValue,\n priority: value?.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure:\n value?.stopOnFailure ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.stopOnFailure,\n isActive: value?.isActive ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.isActive,\n };\n}\n\nexport function mapWizardStateToWizardValue(\n state: GovernanceRuleWizardFormState,\n): GovernanceRuleWizardFormValue {\n return {\n key: state.key,\n name: {\n en: state.name.en,\n ar: state.name.ar,\n },\n description: {\n en: state.description.en,\n ar: state.description.ar,\n },\n errorMessage: {\n en: state.errorMessage.en,\n ar: state.errorMessage.ar,\n },\n appliesTo: state.appliesTo,\n selectedModuleKey: state.selectedModuleKey,\n actionKey: state.actionKey,\n recipeKey: state.recipeKey,\n requiredModuleKey: state.requiredModuleKey,\n blockedModuleKey: state.blockedModuleKey,\n countedModuleKey: state.countedModuleKey,\n countValue: state.countValue,\n phaseGateSchemaId:\n state.phaseGateCompletedSchemaId ??\n state.phaseGateOptionalSchemaId ??\n null,\n requestSchemaId: state.requestSchemaId,\n blockingStatuses: [...state.blockingStatuses],\n propertyKey: state.propertyKey,\n operator: state.operator,\n expectedValue: state.expectedValue,\n priority: state.priority,\n stopOnFailure: state.stopOnFailure,\n isActive: state.isActive,\n };\n}\n\nexport function resolveRecipeDefinitionForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeDefinition | null {\n return resolveRecipeDefinition(\n resolveRecipeDefinitionKeyForRuleType(ruleType),\n );\n}\n\nexport function resolveRecipeDefinitionKeyForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeKey | null {\n switch (readGovernanceRuleTypeKey(ruleType)) {\n case 'ModuleExists':\n return 'require-module';\n case 'ModuleNotExists':\n case 'ModuleDoesNotExist':\n return 'prevent-module';\n case 'ModuleMaxCount':\n return 'module-max-count';\n case 'ModuleMinCount':\n return 'module-min-count';\n case 'PhaseGateCompleted':\n return 'phase-gate-completed';\n case 'PhaseGateModuleRequired':\n return 'phase-gate-module-required';\n case 'NoActiveRequest':\n return 'no-active-request';\n case 'PropertyValueEquals':\n case 'FieldValue':\n return 'property-value';\n case 'PropertyHasValue':\n return 'property-has-value';\n case 'PhaseGateMandatoryItemsCompleted':\n return 'mandatory-gate-items-completed';\n default:\n return null;\n }\n}\n\nexport function hasCompatibleRecipe(\n ruleTypes: GovernanceRuleType[],\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return ruleTypes.some(\n (ruleType) =>\n !!resolveRecipeDefinitionForRuleType(ruleType) &&\n isRuleTypeCompatible(ruleType, appliesTo, actionKey),\n );\n}\n\nexport function isRuleTypeCompatible(\n ruleType: GovernanceRuleType,\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return (\n ruleType.supportedScopes.includes(mapAppliesToToTargetScope(appliesTo)) &&\n ruleType.supportedOperations.includes(mapActionToOperationKey(actionKey))\n );\n}\n\nexport function areWizardStatesEqual(\n current: GovernanceRuleWizardFormState,\n next: GovernanceRuleWizardFormState,\n): boolean {\n return (\n current.key === next.key &&\n current.name.en === next.name.en &&\n current.name.ar === next.name.ar &&\n current.description.en === next.description.en &&\n current.description.ar === next.description.ar &&\n current.errorMessage.en === next.errorMessage.en &&\n current.errorMessage.ar === next.errorMessage.ar &&\n current.appliesTo === next.appliesTo &&\n current.selectedModuleKey === next.selectedModuleKey &&\n current.actionKey === next.actionKey &&\n current.recipeKey === next.recipeKey &&\n current.requiredModuleKey === next.requiredModuleKey &&\n current.blockedModuleKey === next.blockedModuleKey &&\n current.countedModuleKey === next.countedModuleKey &&\n current.countValue === next.countValue &&\n current.phaseGateCompletedSchemaId === next.phaseGateCompletedSchemaId &&\n current.phaseGateOptionalSchemaId === next.phaseGateOptionalSchemaId &&\n current.phaseGateSchemaId === next.phaseGateSchemaId &&\n current.requestSchemaId === next.requestSchemaId &&\n current.propertyKey === next.propertyKey &&\n current.operator === next.operator &&\n current.expectedValue === next.expectedValue &&\n current.priority === next.priority &&\n current.stopOnFailure === next.stopOnFailure &&\n current.isActive === next.isActive &&\n areStringArraysEqual(current.blockingStatuses, next.blockingStatuses)\n );\n}\n\nexport function areLegacyFormValuesEqual(\n current: GovernanceLegacyFormValue | null,\n next: GovernanceLegacyFormValue | null,\n): boolean {\n if (current === next) {\n return true;\n }\n\n if (!current || !next) {\n return current === next;\n }\n\n if (\n current.key !== next.key ||\n current.priority !== next.priority ||\n current.name.en !== next.name.en ||\n current.name.ar !== next.name.ar ||\n current.description.en !== next.description.en ||\n current.description.ar !== next.description.ar ||\n current.errorMessage.en !== next.errorMessage.en ||\n current.errorMessage.ar !== next.errorMessage.ar ||\n current.ruleType !== next.ruleType ||\n current.targetScope !== next.targetScope ||\n current.targetModuleKey !== next.targetModuleKey ||\n current.targetOperationKey !== next.targetOperationKey ||\n current.stopOnFailure !== next.stopOnFailure ||\n current.isActive !== next.isActive\n ) {\n return false;\n }\n\n const currentKeys = Object.keys(current);\n const nextKeys = Object.keys(next);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => {\n if (\n key === 'key' ||\n key === 'priority' ||\n key === 'name' ||\n key === 'description' ||\n key === 'errorMessage' ||\n key === 'ruleType' ||\n key === 'targetScope' ||\n key === 'targetModuleKey' ||\n key === 'targetOperationKey' ||\n key === 'stopOnFailure' ||\n key === 'isActive'\n ) {\n return true;\n }\n\n const currentValue = current[key];\n const nextValue = next[key];\n\n if (Array.isArray(currentValue) || Array.isArray(nextValue)) {\n return (\n Array.isArray(currentValue) &&\n Array.isArray(nextValue) &&\n areUnknownArraysEqual(currentValue, nextValue)\n );\n }\n\n return currentValue === nextValue;\n });\n}\n\nfunction areStringArraysEqual(current: string[], next: string[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n\nfunction areUnknownArraysEqual(current: unknown[], next: unknown[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n OnInit,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\nimport { Button } from '@masterteam/components/button';\nimport { Message } from 'primeng/message';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ModalRef } from '@masterteam/components/dialog';\nimport { DynamicFormConfig } from '@masterteam/components';\nimport { ToastService } from '@masterteam/components/toast';\nimport {\n ConfigurationFieldOption,\n CreateGovernanceRuleDto,\n GovernanceFacade,\n GovernanceRule,\n UpdateGovernanceRuleDto,\n} from '../../../store/governance';\nimport {\n TranslocoDirective,\n TranslocoPipe,\n TranslocoService,\n} from '@jsverse/transloco';\nimport { ModalService } from '@masterteam/components/modal';\nimport {\n buildCreatePayload,\n buildUpdatePayload,\n mapAppliesToToTargetScope,\n mapRuleToLegacyFormValue,\n mapRuleToWizardFormValue,\n packLegacyFormToCreateDto,\n packLegacyFormToUpdateDto,\n} from './internal/governance-rule-form.mapper';\nimport {\n buildLegacyFormConfig,\n buildWizardFormConfig,\n} from './internal/governance-rule-form.config';\nimport {\n DEFAULT_BLOCKING_STATUSES,\n findConfigurationSchemaField,\n findRuleTypeByRecipe,\n GOVERNANCE_ACTION_OPTIONS,\n GOVERNANCE_APPLIES_TO_OPTIONS,\n GovernanceRuleActionKey,\n GovernanceLegacyFormValue,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n} from './internal/governance-rule-form.models';\nimport {\n buildActionPrompt,\n buildSummary,\n} from './internal/governance-rule-form.summary';\nimport {\n areLegacyFormValuesEqual,\n areWizardStatesEqual,\n DEFAULT_WIZARD_FORM_STATE,\n GovernanceRuleWizardFormState,\n hasCompatibleRecipe,\n isRuleTypeCompatible,\n mapWizardFormValueToState,\n mapWizardStateToWizardValue,\n normalizeWizardFormState,\n resolveRecipeDefinitionForRuleType,\n} from './internal/governance-rule-form.utils';\n\n@Component({\n selector: 'mt-governance-rule-form',\n templateUrl: './governance-rule-form.html',\n styleUrls: ['./governance-rule-form.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n Button,\n DynamicForm,\n Message,\n ReactiveFormsModule,\n SkeletonModule,\n TranslocoDirective,\n TranslocoPipe,\n ],\n host: {\n class: 'block h-full',\n },\n})\nexport default class GovernanceRuleForm implements OnInit {\n readonly modal = inject(ModalService);\n readonly ref: ModalRef = inject(ModalRef);\n private readonly translocoService = inject(TranslocoService);\n private readonly facade = inject(GovernanceFacade);\n private readonly toast = inject(ToastService);\n\n readonly ruleForEdit = input<GovernanceRule | null>(null);\n readonly dynamicFormRef = viewChild(DynamicForm);\n\n readonly selectedRule = this.facade.selectedRule;\n readonly ruleTypes = this.facade.ruleTypes;\n readonly isLoadingRule = this.facade.isLoadingRule;\n readonly isLoadingRuleTypes = this.facade.isLoadingRuleTypes;\n readonly isAddingRule = this.facade.isAddingRule;\n readonly isUpdatingRule = this.facade.isUpdatingRule;\n readonly modules = this.facade.modules;\n readonly requestSchemas = this.facade.requestSchemas;\n readonly properties = this.facade.properties;\n\n readonly wizardFormControl = new FormControl<GovernanceRuleWizardFormState>(\n DEFAULT_WIZARD_FORM_STATE,\n { nonNullable: true },\n );\n\n readonly legacyFormControl =\n new FormControl<GovernanceLegacyFormValue | null>(null);\n\n private readonly wizardStateRaw = toSignal(\n this.wizardFormControl.valueChanges.pipe(\n map((value) => value ?? DEFAULT_WIZARD_FORM_STATE),\n ),\n { initialValue: this.wizardFormControl.value },\n );\n\n private readonly legacyFormValue = toSignal(\n this.legacyFormControl.valueChanges.pipe(\n map(() => this.legacyFormControl.value),\n ),\n { initialValue: this.legacyFormControl.value },\n );\n\n private readonly activeLang = toSignal(this.translocoService.langChanges$, {\n initialValue: this.translocoService.getActiveLang(),\n });\n\n readonly langCode = computed<'en' | 'ar'>(() =>\n this.activeLang() === 'ar' ? 'ar' : 'en',\n );\n\n readonly isEditMode = computed(() => !!this.ruleForEdit()?.id);\n readonly wizardState = computed(() =>\n normalizeWizardFormState(this.wizardStateRaw()),\n );\n readonly wizardValue = computed<GovernanceRuleWizardFormValue>(() =>\n mapWizardStateToWizardValue(this.wizardState()),\n );\n\n readonly moduleOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.modules().map((module) => ({\n label: module.name[lang] || module.name.en,\n value: module.key,\n }));\n });\n\n readonly requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.requestSchemas().map((schema) => ({\n label: schema.name[lang] || schema.name.en,\n value: String(schema.id),\n }));\n });\n\n readonly propertyOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.properties().map((property) => ({\n label: property.name[lang] || property.name.en,\n value: property.key,\n }));\n });\n\n readonly appliesToCardOptions = computed(() =>\n GOVERNANCE_APPLIES_TO_OPTIONS.map((option) => ({\n id: option.value,\n name: this.translate(option.labelKey),\n })),\n );\n\n readonly availableActionOptions = computed(() => {\n const appliesTo = this.wizardValue().appliesTo;\n const allowedActions: GovernanceRuleActionKey[] =\n appliesTo === 'phase-gate'\n ? ['manage-phase-gate', 'move-phase-gate']\n : ['create', 'update', 'delete'];\n\n return GOVERNANCE_ACTION_OPTIONS.filter(\n (option) =>\n allowedActions.includes(option.value) &&\n hasCompatibleRecipe(this.ruleTypes(), appliesTo, option.value),\n );\n });\n\n readonly actionCardOptions = computed(() =>\n this.availableActionOptions().map((option) => ({\n id: option.value,\n name: buildActionPrompt(\n this.wizardValue().appliesTo,\n option.value,\n this.translate.bind(this),\n ),\n })),\n );\n\n readonly availableRecipeDefinitions = computed(() => {\n const actionKey = this.wizardValue().actionKey;\n if (!actionKey) {\n return [];\n }\n\n return this.ruleTypes()\n .map((ruleType) => {\n const recipe = resolveRecipeDefinitionForRuleType(ruleType);\n if (!recipe) {\n return null;\n }\n\n return isRuleTypeCompatible(\n ruleType,\n this.wizardValue().appliesTo,\n actionKey,\n )\n ? recipe\n : null;\n })\n .filter(\n (recipe, index, items): recipe is GovernanceRuleRecipeDefinition =>\n !!recipe &&\n items.findIndex((item) => item?.key === recipe.key) === index,\n );\n });\n\n readonly recipeCardOptions = computed(() =>\n this.availableRecipeDefinitions().map((recipe) => ({\n id: recipe.key,\n name: this.translate(recipe.labelKey),\n })),\n );\n\n readonly selectedRuleType = computed(() =>\n findRuleTypeByRecipe(this.ruleTypes(), this.wizardValue().recipeKey),\n );\n\n readonly useLegacyEditor = computed(() => {\n if (!this.ruleForEdit()?.id) {\n return false;\n }\n\n const rule = this.selectedRule();\n return !!rule && !mapRuleToWizardFormValue(rule);\n });\n\n readonly isInitializing = computed(() => {\n if (this.ruleForEdit()?.id && this.isLoadingRule()) {\n return true;\n }\n\n return this.ruleTypes().length === 0 && this.isLoadingRuleTypes();\n });\n\n readonly noRecipesAvailable = computed(\n () =>\n !this.useLegacyEditor() &&\n !!this.wizardValue().actionKey &&\n this.recipeCardOptions().length === 0,\n );\n readonly hasReviewSummary = computed(() => {\n if (this.useLegacyEditor()) {\n return false;\n }\n\n const value = this.wizardValue();\n return !!value.actionKey && !!value.recipeKey;\n });\n\n readonly canSubmit = computed(() => {\n if (this.useLegacyEditor()) {\n return this.legacyFormControl.valid;\n }\n\n return (\n this.wizardFormControl.valid &&\n !!this.selectedRuleType() &&\n !!this.wizardValue().actionKey &&\n !!this.wizardValue().recipeKey\n );\n });\n\n readonly reviewSummary = computed(() =>\n buildSummary({\n value: this.wizardValue(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n translate: this.translate.bind(this),\n }),\n );\n readonly wizardFormConfig = computed<DynamicFormConfig>(() =>\n buildWizardFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n recipeKey: this.wizardValue().recipeKey,\n appliesToOptions: this.appliesToCardOptions(),\n actionOptions: this.actionCardOptions(),\n recipeOptions: this.recipeCardOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n blockingStatuses: this.getBlockingStatusOptions(),\n }),\n );\n\n readonly selectedLegacyRuleType = computed(() => {\n const ruleTypeKey = String(this.legacyFormValue()?.ruleType ?? '').trim();\n if (!ruleTypeKey) {\n return null;\n }\n\n return (\n this.ruleTypes().find((ruleType) => {\n const catalogKey = readGovernanceRuleTypeKey(ruleType);\n return (\n catalogKey === ruleTypeKey || String(ruleType.type) === ruleTypeKey\n );\n }) ?? null\n );\n });\n\n readonly scopeOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translateScopeLabel('Level'), value: 'Level' },\n { label: this.translateScopeLabel('Module'), value: 'Module' },\n { label: this.translateScopeLabel('PhaseGate'), value: 'PhaseGate' },\n ];\n }\n\n return ruleType.supportedScopes.map((scope) => ({\n label: this.translateScopeLabel(scope),\n value: scope,\n }));\n });\n\n readonly operationOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translate('all'), value: '' },\n { label: this.translateOperationLabel('Create'), value: 'Create' },\n { label: this.translateOperationLabel('Update'), value: 'Update' },\n { label: this.translateOperationLabel('Delete'), value: 'Delete' },\n {\n label: this.translateOperationLabel('MovePhaseGate'),\n value: 'MovePhaseGate',\n },\n ];\n }\n\n return [\n { label: this.translate('all'), value: '' },\n ...ruleType.supportedOperations.map((operation) => ({\n label: this.translateOperationLabel(operation),\n value: operation,\n })),\n ];\n });\n\n readonly legacyFormConfig = computed<DynamicFormConfig>(() =>\n buildLegacyFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n langCode: this.langCode(),\n selectedRuleType: this.selectedLegacyRuleType(),\n ruleTypeOptions: this.ruleTypeOptions(),\n scopeOptions: this.scopeOptions(),\n operationOptions: this.operationOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n }),\n );\n\n constructor() {\n effect(() => {\n if (\n this.wizardValue().appliesTo !== 'specific-module' &&\n this.wizardValue().selectedModuleKey\n ) {\n this.patchWizardState({ selectedModuleKey: null });\n }\n });\n\n effect(() => {\n const currentAction = this.wizardValue().actionKey;\n if (\n !currentAction ||\n this.availableActionOptions().some(\n (option) => option.value === currentAction,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ actionKey: null, recipeKey: null });\n });\n\n effect(() => {\n const currentRecipe = this.wizardValue().recipeKey;\n if (\n !currentRecipe ||\n this.availableRecipeDefinitions().some(\n (definition) => definition.key === currentRecipe,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ recipeKey: null });\n });\n\n effect(() => {\n const editing = !!this.ruleForEdit()?.id;\n\n if (!editing) {\n this.resetWizardForm();\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n const rule = this.selectedRule();\n if (!rule) {\n return;\n }\n\n const wizardValue = mapRuleToWizardFormValue(rule);\n if (wizardValue) {\n this.setWizardState(mapWizardFormValueToState(wizardValue));\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n this.resetWizardForm();\n const nextLegacyValue = mapRuleToLegacyFormValue(rule);\n if (\n !areLegacyFormValuesEqual(this.legacyFormControl.value, nextLegacyValue)\n ) {\n this.legacyFormControl.setValue(nextLegacyValue);\n }\n });\n\n effect(() => {\n const recipeKey = this.wizardValue().recipeKey;\n const appliesTo = this.wizardValue().appliesTo;\n const targetModuleKey =\n appliesTo === 'phase-gate'\n ? 'PhaseGate'\n : appliesTo === 'specific-module'\n ? (this.wizardValue().selectedModuleKey ?? undefined)\n : undefined;\n const targetScope = mapAppliesToToTargetScope(appliesTo);\n const needsRequestSchemas = recipeKey === 'no-active-request';\n const needsProperties =\n recipeKey === 'property-value' || recipeKey === 'property-has-value';\n\n if (!needsRequestSchemas && !needsProperties) {\n this.clearReferenceData();\n return;\n }\n\n if (\n targetScope === 'Module' &&\n appliesTo === 'specific-module' &&\n !targetModuleKey\n ) {\n this.clearReferenceData();\n return;\n }\n\n if (needsRequestSchemas) {\n this.facade.getRequestSchemas(targetScope, targetModuleKey);\n }\n\n if (needsProperties) {\n this.facade.getProperties(targetScope, targetModuleKey);\n }\n });\n }\n\n ngOnInit(): void {\n if (!this.ruleTypes().length) {\n this.facade.getRuleTypes();\n }\n\n if (!this.modules().length) {\n this.facade.getModules();\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.facade.getRule(ruleId);\n }\n }\n\n onSubmit(): void {\n this.dynamicFormRef()?.form.markAllAsTouched();\n\n if (this.useLegacyEditor()) {\n if (!this.legacyFormControl.valid) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n this.submitLegacyForm();\n return;\n }\n\n if (!this.wizardValue().actionKey || !this.wizardValue().recipeKey) {\n this.toast.warn(\n this.translate('wizard.summary-empty'),\n this.translate('warning'),\n );\n return;\n }\n\n if (!this.canSubmit()) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n const ruleType = this.selectedRuleType();\n if (!ruleType) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n const payloadValue = this.wizardValue();\n\n if (ruleId) {\n this.saveUpdate(ruleId, buildUpdatePayload(payloadValue, ruleType));\n return;\n }\n\n this.saveCreate(buildCreatePayload(payloadValue, ruleType));\n }\n\n getPhaseGateOptions(): ConfigurationFieldOption[] {\n return (\n findConfigurationSchemaField(this.selectedRuleType(), 'phaseGateSchemaId')\n ?.options ?? []\n );\n }\n\n getBlockingStatusOptions(): string[] {\n const field = findConfigurationSchemaField(\n this.selectedRuleType(),\n 'blockingStatuses',\n );\n\n if (field?.options?.length) {\n return field.options.map((option) => option.value);\n }\n\n return [...DEFAULT_BLOCKING_STATUSES];\n }\n\n private translate(\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ): string {\n const lang = this.activeLang();\n return this.translocoService.translate(`governance.${key}`, params, lang);\n }\n\n private translateScopeLabel(scope: string): string {\n switch (scope) {\n case 'Level':\n return this.translate('scope-level');\n case 'Module':\n return this.translate('scope-module');\n case 'PhaseGate':\n return this.translate('scope-phase-gate');\n default:\n return scope;\n }\n }\n\n private translateOperationLabel(operation: string): string {\n switch (operation) {\n case 'Create':\n return this.translate('create');\n case 'Update':\n return this.translate('update');\n case 'Delete':\n return this.translate('delete');\n case 'MovePhaseGate':\n return this.translate('wizard.actions.move-phase-gate');\n default:\n return operation;\n }\n }\n\n private patchWizardState(\n patch: Partial<GovernanceRuleWizardFormState>,\n ): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState({\n ...currentState,\n ...patch,\n });\n\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private setWizardState(state: GovernanceRuleWizardFormState): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState(state);\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private resetWizardForm(): void {\n this.setWizardState(DEFAULT_WIZARD_FORM_STATE);\n }\n\n private clearReferenceData(): void {\n const hasRequestSchemas = untracked(() => this.requestSchemas().length > 0);\n const hasProperties = untracked(() => this.properties().length > 0);\n\n if (hasRequestSchemas) {\n this.facade.clearRequestSchemas();\n }\n\n if (hasProperties) {\n this.facade.clearProperties();\n }\n }\n\n private saveCreate(payload: CreateGovernanceRuleDto): void {\n this.facade.addRule(payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private saveUpdate(id: number, payload: UpdateGovernanceRuleDto): void {\n this.facade.updateRule(id, payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private submitLegacyForm(): void {\n if (!this.legacyFormControl.valid) {\n return;\n }\n\n const formValue = this.legacyFormControl.value;\n if (!formValue) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.saveUpdate(ruleId, packLegacyFormToUpdateDto(formValue));\n return;\n }\n\n this.saveCreate(packLegacyFormToCreateDto(formValue));\n }\n\n private ruleTypeOptions(): ConfigurationFieldOption[] {\n const lang = this.langCode();\n return this.ruleTypes().map((ruleType) => ({\n label: ruleType.name[lang] || ruleType.name.en,\n value: readGovernanceRuleTypeKey(ruleType),\n }));\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-content flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4 sm:p-5 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (isInitializing()) {\r\n <div class=\"space-y-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n </div>\r\n } @else if (useLegacyEditor()) {\r\n <section class=\"rounded-lg border border-amber-200 bg-amber-50/70 p-4\">\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.legacy-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.legacy-description\") }}\r\n </p>\r\n </section>\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"legacyFormConfig()\"\r\n [formControl]=\"legacyFormControl\"\r\n />\r\n } @else {\r\n @if (noRecipesAvailable()) {\r\n <section\r\n class=\"rounded-lg border border-orange-200 bg-orange-50/80 p-4\"\r\n >\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.no-recipes-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.no-recipes-description\") }}\r\n </p>\r\n </section>\r\n }\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"wizardFormConfig()\"\r\n [formControl]=\"wizardFormControl\"\r\n />\r\n\r\n @if (hasReviewSummary()) {\r\n <section class=\"flex flex-col gap-2\">\r\n <p\r\n class=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-slate-500\"\r\n >\r\n {{ t(\"wizard.summary-title\") }}\r\n </p>\r\n <p-message\r\n severity=\"warn\"\r\n styleClass=\"w-full\"\r\n [text]=\"reviewSummary()\"\r\n />\r\n </section>\r\n }\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n severity=\"secondary\"\r\n [label]=\"'cancel' | transloco\"\r\n (click)=\"ref.close()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"isAddingRule() || isUpdatingRule()\"\r\n (click)=\"onSubmit()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n inject,\n linkedSignal,\n OnInit,\n OnDestroy,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {\n CellChangeEvent,\n ColumnDef,\n Table,\n TableAction,\n} from '@masterteam/components/table';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { GovernanceFacade } from '../../../store/governance';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { ModalService } from '@masterteam/components/modal';\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\nimport { finalize } from 'rxjs';\nimport { Icon } from '@masterteam/icons';\nimport { Chip } from '@masterteam/components/chip';\nimport { GovernanceRule, GovernanceRuleType } from '../../../store/governance';\n\n@Component({\n selector: 'mt-governance-rules-list',\n styleUrl: './governance-rules-list.css',\n templateUrl: './governance-rules-list.html',\n standalone: true,\n imports: [\n CommonModule,\n SkeletonModule,\n Table,\n TranslocoDirective,\n Icon,\n Chip,\n ],\n})\nexport default class GovernanceRulesList implements OnInit, OnDestroy {\n // ============================================================================\n // Template References for Custom Columns\n // ============================================================================\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\n whenCol = viewChild.required<TemplateRef<any>>('whenCol');\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\n\n // ============================================================================\n // Services\n // ============================================================================\n private readonly facade = inject(GovernanceFacade);\n readonly modal: ModalService = inject(ModalService);\n private readonly translocoService = inject(TranslocoService);\n private readonly ruleTypes = this.facade.ruleTypes;\n\n // ============================================================================\n // Breadcrumb\n // ============================================================================\n breadcrumbItems = linkedSignal(() => [\n {\n label: '',\n icon: 'general.home-line',\n routerLink: '/control-panel/workspaces',\n },\n {\n label: this.translocoService.translate('governance.control-panel'),\n routerLink: '/control-panel',\n },\n {\n label: this.translocoService.translate('governance.governance-rules'),\n },\n ]);\n\n // ============================================================================\n // Data Computed from Facade\n // ============================================================================\n rules = computed(() => {\n const tab = this.activeTab();\n const all = this.allRules();\n const activeRules = this.activeRules();\n const inactiveRules = this.inactiveRules();\n\n switch (tab) {\n case 'active':\n return activeRules;\n case 'inactive':\n return inactiveRules;\n case 'all':\n default:\n return all;\n }\n });\n\n readonly ruleTypeOptions = computed(() => {\n const ruleTypes = this.ruleTypes();\n if (ruleTypes.length > 0) {\n return ruleTypes\n .map((ruleType) => this.readRuleTypeKey(ruleType))\n .filter((key, index, items) => !!key && items.indexOf(key) === index)\n .map((key) => ({\n label: this.getRuleTypeLabel(key),\n value: key,\n }));\n }\n\n return this.rules()\n .map((rule) => rule.ruleTypeKey)\n .filter((key, index, items) => !!key && items.indexOf(key) === index)\n .map((key) => ({\n label: this.getRuleTypeLabel(key),\n value: key,\n }));\n });\n\n // ============================================================================\n // Tabs\n // ============================================================================\n tabs = signal([\n {\n label: this.translocoService.translate('governance.all'),\n value: 'all',\n },\n {\n label: this.translocoService.translate('governance.active'),\n value: 'active',\n },\n {\n label: this.translocoService.translate('governance.inactive'),\n value: 'inactive',\n },\n ]);\n activeTab = signal<string>('all');\n\n // ============================================================================\n // Table Actions\n // ============================================================================\n tableActions = signal<TableAction[]>([\n {\n icon: 'general.plus',\n label: this.translocoService.translate('governance.add-rule'),\n color: 'primary',\n action: () => {\n this.openRuleDialog();\n },\n },\n ]);\n\n deletingRowIds = signal<any[]>([]);\n\n rowActions = signal<TableAction[]>([\n {\n icon: 'custom.pencil',\n tooltip: this.translocoService.translate('edit'),\n color: 'primary',\n action: (row: GovernanceRule) => {\n this.facade.clearSelectedRule();\n this.openRuleDialog(row);\n },\n },\n {\n icon: 'general.trash-01',\n tooltip: this.translocoService.translate('delete'),\n color: 'danger',\n variant: 'outlined',\n action: (row: GovernanceRule) => {\n this.deletingRowIds.update((ids) => [...ids, row.id]);\n this.facade\n .deleteRule(row.id)\n .pipe(\n finalize(() => {\n this.deletingRowIds.update((ids) =>\n ids.filter((id) => id !== row.id),\n );\n }),\n )\n .subscribe();\n },\n confirmation: {\n type: 'popup',\n confirmationType: 'delete',\n },\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\n },\n ]);\n\n // ============================================================================\n // Table Columns\n // ============================================================================\n tableColumns = linkedSignal<ColumnDef[]>(() => [\n {\n key: 'priority',\n label: this.translocoService.translate('governance.priority'),\n type: 'custom',\n customCellTpl: this.priorityCol(),\n sortable: true,\n },\n {\n key: 'name.en',\n label: this.translocoService.translate('governance.name'),\n type: 'text',\n sortable: true,\n },\n {\n key: 'ruleTypeKey',\n label: this.translocoService.translate('governance.rule-type'),\n type: 'custom',\n customCellTpl: this.typeCol(),\n filterConfig: {\n type: 'select',\n label: this.translocoService.translate('governance.rule-type'),\n options: this.ruleTypeOptions(),\n },\n },\n {\n key: 'targetScope',\n label: this.translocoService.translate('governance.applies-to'),\n type: 'custom',\n customCellTpl: this.scopeCol(),\n },\n {\n key: 'targetOperationKey',\n label: this.translocoService.translate('governance.when'),\n type: 'custom',\n customCellTpl: this.whenCol(),\n },\n {\n key: 'isActive',\n label: this.translocoService.translate('governance.status'),\n type: 'boolean',\n filterConfig: {\n type: 'select',\n label: this.translocoService.translate('governance.status'),\n options: [\n {\n label: this.translocoService.translate('governance.active'),\n value: true,\n },\n {\n label: this.translocoService.translate('governance.inactive'),\n value: false,\n },\n ],\n },\n },\n ]);\n\n // ============================================================================\n // Private\n // ============================================================================\n loading = this.facade.isLoadingRules;\n private allRules = this.facade.rules;\n private activeRules = this.facade.activeRules;\n private inactiveRules = this.facade.inactiveRules;\n\n ngOnInit(): void {\n if (!this.ruleTypes().length) {\n this.facade.getRuleTypes();\n }\n }\n\n ngOnDestroy(): void {\n this.facade.resetState();\n }\n\n openRuleDialog(rule: GovernanceRule | null = null) {\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\n this.modal.openModal(GovernanceRuleForm, modalType, {\n header: rule\n ? this.translocoService.translate('governance.edit-rule')\n : this.translocoService.translate('governance.add-rule'),\n styleClass: '!w-[50rem] !absolute ',\n position: modalType === 'drawer' ? 'end' : '',\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\n dismissableMask: true,\n dismissible: true,\n inputValues: {\n ruleForEdit: rule,\n },\n });\n }\n\n onCellChange(event: CellChangeEvent) {\n if (event.column === 'isActive' && event.type === 'boolean') {\n this.facade.toggleRuleActive(event.row.id);\n }\n }\n\n getRuleTypeLabel(ruleTypeKey: string): string {\n return this.translocoService.translate(\n `governance.rule-types.${ruleTypeKey}`,\n );\n }\n\n getRuleTypeChipClass(ruleTypeKey: string): string {\n const classes: Record<string, string> = {\n ModuleExists: 'bg-blue-100 text-blue-700',\n ModuleNotExists: 'bg-red-100 text-red-700',\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\n ModuleMinCount: 'bg-orange-100 text-orange-700',\n FieldRequired: 'bg-purple-100 text-purple-700',\n FieldValue: 'bg-indigo-100 text-indigo-700',\n PropertyValueEquals: 'bg-indigo-100 text-indigo-700',\n PropertyHasValue: 'bg-cyan-100 text-cyan-700',\n PhaseGateCompleted: 'bg-emerald-100 text-emerald-700',\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\n PhaseGateMandatoryItemsCompleted: 'bg-teal-100 text-teal-700',\n NoActiveRequest: 'bg-rose-100 text-rose-700',\n };\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\n }\n\n getAppliesToLabel(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.phase-gate.label',\n );\n }\n\n if (rule.targetScope === 'Level') {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.level.label',\n );\n }\n\n if (rule.targetModuleKey) {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.specific-module.label',\n );\n }\n\n return this.translocoService.translate(\n 'governance.wizard.applies-to.any-module.label',\n );\n }\n\n getAppliesToIcon(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n return 'general.flag-01';\n }\n\n if (rule.targetScope === 'Level') {\n return 'general.layers-three-01';\n }\n\n return 'general.cube-01';\n }\n\n getWhenLabel(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n switch (rule.targetOperationKey) {\n case 'Update':\n return this.translocoService.translate(\n 'governance.wizard.actions.manage-phase-gate',\n );\n case 'MovePhaseGate':\n return this.translocoService.translate(\n 'governance.wizard.actions.move-phase-gate',\n );\n default:\n break;\n }\n }\n\n switch (rule.targetOperationKey) {\n case 'Create':\n return this.translocoService.translate('governance.create');\n case 'Update':\n return this.translocoService.translate('governance.update');\n case 'Delete':\n return this.translocoService.translate('governance.delete');\n case 'MovePhaseGate':\n return this.translocoService.translate(\n 'governance.wizard.actions.move-phase-gate',\n );\n default:\n return (\n rule.targetOperationKey ||\n this.translocoService.translate('governance.all')\n );\n }\n }\n\n private isPhaseGateRule(rule: GovernanceRule): boolean {\n return (\n rule.targetScope === 'PhaseGate' ||\n String(rule.targetModuleKey ?? '').toLowerCase() === 'phasegate'\n );\n }\n\n private readRuleTypeKey(ruleType: GovernanceRuleType): string {\n return String(ruleType.key ?? ruleType.type ?? '').trim();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"getRuleTypeLabel(row.ruleTypeKey)\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon class=\"text-lg\" [icon]=\"getAppliesToIcon(row)\"></mt-icon>\r\n <span>{{ getAppliesToLabel(row) }}</span>\r\n @if (\r\n row.targetModuleKey &&\r\n getAppliesToLabel(row) !== t(\"wizard.applies-to.phase-gate.label\")\r\n ) {\r\n <span class=\"text-slate-500\">&rarr; {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #whenCol let-row>\r\n <span>{{ getWhenLabel(row) }}</span>\r\n </ng-template>\r\n\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"governance-rules-list-table\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;MAKa,UAAU,CAAA;AAEF,IAAA,OAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,2BAA2B;AAClD,IAAA,WAAA,CAAmB,OAAe,EAAA;QAAf,IAAA,CAAA,OAAO,GAAP,OAAO;IAAW;;MAG1B,kBAAkB,CAAA;AAC7B,IAAA,OAAgB,IAAI,GAAG,wBAAwB;;MAGpC,iBAAiB,CAAA;AAET,IAAA,EAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,uBAAuB;AAC9C,IAAA,WAAA,CAAmB,EAAU,EAAA;QAAV,IAAA,CAAA,EAAE,GAAF,EAAE;IAAW;;MAGrB,sBAAsB,CAAA;AACjC,IAAA,OAAgB,IAAI,GAAG,6BAA6B;;MAGzC,iBAAiB,CAAA;AAET,IAAA,IAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,uBAAuB;AAC9C,IAAA,WAAA,CAAmB,IAA6B,EAAA;QAA7B,IAAA,CAAA,IAAI,GAAJ,IAAI;IAA4B;;MAGxC,oBAAoB,CAAA;AAGtB,IAAA,EAAA;AACA,IAAA,IAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,0BAA0B;IACjD,WAAA,CACS,EAAU,EACV,IAA6B,EAAA;QAD7B,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,IAAI,GAAJ,IAAI;IACV;;MAGQ,oBAAoB,CAAA;AAEZ,IAAA,EAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,0BAA0B;AACjD,IAAA,WAAA,CAAmB,EAAU,EAAA;QAAV,IAAA,CAAA,EAAE,GAAF,EAAE;IAAW;;MAGrB,0BAA0B,CAAA;AAElB,IAAA,EAAA;AADnB,IAAA,OAAgB,IAAI,GAAG,iCAAiC;AACxD,IAAA,WAAA,CAAmB,EAAU,EAAA;QAAV,IAAA,CAAA,EAAE,GAAF,EAAE;IAAW;;MAGrB,iBAAiB,CAAA;AAC5B,IAAA,OAAgB,IAAI,GAAG,kCAAkC;;MAG9C,oBAAoB,CAAA;AAC/B,IAAA,OAAgB,IAAI,GAAG,0BAA0B;;MAGtC,UAAU,CAAA;AACrB,IAAA,OAAgB,IAAI,GAAG,0BAA0B;;AAGnD;;;;AAIG;MACU,iBAAiB,CAAA;AAGnB,IAAA,WAAA;AACA,IAAA,eAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,kCAAkC;IACzD,WAAA,CACS,WAAmB,EACnB,eAAwB,EAAA;QADxB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,eAAe,GAAf,eAAe;IACrB;;AAGL;;;;AAIG;MACU,aAAa,CAAA;AAGf,IAAA,WAAA;AACA,IAAA,eAAA;AAHT,IAAA,OAAgB,IAAI,GAAG,6BAA6B;IACpD,WAAA,CACS,WAAmB,EACnB,eAAwB,EAAA;QADxB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,eAAe,GAAf,eAAe;IACrB;;AAGL;;AAEG;MACU,mBAAmB,CAAA;AAC9B,IAAA,OAAgB,IAAI,GAAG,oCAAoC;;AAG7D;;AAEG;MACU,eAAe,CAAA;AAC1B,IAAA,OAAgB,IAAI,GAAG,+BAA+B;;;ACpFxD;AACA;AACA;IAEY;AAAZ,CAAA,UAAY,sBAAsB,EAAA;AAChC,IAAA,sBAAA,CAAA,sBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAgB;AAChB,IAAA,sBAAA,CAAA,sBAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAsB;AACtB,IAAA,sBAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,sBAAA,CAAA,sBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAkB;AAClB,IAAA,sBAAA,CAAA,sBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAiB;AACjB,IAAA,sBAAA,CAAA,sBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc;AACd,IAAA,sBAAA,CAAA,sBAAA,CAAA,yBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,yBAA2B;AAC3B,IAAA,sBAAA,CAAA,sBAAA,CAAA,iBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,iBAAmB;AACrB,CAAC,EATW,sBAAsB,KAAtB,sBAAsB,GAAA,EAAA,CAAA,CAAA;AAmJlC;AACA;AACA;IAEY;AAAZ,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,mBAAA,CAAA,kBAAA,CAAA,GAAA,kBAAqC;AACrC,IAAA,mBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,mBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,mBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B;AACjC,CAAC,EAXW,mBAAmB,KAAnB,mBAAmB,GAAA,EAAA,CAAA,CAAA;;;;;;;;ACtI/B,MAAM,QAAQ,GAAyB;AACrC,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,OAAO,EAAE,EAAE;AACX,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,UAAU,EAAE,EAAE;AACd,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,MAAM,EAAE,EAAE;CACX;AAOM,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,aAIpC,CAAA;AACS,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;;;;AAO1B,IAAP,OAAO,UAAU,CAAC,KAA2B,EAAA;QAC3C,OAAO,KAAK,CAAC,OAAO;IACtB;AAGO,IAAP,OAAO,QAAQ,CAAC,KAA2B,EAAA;QACzC,OAAO,KAAK,CAAC,KAAK;IACpB;AAGO,IAAP,OAAO,YAAY,CAAC,KAA2B,EAAA;QAC7C,OAAO,KAAK,CAAC,SAAS;IACxB;AAGO,IAAP,OAAO,eAAe,CAAC,KAA2B,EAAA;QAChD,OAAO,KAAK,CAAC,YAAY;IAC3B;AAGO,IAAP,OAAO,UAAU,CAAC,KAA2B,EAAA;QAC3C,OAAO,KAAK,CAAC,OAAO;IACtB;AAGO,IAAP,OAAO,iBAAiB,CACtB,KAA2B,EAAA;QAE3B,OAAO,KAAK,CAAC,cAAc;IAC7B;AAGO,IAAP,OAAO,aAAa,CAAC,KAA2B,EAAA;QAC9C,OAAO,KAAK,CAAC,UAAU;IACzB;;;;AAOO,IAAP,OAAO,gBAAgB,CAAC,KAA2B,EAAA;QACjD,OAAO,KAAK,CAAC,aAAa;IAC5B;AAGO,IAAP,OAAO,SAAS,CAAC,KAA2B,EAAA;QAC1C,OAAO,KAAK,CAAC,MAAM;IACrB;;;;AAOA,IAAA,UAAU,CAAC,GAAuC,EAAE,EAAE,OAAO,EAAc,EAAA;AACzE,QAAA,GAAG,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IAC7B;AAGA,IAAA,UAAU,CAAC,GAAuC,EAAA;AAChD,QAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACxB;;;;AAOA,IAAA,QAAQ,CAAC,GAAuC,EAAA;QAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,qBAAA,EAAwB,OAAO,CAAA,iBAAA,CAAmB,CACnD;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,QAAQ;AACjC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;AACxB,gBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;aAC3B,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,OAAO,CAAC,GAAuC,EAAE,EAAE,EAAE,EAAqB,EAAA;QACxE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,qBAAA,EAAwB,OAAO,CAAA,kBAAA,EAAqB,EAAE,CAAA,CAAE,CACzD;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,OAAO;AAChC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;AACxB,gBAAA,YAAY,EAAE,QAAQ,CAAC,IAAI,IAAI,IAAI;aACpC,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,YAAY,CAAC,GAAuC,EAAA;QAClD,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,4CAAA,EAA+C,OAAO,CAAA,CAAE,CACzD;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,YAAY;AACrC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;AACxB,gBAAA,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;aAC/B,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,OAAO,CACL,GAAuC,EACvC,EAAE,IAAI,EAAqB,EAAA;QAE3B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CACzB,CAAA,qBAAA,EAAwB,OAAO,CAAA,iBAAA,CAAmB,EAClD,IAAI,CACL;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,GAAG,EAAE,mBAAmB,CAAC,OAAO;AAChC,YAAA,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AACtC,SAAA,CAAC;IACJ;AAGA,IAAA,UAAU,CACR,GAAuC,EACvC,EAAE,EAAE,EAAE,IAAI,EAAwB,EAAA;QAElC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,qBAAA,EAAwB,OAAO,qBAAqB,EAAE,CAAA,CAAE,EACxD,IAAI,CACL;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,GAAG,EAAE,mBAAmB,CAAC,UAAU;AACnC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,IAAI;YACf,EAAE;YACF,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AACtC,SAAA,CAAC;IACJ;AAGA,IAAA,UAAU,CACR,GAAuC,EACvC,EAAE,EAAE,EAAwB,EAAA;QAE5B,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAC3B,CAAA,qBAAA,EAAwB,OAAO,CAAA,kBAAA,EAAqB,EAAE,CAAA,CAAE,CACzD;AAED,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YACtB,GAAG,EAAE,mBAAmB,CAAC,UAAU;AACnC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,IAAI;YACf,EAAE;YACF,aAAa,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;AACtC,SAAA,CAAC;IACJ;AAGA,IAAA,gBAAgB,CACd,GAAuC,EACvC,EAAE,EAAE,EAA8B,EAAA;QAElC,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAC1B,CAAA,qBAAA,EAAwB,OAAO,qBAAqB,EAAE,CAAA,OAAA,CAAS,EAC/D,EAAE,CACH;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,gBAAgB;AACzC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,KAAI;AAC7B,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI;AACjC,gBAAA,IAAI,CAAC,WAAW;AAAE,oBAAA,OAAO,EAAE;gBAE3B,OAAO;AACL,oBAAA,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC;iBAC9D;YACH,CAAC;AACF,SAAA,CAAC;IACJ;;;;AAOA,IAAA,UAAU,CAAC,GAAuC,EAAA;QAChD,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAClC,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAC7B;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,UAAU;AACnC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;;AAExB,gBAAA,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;aACzD,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,iBAAiB,CAAC,GAAuC,EAAA;QACvD,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxC;;;;AAOA,IAAA,iBAAiB,CACf,GAAuC,EACvC,EAAE,WAAW,EAAE,eAAe,EAAqB,EAAA;QAEnD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;;;;AAKA,QAAA,IAAI,QAAQ,GAAG,CAAA,qBAAA,EAAwB,OAAO,EAAE;;AAGhD,QAAA,IAAI,WAAW,KAAK,QAAQ,IAAI,eAAe,EAAE;AAC/C,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC;YACnE,IAAI,YAAY,EAAE;AAChB,gBAAA,QAAQ,IAAI,CAAA,QAAA,EAAW,YAAY,CAAC,EAAE,EAAE;YAC1C;QACF;;AAGA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CACxB,CAAA,EAAG,QAAQ,CAAA,cAAA,CAAgB,CAC5B;AAED,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,iBAAiB;AAC1C,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;AACxB,gBAAA,cAAc,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;aACnE,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,aAAa,CACX,GAAuC,EACvC,EAAE,WAAW,EAAE,eAAe,EAAiB,EAAA;QAE/C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE;QAC3C,IAAI,CAAC,OAAO,EAAE;YACZ;QACF;;AAGA,QAAA,IAAI,QAAQ,GAAG,CAAA,mBAAA,EAAsB,OAAO,EAAE;;AAG9C,QAAA,IAAI,WAAW,KAAK,QAAQ,IAAI,eAAe,EAAE;AAC/C,YAAA,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC;YACnE,IAAI,YAAY,EAAE;gBAChB,QAAQ,GAAG,sBAAsB,OAAO,CAAA,UAAA,EAAa,YAAY,CAAC,EAAE,EAAE;YACxE;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,QAAQ,CAAC;AAEpE,QAAA,OAAO,gBAAgB,CAAC;YACtB,GAAG;YACH,GAAG,EAAE,mBAAmB,CAAC,aAAa;AACtC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,SAAS,EAAE,CAAC,QAAQ,MAAM;AACxB,gBAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;aAChC,CAAC;AACH,SAAA,CAAC;IACJ;AAGA,IAAA,mBAAmB,CAAC,GAAuC,EAAA;QACzD,GAAG,CAAC,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;IACxC;AAGA,IAAA,eAAe,CAAC,GAAuC,EAAA;QACrD,GAAG,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACpC;uGApWW,eAAe,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAf,eAAe,EAAA,CAAA;;AAmE1B,UAAA,CAAA;IADC,MAAM,CAAC,UAAU;AAGjB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,oBAAoB;AAG3B,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAOD,UAAA,CAAA;IADC,MAAM,CAAC,kBAAkB;AAmBzB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,iBAAiB;AAmBxB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,sBAAsB;AAmB7B,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,iBAAiB;AAoBxB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,oBAAoB;AAsB3B,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,oBAAoB;AAqB3B,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,0BAA0B;AA4BjC,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAOD,UAAA,CAAA;IADC,MAAM,CAAC,UAAU;AAoBjB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,iBAAiB;AAGxB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;AAOD,UAAA,CAAA;IADC,MAAM,CAAC,iBAAiB;AAoCxB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,aAAa;AA+BpB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,mBAAmB;AAG1B,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA;AAGD,UAAA,CAAA;IADC,MAAM,CAAC,eAAe;AAGtB,CAAA,EAAA,eAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;AAxVM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,UAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,cAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAKR,CAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,CAAA;AAOM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,IAAA,CAAA;AAGM,UAAA,CAAA;AADN,IAAA,QAAQ;AAGR,CAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,CAAA;AA5DU,eAAe,GAAA,UAAA,CAAA;AAL3B,IAAA,KAAK,CAAuB;AAC3B,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,QAAQ,EAAE,QAAQ;KACnB;AAEY,CAAA,EAAA,eAAe,CAqW3B;2FArWY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;MCrBY,gBAAgB,CAAA;AACV,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;;;;AAK7B,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC5C,IAAA,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC;AACxC,IAAA,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC;AAChD,IAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC;AACtD,IAAA,OAAO,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC;AAC5C,IAAA,cAAc,GAAG,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC;AAC1D,IAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC;;;;AAK1C,IAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,gBAAgB,CAAC;AACxD,IAAA,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;;;;AAKlD,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,qFAC5D;AACQ,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,oFAC3D;AACQ,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MACrC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,yFAChE;AACQ,IAAA,YAAY,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,mFAC3D;AACQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,qFAC9D;AACQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,qFAC9D;AACQ,IAAA,cAAc,GAAG,QAAQ,CAAC,MACjC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,qFACpE;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MACnC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,uFAC9D;AACQ,IAAA,uBAAuB,GAAG,QAAQ,CAAC,MAC1C,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,8FACrE;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CAAC,MACtC,IAAI,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,0FACjE;;;;AAKQ,IAAA,UAAU,GAAG,QAAQ,CAC5B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,IAAI,IAAI,iFAC1D;AACQ,IAAA,SAAS,GAAG,QAAQ,CAC3B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,gFACzD;AACQ,IAAA,cAAc,GAAG,QAAQ,CAChC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,IAAI,qFAC9D;AACQ,IAAA,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,IAAI,mFACzD;AACQ,IAAA,eAAe,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,IAAI,sFAC5D;AACQ,IAAA,eAAe,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,IAAI,sFAC5D;AACQ,IAAA,YAAY,GAAG,QAAQ,CAC9B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,IAAI,mFAC5D;AACQ,IAAA,mBAAmB,GAAG,QAAQ,CACrC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,IAAI,0FACnE;AACQ,IAAA,eAAe,GAAG,QAAQ,CACjC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,IAAI,sFAC/D;;;;IAKQ,WAAW,GAAG,QAAQ,CAAC,MAC9B,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,aAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAChD;IAEQ,aAAa,GAAG,QAAQ,CAAC,MAChC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACjD;AAEQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,iFAAC;;;;AAMzD,IAAA,UAAU,CAAC,OAAe,EAAA;AACxB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACrD;IAEA,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC;IACtD;AAEA,IAAA,OAAO,CAAC,EAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACvD;IAEA,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC;IAC1D;IAEA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC;IAC9C;AAEA,IAAA,OAAO,CAAC,IAA6B,EAAA;AACnC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzD;IAEA,UAAU,CAAC,EAAU,EAAE,IAA6B,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChE;AAEA,IAAA,UAAU,CAAC,EAAU,EAAA;AACnB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC1D;AAEA,IAAA,gBAAgB,CAAC,EAAU,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,0BAA0B,CAAC,EAAE,CAAC,CAAC;IAChE;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC;IACrD;IAEA,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC;IACxD;;;;IAMA,iBAAiB,CAAC,WAAmB,EAAE,eAAwB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CACxB,IAAI,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC,CACpD;IACH;IAEA,aAAa,CAAC,WAAmB,EAAE,eAAwB,EAAA;AACzD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC7E;IAEA,mBAAmB,GAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,EAAE,CAAC;IACvD;IAEA,eAAe,GAAA;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC;IACnD;uGAtKW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAhB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA;;2FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACwD3B,MAAM,kCAAkC,GAC7C;AACE,IAAA;AACE,QAAA,GAAG,EAAE,gBAAgB;QACrB,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,QAAA,QAAQ,EAAE,qCAAqC;AAChD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,YAAY,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;AACvD,QAAA,QAAQ,EAAE,qCAAqC;AAChD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,QAAA,QAAQ,EAAE,uCAAuC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,CAAC,gBAAgB,CAAC;AAChC,QAAA,QAAQ,EAAE,uCAAuC;AAClD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,sBAAsB;QAC3B,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,QAAA,QAAQ,EAAE,2CAA2C;AACtD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,4BAA4B;QACjC,YAAY,EAAE,CAAC,yBAAyB,CAAC;AACzC,QAAA,QAAQ,EAAE,iDAAiD;AAC5D,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,mBAAmB;QACxB,YAAY,EAAE,CAAC,iBAAiB,CAAC;AACjC,QAAA,QAAQ,EAAE,wCAAwC;AACnD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,gBAAgB;AACrB,QAAA,YAAY,EAAE,CAAC,qBAAqB,EAAE,YAAY,CAAC;AACnD,QAAA,QAAQ,EAAE,qCAAqC;AAChD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,oBAAoB;QACzB,YAAY,EAAE,CAAC,kBAAkB,CAAC;AAClC,QAAA,QAAQ,EAAE,yCAAyC;AACpD,KAAA;AACD,IAAA;AACE,QAAA,GAAG,EAAE,gCAAgC;QACrC,YAAY,EAAE,CAAC,kCAAkC,CAAC;AAClD,QAAA,QAAQ,EAAE,qDAAqD;AAChE,KAAA;CACF;AAEI,MAAM,6BAA6B,GACxC;AACE,IAAA;AACE,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,QAAQ,EAAE,+BAA+B;AAC1C,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,QAAQ,EAAE,oCAAoC;AAC/C,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,QAAQ,EAAE,yCAAyC;AACpD,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,QAAQ,EAAE,oCAAoC;AAC/C,KAAA;CACF;AAEI,MAAM,yBAAyB,GACpC;AACE,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,uBAAuB;AAClC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,uBAAuB;AAClC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,uBAAuB;AAClC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,mBAAmB;AAC1B,QAAA,QAAQ,EAAE,kCAAkC;AAC7C,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,QAAQ,EAAE,gCAAgC;AAC3C,KAAA;CACF;AAEI,MAAM,2BAA2B,GAAiC;AACvE,IAAA;AACE,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,QAAQ,EAAE,yBAAyB;AACpC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,QAAQ,EAAE,4BAA4B;AACvC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,2BAA2B;AACtC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,QAAQ,EAAE,8BAA8B;AACzC,KAAA;AACD,IAAA;AACE,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,QAAQ,EAAE,2BAA2B;AACtC,KAAA;CACF;AAEM,MAAM,6BAA6B,GAAG;IAC3C,QAAQ;IACR,WAAW;IACX,UAAU;IACV,aAAa;IACb,UAAU;CACF;AAEH,MAAM,yBAAyB,GAAG;IACvC,SAAS;IACT,OAAO;IACP,YAAY;CACJ;AAEH,MAAM,kCAAkC,GAC7C;AACE,IAAA,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACxB,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC/B,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAChC,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,iBAAiB,EAAE,IAAI;AACvB,IAAA,eAAe,EAAE,IAAI;AACrB,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,QAAQ,EAAE,QAAQ;AAClB,IAAA,aAAa,EAAE,EAAE;AACjB,IAAA,QAAQ,EAAE,EAAE;AACZ,IAAA,aAAa,EAAE,IAAI;AACnB,IAAA,QAAQ,EAAE,IAAI;CACf;AAEG,SAAU,yBAAyB,CACvC,QAA4B,EAAA;AAE5B,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC3D;AAEM,SAAU,qBAAqB,CAAC,IAAoB,EAAA;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAC9C;AAEM,SAAU,uBAAuB,CACrC,SAAyC,EAAA;AAEzC,IAAA,QACE,kCAAkC,CAAC,IAAI,CACrC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,KAAK,SAAS,CAC7C,IAAI,IAAI;AAEb;AAEM,SAAU,0BAA0B,CACxC,WAAsC,EAAA;IAEtC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;IACnD,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,QACE,kCAAkC,CAAC,IAAI,CAAC,CAAC,UAAU,KACjD,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,UAAU,CAAC,CAC1D,EAAE,GAAG,IAAI,IAAI;AAElB;AAEM,SAAU,oBAAoB,CAClC,SAA+B,EAC/B,SAAyC,EAAA;AAEzC,IAAA,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC;IACrD,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,OAAO,IAAI;IACb;IAEA,QACE,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,KACtB,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC,CACtE,IAAI,IAAI;AAEb;AAEM,SAAU,4BAA4B,CAC1C,QAAmC,EACnC,QAAgB,EAAA;IAEhB,IAAI,CAAC,QAAQ,EAAE;AACb,QAAA,OAAO,IAAI;IACb;IAEA,QACE,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,IAAI,IAAI;AAEhF;;AC9RM,SAAU,yBAAyB,CACvC,SAAkC,EAAA;IAElC,QAAQ,SAAS;AACf,QAAA,KAAK,OAAO;AACV,YAAA,OAAO,OAAO;AAChB,QAAA,KAAK,YAAY;AACjB,QAAA,KAAK,YAAY;AACjB,QAAA,KAAK,iBAAiB;AACtB,QAAA;AACE,YAAA,OAAO,QAAQ;;AAErB;AAEM,SAAU,uBAAuB,CACrC,SAAkC,EAAA;IAElC,QAAQ,SAAS;AACf,QAAA,KAAK,QAAQ;AACb,QAAA,KAAK,mBAAmB;AACtB,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,eAAe;AACxB,QAAA,KAAK,QAAQ;AACb,QAAA;AACE,YAAA,OAAO,QAAQ;;AAErB;SAEgB,uBAAuB,CACrC,YAAuC,EACvC,iBAAiB,GAAG,KAAK,EAAA;AAEzB,IAAA,QACE,MAAM,CAAC,YAAY,IAAI,EAAE;AACtB,SAAA,IAAI;SACJ,WAAW,EAAE;AAEhB,QAAA,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,IAAI,GAAG,QAAQ;AAC5C,QAAA,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,mBAAmB,GAAG,QAAQ;AAC3D,QAAA,KAAK,QAAQ;YACX,OAAO,iBAAiB,GAAG,IAAI,GAAG,QAAQ;AAC5C,QAAA,KAAK,eAAe;YAClB,OAAO,iBAAiB,GAAG,iBAAiB,GAAG,IAAI;AACrD,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;AAEA,SAAS,gBAAgB,CAAC,KAAc,EAAA;IACtC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;AACzC,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;IACjC,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI;AAC3B;AAEA,SAAS,gBAAgB,CAAC,KAAc,EAAA;AACtC,IAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,OAAO,GACX,OAAO,KAAK,KAAK;AACf,UAAE;AACF,UAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnD,IAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI;AAClD;AAEA,SAAS,aAAa,CAAC,KAAc,EAAA;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,OAAO;SACJ,GAAG,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,IAAI,CAAC;SACpC,MAAM,CAAC,CAAC,IAAI,KAAqB,CAAC,CAAC,IAAI,CAAC;AAC7C;AAEA,SAAS,kBAAkB,CACzB,KAEqC,EAAA;IAErC,OAAO;AACL,QAAA,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;AACnB,QAAA,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;KACpB;AACH;AAEA,SAAS,mBAAmB,CAAC,KAAa,EAAA;AACxC,IAAA,OAAO;SACJ,SAAS,CAAC,MAAM;AAChB,SAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE;AAC9B,SAAA,WAAW;AACX,SAAA,OAAO,CAAC,aAAa,EAAE,GAAG;AAC1B,SAAA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC5B;AAEA,SAAS,cAAc,CACrB,UAAmB,EACnB,IAEqC,EACrC,QAAiB,EAAA;AAEjB,IAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,UAAU,CAAC;IAChD,IAAI,WAAW,EAAE;AACf,QAAA,OAAO,WAAW;IACpB;IAEA,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC5C,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,OAAO;IAChB;IAEA,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,WAAW,IAAI,iBAAiB;AACzC;AAEA,SAAS,wBAAwB,CAC/B,SAAwC,EAAA;AAExC,IAAA,QAAQ,SAAS,CAAC,SAAS;QACzB,KAAK,gBAAgB,EAAE;YACrB,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACvE,IAAI,CAAC,iBAAiB,EAAE;AACtB,gBAAA,OAAO,SAAS;YAClB;YAEA,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;AACvD,YAAA,OAAO,QAAQ,IAAI,QAAQ,GAAG;AAC5B,kBAAE,EAAE,iBAAiB,EAAE,QAAQ;AAC/B,kBAAE,EAAE,iBAAiB,EAAE;QAC3B;QACA,KAAK,gBAAgB,EAAE;YACrB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC9D,OAAO,SAAS,GAAG,EAAE,SAAS,EAAE,GAAG,SAAS;QAC9C;QACA,KAAK,kBAAkB,EAAE;YACvB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC9D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;AACvD,YAAA,OAAO,SAAS,IAAI,QAAQ,KAAK;AAC/B,kBAAE,EAAE,SAAS,EAAE,QAAQ;kBACrB,SAAS;QACf;QACA,KAAK,kBAAkB,EAAE;YACvB,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAC9D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC;AACvD,YAAA,OAAO,SAAS,IAAI,QAAQ,KAAK;AAC/B,kBAAE,EAAE,SAAS,EAAE,QAAQ;kBACrB,SAAS;QACf;QACA,KAAK,sBAAsB,EAAE;YAC3B,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACvE,YAAA,OAAO,iBAAiB,KAAK,IAAI,GAAG,EAAE,iBAAiB,EAAE,GAAG,SAAS;QACvE;QACA,KAAK,4BAA4B,EAAE;YACjC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACvE,IAAI,CAAC,iBAAiB,EAAE;AACtB,gBAAA,OAAO,SAAS;YAClB;YAEA,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;YACvE,OAAO,iBAAiB,KAAK;AAC3B,kBAAE,EAAE,iBAAiB,EAAE,iBAAiB;AACxC,kBAAE,EAAE,iBAAiB,EAAE;QAC3B;QACA,KAAK,mBAAmB,EAAE;YACxB,MAAM,eAAe,GAAG,gBAAgB,CAAC,SAAS,CAAC,eAAe,CAAC;YACnE,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAClE,MAAM,aAAa,GAA4B,EAAE;AAEjD,YAAA,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,gBAAA,aAAa,CAAC,iBAAiB,CAAC,GAAG,eAAe;YACpD;AAEA,YAAA,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,gBAAA,aAAa,CAAC,kBAAkB,CAAC,GAAG,gBAAgB;YACtD;AAEA,YAAA,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,SAAS;QAC1E;QACA,KAAK,gBAAgB,EAAE;YACrB,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC;YAC3D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;YACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC;AAC/D,YAAA,OAAO,WAAW,IAAI,QAAQ,IAAI,aAAa,KAAK;AAClD,kBAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,aAAa;kBACtC,SAAS;QACf;QACA,KAAK,oBAAoB,EAAE;YACzB,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC;YAC3D,OAAO,WAAW,GAAG,EAAE,WAAW,EAAE,GAAG,SAAS;QAClD;QACA,KAAK,gCAAgC,EAAE;YACrC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACvE,YAAA,OAAO,iBAAiB,KAAK,IAAI,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE;QAChE;AACA,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB;AAEM,SAAU,kBAAkB,CAChC,SAAwC,EACxC,QAA4B,EAAA;IAE5B,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;IAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC;AAC/D,IAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,QAAQ,CAAC;IAEvD,OAAO;QACL,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC;QACrD,IAAI;AACJ,QAAA,WAAW,EAAE,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,SAAS;QACvE,YAAY;AACZ,QAAA,QAAQ,EAAE,WAAW;AACrB,QAAA,WAAW,EAAE,yBAAyB,CAAC,SAAS,CAAC,SAAS,CAAC;AAC3D,QAAA,eAAe,EACb,SAAS,CAAC,SAAS,KAAK;AACtB,cAAE;AACF,cAAE,SAAS,CAAC,SAAS,KAAK;mBACrB,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC,IAAI,SAAS;AAC7D,kBAAE,SAAS;AACjB,QAAA,kBAAkB,EAChB,SAAS,CAAC,SAAS,KAAK;AACtB,cAAE,uBAAuB,CAAC,SAAS,CAAC,SAAS;AAC7C,cAAE,SAAS;AACf,QAAA,aAAa,EAAE,wBAAwB,CAAC,SAAS,CAAC;QAClD,QAAQ,EAAE,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpD,QAAA,aAAa,EAAE,SAAS,CAAC,aAAa,IAAI,IAAI;KAC/C;AACH;AAEM,SAAU,kBAAkB,CAChC,SAAwC,EACxC,QAA4B,EAAA;IAE5B,OAAO;AACL,QAAA,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC;AAC1C,QAAA,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,IAAI;KACrC;AACH;AAEM,SAAU,wBAAwB,CACtC,IAAoB,EAAA;IAEpB,MAAM,SAAS,GAAG,0BAA0B,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzE,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI;IACb;IAEA,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC;AACnD,IAAA,MAAM,SAAS,GAAG,uBAAuB,CACvC,IAAI,CAAC,kBAAkB,EACvB,iBAAiB,CAAC,IAAI,CAAC,CACxB;IACD,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,EAAE;AAC9C,IAAA,MAAM,SAAS,GAAkC;AAC/C,QAAA,GAAG,kCAAkC;AACrC,QAAA,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;AACnB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AACvB,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AACxB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;AAC9B,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;AAC/B,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;AAC/B,YAAA,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;AAChC,SAAA;QACD,SAAS;QACT,iBAAiB,EACf,SAAS,KAAK;AACZ,cAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe;AACvC,cAAE,IAAI;QACV,SAAS;QACT,SAAS;AACT,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,kCAAkC,CAAC,QAAQ;AACtE,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;AACzC,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;AAC/B,QAAA,iBAAiB,EAAE,gBAAgB,CACjC,aAAa,CAAC,mBAAmB,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CACjE;AACD,QAAA,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9D,QAAA,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AAC9D,QAAA,UAAU,EACR,gBAAgB,CACd,aAAa,CAAC,UAAU,CAAC;YACvB,aAAa,CAAC,UAAU,CAAC;AACzB,YAAA,kCAAkC,CAAC,UAAU,CAChD,IAAI,kCAAkC,CAAC,UAAU;AACpD,QAAA,iBAAiB,EAAE,gBAAgB,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AACvE,QAAA,eAAe,EAAE,gBAAgB,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACnE,QAAA,gBAAgB,EAAE,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;AAClE,QAAA,WAAW,EAAE,gBAAgB,CAC3B,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAC1D;AACD,QAAA,QAAQ,EACN,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAC3C,YAAA,kCAAkC,CAAC,QAAQ;AAC7C,QAAA,aAAa,EACX,gBAAgB,CACd,aAAa,CAAC,eAAe,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CACzD,IAAI,EAAE;KACV;AAED,IAAA,IAAI,SAAS,KAAK,gBAAgB,EAAE;QAClC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACzE,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;IACpC;AAEA,IAAA,IAAI,SAAS,KAAK,sBAAsB,EAAE;AACxC,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;IACpC;AAEA,IAAA,IAAI,SAAS,KAAK,mBAAmB,EAAE;AACrC,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;AAClC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;IACnC;AAEA,IAAA,IAAI,SAAS,KAAK,gBAAgB,EAAE;AAClC,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;AAClC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;IACnC;AAEA,IAAA,IAAI,SAAS,KAAK,oBAAoB,EAAE;AACtC,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;AAClC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,aAAa,GAAG,EAAE;IAC9B;AAEA,IAAA,IAAI,SAAS,KAAK,gCAAgC,EAAE;AAClD,QAAA,SAAS,CAAC,iBAAiB,GAAG,IAAI;AAClC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,gBAAgB,GAAG,IAAI;AACjC,QAAA,SAAS,CAAC,WAAW,GAAG,IAAI;AAC5B,QAAA,SAAS,CAAC,aAAa,GAAG,EAAE;IAC9B;AAEA,IAAA,OAAO,SAAS;AAClB;AAEA,SAAS,iBAAiB,CAAC,IAAoB,EAAA;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE;AACxC,SAAA,IAAI;AACJ,SAAA,WAAW,EAAE;IAChB,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE;AACtD,SAAA,IAAI;AACJ,SAAA,WAAW,EAAE;AAEhB,IAAA,OAAO,KAAK,KAAK,WAAW,IAAI,eAAe,KAAK,WAAW;AACjE;AAEA,SAAS,gBAAgB,CACvB,IAAoB,EACpB,UAAmC,EAAA;AAEnC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;AAEnD,IAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAA,OAAO,YAAY;IACrB;IAEA,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI;AAC5C,UAAE;UACA,YAAY;AAClB;AAEM,SAAU,wBAAwB,CACtC,IAAoB,EAAA;AAEpB,IAAA,MAAM,QAAQ,GAA8B;QAC1C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AACvB,YAAA,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE;AACxB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;AAC9B,YAAA,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE;AAC/B,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;AAC/B,YAAA,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE;AAChC,SAAA;QACD,QAAQ,EAAE,IAAI,CAAC,WAAW;QAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;AAC7B,QAAA,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;AAC3C,QAAA,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,EAAE;QACjD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB;AAED,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAChE,QAAA,QAAQ,CAAC,CAAA,OAAA,EAAU,GAAG,EAAE,CAAC,GAAG,KAAK;AACnC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,QAAQ;AACjB;AAEM,SAAU,yBAAyB,CACvC,SAAoC,EAAA;IAEpC,MAAM,IAAI,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/C,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC;IAC7D,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;IAEjD,OAAO;QACL,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC;QAClD,IAAI;AACJ,QAAA,WAAW,EAAE,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,SAAS;QACvE,YAAY;QACZ,QAAQ;QACR,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC;QAChD,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe,IAAI,EAAE,CAAC,IAAI,SAAS;QACrE,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC,kBAAkB,IAAI,EAAE,CAAC,IAAI,SAAS;AAC3E,QAAA,aAAa,EAAE,0BAA0B,CAAC,SAAS,CAAC;QACpD,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC;KACxD;AACH;AAEM,SAAU,yBAAyB,CACvC,SAAoC,EAAA;IAEpC,OAAO;QACL,GAAG,yBAAyB,CAAC,SAAS,CAAC;QACvC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;KAC9C;AACH;AAEA,SAAS,0BAA0B,CACjC,SAAoC,EAAA;IAEpC,MAAM,aAAa,GAA4B,EAAE;AAEjD,IAAA,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AACjD,QAAA,IACE,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;AACzB,YAAA,KAAK,KAAK,IAAI;AACd,YAAA,KAAK,KAAK,SAAS;YACnB,KAAK,KAAK,EAAE,EACZ;AACA,YAAA,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK;QACnD;AACF,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,SAAS;AAC1E;;ACpbM,SAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACkB,EAAA;IAClC,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACtD,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,KAAK,EAAE,MAAM;AACd,KAAA,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACnE,QAAA,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;AACpB,KAAA,CAAC,CAAC;AACH,IAAA,MAAM,UAAU,GACd,SAAS,KAAK;AACZ,UAAE,SAAS,CAAC,wBAAwB;AACpC,UAAE,SAAS,CAAC,wBAAwB,CAAC;IAEzC,OAAO;AACL,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC;AACrC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,eAAe,CAAC;AAClB,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;AAC3B,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,eAAe,CAAC;AAClB,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;AAC3B,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,gBAAgB;AACrB,wBAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC;AAClC,wBAAA,IAAI,EAAE,CAAC;AACP,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,gBAAgB;AACrB,wBAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC;AAClC,wBAAA,IAAI,EAAE,CAAC;AACP,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACpC,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,IAAI,EAAE,CAAC;AACP,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACpC,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,IAAI,EAAE,CAAC;AACP,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC;AACzC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,qBAAqB,CAAC;AACxB,wBAAA,GAAG,EAAE,WAAW;AAChB,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,IAAI,EAAE,OAAO;qBACd,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,mBAAmB;AACxB,wBAAA,KAAK,EAAE,SAAS,CAAC,8BAA8B,CAAC;AAChD,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,iBAAiB;AACxB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,sBAAsB,CAAC;AACxC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,qBAAqB,CAAC;AACxB,wBAAA,GAAG,EAAE,WAAW;AAChB,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,IAAI,EAAE,OAAO;qBACd,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,QAAQ;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,sBAAsB,CAAC;AACxC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,qBAAqB,CAAC;AACxB,wBAAA,GAAG,EAAE,WAAW;AAChB,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,MAAM;AACnB,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,IAAI,EAAE,OAAO;qBACd,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,SAAS;AACd,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,yBAAyB,CAAC;AAC3C,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,mBAAmB;AACxB,wBAAA,KAAK,EAAE,SAAS,CAAC,8BAA8B,CAAC;AAChD,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gBAAgB;AACvB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,4BAA4B;AACnC,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,kBAAkB;AACvB,wBAAA,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC;AAC/C,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gBAAgB;AACvB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,kBAAkB;AACvB,wBAAA,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC;AAC/C,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,kBAAkB;AACzB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,kBAAkB;AACzB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,YAAY;AACjB,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC9D,4BAAA,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAC;AACN,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,kBAAkB;AACzB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,kBAAkB;AACzB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,4BAA4B;AACjC,wBAAA,KAAK,EAAE,SAAS,CAAC,kCAAkC,CAAC;AACpD,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,sBAAsB;AAC7B,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,2BAA2B;AAChC,wBAAA,KAAK,EAAE,SAAS,CAAC,kCAAkC,CAAC;AACpD,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,4BAA4B;AACnC,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gCAAgC;AACvC,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC;AAC/C,wBAAA,WAAW,EAAE,SAAS,CAAC,4BAA4B,CAAC;AACpD,wBAAA,OAAO,EAAE,oBAAoB;AAC7B,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,mBAAmB;AAC1B,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,sBAAsB,CAAC;AACzB,wBAAA,GAAG,EAAE,kBAAkB;AACvB,wBAAA,KAAK,EAAE,SAAS,CAAC,gCAAgC,CAAC;AAClD,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,mBAAmB;AAC1B,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,aAAa;AAClB,wBAAA,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC;AACzC,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gBAAgB;AACvB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACD,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,oBAAoB;AAC3B,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,uBAAuB,CAAC;AACzC,wBAAA,WAAW,EAAE,SAAS,CAAC,2BAA2B,CAAC;AACnD,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gBAAgB;AACvB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,eAAe,CAAC;AAClB,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE,SAAS,CAAC,6BAA6B,CAAC;AAC/C,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC/D,yBAAA;AACD,wBAAA,KAAK,EAAE,EAAE;AACT,wBAAA,OAAO,EAAE,EAAE;AACX,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,WAAW;AAChB,gCAAA,KAAK,EAAE,gBAAgB;AACvB,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,UAAU;AACf,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,oBAAoB,CAAC;AACtC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC;AAC5B,wBAAA,UAAU,EAAE;AACV,4BAAA,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAC9D,4BAAA,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;AACvB,yBAAA;AACD,wBAAA,GAAG,EAAE,CAAC;AACN,wBAAA,GAAG,EAAE,IAAI;AACT,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;AACnC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;qBACZ,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;wBAC/B,MAAM,EAAE,CAAC,MAAM;AACf,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;qBACZ,CAAC;AACH,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;AAEM,SAAU,qBAAqB,CAAC,EACpC,SAAS,EACT,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,eAAe,GACmB,EAAA;IAClC,OAAO;AACL,QAAA,QAAQ,EAAE;AACR,YAAA;AACE,gBAAA,GAAG,EAAE,WAAW;AAChB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,mBAAmB,CAAC;AACrC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC;AAC5B,wBAAA,WAAW,EAAE,IAAI;AACjB,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChE,wBAAA,GAAG,EAAE,CAAC;AACN,wBAAA,GAAG,EAAE,IAAI;AACT,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,eAAe,CAAC;AAClB,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;AAC3B,wBAAA,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC;AAC7C,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,eAAe,CAAC;AAClB,wBAAA,GAAG,EAAE,SAAS;AACd,wBAAA,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC;AAC3B,wBAAA,WAAW,EAAE,SAAS,CAAC,qBAAqB,CAAC;AAC7C,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,gBAAgB;AACrB,wBAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC;AAClC,wBAAA,WAAW,EAAE,SAAS,CAAC,4BAA4B,CAAC;AACpD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,gBAAgB;AACrB,wBAAA,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC;AAClC,wBAAA,WAAW,EAAE,SAAS,CAAC,4BAA4B,CAAC;AACpD,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACpC,wBAAA,WAAW,EAAE,SAAS,CAAC,8BAA8B,CAAC;AACtD,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,mBAAmB,CAAC;AACtB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACpC,wBAAA,WAAW,EAAE,SAAS,CAAC,8BAA8B,CAAC;AACtD,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,YAAY;AACjB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;AAC/B,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC;AAC7B,wBAAA,OAAO,EAAE,eAAe;AACxB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,QAAQ,EAAE,MAAM;qBACjB,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,aAAa;AAClB,wBAAA,KAAK,EAAE,SAAS,CAAC,cAAc,CAAC;AAChC,wBAAA,OAAO,EAAE,YAAY;AACrB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,UAAU,EAAE,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;AACxC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,iBAAiB;AACtB,wBAAA,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC;AACjC,wBAAA,OAAO,EAAE,aAAa;AACtB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;AACV,wBAAA,SAAS,EAAE;AACT,4BAAA;AACE,gCAAA,GAAG,EAAE,aAAa;AAClB,gCAAA,KAAK,EAAE,QAAQ;AACf,gCAAA,MAAM,EAAE,MAAM;AACf,6BAAA;AACF,yBAAA;qBACF,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,oBAAoB;AACzB,wBAAA,KAAK,EAAE,SAAS,CAAC,kBAAkB,CAAC;AACpC,wBAAA,OAAO,EAAE,gBAAgB;AACzB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,WAAW,EAAE,OAAO;AACpB,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,CAAC;qBACX,CAAC;AACH,iBAAA;AACF,aAAA;AACD,YAAA,IAAI;AACF,kBAAE;AACE,oBAAA,+BAA+B,CAAC;wBAC9B,SAAS;AACT,wBAAA,QAAQ,EAAE,gBAAgB;wBAC1B,QAAQ;wBACR,oBAAoB;wBACpB,eAAe;qBAChB,CAAC;AACH;kBACD,EAAE,CAAC;AACP,YAAA;AACE,gBAAA,GAAG,EAAE,mBAAmB;AACxB,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,SAAS,CAAC,oBAAoB,CAAC;AACtC,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE;AACN,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,eAAe;AACpB,wBAAA,KAAK,EAAE,SAAS,CAAC,iBAAiB,CAAC;AACnC,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;qBACZ,CAAC;AACF,oBAAA,IAAI,iBAAiB,CAAC;AACpB,wBAAA,GAAG,EAAE,UAAU;AACf,wBAAA,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC;AAC/B,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,OAAO,EAAE,EAAE;qBACZ,CAAC;AACH,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AACH;AAUA,SAAS,+BAA+B,CAAC,EACvC,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,oBAAoB,EACpB,eAAe,GAC6B,EAAA;IAC5C,OAAO;AACL,QAAA,GAAG,EAAE,eAAe;AACpB,QAAA,IAAI,EAAE,QAAiB;AACvB,QAAA,KAAK,EAAE,SAAS,CAAC,oBAAoB,CAAC;AACtC,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KACpD,sBAAsB,CAAC;YACrB,KAAK;YACL,KAAK,EAAE,KAAK,GAAG,CAAC;YAChB,QAAQ;YACR,oBAAoB;YACpB,eAAe;AAChB,SAAA,CAAC,CACH;KACF;AACH;AAUA,SAAS,sBAAsB,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,oBAAoB,EACpB,eAAe,GACyB,EAAA;AACxC,IAAA,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AACrD,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,CAAC;AAClC,IAAA,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE;AAErE,IAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,eAAe,CAAC;AACzB,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,UAAU;YACb,OAAO,IAAI,mBAAmB,CAAC;AAC7B,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,QAAQ;YACX,OAAO,IAAI,iBAAiB,CAAC;AAC3B,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,UAAU;gBACV,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,QAAQ;YACX,OAAO,IAAI,iBAAiB,CAAC;AAC3B,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,OAAO,EAAE,wBAAwB,CAC/B,KAAK,EACL,oBAAoB,EACpB,eAAe,CAChB;AACD,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,WAAW,EAAE,OAAO;gBACpB,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,cAAc;YACjB,OAAO,IAAI,sBAAsB,CAAC;AAChC,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,OAAO,EAAE,wBAAwB,CAC/B,KAAK,EACL,oBAAoB,EACpB,eAAe,CAChB;AACD,gBAAA,WAAW,EAAE,OAAO;AACpB,gBAAA,WAAW,EAAE,OAAO;gBACpB,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,UAAU;YACb,OAAO,IAAI,iBAAiB,CAAC;AAC3B,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA,KAAK,MAAM;YACT,OAAO,IAAI,eAAe,CAAC;AACzB,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;AACJ,QAAA;YACE,OAAO,IAAI,eAAe,CAAC;AACzB,gBAAA,GAAG,EAAE,CAAA,OAAA,EAAU,KAAK,CAAC,GAAG,CAAA,CAAE;gBAC1B,KAAK;gBACL,UAAU;gBACV,KAAK;gBACL,OAAO;AACR,aAAA,CAAC;;AAER;AAEA,SAAS,wBAAwB,CAC/B,KAA+B,EAC/B,oBAAgD,EAChD,eAA2C,EAAA;AAE3C,IAAA,QAAQ,KAAK,CAAC,aAAa;AACzB,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,oBAAoB;AAC7B,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,eAAe;AACxB,QAAA,KAAK,gBAAgB;AACrB,QAAA,KAAK,QAAQ;AACb,QAAA;AACE,YAAA,OAAO,KAAK,CAAC,OAAO,IAAI,EAAE;;AAEhC;;SCxxBgB,iBAAiB,CAC/B,SAAkC,EAClC,SAAkC,EAClC,SAAgD,EAAA;IAEhD,OAAO,SAAS,CAAC,uBAAuB,EAAE;AACxC,QAAA,MAAM,EAAE,SAAS,CAAC,CAAA,uBAAA,EAA0B,SAAS,EAAE,CAAC;AACxD,QAAA,MAAM,EAAE,SAAS,CAAC,CAAA,uBAAA,EAA0B,SAAS,EAAE,CAAC;AACzD,KAAA,CAAC;AACJ;AAEM,SAAU,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,GAAG,OAAO,EACe,EAAA;IACzB,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACxC,QAAA,OAAO,SAAS,CAAC,sBAAsB,CAAC;IAC1C;IAEA,OAAO,SAAS,CAAC,qBAAqB,EAAE;AACtC,QAAA,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC;QACtE,MAAM,EAAE,oBAAoB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;AAC/D,KAAA,CAAC;AACJ;AAEA,SAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,SAAS,GACgB,EAAA;AACzB,IAAA,QAAQ,KAAK,CAAC,SAAS;QACrB,KAAK,gBAAgB,EAAE;YACrB,MAAM,WAAW,GAAG,eAAe,CACjC,aAAa,EACb,KAAK,CAAC,iBAAiB,CACxB;YACD,OAAO,SAAS,CAAC,+BAA+B,EAAE;AAChD,gBAAA,MAAM,EACJ,WAAW;AACX,oBAAA,KAAK,CAAC,iBAAiB;oBACvB,SAAS,CAAC,iCAAiC,CAAC;AAC/C,aAAA,CAAC;QACJ;QACA,KAAK,gBAAgB,EAAE;YACrB,MAAM,WAAW,GAAG,eAAe,CACjC,aAAa,EACb,KAAK,CAAC,gBAAgB,CACvB;YACD,OAAO,SAAS,CAAC,+BAA+B,EAAE;AAChD,gBAAA,MAAM,EACJ,WAAW;AACX,oBAAA,KAAK,CAAC,gBAAgB;oBACtB,SAAS,CAAC,0CAA0C,CAAC;AACxD,aAAA,CAAC;QACJ;AACA,QAAA,KAAK,kBAAkB;YACrB,OAAO,SAAS,CAAC,iCAAiC,EAAE;AAClD,gBAAA,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;gBAC5B,MAAM,EACJ,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAA,KAAK,CAAC,gBAAgB;oBACtB,SAAS,CAAC,kCAAkC,CAAC;AAChD,aAAA,CAAC;AACJ,QAAA,KAAK,kBAAkB;YACrB,OAAO,SAAS,CAAC,iCAAiC,EAAE;AAClD,gBAAA,KAAK,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;gBAC5B,MAAM,EACJ,eAAe,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC;AACtD,oBAAA,KAAK,CAAC,gBAAgB;oBACtB,SAAS,CAAC,kCAAkC,CAAC;AAChD,aAAA,CAAC;QACJ,KAAK,sBAAsB,EAAE;YAC3B,MAAM,cAAc,GAAG,eAAe,CACpC,gBAAgB,EAChB,KAAK,CAAC,iBAAiB,CACxB;YACD,OAAO,SAAS,CAAC,qCAAqC,EAAE;AACtD,gBAAA,SAAS,EACP,cAAc,IAAI,SAAS,CAAC,qCAAqC,CAAC;AACrE,aAAA,CAAC;QACJ;QACA,KAAK,4BAA4B,EAAE;YACjC,MAAM,WAAW,GAAG,eAAe,CACjC,aAAa,EACb,KAAK,CAAC,iBAAiB,CACxB;YACD,OAAO,SAAS,CAAC,2CAA2C,EAAE;AAC5D,gBAAA,MAAM,EACJ,WAAW;AACX,oBAAA,KAAK,CAAC,iBAAiB;oBACvB,SAAS,CAAC,0CAA0C,CAAC;AACxD,aAAA,CAAC;QACJ;QACA,KAAK,mBAAmB,EAAE;YACxB,MAAM,YAAY,GAAG,eAAe,CAClC,oBAAoB,EACpB,KAAK,CAAC,eAAe,CACtB;YACD,OAAO,SAAS,CAAC,kCAAkC,EAAE;AACnD,gBAAA,OAAO,EAAE,YAAY,IAAI,SAAS,CAAC,kCAAkC,CAAC;AACvE,aAAA,CAAC;QACJ;QACA,KAAK,gBAAgB,EAAE;YACrB,MAAM,aAAa,GACjB,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC;AACnD,gBAAA,KAAK,CAAC,WAAW;gBACjB,SAAS,CAAC,mCAAmC,CAAC;YAEhD,OAAO,SAAS,CAAC,+BAA+B,EAAE;AAChD,gBAAA,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;AACxD,gBAAA,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;aACzC,CAAC,CAAC,IAAI,EAAE;QACX;QACA,KAAK,oBAAoB,EAAE;YACzB,MAAM,aAAa,GACjB,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC;AACnD,gBAAA,KAAK,CAAC,WAAW;gBACjB,SAAS,CAAC,mCAAmC,CAAC;YAEhD,OAAO,SAAS,CAAC,mCAAmC,EAAE;AACpD,gBAAA,QAAQ,EAAE,aAAa;AACxB,aAAA,CAAC;QACJ;QACA,KAAK,gCAAgC,EAAE;YACrC,MAAM,cAAc,GAAG,eAAe,CACpC,gBAAgB,EAChB,KAAK,CAAC,iBAAiB,CACxB;YACD,OAAO,SAAS,CAAC,+CAA+C,EAAE;AAChE,gBAAA,SAAS,EACP,cAAc,IAAI,SAAS,CAAC,qCAAqC,CAAC;AACrE,aAAA,CAAC;QACJ;AACA,QAAA;AACE,YAAA,OAAO,SAAS,CAAC,sBAAsB,CAAC;;AAE9C;AAEA,SAAS,mBAAmB,CAC1B,QAAuB,EACvB,SAAgD,EAAA;AAEhD,IAAA,MAAM,MAAM,GAAG,2BAA2B,CAAC,IAAI,CAC7C,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,QAAQ,CAClC;AAED,IAAA,OAAO;UACH,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AACxC,UAAE,SAAS,CAAC,mCAAmC,CAAC;AACpD;AAEA,SAAS,eAAe,CACtB,OAAmC,EACnC,KAAoB,EAAA;IAEpB,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI;AACxE;;ACnKO,MAAM,yBAAyB,GAAkC;AACtE,IAAA,GAAG,kCAAkC;AACrC,IAAA,0BAA0B,EAAE,IAAI;AAChC,IAAA,yBAAyB,EAAE,IAAI;CAChC;AAEK,SAAU,yBAAyB,CACvC,KAAoC,EAAA;IAEpC,OAAO;AACL,QAAA,GAAG,yBAAyB;AAC5B,QAAA,GAAG,KAAK;AACR,QAAA,0BAA0B,EACxB,KAAK,CAAC,SAAS,KAAK;cAChB,KAAK,CAAC;AACR,cAAE,IAAI;AACV,QAAA,yBAAyB,EACvB,KAAK,CAAC,SAAS,KAAK,4BAA4B;YAChD,KAAK,CAAC,SAAS,KAAK;cAChB,KAAK,CAAC;AACR,cAAE,IAAI;KACX;AACH;AAEM,SAAU,wBAAwB,CACtC,KAAgE,EAAA;IAEhE,OAAO;AACL,QAAA,GAAG,yBAAyB;AAC5B,QAAA,GAAG,KAAK;AACR,QAAA,IAAI,EAAE;YACJ,GAAG,kCAAkC,CAAC,IAAI;YAC1C,GAAG,KAAK,EAAE,IAAI;AACf,SAAA;AACD,QAAA,WAAW,EAAE;YACX,GAAG,kCAAkC,CAAC,WAAW;YACjD,GAAG,KAAK,EAAE,WAAW;AACtB,SAAA;AACD,QAAA,YAAY,EAAE;YACZ,GAAG,kCAAkC,CAAC,YAAY;YAClD,GAAG,KAAK,EAAE,YAAY;AACvB,SAAA;AACD,QAAA,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;AACnD,QAAA,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,kCAAkC,CAAC,SAAS;AAC3E,QAAA,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,IAAI;AACnC,QAAA,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;AACnD,QAAA,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,IAAI,IAAI;AACjD,QAAA,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,IAAI,IAAI;AACjD,QAAA,UAAU,EACR,KAAK,EAAE,UAAU,IAAI,kCAAkC,CAAC,UAAU;AACpE,QAAA,0BAA0B,EAAE,KAAK,EAAE,0BAA0B,IAAI,IAAI;AACrE,QAAA,yBAAyB,EAAE,KAAK,EAAE,yBAAyB,IAAI,IAAI;AACnE,QAAA,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;AACnD,QAAA,eAAe,EAAE,KAAK,EAAE,eAAe,IAAI,IAAI;QAC/C,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,gBAAgB;cACnD,KAAK,CAAC;AACR,cAAE,CAAC,GAAG,kCAAkC,CAAC,gBAAgB,CAAC;AAC5D,QAAA,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,IAAI;AACvC,QAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,kCAAkC,CAAC,QAAQ;AACxE,QAAA,aAAa,EACX,KAAK,EAAE,aAAa,IAAI,kCAAkC,CAAC,aAAa;AAC1E,QAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,kCAAkC,CAAC,QAAQ;AACxE,QAAA,aAAa,EACX,KAAK,EAAE,aAAa,IAAI,kCAAkC,CAAC,aAAa;AAC1E,QAAA,QAAQ,EAAE,KAAK,EAAE,QAAQ,IAAI,kCAAkC,CAAC,QAAQ;KACzE;AACH;AAEM,SAAU,2BAA2B,CACzC,KAAoC,EAAA;IAEpC,OAAO;QACL,GAAG,EAAE,KAAK,CAAC,GAAG;AACd,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AACjB,YAAA,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;AAClB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE;AACxB,YAAA,EAAE,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE;AACzB,SAAA;AACD,QAAA,YAAY,EAAE;AACZ,YAAA,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE;AACzB,YAAA,EAAE,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE;AAC1B,SAAA;QACD,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,iBAAiB,EACf,KAAK,CAAC,0BAA0B;AAChC,YAAA,KAAK,CAAC,yBAAyB;YAC/B,IAAI;QACN,eAAe,EAAE,KAAK,CAAC,eAAe;AACtC,QAAA,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAC7C,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB;AACH;AAEM,SAAU,kCAAkC,CAChD,QAA4B,EAAA;AAE5B,IAAA,OAAO,uBAAuB,CAC5B,qCAAqC,CAAC,QAAQ,CAAC,CAChD;AACH;AAEM,SAAU,qCAAqC,CACnD,QAA4B,EAAA;AAE5B,IAAA,QAAQ,yBAAyB,CAAC,QAAQ,CAAC;AACzC,QAAA,KAAK,cAAc;AACjB,YAAA,OAAO,gBAAgB;AACzB,QAAA,KAAK,iBAAiB;AACtB,QAAA,KAAK,oBAAoB;AACvB,YAAA,OAAO,gBAAgB;AACzB,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,kBAAkB;AAC3B,QAAA,KAAK,gBAAgB;AACnB,YAAA,OAAO,kBAAkB;AAC3B,QAAA,KAAK,oBAAoB;AACvB,YAAA,OAAO,sBAAsB;AAC/B,QAAA,KAAK,yBAAyB;AAC5B,YAAA,OAAO,4BAA4B;AACrC,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,mBAAmB;AAC5B,QAAA,KAAK,qBAAqB;AAC1B,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,gBAAgB;AACzB,QAAA,KAAK,kBAAkB;AACrB,YAAA,OAAO,oBAAoB;AAC7B,QAAA,KAAK,kCAAkC;AACrC,YAAA,OAAO,gCAAgC;AACzC,QAAA;AACE,YAAA,OAAO,IAAI;;AAEjB;SAEgB,mBAAmB,CACjC,SAA+B,EAC/B,SAAkC,EAClC,SAAkC,EAAA;AAElC,IAAA,OAAO,SAAS,CAAC,IAAI,CACnB,CAAC,QAAQ,KACP,CAAC,CAAC,kCAAkC,CAAC,QAAQ,CAAC;QAC9C,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CACvD;AACH;SAEgB,oBAAoB,CAClC,QAA4B,EAC5B,SAAkC,EAClC,SAAkC,EAAA;IAElC,QACE,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;QACvE,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AAE7E;AAEM,SAAU,oBAAoB,CAClC,OAAsC,EACtC,IAAmC,EAAA;AAEnC,IAAA,QACE,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;QACxB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;QAC9C,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;QAC9C,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;QAChD,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;AAChD,QAAA,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AACpC,QAAA,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;AACpD,QAAA,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AACpC,QAAA,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;AACpC,QAAA,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;AACpD,QAAA,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB;AAClD,QAAA,OAAO,CAAC,gBAAgB,KAAK,IAAI,CAAC,gBAAgB;AAClD,QAAA,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;AACtC,QAAA,OAAO,CAAC,0BAA0B,KAAK,IAAI,CAAC,0BAA0B;AACtE,QAAA,OAAO,CAAC,yBAAyB,KAAK,IAAI,CAAC,yBAAyB;AACpE,QAAA,OAAO,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;AACpD,QAAA,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe;AAChD,QAAA,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;AACxC,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAClC,QAAA,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;AAC5C,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAClC,QAAA,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;AAC5C,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClC,oBAAoB,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAEzE;AAEM,SAAU,wBAAwB,CACtC,OAAyC,EACzC,IAAsC,EAAA;AAEtC,IAAA,IAAI,OAAO,KAAK,IAAI,EAAE;AACpB,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE;QACrB,OAAO,OAAO,KAAK,IAAI;IACzB;AAEA,IAAA,IACE,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;AACxB,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;QAChC,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;QAC9C,OAAO,CAAC,WAAW,CAAC,EAAE,KAAK,IAAI,CAAC,WAAW,CAAC,EAAE;QAC9C,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;QAChD,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,YAAY,CAAC,EAAE;AAChD,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAClC,QAAA,OAAO,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW;AACxC,QAAA,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe;AAChD,QAAA,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC,kBAAkB;AACtD,QAAA,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;AAC5C,QAAA,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAClC;AACA,QAAA,OAAO,KAAK;IACd;IAEA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;IAElC,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;AAC1C,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAI;QAC/B,IACE,GAAG,KAAK,KAAK;AACb,YAAA,GAAG,KAAK,UAAU;AAClB,YAAA,GAAG,KAAK,MAAM;AACd,YAAA,GAAG,KAAK,aAAa;AACrB,YAAA,GAAG,KAAK,cAAc;AACtB,YAAA,GAAG,KAAK,UAAU;AAClB,YAAA,GAAG,KAAK,aAAa;AACrB,YAAA,GAAG,KAAK,iBAAiB;AACzB,YAAA,GAAG,KAAK,oBAAoB;AAC5B,YAAA,GAAG,KAAK,eAAe;YACvB,GAAG,KAAK,UAAU,EAClB;AACA,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;AACjC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;AAE3B,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AAC3D,YAAA,QACE,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;AAC3B,gBAAA,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AACxB,gBAAA,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC;QAElD;QAEA,OAAO,YAAY,KAAK,SAAS;AACnC,IAAA,CAAC,CAAC;AACJ;AAEA,SAAS,oBAAoB,CAAC,OAAiB,EAAE,IAAc,EAAA;IAC7D,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAClC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D;AAEA,SAAS,qBAAqB,CAAC,OAAkB,EAAE,IAAe,EAAA;IAChE,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE;AAClC,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D;;ACtNc,MAAO,kBAAkB,CAAA;AAC5B,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAC5B,IAAA,GAAG,GAAa,MAAM,CAAC,QAAQ,CAAC;AACxB,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,IAAA,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;AAEpC,IAAA,WAAW,GAAG,KAAK,CAAwB,IAAI,kFAAC;AAChD,IAAA,cAAc,GAAG,SAAS,CAAC,WAAW,qFAAC;AAEvC,IAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AACvC,IAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;AACjC,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;AACzC,IAAA,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB;AACnD,IAAA,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY;AACvC,IAAA,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;AAC3C,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;AAC7B,IAAA,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;AAC3C,IAAA,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;AAEnC,IAAA,iBAAiB,GAAG,IAAI,WAAW,CAC1C,yBAAyB,EACzB,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB;AAEQ,IAAA,iBAAiB,GACxB,IAAI,WAAW,CAAmC,IAAI,CAAC;AAExC,IAAA,cAAc,GAAG,QAAQ,CACxC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CACtC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,yBAAyB,CAAC,CACnD,EACD,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAC/C;AAEgB,IAAA,eAAe,GAAG,QAAQ,CACzC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CACtC,GAAG,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CACxC,EACD,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAC/C;IAEgB,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;AACzE,QAAA,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE;AACpD,KAAA,CAAC;IAEO,QAAQ,GAAG,QAAQ,CAAc,MACxC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACzC;AAEQ,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,iFAAC;AACrD,IAAA,WAAW,GAAG,QAAQ,CAAC,MAC9B,wBAAwB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,kFAChD;AACQ,IAAA,WAAW,GAAG,QAAQ,CAAgC,MAC7D,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,kFAChD;AAEQ,IAAA,aAAa,GAAG,QAAQ,CAA6B,MAAK;AACjE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AACrC,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;YAC1C,KAAK,EAAE,MAAM,CAAC,GAAG;AAClB,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,oFAAC;AAEO,IAAA,oBAAoB,GAAG,QAAQ,CAA6B,MAAK;AACxE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;AAC5C,YAAA,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAA,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;AACzB,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,2FAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAA6B,MAAK;AACnE,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AAC1C,YAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC9C,KAAK,EAAE,QAAQ,CAAC,GAAG;AACpB,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,sFAAC;AAEO,IAAA,oBAAoB,GAAG,QAAQ,CAAC,MACvC,6BAA6B,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QAC7C,EAAE,EAAE,MAAM,CAAC,KAAK;QAChB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;KACtC,CAAC,CAAC,2FACJ;AAEQ,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAC9C,QAAA,MAAM,cAAc,GAClB,SAAS,KAAK;AACZ,cAAE,CAAC,mBAAmB,EAAE,iBAAiB;cACvC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AAEpC,QAAA,OAAO,yBAAyB,CAAC,MAAM,CACrC,CAAC,MAAM,KACL,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC;AACrC,YAAA,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CACjE;AACH,IAAA,CAAC,6FAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QAC7C,EAAE,EAAE,MAAM,CAAC,KAAK;QAChB,IAAI,EAAE,iBAAiB,CACrB,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAC5B,MAAM,CAAC,KAAK,EACZ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1B;KACF,CAAC,CAAC,wFACJ;AAEQ,IAAA,0BAA0B,GAAG,QAAQ,CAAC,MAAK;QAClD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;QAC9C,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAO,EAAE;QACX;QAEA,OAAO,IAAI,CAAC,SAAS;AAClB,aAAA,GAAG,CAAC,CAAC,QAAQ,KAAI;AAChB,YAAA,MAAM,MAAM,GAAG,kCAAkC,CAAC,QAAQ,CAAC;YAC3D,IAAI,CAAC,MAAM,EAAE;AACX,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,oBAAoB,CACzB,QAAQ,EACR,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAC5B,SAAS;AAET,kBAAE;kBACA,IAAI;AACV,QAAA,CAAC;AACA,aAAA,MAAM,CACL,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,KACnB,CAAC,CAAC,MAAM;AACR,YAAA,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAChE;AACL,IAAA,CAAC,iGAAC;AAEO,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MACpC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QACjD,EAAE,EAAE,MAAM,CAAC,GAAG;QACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;KACtC,CAAC,CAAC,wFACJ;IAEQ,gBAAgB,GAAG,QAAQ,CAAC,MACnC,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CACrE;AAEQ,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;QACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE;AAC3B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;QAChC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;AAClD,IAAA,CAAC,sFAAC;AAEO,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AACtC,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;AAClD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE;AACnE,IAAA,CAAC,qFAAC;IAEO,kBAAkB,GAAG,QAAQ,CACpC,MACE,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,QAAA,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAK,CAAC,yFACxC;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;QAChC,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS;AAC/C,IAAA,CAAC,uFAAC;AAEO,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AACjC,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK;QACrC;AAEA,QAAA,QACE,IAAI,CAAC,iBAAiB,CAAC,KAAK;AAC5B,YAAA,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;YAC9B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAElC,IAAA,CAAC,gFAAC;AAEO,IAAA,aAAa,GAAG,QAAQ,CAAC,MAChC,YAAY,CAAC;AACX,QAAA,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;AACzB,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,QAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,QAAA,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE;QAC5C,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,KAAA,CAAC,oFACH;AACQ,IAAA,gBAAgB,GAAG,QAAQ,CAAoB,MACtD,qBAAqB,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AACvC,QAAA,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AAC7C,QAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE;AACvC,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,QAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,QAAA,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAAE;AAC5C,QAAA,gBAAgB,EAAE,IAAI,CAAC,wBAAwB,EAAE;AAClD,KAAA,CAAC,uFACH;AAEQ,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;QACzE,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,IAAI;QACb;QAEA,QACE,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,MAAM,UAAU,GAAG,yBAAyB,CAAC,QAAQ,CAAC;AACtD,YAAA,QACE,UAAU,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,WAAW;AAEvE,QAAA,CAAC,CAAC,IAAI,IAAI;AAEd,IAAA,CAAC,6FAAC;AAEO,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AACpC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;AACL,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;AAC5D,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAC9D,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;aACrE;QACH;QAEA,OAAO,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM;AAC9C,YAAA,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;AACtC,YAAA,KAAK,EAAE,KAAK;AACb,SAAA,CAAC,CAAC;AACL,IAAA,CAAC,mFAAC;AAEO,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACxC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,EAAE;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;AACL,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;AAC3C,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAClE,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAClE,gBAAA,EAAE,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;AAClE,gBAAA;AACE,oBAAA,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;AACpD,oBAAA,KAAK,EAAE,eAAe;AACvB,iBAAA;aACF;QACH;QAEA,OAAO;AACL,YAAA,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;YAC3C,GAAG,QAAQ,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,SAAS,MAAM;AAClD,gBAAA,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;AAC9C,gBAAA,KAAK,EAAE,SAAS;AACjB,aAAA,CAAC,CAAC;SACJ;AACH,IAAA,CAAC,uFAAC;AAEO,IAAA,gBAAgB,GAAG,QAAQ,CAAoB,MACtD,qBAAqB,CAAC;QACpB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,QAAA,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;AACzB,QAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;AACzB,QAAA,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,EAAE;AAC/C,QAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACvC,QAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,QAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,QAAA,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE;AACnC,QAAA,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACjD,QAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACxC,KAAA,CAAC,uFACH;AAED,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IACE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,KAAK,iBAAiB;AAClD,gBAAA,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,EACpC;gBACA,IAAI,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;YACpD;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAClD,YAAA,IACE,CAAC,aAAa;AACd,gBAAA,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAChC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,KAAK,aAAa,CAC3C,EACD;gBACA;YACF;AAEA,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7D,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAClD,YAAA,IACE,CAAC,aAAa;AACd,gBAAA,IAAI,CAAC,0BAA0B,EAAE,CAAC,IAAI,CACpC,CAAC,UAAU,KAAK,UAAU,CAAC,GAAG,KAAK,aAAa,CACjD,EACD;gBACA;YACF;YAEA,IAAI,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC5C,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;YAExC,IAAI,CAAC,OAAO,EAAE;gBACZ,IAAI,CAAC,eAAe,EAAE;gBACtB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,IAAI,EAAE;AACzC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpC;gBACA;YACF;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,IAAI,EAAE;gBACT;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC;YAClD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;gBAC3D,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,IAAI,EAAE;AACzC,oBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACpC;gBACA;YACF;YAEA,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,MAAM,eAAe,GAAG,wBAAwB,CAAC,IAAI,CAAC;AACtD,YAAA,IACE,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,EACxE;AACA,gBAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,CAAC;YAClD;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;YACV,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS;AAC9C,YAAA,MAAM,eAAe,GACnB,SAAS,KAAK;AACZ,kBAAE;kBACA,SAAS,KAAK;uBACX,IAAI,CAAC,WAAW,EAAE,CAAC,iBAAiB,IAAI,SAAS;sBAClD,SAAS;AACjB,YAAA,MAAM,WAAW,GAAG,yBAAyB,CAAC,SAAS,CAAC;AACxD,YAAA,MAAM,mBAAmB,GAAG,SAAS,KAAK,mBAAmB;YAC7D,MAAM,eAAe,GACnB,SAAS,KAAK,gBAAgB,IAAI,SAAS,KAAK,oBAAoB;AAEtE,YAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,eAAe,EAAE;gBAC5C,IAAI,CAAC,kBAAkB,EAAE;gBACzB;YACF;YAEA,IACE,WAAW,KAAK,QAAQ;AACxB,gBAAA,SAAS,KAAK,iBAAiB;gBAC/B,CAAC,eAAe,EAChB;gBACA,IAAI,CAAC,kBAAkB,EAAE;gBACzB;YACF;YAEA,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,WAAW,EAAE,eAAe,CAAC;YAC7D;YAEA,IAAI,eAAe,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,eAAe,CAAC;YACzD;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QAC5B;QAEA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;QAC1B;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7B;IACF;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE;AAE9C,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1B;gBACD;YACF;YAEA,IAAI,CAAC,gBAAgB,EAAE;YACvB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE;AAClE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1B;YACD;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,SAAS,CAAC,iCAAiC,CAAC,EACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1B;YACD;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb;QACF;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;AACrC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE;QAEvC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACnE;QACF;QAEA,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC7D;IAEA,mBAAmB,GAAA;QACjB,QACE,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,mBAAmB;AACvE,cAAE,OAAO,IAAI,EAAE;IAErB;IAEA,wBAAwB,GAAA;QACtB,MAAM,KAAK,GAAG,4BAA4B,CACxC,IAAI,CAAC,gBAAgB,EAAE,EACvB,kBAAkB,CACnB;AAED,QAAA,IAAI,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;AAC1B,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC;QACpD;AAEA,QAAA,OAAO,CAAC,GAAG,yBAAyB,CAAC;IACvC;IAEQ,SAAS,CACf,GAAW,EACX,MAA2D,EAAA;AAE3D,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;AAC9B,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA,WAAA,EAAc,GAAG,CAAA,CAAE,EAAE,MAAM,EAAE,IAAI,CAAC;IAC3E;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;QACvC,QAAQ,KAAK;AACX,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;AACtC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;AACvC,YAAA,KAAK,WAAW;AACd,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;AAC3C,YAAA;AACE,gBAAA,OAAO,KAAK;;IAElB;AAEQ,IAAA,uBAAuB,CAAC,SAAiB,EAAA;QAC/C,QAAQ,SAAS;AACf,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;AACjC,YAAA,KAAK,eAAe;AAClB,gBAAA,OAAO,IAAI,CAAC,SAAS,CAAC,gCAAgC,CAAC;AACzD,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;AAEQ,IAAA,gBAAgB,CACtB,KAA6C,EAAA;QAE7C,MAAM,YAAY,GAAG,wBAAwB,CAC3C,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CACrC;QACD,MAAM,SAAS,GAAG,wBAAwB,CAAC;AACzC,YAAA,GAAG,YAAY;AACf,YAAA,GAAG,KAAK;AACT,SAAA,CAAC;AAEF,QAAA,IAAI,oBAAoB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE;YACjD;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5C;AAEQ,IAAA,cAAc,CAAC,KAAoC,EAAA;QACzD,MAAM,YAAY,GAAG,wBAAwB,CAC3C,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CACrC;AACD,QAAA,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,oBAAoB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE;YACjD;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5C;IAEQ,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;IAChD;IAEQ,kBAAkB,GAAA;AACxB,QAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3E,QAAA,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QAEnE,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;QACnC;QAEA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;QAC/B;IACF;AAEQ,IAAA,UAAU,CAAC,OAAgC,EAAA;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;YACrC,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAE,MAAK,EAAE,CAAC;AAChB,SAAA,CAAC;IACJ;IAEQ,UAAU,CAAC,EAAU,EAAE,OAAgC,EAAA;QAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC;YAC5C,IAAI,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AAChC,YAAA,KAAK,EAAE,MAAK,EAAE,CAAC;AAChB,SAAA,CAAC;IACJ;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;YACjC;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK;QAC9C,IAAI,CAAC,SAAS,EAAE;YACd;QACF;QAEA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,yBAAyB,CAAC,SAAS,CAAC,CAAC;YAC7D;QACF;QAEA,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC;IACvD;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM;AACzC,YAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;AAC9C,YAAA,KAAK,EAAE,yBAAyB,CAAC,QAAQ,CAAC;AAC3C,SAAA,CAAC,CAAC;IACL;uGAlmBmB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mUAQD,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxGjD,kuFAsFA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDHI,YAAY,+BACZ,MAAM,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,WAAW,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,OAAO,yQACP,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACnB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,OAAA,EAAA,WAAA,EAAA,cAAA,EAAA,MAAA,EAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,kBAAkB,2LAClB,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMI,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnBtC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,eAAA,EAGlB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACP,YAAY;wBACZ,MAAM;wBACN,WAAW;wBACX,OAAO;wBACP,mBAAmB;wBACnB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;qBACd,EAAA,IAAA,EACK;AACJ,wBAAA,KAAK,EAAE,cAAc;AACtB,qBAAA,EAAA,QAAA,EAAA,kuFAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA;gOAUmC,WAAW,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE9DnC,MAAO,mBAAmB,CAAA;;;;AAItC,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAmB,SAAS,CAAC;AACzD,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAmB,UAAU,CAAC;AAC3D,IAAA,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAmB,SAAS,CAAC;AACzD,IAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAmB,aAAa,CAAC;;;;AAKhD,IAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAA,KAAK,GAAiB,MAAM,CAAC,YAAY,CAAC;AAClC,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,IAAA,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS;;;;AAKlD,IAAA,eAAe,GAAG,YAAY,CAAC,MAAM;AACnC,QAAA;AACE,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,UAAU,EAAE,2BAA2B;AACxC,SAAA;AACD,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,0BAA0B,CAAC;AAClE,YAAA,UAAU,EAAE,gBAAgB;AAC7B,SAAA;AACD,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,6BAA6B,CAAC;AACtE,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;;;AAKF,IAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE;AAC5B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC3B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;QAE1C,QAAQ,GAAG;AACT,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,WAAW;AACpB,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,KAAK;AACV,YAAA;AACE,gBAAA,OAAO,GAAG;;AAEhB,IAAA,CAAC,4EAAC;AAEO,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AACvC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;AAClC,QAAA,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,OAAO;AACJ,iBAAA,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;iBAChD,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK;AACnE,iBAAA,GAAG,CAAC,CAAC,GAAG,MAAM;AACb,gBAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACjC,gBAAA,KAAK,EAAE,GAAG;AACX,aAAA,CAAC,CAAC;QACP;QAEA,OAAO,IAAI,CAAC,KAAK;aACd,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW;aAC9B,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK;AACnE,aAAA,GAAG,CAAC,CAAC,GAAG,MAAM;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACjC,YAAA,KAAK,EAAE,GAAG;AACX,SAAA,CAAC,CAAC;AACP,IAAA,CAAC,sFAAC;;;;IAKF,IAAI,GAAG,MAAM,CAAC;AACZ,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;AACxD,YAAA,KAAK,EAAE,KAAK;AACb,SAAA;AACD,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC3D,YAAA,KAAK,EAAE,QAAQ;AAChB,SAAA;AACD,QAAA;YACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC;AAC7D,YAAA,KAAK,EAAE,UAAU;AAClB,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AACF,IAAA,SAAS,GAAG,MAAM,CAAS,KAAK,gFAAC;;;;IAKjC,YAAY,GAAG,MAAM,CAAgB;AACnC,QAAA;AACE,YAAA,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC;AAC7D,YAAA,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,MAAK;gBACX,IAAI,CAAC,cAAc,EAAE;YACvB,CAAC;AACF,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;AAEF,IAAA,cAAc,GAAG,MAAM,CAAQ,EAAE,qFAAC;IAElC,UAAU,GAAG,MAAM,CAAgB;AACjC,QAAA;AACE,YAAA,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,MAAM,EAAE,CAAC,GAAmB,KAAI;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC/B,gBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;YAC1B,CAAC;AACF,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC;AAClD,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,MAAM,EAAE,CAAC,GAAmB,KAAI;AAC9B,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACrD,gBAAA,IAAI,CAAC;AACF,qBAAA,UAAU,CAAC,GAAG,CAAC,EAAE;AACjB,qBAAA,IAAI,CACH,QAAQ,CAAC,MAAK;oBACZ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,KAC7B,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAClC;AACH,gBAAA,CAAC,CAAC;AAEH,qBAAA,SAAS,EAAE;YAChB,CAAC;AACD,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,gBAAgB,EAAE,QAAQ;AAC3B,aAAA;AACD,YAAA,OAAO,EAAE,CAAC,GAAmB,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;AACzE,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;;;AAKF,IAAA,YAAY,GAAG,YAAY,CAAc,MAAM;AAC7C,QAAA;AACE,YAAA,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC;AAC7D,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE;AACjC,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACzD,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;AACf,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC;AAC9D,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB,CAAC;AAC9D,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;AAChC,aAAA;AACF,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,aAAa;YAClB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,uBAAuB,CAAC;AAC/D,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC/B,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,oBAAoB;YACzB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,iBAAiB,CAAC;AACzD,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE;AAC9B,SAAA;AACD,QAAA;AACE,YAAA,GAAG,EAAE,UAAU;YACf,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC3D,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,YAAY,EAAE;AACZ,gBAAA,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC3D,gBAAA,OAAO,EAAE;AACP,oBAAA;wBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC3D,wBAAA,KAAK,EAAE,IAAI;AACZ,qBAAA;AACD,oBAAA;wBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC;AAC7D,wBAAA,KAAK,EAAE,KAAK;AACb,qBAAA;AACF,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,cAAA,EAAA,CAAA,8BAAA,EAAA,CAAA,CAAC;;;;AAKF,IAAA,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;AAC5B,IAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;AAC5B,IAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW;AACrC,IAAA,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa;IAEjD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;QAC5B;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;IAC1B;IAEA,cAAc,CAAC,OAA8B,IAAI,EAAA;QAC/C,MAAM,SAAS,GAAwB,IAAI,GAAG,QAAQ,GAAG,QAAQ;QACjE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,SAAS,EAAE;AAClD,YAAA,MAAM,EAAE;kBACJ,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,sBAAsB;kBACtD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC;AAC1D,YAAA,UAAU,EAAE,uBAAuB;YACnC,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAG,EAAE;YAC7C,QAAQ,EAAE,SAAS,KAAK,QAAQ,GAAG,cAAc,GAAG,MAAM;AAC1D,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,WAAW,EAAE;AACX,gBAAA,WAAW,EAAE,IAAI;AAClB,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,YAAY,CAAC,KAAsB,EAAA;AACjC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC3D,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5C;IACF;AAEA,IAAA,gBAAgB,CAAC,WAAmB,EAAA;QAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,CAAA,sBAAA,EAAyB,WAAW,CAAA,CAAE,CACvC;IACH;AAEA,IAAA,oBAAoB,CAAC,WAAmB,EAAA;AACtC,QAAA,MAAM,OAAO,GAA2B;AACtC,YAAA,YAAY,EAAE,2BAA2B;AACzC,YAAA,eAAe,EAAE,yBAAyB;AAC1C,YAAA,kBAAkB,EAAE,yBAAyB;AAC7C,YAAA,cAAc,EAAE,6BAA6B;AAC7C,YAAA,cAAc,EAAE,+BAA+B;AAC/C,YAAA,aAAa,EAAE,+BAA+B;AAC9C,YAAA,UAAU,EAAE,+BAA+B;AAC3C,YAAA,mBAAmB,EAAE,+BAA+B;AACpD,YAAA,gBAAgB,EAAE,2BAA2B;AAC7C,YAAA,kBAAkB,EAAE,iCAAiC;AACrD,YAAA,uBAAuB,EAAE,6BAA6B;AACtD,YAAA,gCAAgC,EAAE,2BAA2B;AAC7D,YAAA,eAAe,EAAE,2BAA2B;SAC7C;AACD,QAAA,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,6BAA6B;IAC9D;AAEA,IAAA,iBAAiB,CAAC,IAAoB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,+CAA+C,CAChD;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;YAChC,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,0CAA0C,CAC3C;QACH;AAEA,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,oDAAoD,CACrD;QACH;QAEA,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,+CAA+C,CAChD;IACH;AAEA,IAAA,gBAAgB,CAAC,IAAoB,EAAA;AACnC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,OAAO,iBAAiB;QAC1B;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE;AAChC,YAAA,OAAO,yBAAyB;QAClC;AAEA,QAAA,OAAO,iBAAiB;IAC1B;AAEA,IAAA,YAAY,CAAC,IAAoB,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;AAC9B,YAAA,QAAQ,IAAI,CAAC,kBAAkB;AAC7B,gBAAA,KAAK,QAAQ;oBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,6CAA6C,CAC9C;AACH,gBAAA,KAAK,eAAe;oBAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,2CAA2C,CAC5C;AACH,gBAAA;oBACE;;QAEN;AAEA,QAAA,QAAQ,IAAI,CAAC,kBAAkB;AAC7B,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC7D,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC7D,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,CAAC;AAC7D,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACpC,2CAA2C,CAC5C;AACH,YAAA;gBACE,QACE,IAAI,CAAC,kBAAkB;oBACvB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;;IAGzD;AAEQ,IAAA,eAAe,CAAC,IAAoB,EAAA;AAC1C,QAAA,QACE,IAAI,CAAC,WAAW,KAAK,WAAW;AAChC,YAAA,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,WAAW;IAEpE;AAEQ,IAAA,eAAe,CAAC,QAA4B,EAAA;AAClD,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;IAC3D;uGAlWmB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1CxC,8oDAkDA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,KAAK,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,EAAA,YAAA,EAAA,MAAA,EAAA,eAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,MAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,kBAAkB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,IAAI,sEACJ,IAAI,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,cAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAdvC,SAAS;+BACE,0BAA0B,EAAA,UAAA,EAGxB,IAAI,EAAA,OAAA,EACP;wBACP,YAAY;wBACZ,cAAc;wBACd,KAAK;wBACL,kBAAkB;wBAClB,IAAI;wBACJ,IAAI;AACL,qBAAA,EAAA,QAAA,EAAA,8oDAAA,EAAA;AAM8C,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,SAAS,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACR,UAAU,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACX,SAAS,qEACL,aAAa,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEjDlE;;AAEG;;;;"}
1
+ {"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.models.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.mapper.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.config.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.summary.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.utils.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\n ConfigurationFieldSchema,\n GovernanceRule,\n Translatable,\n GovernanceRuleType,\n} from '../../../../store/governance';\n\nexport type GovernanceRuleAppliesTo =\n | 'level'\n | 'any-module'\n | 'specific-module'\n | 'phase-gate';\n\nexport type GovernanceRuleActionKey =\n | 'create'\n | 'update'\n | 'delete'\n | 'manage-phase-gate'\n | 'move-phase-gate';\n\nexport type GovernanceRuleRecipeKey =\n | 'require-module'\n | 'prevent-module'\n | 'module-max-count'\n | 'module-min-count'\n | 'phase-gate-completed'\n | 'phase-gate-module-required'\n | 'no-active-request'\n | 'property-value'\n | 'property-has-value'\n | 'mandatory-gate-items-completed';\n\nexport interface GovernanceRuleWizardFormValue {\n key: string;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n appliesTo: GovernanceRuleAppliesTo;\n selectedModuleKey: string | null;\n actionKey: GovernanceRuleActionKey | null;\n recipeKey: GovernanceRuleRecipeKey | null;\n requiredModuleKey: string | null;\n blockedModuleKey: string | null;\n countedModuleKey: string | null;\n countValue: number | null;\n phaseGateSchemaId: string | null;\n requestSchemaId: string | null;\n blockingStatuses: string[];\n propertyKey: string | null;\n operator: string | null;\n expectedValue: string;\n priority: number | null;\n stopOnFailure: boolean;\n isActive: boolean;\n}\n\nexport interface GovernanceLegacyFormValue {\n key: string;\n priority: number | null;\n name: Translatable;\n description: Translatable;\n errorMessage: Translatable;\n ruleType: string;\n targetScope: string;\n targetModuleKey: string;\n targetOperationKey: string;\n stopOnFailure: boolean;\n isActive: boolean;\n [key: string]: unknown;\n}\n\nexport interface GovernanceRuleRecipeDefinition {\n key: GovernanceRuleRecipeKey;\n ruleTypeKeys: readonly string[];\n labelKey: string;\n}\n\nexport interface GovernanceTranslatedOption<TValue extends string = string> {\n value: TValue;\n labelKey: string;\n}\n\nexport const GOVERNANCE_RULE_RECIPE_DEFINITIONS: readonly GovernanceRuleRecipeDefinition[] =\n [\n {\n key: 'require-module',\n ruleTypeKeys: ['ModuleExists'],\n labelKey: 'wizard.recipes.require-module.label',\n },\n {\n key: 'prevent-module',\n ruleTypeKeys: ['ModuleNotExists', 'ModuleDoesNotExist'],\n labelKey: 'wizard.recipes.prevent-module.label',\n },\n {\n key: 'module-max-count',\n ruleTypeKeys: ['ModuleMaxCount'],\n labelKey: 'wizard.recipes.module-max-count.label',\n },\n {\n key: 'module-min-count',\n ruleTypeKeys: ['ModuleMinCount'],\n labelKey: 'wizard.recipes.module-min-count.label',\n },\n {\n key: 'phase-gate-completed',\n ruleTypeKeys: ['PhaseGateCompleted'],\n labelKey: 'wizard.recipes.phase-gate-completed.label',\n },\n {\n key: 'phase-gate-module-required',\n ruleTypeKeys: ['PhaseGateModuleRequired'],\n labelKey: 'wizard.recipes.phase-gate-module-required.label',\n },\n {\n key: 'no-active-request',\n ruleTypeKeys: ['NoActiveRequest'],\n labelKey: 'wizard.recipes.no-active-request.label',\n },\n {\n key: 'property-value',\n ruleTypeKeys: ['PropertyValueEquals', 'FieldValue'],\n labelKey: 'wizard.recipes.property-value.label',\n },\n {\n key: 'property-has-value',\n ruleTypeKeys: ['PropertyHasValue'],\n labelKey: 'wizard.recipes.property-has-value.label',\n },\n {\n key: 'mandatory-gate-items-completed',\n ruleTypeKeys: ['PhaseGateMandatoryItemsCompleted'],\n labelKey: 'wizard.recipes.mandatory-gate-items-completed.label',\n },\n ];\n\nexport const GOVERNANCE_APPLIES_TO_OPTIONS: GovernanceTranslatedOption<GovernanceRuleAppliesTo>[] =\n [\n {\n value: 'level',\n labelKey: 'wizard.applies-to.level.label',\n },\n {\n value: 'any-module',\n labelKey: 'wizard.applies-to.any-module.label',\n },\n {\n value: 'specific-module',\n labelKey: 'wizard.applies-to.specific-module.label',\n },\n {\n value: 'phase-gate',\n labelKey: 'wizard.applies-to.phase-gate.label',\n },\n ];\n\nexport const GOVERNANCE_ACTION_OPTIONS: GovernanceTranslatedOption<GovernanceRuleActionKey>[] =\n [\n {\n value: 'create',\n labelKey: 'wizard.actions.create',\n },\n {\n value: 'update',\n labelKey: 'wizard.actions.update',\n },\n {\n value: 'delete',\n labelKey: 'wizard.actions.delete',\n },\n {\n value: 'manage-phase-gate',\n labelKey: 'wizard.actions.manage-phase-gate',\n },\n {\n value: 'move-phase-gate',\n labelKey: 'wizard.actions.move-phase-gate',\n },\n ];\n\nexport const GOVERNANCE_OPERATOR_OPTIONS: GovernanceTranslatedOption[] = [\n {\n value: 'Equals',\n labelKey: 'wizard.operators.Equals',\n },\n {\n value: 'NotEquals',\n labelKey: 'wizard.operators.NotEquals',\n },\n {\n value: 'Contains',\n labelKey: 'wizard.operators.Contains',\n },\n {\n value: 'GreaterThan',\n labelKey: 'wizard.operators.GreaterThan',\n },\n {\n value: 'LessThan',\n labelKey: 'wizard.operators.LessThan',\n },\n];\n\nexport const GOVERNANCE_PROPERTY_OPERATORS = [\n 'Equals',\n 'NotEquals',\n 'Contains',\n 'GreaterThan',\n 'LessThan',\n] as const;\n\nexport const DEFAULT_BLOCKING_STATUSES = [\n 'Pending',\n 'Draft',\n 'InProgress',\n] as const;\n\nexport const DEFAULT_GOVERNANCE_RULE_FORM_VALUE: GovernanceRuleWizardFormValue =\n {\n key: '',\n name: { en: '', ar: '' },\n description: { en: '', ar: '' },\n errorMessage: { en: '', ar: '' },\n appliesTo: 'any-module',\n selectedModuleKey: null,\n actionKey: null,\n recipeKey: null,\n requiredModuleKey: null,\n blockedModuleKey: null,\n countedModuleKey: null,\n countValue: 1,\n phaseGateSchemaId: null,\n requestSchemaId: null,\n blockingStatuses: [],\n propertyKey: null,\n operator: 'Equals',\n expectedValue: '',\n priority: 10,\n stopOnFailure: true,\n isActive: true,\n };\n\nexport function readGovernanceRuleTypeKey(\n ruleType: GovernanceRuleType,\n): string {\n return String(ruleType.key ?? ruleType.type ?? '').trim();\n}\n\nexport function readGovernanceRuleKey(rule: GovernanceRule): string {\n return String(rule.ruleTypeKey ?? '').trim();\n}\n\nexport function resolveRecipeDefinition(\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleRecipeDefinition | null {\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find(\n (definition) => definition.key === recipeKey,\n ) ?? null\n );\n}\n\nexport function resolveRecipeByRuleTypeKey(\n ruleTypeKey: string | null | undefined,\n): GovernanceRuleRecipeKey | null {\n const normalized = String(ruleTypeKey ?? '').trim();\n if (!normalized) {\n return null;\n }\n\n return (\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find((definition) =>\n definition.ruleTypeKeys.some((key) => key === normalized),\n )?.key ?? null\n );\n}\n\nexport function findRuleTypeByRecipe(\n ruleTypes: GovernanceRuleType[],\n recipeKey: GovernanceRuleRecipeKey | null,\n): GovernanceRuleType | null {\n const definition = resolveRecipeDefinition(recipeKey);\n if (!definition) {\n return null;\n }\n\n return (\n ruleTypes.find((ruleType) =>\n definition.ruleTypeKeys.includes(readGovernanceRuleTypeKey(ruleType)),\n ) ?? null\n );\n}\n\nexport function findConfigurationSchemaField(\n ruleType: GovernanceRuleType | null,\n fieldKey: string,\n): ConfigurationFieldSchema | null {\n if (!ruleType) {\n return null;\n }\n\n return (\n ruleType.configurationSchema.find((field) => field.key === fieldKey) ?? null\n );\n}\n","import {\n CreateGovernanceRuleDto,\n GovernanceRule,\n GovernanceRuleType,\n UpdateGovernanceRuleDto,\n} from '../../../../store/governance';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleKey,\n readGovernanceRuleTypeKey,\n resolveRecipeByRuleTypeKey,\n} from './governance-rule-form.models';\n\nexport function mapAppliesToToTargetScope(\n appliesTo: GovernanceRuleAppliesTo,\n): 'Level' | 'Module' {\n switch (appliesTo) {\n case 'level':\n return 'Level';\n case 'phase-gate':\n case 'any-module':\n case 'specific-module':\n default:\n return 'Module';\n }\n}\n\nexport function mapActionToOperationKey(\n actionKey: GovernanceRuleActionKey,\n): 'Create' | 'Update' | 'Delete' | 'MovePhaseGate' {\n switch (actionKey) {\n case 'update':\n case 'manage-phase-gate':\n return 'Update';\n case 'delete':\n return 'Delete';\n case 'move-phase-gate':\n return 'MovePhaseGate';\n case 'create':\n default:\n return 'Create';\n }\n}\n\nexport function mapOperationKeyToAction(\n operationKey: string | null | undefined,\n isPhaseGateTarget = false,\n): GovernanceRuleActionKey | null {\n switch (\n String(operationKey ?? '')\n .trim()\n .toLowerCase()\n ) {\n case 'create':\n return isPhaseGateTarget ? null : 'create';\n case 'update':\n return isPhaseGateTarget ? 'manage-phase-gate' : 'update';\n case 'delete':\n return isPhaseGateTarget ? null : 'delete';\n case 'movephasegate':\n return isPhaseGateTarget ? 'move-phase-gate' : null;\n default:\n return null;\n }\n}\n\nfunction toNullableString(value: unknown): string | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n const text = String(value).trim();\n return text ? text : null;\n}\n\nfunction toNullableNumber(value: unknown): number | null {\n if (value === null || value === undefined || value === '') {\n return null;\n }\n\n const numeric =\n typeof value === 'number'\n ? value\n : Number(String(value).replace(/[^\\d.-]/g, ''));\n return Number.isFinite(numeric) ? numeric : null;\n}\n\nfunction toStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n\n return value\n .map((item) => toNullableString(item))\n .filter((item): item is string => !!item);\n}\n\nfunction trimBilingualValue(\n value:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n) {\n return {\n en: value.en.trim(),\n ar: value.ar.trim(),\n };\n}\n\nfunction normalizeKeySegment(value: string): string {\n return value\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction resolveRuleKey(\n currentKey: unknown,\n name:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n fallback: unknown,\n): string {\n const existingKey = toNullableString(currentKey);\n if (existingKey) {\n return existingKey;\n }\n\n const nameKey = normalizeKeySegment(name.en);\n if (nameKey) {\n return nameKey;\n }\n\n const fallbackKey = normalizeKeySegment(String(fallback ?? ''));\n return fallbackKey || 'governance-rule';\n}\n\nfunction buildRecipeConfiguration(\n formValue: GovernanceRuleWizardFormValue,\n): Record<string, unknown> | undefined {\n switch (formValue.recipeKey) {\n case 'require-module': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const minCount = toNullableNumber(formValue.countValue);\n return minCount && minCount > 1\n ? { requiredModuleKey, minCount }\n : { requiredModuleKey };\n }\n case 'prevent-module': {\n const moduleKey = toNullableString(formValue.blockedModuleKey);\n return moduleKey ? { moduleKey } : undefined;\n }\n case 'module-max-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const maxCount = toNullableNumber(formValue.countValue);\n return moduleKey && maxCount !== null\n ? { moduleKey, maxCount }\n : undefined;\n }\n case 'module-min-count': {\n const moduleKey = toNullableString(formValue.countedModuleKey);\n const minCount = toNullableNumber(formValue.countValue);\n return moduleKey && minCount !== null\n ? { moduleKey, minCount }\n : undefined;\n }\n case 'phase-gate-completed': {\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : undefined;\n }\n case 'phase-gate-module-required': {\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\n if (!requiredModuleKey) {\n return undefined;\n }\n\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null\n ? { requiredModuleKey, phaseGateSchemaId }\n : { requiredModuleKey };\n }\n case 'no-active-request': {\n const requestSchemaId = toNullableNumber(formValue.requestSchemaId);\n const blockingStatuses = toStringArray(formValue.blockingStatuses);\n const configuration: Record<string, unknown> = {};\n\n if (requestSchemaId !== null) {\n configuration['requestSchemaId'] = requestSchemaId;\n }\n\n if (blockingStatuses.length > 0) {\n configuration['blockingStatuses'] = blockingStatuses;\n }\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n }\n case 'property-value': {\n const propertyKey = toNullableString(formValue.propertyKey);\n const operator = toNullableString(formValue.operator);\n const expectedValue = toNullableString(formValue.expectedValue);\n return propertyKey && operator && expectedValue !== null\n ? { propertyKey, operator, expectedValue }\n : undefined;\n }\n case 'property-has-value': {\n const propertyKey = toNullableString(formValue.propertyKey);\n return propertyKey ? { propertyKey } : undefined;\n }\n case 'mandatory-gate-items-completed': {\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : {};\n }\n default:\n return undefined;\n }\n}\n\nexport function buildCreatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleTypeKey = readGovernanceRuleTypeKey(ruleType);\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleTypeKey),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType: ruleTypeKey,\n targetScope: mapAppliesToToTargetScope(formValue.appliesTo),\n targetModuleKey:\n formValue.appliesTo === 'phase-gate'\n ? 'PhaseGate'\n : formValue.appliesTo === 'specific-module'\n ? (toNullableString(formValue.selectedModuleKey) ?? undefined)\n : undefined,\n targetOperationKey:\n formValue.actionKey !== null\n ? mapActionToOperationKey(formValue.actionKey)\n : undefined,\n configuration: buildRecipeConfiguration(formValue),\n priority: toNullableNumber(formValue.priority) ?? 10,\n stopOnFailure: formValue.stopOnFailure ?? true,\n };\n}\n\nexport function buildUpdatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): UpdateGovernanceRuleDto {\n return {\n ...buildCreatePayload(formValue, ruleType),\n isActive: formValue.isActive ?? true,\n };\n}\n\nexport function mapRuleToWizardFormValue(\n rule: GovernanceRule,\n): GovernanceRuleWizardFormValue | null {\n const recipeKey = resolveRecipeByRuleTypeKey(readGovernanceRuleKey(rule));\n if (!recipeKey) {\n return null;\n }\n\n const appliesTo = resolveAppliesTo(rule, recipeKey);\n const actionKey = mapOperationKeyToAction(\n rule.targetOperationKey,\n isPhaseGateTarget(rule),\n );\n if (!actionKey) {\n return null;\n }\n\n const configuration = rule.configuration ?? {};\n const formValue: GovernanceRuleWizardFormValue = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n key: rule.key ?? '',\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n appliesTo,\n selectedModuleKey:\n appliesTo === 'specific-module'\n ? toNullableString(rule.targetModuleKey)\n : null,\n actionKey,\n recipeKey,\n priority: rule.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure: rule.stopOnFailure ?? true,\n isActive: rule.isActive ?? true,\n requiredModuleKey: toNullableString(\n configuration['requiredModuleKey'] ?? configuration['moduleKey'],\n ),\n blockedModuleKey: toNullableString(configuration['moduleKey']),\n countedModuleKey: toNullableString(configuration['moduleKey']),\n countValue:\n toNullableNumber(\n configuration['maxCount'] ??\n configuration['minCount'] ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n ) ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateSchemaId: toNullableString(configuration['phaseGateSchemaId']),\n requestSchemaId: toNullableString(configuration['requestSchemaId']),\n blockingStatuses: toStringArray(configuration['blockingStatuses']),\n propertyKey: toNullableString(\n configuration['propertyKey'] ?? configuration['fieldKey'],\n ),\n operator:\n toNullableString(configuration['operator']) ??\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n toNullableString(\n configuration['expectedValue'] ?? configuration['value'],\n ) ?? '',\n };\n\n if (recipeKey === 'prevent-module') {\n formValue.blockedModuleKey = toNullableString(configuration['moduleKey']);\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'phase-gate-completed') {\n formValue.requiredModuleKey = null;\n }\n\n if (recipeKey === 'no-active-request') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n if (recipeKey === 'property-value') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n }\n\n if (recipeKey === 'property-has-value') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n formValue.expectedValue = '';\n }\n\n if (recipeKey === 'mandatory-gate-items-completed') {\n formValue.requiredModuleKey = null;\n formValue.blockedModuleKey = null;\n formValue.countedModuleKey = null;\n formValue.propertyKey = null;\n formValue.expectedValue = '';\n }\n\n return formValue;\n}\n\nfunction isPhaseGateTarget(rule: GovernanceRule): boolean {\n const scope = String(rule.targetScope ?? '')\n .trim()\n .toLowerCase();\n const targetModuleKey = String(rule.targetModuleKey ?? '')\n .trim()\n .toLowerCase();\n\n return scope === 'phasegate' || targetModuleKey === 'phasegate';\n}\n\nfunction resolveAppliesTo(\n rule: GovernanceRule,\n _recipeKey: GovernanceRuleRecipeKey,\n): GovernanceRuleAppliesTo {\n const scope = String(rule.targetScope ?? '').trim();\n\n if (scope === 'Level') {\n return 'level';\n }\n\n if (isPhaseGateTarget(rule)) {\n return 'phase-gate';\n }\n\n return String(rule.targetModuleKey ?? '').trim()\n ? 'specific-module'\n : 'any-module';\n}\n\nexport function mapRuleToLegacyFormValue(\n rule: GovernanceRule,\n): GovernanceLegacyFormValue {\n const formData: GovernanceLegacyFormValue = {\n key: rule.key,\n priority: rule.priority,\n name: {\n en: rule.name?.en ?? '',\n ar: rule.name?.ar ?? '',\n },\n description: {\n en: rule.description?.en ?? '',\n ar: rule.description?.ar ?? '',\n },\n errorMessage: {\n en: rule.errorMessage?.en ?? '',\n ar: rule.errorMessage?.ar ?? '',\n },\n ruleType: rule.ruleTypeKey,\n targetScope: rule.targetScope,\n targetModuleKey: rule.targetModuleKey ?? '',\n targetOperationKey: rule.targetOperationKey ?? '',\n stopOnFailure: rule.stopOnFailure,\n isActive: rule.isActive,\n };\n\n Object.entries(rule.configuration ?? {}).forEach(([key, value]) => {\n formData[`config_${key}`] = value;\n });\n\n return formData;\n}\n\nexport function packLegacyFormToCreateDto(\n formValue: GovernanceLegacyFormValue,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleType = String(formValue.ruleType ?? '');\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleType),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType,\n targetScope: String(formValue.targetScope ?? ''),\n targetModuleKey: String(formValue.targetModuleKey ?? '') || undefined,\n targetOperationKey: String(formValue.targetOperationKey ?? '') || undefined,\n configuration: extractLegacyConfiguration(formValue),\n priority: Number(formValue.priority ?? 0),\n stopOnFailure: Boolean(formValue.stopOnFailure ?? true),\n };\n}\n\nexport function packLegacyFormToUpdateDto(\n formValue: GovernanceLegacyFormValue,\n): UpdateGovernanceRuleDto {\n return {\n ...packLegacyFormToCreateDto(formValue),\n isActive: Boolean(formValue.isActive ?? true),\n };\n}\n\nfunction extractLegacyConfiguration(\n formValue: GovernanceLegacyFormValue,\n): Record<string, unknown> | undefined {\n const configuration: Record<string, unknown> = {};\n\n Object.entries(formValue).forEach(([key, value]) => {\n if (\n key.startsWith('config_') &&\n value !== null &&\n value !== undefined &&\n value !== ''\n ) {\n configuration[key.replace('config_', '')] = value;\n }\n });\n\n return Object.keys(configuration).length > 0 ? configuration : undefined;\n}\n","import {\n BaseFieldConfig,\n DateFieldConfig,\n DynamicFormConfig,\n MultiSelectFieldConfig,\n NumberFieldConfig,\n RadioCardsFieldConfig,\n SelectFieldConfig,\n TextareaFieldConfig,\n TextFieldConfig,\n ToggleFieldConfig,\n ValidatorConfig,\n} from '@masterteam/components';\nimport {\n ConfigurationFieldOption,\n ConfigurationFieldSchema,\n GovernanceRuleType,\n} from '../../../../store/governance';\nimport { GovernanceRuleRecipeKey } from './governance-rule-form.models';\nimport { GOVERNANCE_OPERATOR_OPTIONS } from './governance-rule-form.models';\n\ntype GovernanceTranslateFn = (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n) => string;\n\nexport interface GovernanceWizardFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n recipeKey: GovernanceRuleRecipeKey | null;\n appliesToOptions: { id: string; name: string }[];\n actionOptions: { id: string; name: string }[];\n recipeOptions: { id: string; name: string }[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n blockingStatuses: string[];\n}\n\nexport interface GovernanceLegacyFormConfigContext {\n translate: GovernanceTranslateFn;\n isEdit: boolean;\n langCode: 'en' | 'ar';\n selectedRuleType: GovernanceRuleType | null;\n ruleTypeOptions: ConfigurationFieldOption[];\n scopeOptions: ConfigurationFieldOption[];\n operationOptions: ConfigurationFieldOption[];\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nexport function buildWizardFormConfig({\n translate,\n isEdit,\n recipeKey,\n appliesToOptions,\n actionOptions,\n recipeOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n blockingStatuses,\n}: GovernanceWizardFormConfigContext): DynamicFormConfig {\n const statusOptions = blockingStatuses.map((status) => ({\n label: status,\n value: status,\n }));\n const operatorOptions = GOVERNANCE_OPERATOR_OPTIONS.map((option) => ({\n label: translate(option.labelKey),\n value: option.value,\n }));\n const countLabel =\n recipeKey === 'module-min-count'\n ? translate('wizard.min-count-label')\n : translate('wizard.max-count-label');\n\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n rows: 3,\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n rows: 3,\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 6,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'appliesTo',\n type: 'header',\n label: translate('wizard.where-question'),\n order: 2,\n fields: [\n new RadioCardsFieldConfig({\n key: 'appliesTo',\n options: appliesToOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n new SelectFieldConfig({\n key: 'selectedModuleKey',\n label: translate('wizard.specific-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'appliesTo',\n value: 'specific-module',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'action',\n type: 'header',\n label: translate('wizard.when-question'),\n order: 3,\n fields: [\n new RadioCardsFieldConfig({\n key: 'actionKey',\n options: actionOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'recipe',\n type: 'header',\n label: translate('wizard.what-question'),\n order: 4,\n fields: [\n new RadioCardsFieldConfig({\n key: 'recipeKey',\n options: recipeOptions,\n optionLabel: 'name',\n optionValue: 'id',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 12,\n size: 'small',\n }),\n ],\n },\n {\n key: 'details',\n type: 'header',\n label: translate('wizard.details-question'),\n order: 5,\n fields: [\n new SelectFieldConfig({\n key: 'requiredModuleKey',\n label: translate('wizard.required-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'require-module',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'blockedModuleKey',\n label: translate('wizard.blocked-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'prevent-module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'countedModuleKey',\n label: translate('wizard.counted-module-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new NumberFieldConfig({\n key: 'countValue',\n label: countLabel,\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(1),\n ],\n min: 1,\n order: 4,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'module-max-count',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'module-min-count',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateCompletedSchemaId',\n label: translate('wizard.phase-gate-required-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 5,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-completed',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'phaseGateOptionalSchemaId',\n label: translate('wizard.phase-gate-optional-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: phaseGateOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 6,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'phase-gate-module-required',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'mandatory-gate-items-completed',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'requestSchemaId',\n label: translate('wizard.request-schema-label'),\n placeholder: translate('wizard.request-schema-hint'),\n options: requestSchemaOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 7,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new MultiSelectFieldConfig({\n key: 'blockingStatuses',\n label: translate('wizard.blocking-statuses-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: statusOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 8,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'no-active-request',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'propertyKey',\n label: translate('wizard.property-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: propertyOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 9,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n {\n key: 'recipeKey',\n value: 'property-has-value',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'operator',\n label: translate('wizard.operator-label'),\n placeholder: translate('wizard.select-placeholder'),\n options: operatorOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 10,\n colSpan: 6,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n new TextFieldConfig({\n key: 'expectedValue',\n label: translate('wizard.expected-value-label'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 11,\n colSpan: 12,\n relations: [\n {\n key: 'recipeKey',\n value: 'property-value',\n action: 'show',\n },\n ],\n }),\n ],\n },\n {\n key: 'advanced',\n type: 'header',\n label: translate('execution-settings'),\n order: 6,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ValidatorConfig.min(0),\n ],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 2,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n hidden: !isEdit,\n order: 3,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\nexport function buildLegacyFormConfig({\n translate,\n isEdit,\n langCode,\n selectedRuleType,\n ruleTypeOptions,\n scopeOptions,\n operationOptions,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyFormConfigContext): DynamicFormConfig {\n return {\n sections: [\n {\n key: 'basicInfo',\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n placeholder: '10',\n validators: [ValidatorConfig.required(), ValidatorConfig.min(0)],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n placeholder: translate('name-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n placeholder: translate('name-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n placeholder: translate('description-en-placeholder'),\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n placeholder: translate('description-ar-placeholder'),\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n placeholder: translate('error-message-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 6,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n placeholder: translate('error-message-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 7,\n colSpan: 6,\n }),\n ],\n },\n {\n key: 'ruleTarget',\n type: 'header',\n label: translate('rule-target'),\n order: 2,\n fields: [\n new SelectFieldConfig({\n key: 'ruleType',\n label: translate('rule-type'),\n options: ruleTypeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 1,\n colSpan: 6,\n readonly: isEdit,\n }),\n new SelectFieldConfig({\n key: 'targetScope',\n label: translate('target-scope'),\n options: scopeOptions,\n optionLabel: 'label',\n optionValue: 'value',\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new SelectFieldConfig({\n key: 'targetModuleKey',\n label: translate('target-module'),\n options: moduleOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 3,\n colSpan: 6,\n relations: [\n {\n key: 'targetScope',\n value: 'Module',\n action: 'show',\n },\n ],\n }),\n new SelectFieldConfig({\n key: 'targetOperationKey',\n label: translate('target-operation'),\n options: operationOptions,\n optionLabel: 'label',\n optionValue: 'value',\n order: 4,\n colSpan: 6,\n }),\n ],\n },\n ...(selectedRuleType\n ? [\n buildLegacyConfigurationSection({\n translate,\n ruleType: selectedRuleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ]\n : []),\n {\n key: 'executionSettings',\n type: 'header',\n label: translate('execution-settings'),\n order: 4,\n fields: [\n new ToggleFieldConfig({\n key: 'stopOnFailure',\n label: translate('stop-on-failure'),\n order: 1,\n colSpan: 12,\n }),\n new ToggleFieldConfig({\n key: 'isActive',\n label: translate('active-rule'),\n order: 2,\n colSpan: 12,\n }),\n ],\n },\n ],\n };\n}\n\ninterface GovernanceLegacyConfigurationSectionContext {\n translate: GovernanceTranslateFn;\n ruleType: GovernanceRuleType;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction buildLegacyConfigurationSection({\n translate,\n ruleType,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceLegacyConfigurationSectionContext) {\n return {\n key: 'configuration',\n type: 'header' as const,\n label: translate('rule-configuration'),\n order: 3,\n fields: ruleType.configurationSchema.map((field, index) =>\n schemaFieldToFormField({\n field,\n order: index + 1,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n }),\n ),\n };\n}\n\ninterface GovernanceSchemaFieldToFormFieldContext {\n field: ConfigurationFieldSchema;\n order: number;\n langCode: 'en' | 'ar';\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n}\n\nfunction schemaFieldToFormField({\n field,\n order,\n langCode,\n requestSchemaOptions,\n propertyOptions,\n}: GovernanceSchemaFieldToFormFieldContext): BaseFieldConfig {\n const label = field.label[langCode] || field.label.en;\n const colSpan = field.colSpan ?? 6;\n const validators = field.required ? [ValidatorConfig.required()] : [];\n\n switch (field.type) {\n case 'text':\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'textarea':\n return new TextareaFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n case 'number':\n return new NumberFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n min: field.min,\n max: field.max,\n order,\n colSpan,\n });\n case 'select':\n return new SelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'multi-select':\n return new MultiSelectFieldConfig({\n key: `config_${field.key}`,\n label,\n options: getLegacyOptionsForField(\n field,\n requestSchemaOptions,\n propertyOptions,\n ),\n optionLabel: 'label',\n optionValue: 'value',\n validators,\n order,\n colSpan,\n });\n case 'checkbox':\n return new ToggleFieldConfig({\n key: `config_${field.key}`,\n label,\n order,\n colSpan,\n });\n case 'date':\n return new DateFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n default:\n return new TextFieldConfig({\n key: `config_${field.key}`,\n label,\n validators,\n order,\n colSpan,\n });\n }\n}\n\nfunction getLegacyOptionsForField(\n field: ConfigurationFieldSchema,\n requestSchemaOptions: ConfigurationFieldOption[],\n propertyOptions: ConfigurationFieldOption[],\n): ConfigurationFieldOption[] {\n switch (field.optionsSource) {\n case 'requestSchema':\n return requestSchemaOptions;\n case 'properties':\n return propertyOptions;\n case 'auto-populated':\n case 'static':\n default:\n return field.options ?? [];\n }\n}\n","import { ConfigurationFieldOption } from '../../../../store/governance';\nimport {\n GOVERNANCE_OPERATOR_OPTIONS,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleWizardFormValue,\n} from './governance-rule-form.models';\n\nexport interface GovernanceSummaryContext {\n value: GovernanceRuleWizardFormValue;\n moduleOptions: ConfigurationFieldOption[];\n requestSchemaOptions: ConfigurationFieldOption[];\n propertyOptions: ConfigurationFieldOption[];\n phaseGateOptions: ConfigurationFieldOption[];\n translate: (\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ) => string;\n}\n\nexport function buildActionPrompt(\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n translate: GovernanceSummaryContext['translate'],\n): string {\n return translate('wizard.summary.action', {\n object: translate(`wizard.summary.objects.${appliesTo}`),\n action: translate(`wizard.summary.actions.${actionKey}`),\n });\n}\n\nexport function buildSummary({\n value,\n translate,\n ...context\n}: GovernanceSummaryContext): string {\n if (!value.actionKey || !value.recipeKey) {\n return translate('wizard.summary-empty');\n }\n\n return translate('wizard.summary.full', {\n action: buildActionPrompt(value.appliesTo, value.actionKey, translate),\n detail: resolveRecipeSummary({ value, translate, ...context }),\n });\n}\n\nfunction resolveRecipeSummary({\n value,\n moduleOptions,\n requestSchemaOptions,\n propertyOptions,\n phaseGateOptions,\n translate,\n}: GovernanceSummaryContext): string {\n switch (value.recipeKey) {\n case 'require-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.require-module', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.module'),\n });\n }\n case 'prevent-module': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.blockedModuleKey,\n );\n return translate('wizard.summary.prevent-module', {\n module:\n moduleLabel ??\n value.blockedModuleKey ??\n translate('wizard.summary.fallbacks.selected-module'),\n });\n }\n case 'module-max-count':\n return translate('wizard.summary.module-max-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'module-min-count':\n return translate('wizard.summary.module-min-count', {\n count: value.countValue ?? 0,\n module:\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\n value.countedModuleKey ??\n translate('wizard.summary.fallbacks.modules'),\n });\n case 'phase-gate-completed': {\n const phaseGateLabel = findOptionLabel(\n phaseGateOptions,\n value.phaseGateSchemaId,\n );\n return translate('wizard.summary.phase-gate-completed', {\n phaseGate:\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\n });\n }\n case 'phase-gate-module-required': {\n const moduleLabel = findOptionLabel(\n moduleOptions,\n value.requiredModuleKey,\n );\n return translate('wizard.summary.phase-gate-module-required', {\n module:\n moduleLabel ??\n value.requiredModuleKey ??\n translate('wizard.summary.fallbacks.required-module'),\n });\n }\n case 'no-active-request': {\n const requestLabel = findOptionLabel(\n requestSchemaOptions,\n value.requestSchemaId,\n );\n return translate('wizard.summary.no-active-request', {\n request: requestLabel ?? translate('wizard.summary.fallbacks.request'),\n });\n }\n case 'property-value': {\n const propertyLabel =\n findOptionLabel(propertyOptions, value.propertyKey) ??\n value.propertyKey ??\n translate('wizard.summary.fallbacks.property');\n\n return translate('wizard.summary.property-value', {\n property: propertyLabel,\n operator: resolveOperatorText(value.operator, translate),\n expectedValue: value.expectedValue || '',\n }).trim();\n }\n case 'property-has-value': {\n const propertyLabel =\n findOptionLabel(propertyOptions, value.propertyKey) ??\n value.propertyKey ??\n translate('wizard.summary.fallbacks.property');\n\n return translate('wizard.summary.property-has-value', {\n property: propertyLabel,\n });\n }\n case 'mandatory-gate-items-completed': {\n const phaseGateLabel = findOptionLabel(\n phaseGateOptions,\n value.phaseGateSchemaId,\n );\n return translate('wizard.summary.mandatory-gate-items-completed', {\n phaseGate:\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\n });\n }\n default:\n return translate('wizard.summary-empty');\n }\n}\n\nfunction resolveOperatorText(\n operator: string | null,\n translate: GovernanceSummaryContext['translate'],\n): string {\n const option = GOVERNANCE_OPERATOR_OPTIONS.find(\n (item) => item.value === operator,\n );\n\n return option\n ? translate(option.labelKey).toLowerCase()\n : translate('wizard.summary.fallbacks.operator');\n}\n\nfunction findOptionLabel(\n options: ConfigurationFieldOption[],\n value: string | null,\n): string | null {\n if (!value) {\n return null;\n }\n\n return options.find((option) => option.value === value)?.label ?? null;\n}\n","import { GovernanceRuleType } from '../../../../store/governance';\nimport {\n mapActionToOperationKey,\n mapAppliesToToTargetScope,\n} from './governance-rule-form.mapper';\nimport {\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n GovernanceLegacyFormValue,\n GovernanceRuleActionKey,\n GovernanceRuleAppliesTo,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleRecipeKey,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n resolveRecipeDefinition,\n} from './governance-rule-form.models';\n\nexport type GovernanceRuleWizardFormState = GovernanceRuleWizardFormValue & {\n phaseGateCompletedSchemaId: string | null;\n phaseGateOptionalSchemaId: string | null;\n};\n\nexport const DEFAULT_WIZARD_FORM_STATE: GovernanceRuleWizardFormState = {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\n phaseGateCompletedSchemaId: null,\n phaseGateOptionalSchemaId: null,\n};\n\nexport function mapWizardFormValueToState(\n value: GovernanceRuleWizardFormValue,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n phaseGateCompletedSchemaId:\n value.recipeKey === 'phase-gate-completed'\n ? value.phaseGateSchemaId\n : null,\n phaseGateOptionalSchemaId:\n value.recipeKey === 'phase-gate-module-required' ||\n value.recipeKey === 'mandatory-gate-items-completed'\n ? value.phaseGateSchemaId\n : null,\n };\n}\n\nexport function normalizeWizardFormState(\n value: Partial<GovernanceRuleWizardFormState> | null | undefined,\n): GovernanceRuleWizardFormState {\n return {\n ...DEFAULT_WIZARD_FORM_STATE,\n ...value,\n name: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.name,\n ...value?.name,\n },\n description: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.description,\n ...value?.description,\n },\n errorMessage: {\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.errorMessage,\n ...value?.errorMessage,\n },\n selectedModuleKey: value?.selectedModuleKey ?? null,\n actionKey: value?.actionKey ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.actionKey,\n recipeKey: value?.recipeKey ?? null,\n requiredModuleKey: value?.requiredModuleKey ?? null,\n blockedModuleKey: value?.blockedModuleKey ?? null,\n countedModuleKey: value?.countedModuleKey ?? null,\n countValue:\n value?.countValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\n phaseGateCompletedSchemaId: value?.phaseGateCompletedSchemaId ?? null,\n phaseGateOptionalSchemaId: value?.phaseGateOptionalSchemaId ?? null,\n phaseGateSchemaId: value?.phaseGateSchemaId ?? null,\n requestSchemaId: value?.requestSchemaId ?? null,\n blockingStatuses: Array.isArray(value?.blockingStatuses)\n ? value.blockingStatuses\n : [...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.blockingStatuses],\n propertyKey: value?.propertyKey ?? null,\n operator: value?.operator ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\n expectedValue:\n value?.expectedValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.expectedValue,\n priority: value?.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\n stopOnFailure:\n value?.stopOnFailure ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.stopOnFailure,\n isActive: value?.isActive ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.isActive,\n };\n}\n\nexport function mapWizardStateToWizardValue(\n state: GovernanceRuleWizardFormState,\n): GovernanceRuleWizardFormValue {\n return {\n key: state.key,\n name: {\n en: state.name.en,\n ar: state.name.ar,\n },\n description: {\n en: state.description.en,\n ar: state.description.ar,\n },\n errorMessage: {\n en: state.errorMessage.en,\n ar: state.errorMessage.ar,\n },\n appliesTo: state.appliesTo,\n selectedModuleKey: state.selectedModuleKey,\n actionKey: state.actionKey,\n recipeKey: state.recipeKey,\n requiredModuleKey: state.requiredModuleKey,\n blockedModuleKey: state.blockedModuleKey,\n countedModuleKey: state.countedModuleKey,\n countValue: state.countValue,\n phaseGateSchemaId:\n state.phaseGateCompletedSchemaId ??\n state.phaseGateOptionalSchemaId ??\n null,\n requestSchemaId: state.requestSchemaId,\n blockingStatuses: [...state.blockingStatuses],\n propertyKey: state.propertyKey,\n operator: state.operator,\n expectedValue: state.expectedValue,\n priority: state.priority,\n stopOnFailure: state.stopOnFailure,\n isActive: state.isActive,\n };\n}\n\nexport function resolveRecipeDefinitionForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeDefinition | null {\n return resolveRecipeDefinition(\n resolveRecipeDefinitionKeyForRuleType(ruleType),\n );\n}\n\nexport function resolveRecipeDefinitionKeyForRuleType(\n ruleType: GovernanceRuleType,\n): GovernanceRuleRecipeKey | null {\n switch (readGovernanceRuleTypeKey(ruleType)) {\n case 'ModuleExists':\n return 'require-module';\n case 'ModuleNotExists':\n case 'ModuleDoesNotExist':\n return 'prevent-module';\n case 'ModuleMaxCount':\n return 'module-max-count';\n case 'ModuleMinCount':\n return 'module-min-count';\n case 'PhaseGateCompleted':\n return 'phase-gate-completed';\n case 'PhaseGateModuleRequired':\n return 'phase-gate-module-required';\n case 'NoActiveRequest':\n return 'no-active-request';\n case 'PropertyValueEquals':\n case 'FieldValue':\n return 'property-value';\n case 'PropertyHasValue':\n return 'property-has-value';\n case 'PhaseGateMandatoryItemsCompleted':\n return 'mandatory-gate-items-completed';\n default:\n return null;\n }\n}\n\nexport function hasCompatibleRecipe(\n ruleTypes: GovernanceRuleType[],\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return ruleTypes.some(\n (ruleType) =>\n !!resolveRecipeDefinitionForRuleType(ruleType) &&\n isRuleTypeCompatible(ruleType, appliesTo, actionKey),\n );\n}\n\nexport function isRuleTypeCompatible(\n ruleType: GovernanceRuleType,\n appliesTo: GovernanceRuleAppliesTo,\n actionKey: GovernanceRuleActionKey,\n): boolean {\n return (\n ruleType.supportedScopes.includes(mapAppliesToToTargetScope(appliesTo)) &&\n ruleType.supportedOperations.includes(mapActionToOperationKey(actionKey))\n );\n}\n\nexport function areWizardStatesEqual(\n current: GovernanceRuleWizardFormState,\n next: GovernanceRuleWizardFormState,\n): boolean {\n return (\n current.key === next.key &&\n current.name.en === next.name.en &&\n current.name.ar === next.name.ar &&\n current.description.en === next.description.en &&\n current.description.ar === next.description.ar &&\n current.errorMessage.en === next.errorMessage.en &&\n current.errorMessage.ar === next.errorMessage.ar &&\n current.appliesTo === next.appliesTo &&\n current.selectedModuleKey === next.selectedModuleKey &&\n current.actionKey === next.actionKey &&\n current.recipeKey === next.recipeKey &&\n current.requiredModuleKey === next.requiredModuleKey &&\n current.blockedModuleKey === next.blockedModuleKey &&\n current.countedModuleKey === next.countedModuleKey &&\n current.countValue === next.countValue &&\n current.phaseGateCompletedSchemaId === next.phaseGateCompletedSchemaId &&\n current.phaseGateOptionalSchemaId === next.phaseGateOptionalSchemaId &&\n current.phaseGateSchemaId === next.phaseGateSchemaId &&\n current.requestSchemaId === next.requestSchemaId &&\n current.propertyKey === next.propertyKey &&\n current.operator === next.operator &&\n current.expectedValue === next.expectedValue &&\n current.priority === next.priority &&\n current.stopOnFailure === next.stopOnFailure &&\n current.isActive === next.isActive &&\n areStringArraysEqual(current.blockingStatuses, next.blockingStatuses)\n );\n}\n\nexport function areLegacyFormValuesEqual(\n current: GovernanceLegacyFormValue | null,\n next: GovernanceLegacyFormValue | null,\n): boolean {\n if (current === next) {\n return true;\n }\n\n if (!current || !next) {\n return current === next;\n }\n\n if (\n current.key !== next.key ||\n current.priority !== next.priority ||\n current.name.en !== next.name.en ||\n current.name.ar !== next.name.ar ||\n current.description.en !== next.description.en ||\n current.description.ar !== next.description.ar ||\n current.errorMessage.en !== next.errorMessage.en ||\n current.errorMessage.ar !== next.errorMessage.ar ||\n current.ruleType !== next.ruleType ||\n current.targetScope !== next.targetScope ||\n current.targetModuleKey !== next.targetModuleKey ||\n current.targetOperationKey !== next.targetOperationKey ||\n current.stopOnFailure !== next.stopOnFailure ||\n current.isActive !== next.isActive\n ) {\n return false;\n }\n\n const currentKeys = Object.keys(current);\n const nextKeys = Object.keys(next);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => {\n if (\n key === 'key' ||\n key === 'priority' ||\n key === 'name' ||\n key === 'description' ||\n key === 'errorMessage' ||\n key === 'ruleType' ||\n key === 'targetScope' ||\n key === 'targetModuleKey' ||\n key === 'targetOperationKey' ||\n key === 'stopOnFailure' ||\n key === 'isActive'\n ) {\n return true;\n }\n\n const currentValue = current[key];\n const nextValue = next[key];\n\n if (Array.isArray(currentValue) || Array.isArray(nextValue)) {\n return (\n Array.isArray(currentValue) &&\n Array.isArray(nextValue) &&\n areUnknownArraysEqual(currentValue, nextValue)\n );\n }\n\n return currentValue === nextValue;\n });\n}\n\nfunction areStringArraysEqual(current: string[], next: string[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n\nfunction areUnknownArraysEqual(current: unknown[], next: unknown[]): boolean {\n if (current.length !== next.length) {\n return false;\n }\n\n return current.every((value, index) => value === next[index]);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n OnInit,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs';\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\nimport { Button } from '@masterteam/components/button';\nimport { Message } from 'primeng/message';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { ModalRef } from '@masterteam/components/dialog';\nimport { DynamicFormConfig } from '@masterteam/components';\nimport { ToastService } from '@masterteam/components/toast';\nimport {\n ConfigurationFieldOption,\n CreateGovernanceRuleDto,\n GovernanceFacade,\n GovernanceRule,\n UpdateGovernanceRuleDto,\n} from '../../../store/governance';\nimport {\n TranslocoDirective,\n TranslocoPipe,\n TranslocoService,\n} from '@jsverse/transloco';\nimport { ModalService } from '@masterteam/components/modal';\nimport {\n buildCreatePayload,\n buildUpdatePayload,\n mapAppliesToToTargetScope,\n mapRuleToLegacyFormValue,\n mapRuleToWizardFormValue,\n packLegacyFormToCreateDto,\n packLegacyFormToUpdateDto,\n} from './internal/governance-rule-form.mapper';\nimport {\n buildLegacyFormConfig,\n buildWizardFormConfig,\n} from './internal/governance-rule-form.config';\nimport {\n DEFAULT_BLOCKING_STATUSES,\n findConfigurationSchemaField,\n findRuleTypeByRecipe,\n GOVERNANCE_ACTION_OPTIONS,\n GOVERNANCE_APPLIES_TO_OPTIONS,\n GovernanceRuleActionKey,\n GovernanceLegacyFormValue,\n GovernanceRuleRecipeDefinition,\n GovernanceRuleWizardFormValue,\n readGovernanceRuleTypeKey,\n} from './internal/governance-rule-form.models';\nimport {\n buildActionPrompt,\n buildSummary,\n} from './internal/governance-rule-form.summary';\nimport {\n areLegacyFormValuesEqual,\n areWizardStatesEqual,\n DEFAULT_WIZARD_FORM_STATE,\n GovernanceRuleWizardFormState,\n hasCompatibleRecipe,\n isRuleTypeCompatible,\n mapWizardFormValueToState,\n mapWizardStateToWizardValue,\n normalizeWizardFormState,\n resolveRecipeDefinitionForRuleType,\n} from './internal/governance-rule-form.utils';\n\n@Component({\n selector: 'mt-governance-rule-form',\n templateUrl: './governance-rule-form.html',\n styleUrls: ['./governance-rule-form.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n Button,\n DynamicForm,\n Message,\n ReactiveFormsModule,\n SkeletonModule,\n TranslocoDirective,\n TranslocoPipe,\n ],\n host: {\n class: 'block h-full',\n },\n})\nexport default class GovernanceRuleForm implements OnInit {\n readonly modal = inject(ModalService);\n readonly ref: ModalRef = inject(ModalRef);\n private readonly translocoService = inject(TranslocoService);\n private readonly facade = inject(GovernanceFacade);\n private readonly toast = inject(ToastService);\n\n readonly ruleForEdit = input<GovernanceRule | null>(null);\n readonly dynamicFormRef = viewChild(DynamicForm);\n\n readonly selectedRule = this.facade.selectedRule;\n readonly ruleTypes = this.facade.ruleTypes;\n readonly isLoadingRule = this.facade.isLoadingRule;\n readonly isLoadingRuleTypes = this.facade.isLoadingRuleTypes;\n readonly isAddingRule = this.facade.isAddingRule;\n readonly isUpdatingRule = this.facade.isUpdatingRule;\n readonly modules = this.facade.modules;\n readonly requestSchemas = this.facade.requestSchemas;\n readonly properties = this.facade.properties;\n\n readonly wizardFormControl = new FormControl<GovernanceRuleWizardFormState>(\n DEFAULT_WIZARD_FORM_STATE,\n { nonNullable: true },\n );\n\n readonly legacyFormControl =\n new FormControl<GovernanceLegacyFormValue | null>(null);\n\n private readonly wizardStateRaw = toSignal(\n this.wizardFormControl.valueChanges.pipe(\n map((value) => value ?? DEFAULT_WIZARD_FORM_STATE),\n ),\n { initialValue: this.wizardFormControl.value },\n );\n\n private readonly legacyFormValue = toSignal(\n this.legacyFormControl.valueChanges.pipe(\n map(() => this.legacyFormControl.value),\n ),\n { initialValue: this.legacyFormControl.value },\n );\n\n private readonly activeLang = toSignal(this.translocoService.langChanges$, {\n initialValue: this.translocoService.getActiveLang(),\n });\n\n readonly langCode = computed<'en' | 'ar'>(() =>\n this.activeLang() === 'ar' ? 'ar' : 'en',\n );\n\n readonly isEditMode = computed(() => !!this.ruleForEdit()?.id);\n readonly wizardState = computed(() =>\n normalizeWizardFormState(this.wizardStateRaw()),\n );\n readonly wizardValue = computed<GovernanceRuleWizardFormValue>(() =>\n mapWizardStateToWizardValue(this.wizardState()),\n );\n\n readonly moduleOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.modules().map((module) => ({\n label: module.name[lang] || module.name.en,\n value: module.key,\n }));\n });\n\n readonly requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.requestSchemas().map((schema) => ({\n label: schema.name[lang] || schema.name.en,\n value: String(schema.id),\n }));\n });\n\n readonly propertyOptions = computed<ConfigurationFieldOption[]>(() => {\n const lang = this.langCode();\n return this.properties().map((property) => ({\n label: property.name[lang] || property.name.en,\n value: property.key,\n }));\n });\n\n readonly appliesToCardOptions = computed(() =>\n GOVERNANCE_APPLIES_TO_OPTIONS.map((option) => ({\n id: option.value,\n name: this.translate(option.labelKey),\n })),\n );\n\n readonly availableActionOptions = computed(() => {\n const appliesTo = this.wizardValue().appliesTo;\n const allowedActions: GovernanceRuleActionKey[] =\n appliesTo === 'phase-gate'\n ? ['manage-phase-gate', 'move-phase-gate']\n : ['create', 'update', 'delete'];\n\n return GOVERNANCE_ACTION_OPTIONS.filter(\n (option) =>\n allowedActions.includes(option.value) &&\n hasCompatibleRecipe(this.ruleTypes(), appliesTo, option.value),\n );\n });\n\n readonly actionCardOptions = computed(() =>\n this.availableActionOptions().map((option) => ({\n id: option.value,\n name: buildActionPrompt(\n this.wizardValue().appliesTo,\n option.value,\n this.translate.bind(this),\n ),\n })),\n );\n\n readonly availableRecipeDefinitions = computed(() => {\n const actionKey = this.wizardValue().actionKey;\n if (!actionKey) {\n return [];\n }\n\n return this.ruleTypes()\n .map((ruleType) => {\n const recipe = resolveRecipeDefinitionForRuleType(ruleType);\n if (!recipe) {\n return null;\n }\n\n return isRuleTypeCompatible(\n ruleType,\n this.wizardValue().appliesTo,\n actionKey,\n )\n ? recipe\n : null;\n })\n .filter(\n (recipe, index, items): recipe is GovernanceRuleRecipeDefinition =>\n !!recipe &&\n items.findIndex((item) => item?.key === recipe.key) === index,\n );\n });\n\n readonly recipeCardOptions = computed(() =>\n this.availableRecipeDefinitions().map((recipe) => ({\n id: recipe.key,\n name: this.translate(recipe.labelKey),\n })),\n );\n\n readonly selectedRuleType = computed(() =>\n findRuleTypeByRecipe(this.ruleTypes(), this.wizardValue().recipeKey),\n );\n\n readonly useLegacyEditor = computed(() => {\n if (!this.ruleForEdit()?.id) {\n return false;\n }\n\n const rule = this.selectedRule();\n return !!rule && !mapRuleToWizardFormValue(rule);\n });\n\n readonly isInitializing = computed(() => {\n if (this.ruleForEdit()?.id && this.isLoadingRule()) {\n return true;\n }\n\n return this.ruleTypes().length === 0 && this.isLoadingRuleTypes();\n });\n\n readonly noRecipesAvailable = computed(\n () =>\n !this.useLegacyEditor() &&\n !!this.wizardValue().actionKey &&\n this.recipeCardOptions().length === 0,\n );\n readonly hasReviewSummary = computed(() => {\n if (this.useLegacyEditor()) {\n return false;\n }\n\n const value = this.wizardValue();\n return !!value.actionKey && !!value.recipeKey;\n });\n\n readonly canSubmit = computed(() => {\n if (this.useLegacyEditor()) {\n return this.legacyFormControl.valid;\n }\n\n return (\n this.wizardFormControl.valid &&\n !!this.selectedRuleType() &&\n !!this.wizardValue().actionKey &&\n !!this.wizardValue().recipeKey\n );\n });\n\n readonly reviewSummary = computed(() =>\n buildSummary({\n value: this.wizardValue(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n translate: this.translate.bind(this),\n }),\n );\n readonly wizardFormConfig = computed<DynamicFormConfig>(() =>\n buildWizardFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n recipeKey: this.wizardValue().recipeKey,\n appliesToOptions: this.appliesToCardOptions(),\n actionOptions: this.actionCardOptions(),\n recipeOptions: this.recipeCardOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n phaseGateOptions: this.getPhaseGateOptions(),\n blockingStatuses: this.getBlockingStatusOptions(),\n }),\n );\n\n readonly selectedLegacyRuleType = computed(() => {\n const ruleTypeKey = String(this.legacyFormValue()?.ruleType ?? '').trim();\n if (!ruleTypeKey) {\n return null;\n }\n\n return (\n this.ruleTypes().find((ruleType) => {\n const catalogKey = readGovernanceRuleTypeKey(ruleType);\n return (\n catalogKey === ruleTypeKey || String(ruleType.type) === ruleTypeKey\n );\n }) ?? null\n );\n });\n\n readonly scopeOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translateScopeLabel('Level'), value: 'Level' },\n { label: this.translateScopeLabel('Module'), value: 'Module' },\n { label: this.translateScopeLabel('PhaseGate'), value: 'PhaseGate' },\n ];\n }\n\n return ruleType.supportedScopes.map((scope) => ({\n label: this.translateScopeLabel(scope),\n value: scope,\n }));\n });\n\n readonly operationOptions = computed(() => {\n const ruleType = this.selectedLegacyRuleType();\n if (!ruleType) {\n return [\n { label: this.translate('all'), value: '' },\n { label: this.translateOperationLabel('Create'), value: 'Create' },\n { label: this.translateOperationLabel('Update'), value: 'Update' },\n { label: this.translateOperationLabel('Delete'), value: 'Delete' },\n {\n label: this.translateOperationLabel('MovePhaseGate'),\n value: 'MovePhaseGate',\n },\n ];\n }\n\n return [\n { label: this.translate('all'), value: '' },\n ...ruleType.supportedOperations.map((operation) => ({\n label: this.translateOperationLabel(operation),\n value: operation,\n })),\n ];\n });\n\n readonly legacyFormConfig = computed<DynamicFormConfig>(() =>\n buildLegacyFormConfig({\n translate: this.translate.bind(this),\n isEdit: this.isEditMode(),\n langCode: this.langCode(),\n selectedRuleType: this.selectedLegacyRuleType(),\n ruleTypeOptions: this.ruleTypeOptions(),\n scopeOptions: this.scopeOptions(),\n operationOptions: this.operationOptions(),\n moduleOptions: this.moduleOptions(),\n requestSchemaOptions: this.requestSchemaOptions(),\n propertyOptions: this.propertyOptions(),\n }),\n );\n\n constructor() {\n effect(() => {\n if (\n this.wizardValue().appliesTo !== 'specific-module' &&\n this.wizardValue().selectedModuleKey\n ) {\n this.patchWizardState({ selectedModuleKey: null });\n }\n });\n\n effect(() => {\n const currentAction = this.wizardValue().actionKey;\n if (\n !currentAction ||\n this.availableActionOptions().some(\n (option) => option.value === currentAction,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ actionKey: null, recipeKey: null });\n });\n\n effect(() => {\n const currentRecipe = this.wizardValue().recipeKey;\n if (\n !currentRecipe ||\n this.availableRecipeDefinitions().some(\n (definition) => definition.key === currentRecipe,\n )\n ) {\n return;\n }\n\n this.patchWizardState({ recipeKey: null });\n });\n\n effect(() => {\n const editing = !!this.ruleForEdit()?.id;\n\n if (!editing) {\n this.resetWizardForm();\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n const rule = this.selectedRule();\n if (!rule) {\n return;\n }\n\n const wizardValue = mapRuleToWizardFormValue(rule);\n if (wizardValue) {\n this.setWizardState(mapWizardFormValueToState(wizardValue));\n if (this.legacyFormControl.value !== null) {\n this.legacyFormControl.reset(null);\n }\n return;\n }\n\n this.resetWizardForm();\n const nextLegacyValue = mapRuleToLegacyFormValue(rule);\n if (\n !areLegacyFormValuesEqual(this.legacyFormControl.value, nextLegacyValue)\n ) {\n this.legacyFormControl.setValue(nextLegacyValue);\n }\n });\n\n effect(() => {\n const recipeKey = this.wizardValue().recipeKey;\n const appliesTo = this.wizardValue().appliesTo;\n const targetModuleKey =\n appliesTo === 'phase-gate'\n ? 'PhaseGate'\n : appliesTo === 'specific-module'\n ? (this.wizardValue().selectedModuleKey ?? undefined)\n : undefined;\n const targetScope = mapAppliesToToTargetScope(appliesTo);\n const needsRequestSchemas = recipeKey === 'no-active-request';\n const needsProperties =\n recipeKey === 'property-value' || recipeKey === 'property-has-value';\n\n if (!needsRequestSchemas && !needsProperties) {\n this.clearReferenceData();\n return;\n }\n\n if (\n targetScope === 'Module' &&\n appliesTo === 'specific-module' &&\n !targetModuleKey\n ) {\n this.clearReferenceData();\n return;\n }\n\n if (needsRequestSchemas) {\n this.facade.getRequestSchemas(targetScope, targetModuleKey);\n }\n\n if (needsProperties) {\n this.facade.getProperties(targetScope, targetModuleKey);\n }\n });\n }\n\n ngOnInit(): void {\n if (!this.ruleTypes().length) {\n this.facade.getRuleTypes();\n }\n\n if (!this.modules().length) {\n this.facade.getModules();\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.facade.getRule(ruleId);\n }\n }\n\n onSubmit(): void {\n this.dynamicFormRef()?.form.markAllAsTouched();\n\n if (this.useLegacyEditor()) {\n if (!this.legacyFormControl.valid) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n this.submitLegacyForm();\n return;\n }\n\n if (!this.wizardValue().actionKey || !this.wizardValue().recipeKey) {\n this.toast.warn(\n this.translate('wizard.summary-empty'),\n this.translate('warning'),\n );\n return;\n }\n\n if (!this.canSubmit()) {\n this.toast.warn(\n this.translate('wizard.complete-required-fields'),\n this.translate('warning'),\n );\n return;\n }\n\n const ruleType = this.selectedRuleType();\n if (!ruleType) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n const payloadValue = this.wizardValue();\n\n if (ruleId) {\n this.saveUpdate(ruleId, buildUpdatePayload(payloadValue, ruleType));\n return;\n }\n\n this.saveCreate(buildCreatePayload(payloadValue, ruleType));\n }\n\n getPhaseGateOptions(): ConfigurationFieldOption[] {\n return (\n findConfigurationSchemaField(this.selectedRuleType(), 'phaseGateSchemaId')\n ?.options ?? []\n );\n }\n\n getBlockingStatusOptions(): string[] {\n const field = findConfigurationSchemaField(\n this.selectedRuleType(),\n 'blockingStatuses',\n );\n\n if (field?.options?.length) {\n return field.options.map((option) => option.value);\n }\n\n return [...DEFAULT_BLOCKING_STATUSES];\n }\n\n private translate(\n key: string,\n params?: Record<string, string | number | null | undefined>,\n ): string {\n const lang = this.activeLang();\n return this.translocoService.translate(`governance.${key}`, params, lang);\n }\n\n private translateScopeLabel(scope: string): string {\n switch (scope) {\n case 'Level':\n return this.translate('scope-level');\n case 'Module':\n return this.translate('scope-module');\n case 'PhaseGate':\n return this.translate('scope-phase-gate');\n default:\n return scope;\n }\n }\n\n private translateOperationLabel(operation: string): string {\n switch (operation) {\n case 'Create':\n return this.translate('create');\n case 'Update':\n return this.translate('update');\n case 'Delete':\n return this.translate('delete');\n case 'MovePhaseGate':\n return this.translate('wizard.actions.move-phase-gate');\n default:\n return operation;\n }\n }\n\n private patchWizardState(\n patch: Partial<GovernanceRuleWizardFormState>,\n ): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState({\n ...currentState,\n ...patch,\n });\n\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private setWizardState(state: GovernanceRuleWizardFormState): void {\n const currentState = normalizeWizardFormState(\n this.wizardFormControl.getRawValue(),\n );\n const nextState = normalizeWizardFormState(state);\n if (areWizardStatesEqual(currentState, nextState)) {\n return;\n }\n\n this.wizardFormControl.setValue(nextState);\n }\n\n private resetWizardForm(): void {\n this.setWizardState(DEFAULT_WIZARD_FORM_STATE);\n }\n\n private clearReferenceData(): void {\n const hasRequestSchemas = untracked(() => this.requestSchemas().length > 0);\n const hasProperties = untracked(() => this.properties().length > 0);\n\n if (hasRequestSchemas) {\n this.facade.clearRequestSchemas();\n }\n\n if (hasProperties) {\n this.facade.clearProperties();\n }\n }\n\n private saveCreate(payload: CreateGovernanceRuleDto): void {\n this.facade.addRule(payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private saveUpdate(id: number, payload: UpdateGovernanceRuleDto): void {\n this.facade.updateRule(id, payload).subscribe({\n next: () => this.ref.close(true),\n error: () => {},\n });\n }\n\n private submitLegacyForm(): void {\n if (!this.legacyFormControl.valid) {\n return;\n }\n\n const formValue = this.legacyFormControl.value;\n if (!formValue) {\n return;\n }\n\n const ruleId = this.ruleForEdit()?.id;\n if (ruleId) {\n this.saveUpdate(ruleId, packLegacyFormToUpdateDto(formValue));\n return;\n }\n\n this.saveCreate(packLegacyFormToCreateDto(formValue));\n }\n\n private ruleTypeOptions(): ConfigurationFieldOption[] {\n const lang = this.langCode();\n return this.ruleTypes().map((ruleType) => ({\n label: ruleType.name[lang] || ruleType.name.en,\n value: readGovernanceRuleTypeKey(ruleType),\n }));\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-content flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4 sm:p-5 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (isInitializing()) {\r\n <div class=\"space-y-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n </div>\r\n } @else if (useLegacyEditor()) {\r\n <section class=\"rounded-lg border border-amber-200 bg-amber-50/70 p-4\">\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.legacy-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.legacy-description\") }}\r\n </p>\r\n </section>\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"legacyFormConfig()\"\r\n [formControl]=\"legacyFormControl\"\r\n />\r\n } @else {\r\n @if (noRecipesAvailable()) {\r\n <section\r\n class=\"rounded-lg border border-orange-200 bg-orange-50/80 p-4\"\r\n >\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.no-recipes-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.no-recipes-description\") }}\r\n </p>\r\n </section>\r\n }\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"wizardFormConfig()\"\r\n [formControl]=\"wizardFormControl\"\r\n />\r\n\r\n @if (hasReviewSummary()) {\r\n <section class=\"flex flex-col gap-2\">\r\n <p\r\n class=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-slate-500\"\r\n >\r\n {{ t(\"wizard.summary-title\") }}\r\n </p>\r\n <p-message\r\n severity=\"warn\"\r\n styleClass=\"w-full\"\r\n [text]=\"reviewSummary()\"\r\n />\r\n </section>\r\n }\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\r\n severity=\"secondary\"\r\n [label]=\"'cancel' | transloco\"\r\n (click)=\"ref.close()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"isAddingRule() || isUpdatingRule()\"\r\n (click)=\"onSubmit()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n computed,\n inject,\n linkedSignal,\n OnInit,\n OnDestroy,\n signal,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {\n CellChangeEvent,\n ColumnDef,\n Table,\n TableAction,\n} from '@masterteam/components/table';\nimport { SkeletonModule } from 'primeng/skeleton';\nimport { GovernanceFacade } from '../../../store/governance';\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\nimport { ModalService } from '@masterteam/components/modal';\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\nimport { finalize } from 'rxjs';\nimport { Icon } from '@masterteam/icons';\nimport { Chip } from '@masterteam/components/chip';\nimport { GovernanceRule, GovernanceRuleType } from '../../../store/governance';\n\n@Component({\n selector: 'mt-governance-rules-list',\n styleUrl: './governance-rules-list.css',\n templateUrl: './governance-rules-list.html',\n standalone: true,\n imports: [\n CommonModule,\n SkeletonModule,\n Table,\n TranslocoDirective,\n Icon,\n Chip,\n ],\n})\nexport default class GovernanceRulesList implements OnInit, OnDestroy {\n // ============================================================================\n // Template References for Custom Columns\n // ============================================================================\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\n whenCol = viewChild.required<TemplateRef<any>>('whenCol');\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\n\n // ============================================================================\n // Services\n // ============================================================================\n private readonly facade = inject(GovernanceFacade);\n readonly modal: ModalService = inject(ModalService);\n private readonly translocoService = inject(TranslocoService);\n private readonly ruleTypes = this.facade.ruleTypes;\n\n // ============================================================================\n // Breadcrumb\n // ============================================================================\n breadcrumbItems = linkedSignal(() => [\n {\n label: '',\n icon: 'general.home-line',\n routerLink: '/control-panel/workspaces',\n },\n {\n label: this.translocoService.translate('governance.control-panel'),\n routerLink: '/control-panel',\n },\n {\n label: this.translocoService.translate('governance.governance-rules'),\n },\n ]);\n\n // ============================================================================\n // Data Computed from Facade\n // ============================================================================\n rules = computed(() => {\n const tab = this.activeTab();\n const all = this.allRules();\n const activeRules = this.activeRules();\n const inactiveRules = this.inactiveRules();\n\n switch (tab) {\n case 'active':\n return activeRules;\n case 'inactive':\n return inactiveRules;\n case 'all':\n default:\n return all;\n }\n });\n\n readonly ruleTypeOptions = computed(() => {\n const ruleTypes = this.ruleTypes();\n if (ruleTypes.length > 0) {\n return ruleTypes\n .map((ruleType) => this.readRuleTypeKey(ruleType))\n .filter((key, index, items) => !!key && items.indexOf(key) === index)\n .map((key) => ({\n label: this.getRuleTypeLabel(key),\n value: key,\n }));\n }\n\n return this.rules()\n .map((rule) => rule.ruleTypeKey)\n .filter((key, index, items) => !!key && items.indexOf(key) === index)\n .map((key) => ({\n label: this.getRuleTypeLabel(key),\n value: key,\n }));\n });\n\n // ============================================================================\n // Tabs\n // ============================================================================\n tabs = signal([\n {\n label: this.translocoService.translate('governance.all'),\n value: 'all',\n },\n {\n label: this.translocoService.translate('governance.active'),\n value: 'active',\n },\n {\n label: this.translocoService.translate('governance.inactive'),\n value: 'inactive',\n },\n ]);\n activeTab = signal<string>('all');\n\n // ============================================================================\n // Table Actions\n // ============================================================================\n tableActions = signal<TableAction[]>([\n {\n icon: 'general.plus',\n label: this.translocoService.translate('governance.add-rule'),\n color: 'primary',\n action: () => {\n this.openRuleDialog();\n },\n },\n ]);\n\n deletingRowIds = signal<any[]>([]);\n\n rowActions = signal<TableAction[]>([\n {\n icon: 'custom.pencil',\n tooltip: this.translocoService.translate('edit'),\n color: 'primary',\n action: (row: GovernanceRule) => {\n this.facade.clearSelectedRule();\n this.openRuleDialog(row);\n },\n },\n {\n icon: 'general.trash-01',\n tooltip: this.translocoService.translate('delete'),\n color: 'danger',\n variant: 'outlined',\n action: (row: GovernanceRule) => {\n this.deletingRowIds.update((ids) => [...ids, row.id]);\n this.facade\n .deleteRule(row.id)\n .pipe(\n finalize(() => {\n this.deletingRowIds.update((ids) =>\n ids.filter((id) => id !== row.id),\n );\n }),\n )\n .subscribe();\n },\n confirmation: {\n type: 'popup',\n confirmationType: 'delete',\n },\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\n },\n ]);\n\n // ============================================================================\n // Table Columns\n // ============================================================================\n tableColumns = linkedSignal<ColumnDef[]>(() => [\n {\n key: 'priority',\n label: this.translocoService.translate('governance.priority'),\n type: 'custom',\n customCellTpl: this.priorityCol(),\n sortable: true,\n },\n {\n key: 'name.en',\n label: this.translocoService.translate('governance.name'),\n type: 'text',\n sortable: true,\n },\n {\n key: 'ruleTypeKey',\n label: this.translocoService.translate('governance.rule-type'),\n type: 'custom',\n customCellTpl: this.typeCol(),\n filterConfig: {\n type: 'select',\n label: this.translocoService.translate('governance.rule-type'),\n options: this.ruleTypeOptions(),\n },\n },\n {\n key: 'targetScope',\n label: this.translocoService.translate('governance.applies-to'),\n type: 'custom',\n customCellTpl: this.scopeCol(),\n },\n {\n key: 'targetOperationKey',\n label: this.translocoService.translate('governance.when'),\n type: 'custom',\n customCellTpl: this.whenCol(),\n },\n {\n key: 'isActive',\n label: this.translocoService.translate('governance.status'),\n type: 'boolean',\n filterConfig: {\n type: 'select',\n label: this.translocoService.translate('governance.status'),\n options: [\n {\n label: this.translocoService.translate('governance.active'),\n value: true,\n },\n {\n label: this.translocoService.translate('governance.inactive'),\n value: false,\n },\n ],\n },\n },\n ]);\n\n // ============================================================================\n // Private\n // ============================================================================\n loading = this.facade.isLoadingRules;\n private allRules = this.facade.rules;\n private activeRules = this.facade.activeRules;\n private inactiveRules = this.facade.inactiveRules;\n\n ngOnInit(): void {\n if (!this.ruleTypes().length) {\n this.facade.getRuleTypes();\n }\n }\n\n ngOnDestroy(): void {\n this.facade.resetState();\n }\n\n openRuleDialog(rule: GovernanceRule | null = null) {\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\n this.modal.openModal(GovernanceRuleForm, modalType, {\n header: rule\n ? this.translocoService.translate('governance.edit-rule')\n : this.translocoService.translate('governance.add-rule'),\n styleClass: '!w-[50rem] !absolute ',\n position: modalType === 'drawer' ? 'end' : '',\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\n dismissableMask: true,\n dismissible: true,\n inputValues: {\n ruleForEdit: rule,\n },\n });\n }\n\n onCellChange(event: CellChangeEvent) {\n if (event.column === 'isActive' && event.type === 'boolean') {\n this.facade.toggleRuleActive(event.row.id);\n }\n }\n\n getRuleTypeLabel(ruleTypeKey: string): string {\n return this.translocoService.translate(\n `governance.rule-types.${ruleTypeKey}`,\n );\n }\n\n getRuleTypeChipClass(ruleTypeKey: string): string {\n const classes: Record<string, string> = {\n ModuleExists: 'bg-blue-100 text-blue-700',\n ModuleNotExists: 'bg-red-100 text-red-700',\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\n ModuleMinCount: 'bg-orange-100 text-orange-700',\n FieldRequired: 'bg-purple-100 text-purple-700',\n FieldValue: 'bg-indigo-100 text-indigo-700',\n PropertyValueEquals: 'bg-indigo-100 text-indigo-700',\n PropertyHasValue: 'bg-cyan-100 text-cyan-700',\n PhaseGateCompleted: 'bg-emerald-100 text-emerald-700',\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\n PhaseGateMandatoryItemsCompleted: 'bg-teal-100 text-teal-700',\n NoActiveRequest: 'bg-rose-100 text-rose-700',\n };\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\n }\n\n getAppliesToLabel(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.phase-gate.label',\n );\n }\n\n if (rule.targetScope === 'Level') {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.level.label',\n );\n }\n\n if (rule.targetModuleKey) {\n return this.translocoService.translate(\n 'governance.wizard.applies-to.specific-module.label',\n );\n }\n\n return this.translocoService.translate(\n 'governance.wizard.applies-to.any-module.label',\n );\n }\n\n getAppliesToIcon(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n return 'general.flag-01';\n }\n\n if (rule.targetScope === 'Level') {\n return 'general.layers-three-01';\n }\n\n return 'general.cube-01';\n }\n\n getWhenLabel(rule: GovernanceRule): string {\n if (this.isPhaseGateRule(rule)) {\n switch (rule.targetOperationKey) {\n case 'Update':\n return this.translocoService.translate(\n 'governance.wizard.actions.manage-phase-gate',\n );\n case 'MovePhaseGate':\n return this.translocoService.translate(\n 'governance.wizard.actions.move-phase-gate',\n );\n default:\n break;\n }\n }\n\n switch (rule.targetOperationKey) {\n case 'Create':\n return this.translocoService.translate('governance.create');\n case 'Update':\n return this.translocoService.translate('governance.update');\n case 'Delete':\n return this.translocoService.translate('governance.delete');\n case 'MovePhaseGate':\n return this.translocoService.translate(\n 'governance.wizard.actions.move-phase-gate',\n );\n default:\n return (\n rule.targetOperationKey ||\n this.translocoService.translate('governance.all')\n );\n }\n }\n\n private isPhaseGateRule(rule: GovernanceRule): boolean {\n return (\n rule.targetScope === 'PhaseGate' ||\n String(rule.targetModuleKey ?? '').toLowerCase() === 'phasegate'\n );\n }\n\n private readRuleTypeKey(ruleType: GovernanceRuleType): string {\n return String(ruleType.key ?? ruleType.type ?? '').trim();\n }\n}\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"getRuleTypeLabel(row.ruleTypeKey)\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon class=\"text-lg\" [icon]=\"getAppliesToIcon(row)\"></mt-icon>\r\n <span>{{ getAppliesToLabel(row) }}</span>\r\n @if (\r\n row.targetModuleKey &&\r\n getAppliesToLabel(row) !== t(\"wizard.applies-to.phase-gate.label\")\r\n ) {\r\n <span class=\"text-slate-500\">&rarr; {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template #whenCol let-row>\r\n <span>{{ getWhenLabel(row) }}</span>\r\n </ng-template>\r\n\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n storageKey=\"governance-rules-list-table\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/governance",
3
- "version": "0.0.13",
3
+ "version": "0.0.14",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/governance",
6
6
  "linkDirectory": false,
@@ -20,9 +20,9 @@
20
20
  "tailwindcss": "^4.2.2",
21
21
  "tailwindcss-primeui": "^0.6.1",
22
22
  "@ngxs/store": "^20.1.0",
23
- "@masterteam/icons": "^0.0.14",
24
- "@masterteam/components": "^0.0.139",
25
- "@masterteam/forms": "^0.0.65"
23
+ "@masterteam/components": "^0.0.143",
24
+ "@masterteam/forms": "^0.0.66",
25
+ "@masterteam/icons": "^0.0.14"
26
26
  },
27
27
  "sideEffects": false,
28
28
  "exports": {