@memberjunction/ng-dashboards 5.37.0 → 5.38.0
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/README.md +32 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +14 -0
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +450 -292
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
- package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
- package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
- package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
- package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
- package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
- package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
- package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
- package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
- package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
- package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
- package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
- package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
- package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
- package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
- package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
- package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
- package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
- package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
- package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
- package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
- package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
- package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
- package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
- package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
- package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
- package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
- package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
- package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
- package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
- package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
- package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
- package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
- package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
- package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
- package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
- package/dist/Home/home-application.d.ts +21 -1
- package/dist/Home/home-application.d.ts.map +1 -1
- package/dist/Home/home-application.js +60 -8
- package/dist/Home/home-application.js.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
- package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
- package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +34 -22
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +65 -9
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/package.json +54 -53
|
@@ -1,67 +1,126 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { CompositeKey } from '@memberjunction/core';
|
|
3
|
+
import type { UserInfo } from '@memberjunction/core';
|
|
3
4
|
import { BaseAngularComponent } from '@memberjunction/ng-base-types';
|
|
5
|
+
import type { MJConversationEntity, MJTaskEntity } from '@memberjunction/core-entities';
|
|
6
|
+
import type { AppContextSnapshot } from '@memberjunction/ai-core-plus';
|
|
7
|
+
import type { NavigationRequest, PendingAttachment } from '@memberjunction/ng-conversations';
|
|
8
|
+
import { ComponentStudioStateService } from '../../services/component-studio-state.service';
|
|
4
9
|
import * as i0 from "@angular/core";
|
|
5
10
|
/**
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Role: 'user' | 'assistant' | 'system';
|
|
10
|
-
Content: string;
|
|
11
|
-
Timestamp: Date;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Represents a quick action button in the AI assistant panel
|
|
11
|
+
* Quick-action shortcut surfaced above the embedded chat. Clicking a
|
|
12
|
+
* shortcut prefills the chat input via the pendingMessage handoff — the
|
|
13
|
+
* same mechanism the empty-state uses to send the first message.
|
|
15
14
|
*/
|
|
16
15
|
interface QuickAction {
|
|
17
16
|
Label: string;
|
|
18
17
|
Icon: string;
|
|
19
18
|
Prompt: string;
|
|
19
|
+
/** When true, the button is disabled unless `state.CurrentError` is set. */
|
|
20
20
|
RequiresError: boolean;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
*
|
|
23
|
+
* Component Studio's right-pane AI assistant.
|
|
24
|
+
*
|
|
25
|
+
* Previously this was a 880-line bespoke chat stub that emitted "AI
|
|
26
|
+
* assistant coming soon" — no agent was actually called. This version
|
|
27
|
+
* thin-wraps `<mj-conversation-chat-area>` (the same primitive the main
|
|
28
|
+
* Chat app and the Form Builder cockpit use) so the assistant becomes
|
|
29
|
+
* fully functional with zero duplicated chat plumbing.
|
|
30
|
+
*
|
|
31
|
+
* Domain integration preserved from the old stub:
|
|
32
|
+
* - **Quick-actions bar** (Fix Errors / Improve / Generate / Explain)
|
|
33
|
+
* above the chat — clicking sets `PendingMessage` which the chat-area
|
|
34
|
+
* consumes on the next render, mirroring the empty-state handoff.
|
|
35
|
+
* - **`SendErrorToAI` channel** — when the runtime preview throws, the
|
|
36
|
+
* state service emits a `ComponentError`. We listen and shove a
|
|
37
|
+
* "Fix this error: …" message into the same pendingMessage pipe so
|
|
38
|
+
* the user doesn't have to copy/paste error text.
|
|
39
|
+
*
|
|
40
|
+
* Scoping:
|
|
41
|
+
* - `[applicationScope]="'Application'"` + Component Studio app ID →
|
|
42
|
+
* conversations stay out of main chat (per the migration scoping work).
|
|
43
|
+
* - `[defaultAgentId]` → Codesmith Agent so messages route to the code
|
|
44
|
+
* specialist instead of Sage by default. User can still @mention any
|
|
45
|
+
* agent, override via the per-conversation pin, or pick a different
|
|
46
|
+
* agent through the chat header's picker.
|
|
24
47
|
*/
|
|
25
|
-
interface AIModelOption {
|
|
26
|
-
ID: string;
|
|
27
|
-
Name: string;
|
|
28
|
-
Vendor: string | null;
|
|
29
|
-
DisplayLabel: string;
|
|
30
|
-
}
|
|
31
48
|
export declare class AIAssistantPanelComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
32
49
|
State: ComponentStudioStateService;
|
|
33
|
-
|
|
34
|
-
chatThreadEl: ElementRef<HTMLDivElement>;
|
|
35
|
-
chatInputEl: ElementRef<HTMLTextAreaElement>;
|
|
36
|
-
Messages: ChatMessage[];
|
|
37
|
-
InputText: string;
|
|
38
|
-
IsWaitingForResponse: boolean;
|
|
39
|
-
AvailableModels: AIModelOption[];
|
|
40
|
-
SelectedModelID: string | null;
|
|
41
|
-
IsLoadingModels: boolean;
|
|
50
|
+
/** Quick actions surfaced as buttons above the embedded chat. */
|
|
42
51
|
QuickActions: QuickAction[];
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
/** Embedded chat state — same shape the Form Builder cockpit uses. */
|
|
53
|
+
ChatConversation: MJConversationEntity | null;
|
|
54
|
+
ChatConversationId: string | null;
|
|
55
|
+
ChatIsNewConversation: boolean;
|
|
56
|
+
PendingMessage: string | null;
|
|
57
|
+
PendingAttachments: PendingAttachment[] | null;
|
|
58
|
+
ChatThreadId: string | null;
|
|
59
|
+
ChatPendingArtifactId: string | null;
|
|
60
|
+
ChatPendingArtifactVersionNumber: number | null;
|
|
61
|
+
/** Snapshot from NavigationService — drives the agent's app context. */
|
|
62
|
+
ChatAppContext: AppContextSnapshot | null;
|
|
63
|
+
/** Codesmith Agent ID resolved from AIEngineBase cache (no RunView). */
|
|
64
|
+
CodesmithAgentId: string | null;
|
|
65
|
+
/** Component Studio's Application ID — resolved from Metadata cache. */
|
|
66
|
+
CockpitApplicationId: string | null;
|
|
67
|
+
/**
|
|
68
|
+
* EntityID for `MJ: Components`. Stamped on every conversation
|
|
69
|
+
* created from this panel as the `LinkedEntityID`, paired with the
|
|
70
|
+
* currently-selected Component's ID. Enables "show prior conversations
|
|
71
|
+
* about THIS component" later. In-memory Metadata lookup; no RunView.
|
|
72
|
+
*/
|
|
73
|
+
ComponentsEntityID: string | null;
|
|
74
|
+
/**
|
|
75
|
+
* The DB-backed Component ID currently selected — null when the
|
|
76
|
+
* panel has nothing selected, or when the selection is a
|
|
77
|
+
* file-loaded (transient) component that has no persistent DB row
|
|
78
|
+
* to link conversations to. Used as `[linkedRecordId]` on the
|
|
79
|
+
* embedded chat-area. Pairs with {@link ComponentsEntityID}.
|
|
80
|
+
*/
|
|
81
|
+
get LinkedComponentID(): string | null;
|
|
82
|
+
private static readonly CODESMITH_AGENT_NAME;
|
|
83
|
+
private static readonly COCKPIT_APP_NAME;
|
|
84
|
+
private readonly destroy$;
|
|
85
|
+
private appContextSubscription;
|
|
86
|
+
private readonly cdr;
|
|
87
|
+
private readonly navigationService;
|
|
88
|
+
constructor(State: ComponentStudioStateService);
|
|
89
|
+
get EnvironmentId(): string;
|
|
90
|
+
get CurrentUser(): UserInfo | null;
|
|
45
91
|
ngOnInit(): Promise<void>;
|
|
46
92
|
ngOnDestroy(): void;
|
|
47
|
-
|
|
48
|
-
private subscribeToErrorEvents;
|
|
49
|
-
private handleIncomingError;
|
|
50
|
-
private addWelcomeMessage;
|
|
51
|
-
OnSendMessage(): void;
|
|
52
|
-
OnQuickAction(action: QuickAction): void;
|
|
53
|
-
OnInputKeydown(event: KeyboardEvent): void;
|
|
54
|
-
OnInputChange(): void;
|
|
93
|
+
/** Collapse the right pane (delegated to the parent dashboard). */
|
|
55
94
|
OnCollapsePanel(): void;
|
|
95
|
+
/** Quick-action click — prefill the chat with the canned prompt. */
|
|
96
|
+
OnQuickAction(action: QuickAction): void;
|
|
56
97
|
IsQuickActionEnabled(action: QuickAction): boolean;
|
|
57
|
-
|
|
58
|
-
private
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
98
|
+
/** Runtime preview surfaced an error — auto-send "Fix this error: …". */
|
|
99
|
+
private handleIncomingError;
|
|
100
|
+
OnConversationCreated(event: {
|
|
101
|
+
conversation: MJConversationEntity;
|
|
102
|
+
pendingMessage?: string;
|
|
103
|
+
pendingAttachments?: PendingAttachment[];
|
|
104
|
+
}): void;
|
|
105
|
+
OnPendingMessageConsumed(): void;
|
|
106
|
+
OnOpenEntityRecord(event: {
|
|
107
|
+
entityName: string;
|
|
108
|
+
compositeKey: CompositeKey;
|
|
109
|
+
}): void;
|
|
110
|
+
OnNavigationRequest(event: NavigationRequest): void;
|
|
111
|
+
OnTaskClicked(task: MJTaskEntity): void;
|
|
112
|
+
OnArtifactLinkClicked(event: {
|
|
113
|
+
type: 'conversation' | 'collection';
|
|
114
|
+
id: string;
|
|
115
|
+
}): void;
|
|
116
|
+
OnConversationRenamed(event: {
|
|
117
|
+
conversationId: string;
|
|
118
|
+
name: string;
|
|
119
|
+
description: string;
|
|
120
|
+
}): void;
|
|
121
|
+
OnThreadOpened(threadId: string): void;
|
|
122
|
+
OnThreadClosed(): void;
|
|
123
|
+
OnPendingArtifactConsumed(): void;
|
|
65
124
|
static ɵfac: i0.ɵɵFactoryDeclaration<AIAssistantPanelComponent, never>;
|
|
66
125
|
static ɵcmp: i0.ɵɵComponentDeclaration<AIAssistantPanelComponent, "mj-ai-assistant-panel", never, {}, {}, never, never, false, never>;
|
|
67
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-assistant-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ai-assistant-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,SAAS,EACT,MAAM,EAET,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAY,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE,OAAO,KAAK,EACR,oBAAoB,EACpB,YAAY,EACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAE,2BAA2B,EAAkB,MAAM,+CAA+C,CAAC;;AAE5G;;;;GAIG;AACH,UAAU,WAAW;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAOa,yBAA0B,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IA+DzE,KAAK,EAAE,2BAA2B;IA7DrD,iEAAiE;IAC1D,YAAY,EAAE,WAAW,EAAE,CAKhC;IAEF,sEAAsE;IAC/D,gBAAgB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACrD,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,qBAAqB,UAAQ;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrC,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAQ;IACtD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAC5C,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9D,wEAAwE;IACjE,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAExD,wEAAwE;IACjE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE9C,wEAAwE;IACjE,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAElD;;;;;OAKG;IACI,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEhD;;;;;;OAMG;IACH,IAAW,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAQ5C;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAqB;IACjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAsB;IAE9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;IAChD,OAAO,CAAC,sBAAsB,CAA6B;IAE3D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;gBAE5C,KAAK,EAAE,2BAA2B;IAIrD,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,WAAW,IAAI,QAAQ,GAAG,IAAI,CAExC;IAEY,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C/B,WAAW,IAAI,IAAI;IAO1B,mEAAmE;IAC5D,eAAe,IAAI,IAAI;IAK9B,oEAAoE;IAC7D,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAWxC,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO;IAIzD,yEAAyE;IACzE,OAAO,CAAC,mBAAmB;IAapB,qBAAqB,CAAC,KAAK,EAAE;QAChC,YAAY,EAAE,oBAAoB,CAAC;QACnC,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;KAC5C,GAAG,IAAI;IASD,wBAAwB,IAAI,IAAI;IAMhC,kBAAkB,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAQnF,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI;IAInD,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IASvC,qBAAqB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,cAAc,GAAG,YAAY,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAMvF,qBAAqB,CAAC,KAAK,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAUjG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKtC,cAAc,IAAI,IAAI;IAKtB,yBAAyB,IAAI,IAAI;yCAvO/B,yBAAyB;2CAAzB,yBAAyB;CA4OrC"}
|