@axonflow/sdk 1.2.0 → 1.2.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/LICENSE +21 -0
- package/README.md +194 -9
- package/dist/cjs/client.d.ts +64 -40
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +279 -198
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/errors.d.ts +51 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +84 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +10 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interceptors/anthropic.d.ts +1 -1
- package/dist/cjs/interceptors/anthropic.d.ts.map +1 -1
- package/dist/cjs/interceptors/anthropic.js +6 -6
- package/dist/cjs/interceptors/anthropic.js.map +1 -1
- package/dist/cjs/interceptors/openai.d.ts +1 -1
- package/dist/cjs/interceptors/openai.d.ts.map +1 -1
- package/dist/cjs/interceptors/openai.js +5 -5
- package/dist/cjs/interceptors/openai.js.map +1 -1
- package/dist/cjs/types/config.d.ts +7 -1
- package/dist/cjs/types/config.d.ts.map +1 -1
- package/dist/cjs/types/gateway.d.ts +51 -114
- package/dist/cjs/types/gateway.d.ts.map +1 -1
- package/dist/cjs/types/gateway.js +2 -7
- package/dist/cjs/types/gateway.js.map +1 -1
- package/dist/cjs/utils/helpers.d.ts.map +1 -1
- package/dist/cjs/utils/helpers.js +3 -1
- package/dist/cjs/utils/helpers.js.map +1 -1
- package/dist/esm/client.d.ts +64 -40
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +279 -198
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/errors.d.ts +51 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +75 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interceptors/anthropic.d.ts +1 -1
- package/dist/esm/interceptors/anthropic.d.ts.map +1 -1
- package/dist/esm/interceptors/anthropic.js +6 -6
- package/dist/esm/interceptors/anthropic.js.map +1 -1
- package/dist/esm/interceptors/openai.d.ts +1 -1
- package/dist/esm/interceptors/openai.d.ts.map +1 -1
- package/dist/esm/interceptors/openai.js +5 -5
- package/dist/esm/interceptors/openai.js.map +1 -1
- package/dist/esm/types/config.d.ts +7 -1
- package/dist/esm/types/config.d.ts.map +1 -1
- package/dist/esm/types/gateway.d.ts +51 -114
- package/dist/esm/types/gateway.d.ts.map +1 -1
- package/dist/esm/types/gateway.js +2 -7
- package/dist/esm/types/gateway.js.map +1 -1
- package/dist/esm/utils/helpers.d.ts.map +1 -1
- package/dist/esm/utils/helpers.js +3 -1
- package/dist/esm/utils/helpers.js.map +1 -1
- package/package.json +21 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/types/gateway.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/types/gateway.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iCAAiC;IACjC,SAAS,EAAE,IAAI,CAAC;IAChB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gDAAgD;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,eAAe,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC"}
|
|
@@ -2,13 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Gateway Mode Types
|
|
4
4
|
*
|
|
5
|
-
* Gateway Mode
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* 1. Call getPolicyApprovedContext() before making LLM call
|
|
10
|
-
* 2. Make LLM call directly to your provider (using returned approved data)
|
|
11
|
-
* 3. Call auditLLMCall() after to record the call for compliance
|
|
5
|
+
* Gateway Mode enables direct LLM calls with AxonFlow governance.
|
|
6
|
+
* Pre-check policies before calling your LLM, then audit the call afterward.
|
|
12
7
|
*/
|
|
13
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
9
|
//# sourceMappingURL=gateway.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/types/gateway.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/types/gateway.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAE1D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,MAAM,IAAI,OAAO,CAMhC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAW9C"}
|
|
@@ -34,7 +34,9 @@ function isBrowser() {
|
|
|
34
34
|
* Check if running in Node.js
|
|
35
35
|
*/
|
|
36
36
|
function isNode() {
|
|
37
|
-
return typeof process !== 'undefined' &&
|
|
37
|
+
return (typeof process !== 'undefined' &&
|
|
38
|
+
process.versions !== undefined &&
|
|
39
|
+
process.versions.node !== undefined);
|
|
38
40
|
}
|
|
39
41
|
/**
|
|
40
42
|
* Safe JSON stringify that handles circular references
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":";;AAGA,8CAEC;AAKD,4BAEC;AAKD,sBAEC;AAKD,8BAEC;AAKD,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":";;AAGA,8CAEC;AAKD,4BAEC;AAKD,sBAEC;AAKD,8BAEC;AAKD,wBAMC;AAKD,sCAWC;AArDD;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,OAAe,EAAE,IAAU;IAClD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS;IACvB,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC;AACjF,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM;IACpB,OAAO,CACL,OAAO,OAAO,KAAK,WAAW;QAC9B,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,CACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,GAAQ;IACpC,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,OAAO,YAAY,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/esm/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AxonFlowConfig, ConnectorMetadata, ConnectorInstallRequest, ConnectorResponse, PlanResponse, PlanExecutionResponse,
|
|
1
|
+
import { AxonFlowConfig, ConnectorMetadata, ConnectorInstallRequest, ConnectorResponse, PlanResponse, PlanExecutionResponse, PolicyApprovalResult, PolicyApprovalOptions, AuditResult, AuditOptions } from './types';
|
|
2
2
|
/**
|
|
3
3
|
* Main AxonFlow client for invisible AI governance
|
|
4
4
|
*/
|
|
@@ -46,66 +46,90 @@ export declare class AxonFlow {
|
|
|
46
46
|
queryConnector(connectorName: string, query: string, params?: any): Promise<ConnectorResponse>;
|
|
47
47
|
/**
|
|
48
48
|
* Generate a multi-agent execution plan from a natural language query
|
|
49
|
+
* @param query - Natural language query describing the task
|
|
50
|
+
* @param domain - Optional domain hint (travel, healthcare, etc.)
|
|
51
|
+
* @param userToken - Optional user token for authentication (defaults to tenant/client_id)
|
|
49
52
|
*/
|
|
50
|
-
generatePlan(query: string, domain?: string): Promise<PlanResponse>;
|
|
53
|
+
generatePlan(query: string, domain?: string, userToken?: string): Promise<PlanResponse>;
|
|
51
54
|
/**
|
|
52
55
|
* Execute a previously generated multi-agent plan
|
|
56
|
+
* @param planId - ID of the plan to execute
|
|
57
|
+
* @param userToken - Optional user token for authentication (defaults to tenant/client_id)
|
|
53
58
|
*/
|
|
54
|
-
executePlan(planId: string): Promise<PlanExecutionResponse>;
|
|
59
|
+
executePlan(planId: string, userToken?: string): Promise<PlanExecutionResponse>;
|
|
55
60
|
/**
|
|
56
61
|
* Get the status of a running or completed plan
|
|
57
62
|
*/
|
|
58
63
|
getPlanStatus(planId: string): Promise<PlanExecutionResponse>;
|
|
59
64
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
* Gateway Mode: Pre-check policy approval before making a direct LLM call.
|
|
66
|
+
* Alias for getPolicyApprovedContext() for simpler API.
|
|
67
|
+
*/
|
|
68
|
+
preCheck(options: PolicyApprovalOptions): Promise<PolicyApprovalResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Gateway Mode: Get policy-approved context before making a direct LLM call.
|
|
64
71
|
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
72
|
+
* Use this when you want to:
|
|
73
|
+
* - Make direct LLM calls (not through AxonFlow proxy)
|
|
74
|
+
* - Have full control over your LLM provider/model selection
|
|
75
|
+
* - Minimize latency by calling LLM directly
|
|
67
76
|
*
|
|
68
77
|
* @example
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* query: '
|
|
78
|
+
* ```typescript
|
|
79
|
+
* const ctx = await axonflow.getPolicyApprovedContext({
|
|
80
|
+
* userToken: 'user-jwt',
|
|
81
|
+
* query: 'Analyze this customer data',
|
|
82
|
+
* dataSources: ['postgres']
|
|
73
83
|
* });
|
|
74
84
|
*
|
|
75
|
-
* if (!
|
|
76
|
-
* throw new Error(`
|
|
85
|
+
* if (!ctx.approved) {
|
|
86
|
+
* throw new Error(`Blocked: ${ctx.blockReason}`);
|
|
77
87
|
* }
|
|
78
88
|
*
|
|
79
|
-
* //
|
|
80
|
-
* const
|
|
89
|
+
* // Make direct LLM call with approved data
|
|
90
|
+
* const response = await openai.chat.completions.create({
|
|
91
|
+
* model: 'gpt-4',
|
|
92
|
+
* messages: [{ role: 'user', content: JSON.stringify(ctx.approvedData) }]
|
|
93
|
+
* });
|
|
94
|
+
*
|
|
95
|
+
* // Audit the call
|
|
96
|
+
* await axonflow.auditLLMCall({
|
|
97
|
+
* contextId: ctx.contextId,
|
|
98
|
+
* responseSummary: response.choices[0].message.content.substring(0, 100),
|
|
99
|
+
* provider: 'openai',
|
|
100
|
+
* model: 'gpt-4',
|
|
101
|
+
* tokenUsage: {
|
|
102
|
+
* promptTokens: response.usage.prompt_tokens,
|
|
103
|
+
* completionTokens: response.usage.completion_tokens,
|
|
104
|
+
* totalTokens: response.usage.total_tokens
|
|
105
|
+
* },
|
|
106
|
+
* latencyMs: 250
|
|
107
|
+
* });
|
|
108
|
+
* ```
|
|
81
109
|
*/
|
|
82
|
-
getPolicyApprovedContext(
|
|
110
|
+
getPolicyApprovedContext(options: PolicyApprovalOptions): Promise<PolicyApprovalResult>;
|
|
83
111
|
/**
|
|
84
|
-
*
|
|
112
|
+
* Gateway Mode: Audit an LLM call after completion.
|
|
85
113
|
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @param contextId Context ID from getPolicyApprovedContext()
|
|
90
|
-
* @param responseSummary Brief summary of the LLM response (not full response)
|
|
91
|
-
* @param provider LLM provider name
|
|
92
|
-
* @param model Model name
|
|
93
|
-
* @param tokenUsage Token counts from LLM response
|
|
94
|
-
* @param latencyMs Time taken for LLM call in milliseconds
|
|
95
|
-
* @param metadata Optional additional metadata
|
|
96
|
-
* @returns AuditResult confirming the audit was recorded
|
|
114
|
+
* Call this after making a direct LLM call to log the audit trail.
|
|
115
|
+
* This is required for compliance and monitoring.
|
|
97
116
|
*
|
|
98
117
|
* @example
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* '
|
|
103
|
-
* '
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
118
|
+
* ```typescript
|
|
119
|
+
* await axonflow.auditLLMCall({
|
|
120
|
+
* contextId: ctx.contextId,
|
|
121
|
+
* responseSummary: 'Generated report with 5 items',
|
|
122
|
+
* provider: 'openai',
|
|
123
|
+
* model: 'gpt-4',
|
|
124
|
+
* tokenUsage: {
|
|
125
|
+
* promptTokens: 100,
|
|
126
|
+
* completionTokens: 50,
|
|
127
|
+
* totalTokens: 150
|
|
128
|
+
* },
|
|
129
|
+
* latencyMs: 250
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
108
132
|
*/
|
|
109
|
-
auditLLMCall(
|
|
133
|
+
auditLLMCall(options: AuditOptions): Promise<AuditResult>;
|
|
110
134
|
}
|
|
111
135
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/esm/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAId,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAId,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAC;AAOjB;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAUZ;IACF,OAAO,CAAC,YAAY,CAAyB;gBAEjC,MAAM,EAAE,cAAc;IAqDlC;;;;OAIG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuD5D;;OAEG;YACW,cAAc;IAiB5B;;OAEG;YACW,aAAa;IAyE3B;;OAEG;YACW,QAAQ;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,MAAM,GAAE,MAAmB,GAAG,QAAQ;IASrD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqBpD;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCvE;;OAEG;IACG,cAAc,CAClB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,GAAG,GACX,OAAO,CAAC,iBAAiB,CAAC;IAkD7B;;;;;OAKG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqD7F;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiDrF;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA+BnE;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACG,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkF7F;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;CAqEhE"}
|