@webiny/api-workflows 6.6.0-alpha.0 → 6.6.0-alpha.1
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.
- package/WorkflowsFeature.js +55 -2
- package/WorkflowsFeature.js.map +1 -1
- package/domain/workflow/abstractions.d.ts +13 -3
- package/domain/workflow/abstractions.js +2 -2
- package/domain/workflow/abstractions.js.map +1 -1
- package/domain/workflowState/abstractions.d.ts +13 -3
- package/domain/workflowState/abstractions.js +2 -2
- package/domain/workflowState/abstractions.js.map +1 -1
- package/features/WorkflowModelProviders.d.ts +34 -0
- package/features/WorkflowModelProviders.js +40 -0
- package/features/WorkflowModelProviders.js.map +1 -0
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.d.ts +3 -3
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js +6 -5
- package/features/workflow/CreateWorkflow/CreateWorkflowRepository.js.map +1 -1
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.d.ts +3 -3
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js +6 -5
- package/features/workflow/DeleteWorkflow/DeleteWorkflowRepository.js.map +1 -1
- package/features/workflow/GetWorkflow/GetWorkflowRepository.d.ts +3 -3
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js +6 -5
- package/features/workflow/GetWorkflow/GetWorkflowRepository.js.map +1 -1
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.d.ts +3 -3
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js +7 -6
- package/features/workflow/ListWorkflows/ListWorkflowsRepository.js.map +1 -1
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.d.ts +3 -3
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js +6 -5
- package/features/workflow/UpdateWorkflow/UpdateWorkflowRepository.js.map +1 -1
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js +6 -5
- package/features/workflowState/CreateWorkflowState/CreateWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js +6 -5
- package/features/workflowState/DeleteWorkflowState/DeleteWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js +6 -5
- package/features/workflowState/GetTargetWorkflowState/GetTargetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js +6 -5
- package/features/workflowState/GetWorkflowState/GetWorkflowStateRepository.js.map +1 -1
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.d.ts +3 -3
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js +7 -6
- package/features/workflowState/ListWorkflowStates/ListWorkflowStatesRepository.js.map +1 -1
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.d.ts +3 -3
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js +7 -6
- package/features/workflowState/UpdateWorkflowState/UpdateWorkflowStateRepository.js.map +1 -1
- package/package.json +13 -16
- package/WorkflowsInitializer.d.ts +0 -19
- package/WorkflowsInitializer.js +0 -97
- package/WorkflowsInitializer.js.map +0 -1
package/WorkflowsInitializer.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { RequestContainer, RequestContextInitializer } from "@webiny/event-handler-core";
|
|
2
|
-
import { TenantContext } from "@webiny/api-core/features/tenancy/TenantContext/index.js";
|
|
3
|
-
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
|
-
import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
|
|
5
|
-
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
6
|
-
import { WORKFLOW_MODEL_ID } from "./domain/workflow/workflowModel.js";
|
|
7
|
-
import { WORKFLOW_STATE_MODEL_ID } from "./domain/workflowState/stateModel.js";
|
|
8
|
-
import { WorkflowModel } from "./domain/workflow/abstractions.js";
|
|
9
|
-
import { WorkflowStateModel } from "./domain/workflowState/abstractions.js";
|
|
10
|
-
import { WorkflowMapper } from "./domain/workflow/WorkflowMapper.js";
|
|
11
|
-
import { WorkflowStateMapper } from "./domain/workflowState/WorkflowStateMapper.js";
|
|
12
|
-
import { GetWorkflowFeature } from "./features/workflow/GetWorkflow/feature.js";
|
|
13
|
-
import { ListWorkflowsFeature } from "./features/workflow/ListWorkflows/feature.js";
|
|
14
|
-
import { CreateWorkflowFeature } from "./features/workflow/CreateWorkflow/feature.js";
|
|
15
|
-
import { DeleteWorkflowFeature } from "./features/workflow/DeleteWorkflow/feature.js";
|
|
16
|
-
import { UpdateWorkflowFeature } from "./features/workflow/UpdateWorkflow/feature.js";
|
|
17
|
-
import { StoreWorkflowFeature } from "./features/workflow/StoreWorkflow/feature.js";
|
|
18
|
-
import { GetWorkflowStateFeature } from "./features/workflowState/GetWorkflowState/feature.js";
|
|
19
|
-
import { GetTargetWorkflowStateFeature } from "./features/workflowState/GetTargetWorkflowState/feature.js";
|
|
20
|
-
import { ListOwnWorkflowStatesFeature } from "./features/workflowState/ListOwnWorkflowStates/feature.js";
|
|
21
|
-
import { ListWorkflowStatesFeature } from "./features/workflowState/ListWorkflowStates/feature.js";
|
|
22
|
-
import { ListRequestedWorkflowStatesFeature } from "./features/workflowState/ListRequestedWorkflowStates/feature.js";
|
|
23
|
-
import { CreateWorkflowStateFeature } from "./features/workflowState/CreateWorkflowState/feature.js";
|
|
24
|
-
import { UpdateWorkflowStateFeature } from "./features/workflowState/UpdateWorkflowState/feature.js";
|
|
25
|
-
import { CancelWorkflowStateFeature } from "./features/workflowState/CancelWorkflowState/feature.js";
|
|
26
|
-
import { DeleteWorkflowStateFeature } from "./features/workflowState/DeleteWorkflowState/feature.js";
|
|
27
|
-
import { DeleteTargetWorkflowStateFeature } from "./features/workflowState/DeleteTargetWorkflowState/feature.js";
|
|
28
|
-
import { StartWorkflowStateStepFeature } from "./features/workflowState/StartWorkflowStateStep/feature.js";
|
|
29
|
-
import { ApproveWorkflowStateStepFeature } from "./features/workflowState/ApproveWorkflowStateStep/feature.js";
|
|
30
|
-
import { RejectWorkflowStateStepFeature } from "./features/workflowState/RejectWorkflowStateStep/feature.js";
|
|
31
|
-
import { TakeOverWorkflowStateStepFeature } from "./features/workflowState/TakeOverWorkflowStateStep/feature.js";
|
|
32
|
-
import { GetUserTeamsFeature } from "./features/internal/GetUserTeams/feature.js";
|
|
33
|
-
import { ListNotificationTypesFeature } from "./features/notifications/ListNotificationTypes/index.js";
|
|
34
|
-
import { NotificationTransportFeature } from "./features/notifications/NotificationTransport/index.js";
|
|
35
|
-
class WorkflowsInitializerImpl {
|
|
36
|
-
constructor(container, tenantCtx, identityCtx, wcp){
|
|
37
|
-
this.container = container;
|
|
38
|
-
this.tenantCtx = tenantCtx;
|
|
39
|
-
this.identityCtx = identityCtx;
|
|
40
|
-
this.wcp = wcp;
|
|
41
|
-
this.initialized = false;
|
|
42
|
-
}
|
|
43
|
-
async init(_ctx) {
|
|
44
|
-
if (!this.initialized) {
|
|
45
|
-
this.initialized = true;
|
|
46
|
-
if (this.tenantCtx.getTenant() && this.wcp.canUseWorkflows()) await this.registerWorkflowFeatures();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async registerWorkflowFeatures() {
|
|
50
|
-
const getModel = this.container.resolve(GetModelUseCase);
|
|
51
|
-
await this.identityCtx.withoutAuthorization(async ()=>{
|
|
52
|
-
const [workflowModel, workflowStateModel] = await Promise.all([
|
|
53
|
-
getModel.execute(WORKFLOW_MODEL_ID),
|
|
54
|
-
getModel.execute(WORKFLOW_STATE_MODEL_ID)
|
|
55
|
-
]);
|
|
56
|
-
this.container.registerInstance(WorkflowModel, workflowModel.value);
|
|
57
|
-
this.container.registerInstance(WorkflowStateModel, workflowStateModel.value);
|
|
58
|
-
});
|
|
59
|
-
this.container.register(WorkflowMapper);
|
|
60
|
-
this.container.register(WorkflowStateMapper);
|
|
61
|
-
ListNotificationTypesFeature.register(this.container);
|
|
62
|
-
NotificationTransportFeature.register(this.container);
|
|
63
|
-
GetWorkflowFeature.register(this.container);
|
|
64
|
-
ListWorkflowsFeature.register(this.container);
|
|
65
|
-
CreateWorkflowFeature.register(this.container);
|
|
66
|
-
DeleteWorkflowFeature.register(this.container);
|
|
67
|
-
UpdateWorkflowFeature.register(this.container);
|
|
68
|
-
StoreWorkflowFeature.register(this.container);
|
|
69
|
-
GetUserTeamsFeature.register(this.container);
|
|
70
|
-
GetWorkflowStateFeature.register(this.container);
|
|
71
|
-
GetTargetWorkflowStateFeature.register(this.container);
|
|
72
|
-
ListOwnWorkflowStatesFeature.register(this.container);
|
|
73
|
-
ListWorkflowStatesFeature.register(this.container);
|
|
74
|
-
ListRequestedWorkflowStatesFeature.register(this.container);
|
|
75
|
-
CreateWorkflowStateFeature.register(this.container);
|
|
76
|
-
UpdateWorkflowStateFeature.register(this.container);
|
|
77
|
-
CancelWorkflowStateFeature.register(this.container);
|
|
78
|
-
DeleteWorkflowStateFeature.register(this.container);
|
|
79
|
-
DeleteTargetWorkflowStateFeature.register(this.container);
|
|
80
|
-
StartWorkflowStateStepFeature.register(this.container);
|
|
81
|
-
ApproveWorkflowStateStepFeature.register(this.container);
|
|
82
|
-
RejectWorkflowStateStepFeature.register(this.container);
|
|
83
|
-
TakeOverWorkflowStateStepFeature.register(this.container);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const WorkflowsInitializer = RequestContextInitializer.createImplementation({
|
|
87
|
-
implementation: WorkflowsInitializerImpl,
|
|
88
|
-
dependencies: [
|
|
89
|
-
RequestContainer,
|
|
90
|
-
TenantContext,
|
|
91
|
-
IdentityContext,
|
|
92
|
-
WcpContext
|
|
93
|
-
]
|
|
94
|
-
});
|
|
95
|
-
export { WorkflowsInitializer };
|
|
96
|
-
|
|
97
|
-
//# sourceMappingURL=WorkflowsInitializer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowsInitializer.js","sources":["../src/WorkflowsInitializer.ts"],"sourcesContent":["import type { Container } from \"@webiny/di\";\nimport { RequestContextInitializer } from \"@webiny/event-handler-core\";\nimport type { IRequestContextInitializer } from \"@webiny/event-handler-core\";\nimport { RequestContainer } from \"@webiny/event-handler-core\";\nimport { TenantContext } from \"@webiny/api-core/features/tenancy/TenantContext/index.js\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport { WORKFLOW_MODEL_ID } from \"./domain/workflow/workflowModel.js\";\nimport { WORKFLOW_STATE_MODEL_ID } from \"./domain/workflowState/stateModel.js\";\nimport { WorkflowModel } from \"./domain/workflow/abstractions.js\";\nimport { WorkflowStateModel } from \"./domain/workflowState/abstractions.js\";\nimport { WorkflowMapper } from \"~/domain/workflow/WorkflowMapper.js\";\nimport { WorkflowStateMapper } from \"~/domain/workflowState/WorkflowStateMapper.js\";\nimport { GetWorkflowFeature } from \"~/features/workflow/GetWorkflow/feature.js\";\nimport { ListWorkflowsFeature } from \"~/features/workflow/ListWorkflows/feature.js\";\nimport { CreateWorkflowFeature } from \"~/features/workflow/CreateWorkflow/feature.js\";\nimport { DeleteWorkflowFeature } from \"~/features/workflow/DeleteWorkflow/feature.js\";\nimport { UpdateWorkflowFeature } from \"~/features/workflow/UpdateWorkflow/feature.js\";\nimport { StoreWorkflowFeature } from \"~/features/workflow/StoreWorkflow/feature.js\";\nimport { GetWorkflowStateFeature } from \"~/features/workflowState/GetWorkflowState/feature.js\";\nimport { GetTargetWorkflowStateFeature } from \"~/features/workflowState/GetTargetWorkflowState/feature.js\";\nimport { ListOwnWorkflowStatesFeature } from \"~/features/workflowState/ListOwnWorkflowStates/feature.js\";\nimport { ListWorkflowStatesFeature } from \"~/features/workflowState/ListWorkflowStates/feature.js\";\nimport { ListRequestedWorkflowStatesFeature } from \"~/features/workflowState/ListRequestedWorkflowStates/feature.js\";\nimport { CreateWorkflowStateFeature } from \"~/features/workflowState/CreateWorkflowState/feature.js\";\nimport { UpdateWorkflowStateFeature } from \"~/features/workflowState/UpdateWorkflowState/feature.js\";\nimport { CancelWorkflowStateFeature } from \"~/features/workflowState/CancelWorkflowState/feature.js\";\nimport { DeleteWorkflowStateFeature } from \"~/features/workflowState/DeleteWorkflowState/feature.js\";\nimport { DeleteTargetWorkflowStateFeature } from \"~/features/workflowState/DeleteTargetWorkflowState/feature.js\";\nimport { StartWorkflowStateStepFeature } from \"~/features/workflowState/StartWorkflowStateStep/feature.js\";\nimport { ApproveWorkflowStateStepFeature } from \"~/features/workflowState/ApproveWorkflowStateStep/feature.js\";\nimport { RejectWorkflowStateStepFeature } from \"~/features/workflowState/RejectWorkflowStateStep/feature.js\";\nimport { TakeOverWorkflowStateStepFeature } from \"~/features/workflowState/TakeOverWorkflowStateStep/feature.js\";\nimport { GetUserTeamsFeature } from \"~/features/internal/GetUserTeams/feature.js\";\nimport { ListNotificationTypesFeature } from \"~/features/notifications/ListNotificationTypes/index.js\";\nimport { NotificationTransportFeature } from \"./features/notifications/NotificationTransport/index.js\";\n\n// A request initializer — it contributes no schema content (the static schema is registered via\n// WorkflowsSchemaFactory). It runs after context enhancers and before resolvers, making it the\n// right hook for the async CMS model fetch and lazy feature registrations resolvers depend on.\nclass WorkflowsInitializerImpl implements IRequestContextInitializer {\n private initialized = false;\n\n constructor(\n private container: Container,\n private tenantCtx: TenantContext.Interface,\n private identityCtx: IdentityContext.Interface,\n private wcp: WcpContext.Interface\n ) {}\n\n async init(_ctx: Record<string, any>): Promise<void> {\n if (!this.initialized) {\n this.initialized = true;\n\n if (this.tenantCtx.getTenant() && this.wcp.canUseWorkflows()) {\n await this.registerWorkflowFeatures();\n }\n }\n }\n\n private async registerWorkflowFeatures(): Promise<void> {\n // Fetch and register CMS models — resolved lazily here because CmsContext is only\n // registered after HeadlessCmsInitializerImpl.enhance() runs (before this runs).\n const getModel = this.container.resolve(GetModelUseCase);\n await this.identityCtx.withoutAuthorization(async () => {\n const [workflowModel, workflowStateModel] = await Promise.all([\n getModel.execute(WORKFLOW_MODEL_ID),\n getModel.execute(WORKFLOW_STATE_MODEL_ID)\n ]);\n\n this.container.registerInstance(WorkflowModel, workflowModel.value);\n this.container.registerInstance(WorkflowStateModel, workflowStateModel.value);\n });\n\n // Register mappers\n this.container.register(WorkflowMapper);\n this.container.register(WorkflowStateMapper);\n\n // Register notification features\n ListNotificationTypesFeature.register(this.container);\n NotificationTransportFeature.register(this.container);\n\n // Register workflow features\n GetWorkflowFeature.register(this.container);\n ListWorkflowsFeature.register(this.container);\n CreateWorkflowFeature.register(this.container);\n DeleteWorkflowFeature.register(this.container);\n UpdateWorkflowFeature.register(this.container);\n StoreWorkflowFeature.register(this.container);\n\n // Register internal features\n GetUserTeamsFeature.register(this.container);\n\n // Register workflow state features\n GetWorkflowStateFeature.register(this.container);\n GetTargetWorkflowStateFeature.register(this.container);\n ListOwnWorkflowStatesFeature.register(this.container);\n ListWorkflowStatesFeature.register(this.container);\n ListRequestedWorkflowStatesFeature.register(this.container);\n CreateWorkflowStateFeature.register(this.container);\n UpdateWorkflowStateFeature.register(this.container);\n CancelWorkflowStateFeature.register(this.container);\n DeleteWorkflowStateFeature.register(this.container);\n DeleteTargetWorkflowStateFeature.register(this.container);\n StartWorkflowStateStepFeature.register(this.container);\n ApproveWorkflowStateStepFeature.register(this.container);\n RejectWorkflowStateStepFeature.register(this.container);\n TakeOverWorkflowStateStepFeature.register(this.container);\n }\n}\n\nexport const WorkflowsInitializer = RequestContextInitializer.createImplementation({\n implementation: WorkflowsInitializerImpl,\n dependencies: [RequestContainer, TenantContext, IdentityContext, WcpContext]\n});\n"],"names":["WorkflowsInitializerImpl","container","tenantCtx","identityCtx","wcp","_ctx","getModel","GetModelUseCase","workflowModel","workflowStateModel","Promise","WORKFLOW_MODEL_ID","WORKFLOW_STATE_MODEL_ID","WorkflowModel","WorkflowStateModel","WorkflowMapper","WorkflowStateMapper","ListNotificationTypesFeature","NotificationTransportFeature","GetWorkflowFeature","ListWorkflowsFeature","CreateWorkflowFeature","DeleteWorkflowFeature","UpdateWorkflowFeature","StoreWorkflowFeature","GetUserTeamsFeature","GetWorkflowStateFeature","GetTargetWorkflowStateFeature","ListOwnWorkflowStatesFeature","ListWorkflowStatesFeature","ListRequestedWorkflowStatesFeature","CreateWorkflowStateFeature","UpdateWorkflowStateFeature","CancelWorkflowStateFeature","DeleteWorkflowStateFeature","DeleteTargetWorkflowStateFeature","StartWorkflowStateStepFeature","ApproveWorkflowStateStepFeature","RejectWorkflowStateStepFeature","TakeOverWorkflowStateStepFeature","WorkflowsInitializer","RequestContextInitializer","RequestContainer","TenantContext","IdentityContext","WcpContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAMA;IAGF,YACYC,SAAoB,EACpBC,SAAkC,EAClCC,WAAsC,EACtCC,GAAyB,CACnC;aAJUH,SAAS,GAATA;aACAC,SAAS,GAATA;aACAC,WAAW,GAAXA;aACAC,GAAG,GAAHA;aANJ,WAAW,GAAG;IAOnB;IAEH,MAAM,KAAKC,IAAyB,EAAiB;QACjD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG;YAEnB,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,IACtD,MAAM,IAAI,CAAC,wBAAwB;QAE3C;IACJ;IAEA,MAAc,2BAA0C;QAGpD,MAAMC,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAACC;QACxC,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC;YACxC,MAAM,CAACC,eAAeC,mBAAmB,GAAG,MAAMC,QAAQ,GAAG,CAAC;gBAC1DJ,SAAS,OAAO,CAACK;gBACjBL,SAAS,OAAO,CAACM;aACpB;YAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAACC,eAAeL,cAAc,KAAK;YAClE,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAACM,oBAAoBL,mBAAmB,KAAK;QAChF;QAGA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACM;QACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAACC;QAGxBC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACpDC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAGpDC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC1CC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC5CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC7CC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAG5CC,oBAAoB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAG3CC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC/CC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACrDC,6BAA6B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACpDC,0BAA0B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACjDC,mCAAmC,QAAQ,CAAC,IAAI,CAAC,SAAS;QAC1DC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,2BAA2B,QAAQ,CAAC,IAAI,CAAC,SAAS;QAClDC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,SAAS;QACxDC,8BAA8B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACrDC,gCAAgC,QAAQ,CAAC,IAAI,CAAC,SAAS;QACvDC,+BAA+B,QAAQ,CAAC,IAAI,CAAC,SAAS;QACtDC,iCAAiC,QAAQ,CAAC,IAAI,CAAC,SAAS;IAC5D;AACJ;AAEO,MAAMC,uBAAuBC,0BAA0B,oBAAoB,CAAC;IAC/E,gBAAgBzC;IAChB,cAAc;QAAC0C;QAAkBC;QAAeC;QAAiBC;KAAW;AAChF"}
|