@arizeai/phoenix-client 2.3.5 → 3.0.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/dist/esm/__generated__/api/v1.d.ts +159 -5
- package/dist/esm/__generated__/api/v1.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.d.ts +5 -2
- package/dist/esm/datasets/getDataset.d.ts.map +1 -1
- package/dist/esm/datasets/getDataset.js +5 -3
- package/dist/esm/datasets/getDataset.js.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.d.ts +5 -2
- package/dist/esm/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetExamples.js +9 -2
- package/dist/esm/datasets/getDatasetExamples.js.map +1 -1
- package/dist/esm/datasets/getDatasetInfo.d.ts +1 -0
- package/dist/esm/datasets/getDatasetInfo.d.ts.map +1 -1
- package/dist/esm/datasets/getDatasetInfo.js +1 -0
- package/dist/esm/datasets/getDatasetInfo.js.map +1 -1
- package/dist/esm/datasets/index.d.ts +0 -1
- package/dist/esm/datasets/index.d.ts.map +1 -1
- package/dist/esm/datasets/index.js +0 -1
- package/dist/esm/datasets/index.js.map +1 -1
- package/dist/esm/spans/deleteSpan.d.ts +48 -0
- package/dist/esm/spans/deleteSpan.d.ts.map +1 -0
- package/dist/esm/spans/deleteSpan.js +60 -0
- package/dist/esm/spans/deleteSpan.js.map +1 -0
- package/dist/esm/spans/index.d.ts +1 -0
- package/dist/esm/spans/index.d.ts.map +1 -1
- package/dist/esm/spans/index.js +1 -0
- package/dist/esm/spans/index.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types/datasets.d.ts +22 -2
- package/dist/esm/types/datasets.d.ts.map +1 -1
- package/dist/esm/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/esm/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/src/__generated__/api/v1.d.ts +159 -5
- package/dist/src/__generated__/api/v1.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.d.ts +5 -2
- package/dist/src/datasets/getDataset.d.ts.map +1 -1
- package/dist/src/datasets/getDataset.js +5 -3
- package/dist/src/datasets/getDataset.js.map +1 -1
- package/dist/src/datasets/getDatasetExamples.d.ts +5 -2
- package/dist/src/datasets/getDatasetExamples.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetExamples.js +9 -2
- package/dist/src/datasets/getDatasetExamples.js.map +1 -1
- package/dist/src/datasets/getDatasetInfo.d.ts +1 -0
- package/dist/src/datasets/getDatasetInfo.d.ts.map +1 -1
- package/dist/src/datasets/getDatasetInfo.js +1 -0
- package/dist/src/datasets/getDatasetInfo.js.map +1 -1
- package/dist/src/datasets/index.d.ts +0 -1
- package/dist/src/datasets/index.d.ts.map +1 -1
- package/dist/src/datasets/index.js +0 -1
- package/dist/src/datasets/index.js.map +1 -1
- package/dist/src/spans/deleteSpan.d.ts +48 -0
- package/dist/src/spans/deleteSpan.d.ts.map +1 -0
- package/dist/src/spans/deleteSpan.js +63 -0
- package/dist/src/spans/deleteSpan.js.map +1 -0
- package/dist/src/spans/index.d.ts +1 -0
- package/dist/src/spans/index.d.ts.map +1 -1
- package/dist/src/spans/index.js +1 -0
- package/dist/src/spans/index.js.map +1 -1
- package/dist/src/types/datasets.d.ts +22 -2
- package/dist/src/types/datasets.d.ts.map +1 -1
- package/dist/src/utils/formatPromptMessages.d.ts.map +1 -1
- package/dist/src/utils/getPromptBySelector.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/__generated__/api/v1.ts +159 -5
- package/src/datasets/getDataset.ts +6 -2
- package/src/datasets/getDatasetExamples.ts +14 -1
- package/src/datasets/getDatasetInfo.ts +2 -0
- package/src/datasets/index.ts +0 -1
- package/src/spans/deleteSpan.ts +81 -0
- package/src/spans/index.ts +1 -0
- package/src/types/datasets.ts +25 -2
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { ClientFn } from "../types/core";
|
|
2
|
+
/**
|
|
3
|
+
* Parameters to delete a span
|
|
4
|
+
*/
|
|
5
|
+
export interface DeleteSpanParams extends ClientFn {
|
|
6
|
+
/**
|
|
7
|
+
* The span identifier. Can be either:
|
|
8
|
+
* - OpenTelemetry span_id (string)
|
|
9
|
+
* - Phoenix Global ID (string)
|
|
10
|
+
*/
|
|
11
|
+
spanIdentifier: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Delete a single span by identifier.
|
|
15
|
+
*
|
|
16
|
+
* **Important**: This operation deletes ONLY the specified span itself and does NOT
|
|
17
|
+
* delete its descendants/children. All child spans will remain in the trace and
|
|
18
|
+
* become orphaned (their parent_id will point to a non-existent span).
|
|
19
|
+
*
|
|
20
|
+
* Behavior:
|
|
21
|
+
* - Deletes only the target span (preserves all descendant spans)
|
|
22
|
+
* - Child spans become orphaned but remain in the database
|
|
23
|
+
* - Returns successfully if span is found and deleted
|
|
24
|
+
* - Throws error if span is not found (404) or other errors occur
|
|
25
|
+
*
|
|
26
|
+
* @experimental this function is experimental and may change in the future
|
|
27
|
+
*
|
|
28
|
+
* @param params - The parameters to delete a span
|
|
29
|
+
* @returns Promise that resolves when the span is successfully deleted
|
|
30
|
+
* @throws Error if the span is not found or deletion fails
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* // Delete by OpenTelemetry span_id
|
|
35
|
+
* await deleteSpan({
|
|
36
|
+
* client,
|
|
37
|
+
* spanIdentifier: "abc123def456"
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* // Delete by Phoenix Global ID
|
|
41
|
+
* await deleteSpan({
|
|
42
|
+
* client,
|
|
43
|
+
* spanIdentifier: "U3BhbjoyMzQ1Njc4OQ=="
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function deleteSpan({ client: _client, spanIdentifier, }: DeleteSpanParams): Promise<void>;
|
|
48
|
+
//# sourceMappingURL=deleteSpan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteSpan.d.ts","sourceRoot":"","sources":["../../../src/spans/deleteSpan.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,UAAU,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,cAAc,GACf,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BlC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteSpan = deleteSpan;
|
|
4
|
+
const client_1 = require("../client");
|
|
5
|
+
/**
|
|
6
|
+
* Delete a single span by identifier.
|
|
7
|
+
*
|
|
8
|
+
* **Important**: This operation deletes ONLY the specified span itself and does NOT
|
|
9
|
+
* delete its descendants/children. All child spans will remain in the trace and
|
|
10
|
+
* become orphaned (their parent_id will point to a non-existent span).
|
|
11
|
+
*
|
|
12
|
+
* Behavior:
|
|
13
|
+
* - Deletes only the target span (preserves all descendant spans)
|
|
14
|
+
* - Child spans become orphaned but remain in the database
|
|
15
|
+
* - Returns successfully if span is found and deleted
|
|
16
|
+
* - Throws error if span is not found (404) or other errors occur
|
|
17
|
+
*
|
|
18
|
+
* @experimental this function is experimental and may change in the future
|
|
19
|
+
*
|
|
20
|
+
* @param params - The parameters to delete a span
|
|
21
|
+
* @returns Promise that resolves when the span is successfully deleted
|
|
22
|
+
* @throws Error if the span is not found or deletion fails
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* // Delete by OpenTelemetry span_id
|
|
27
|
+
* await deleteSpan({
|
|
28
|
+
* client,
|
|
29
|
+
* spanIdentifier: "abc123def456"
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Delete by Phoenix Global ID
|
|
33
|
+
* await deleteSpan({
|
|
34
|
+
* client,
|
|
35
|
+
* spanIdentifier: "U3BhbjoyMzQ1Njc4OQ=="
|
|
36
|
+
* });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
async function deleteSpan({ client: _client, spanIdentifier, }) {
|
|
40
|
+
const client = _client !== null && _client !== void 0 ? _client : (0, client_1.createClient)();
|
|
41
|
+
const { error } = await client.DELETE("/v1/spans/{span_identifier}", {
|
|
42
|
+
params: {
|
|
43
|
+
path: {
|
|
44
|
+
span_identifier: spanIdentifier,
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (error) {
|
|
49
|
+
const isNotFound = typeof error === "object" &&
|
|
50
|
+
error !== null &&
|
|
51
|
+
"status" in error &&
|
|
52
|
+
error.status === 404;
|
|
53
|
+
if (isNotFound) {
|
|
54
|
+
throw new Error(`Span not found: ${spanIdentifier}`);
|
|
55
|
+
}
|
|
56
|
+
// Extract meaningful error information
|
|
57
|
+
const errorMessage = typeof error === "object" && error !== null
|
|
58
|
+
? JSON.stringify(error, null, 2)
|
|
59
|
+
: String(error);
|
|
60
|
+
throw new Error(`Failed to delete span: ${errorMessage}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=deleteSpan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteSpan.js","sourceRoot":"","sources":["../../../src/spans/deleteSpan.ts"],"names":[],"mappings":";;AAiDA,gCA+BC;AAhFD,sCAAyC;AAezC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACI,KAAK,UAAU,UAAU,CAAC,EAC/B,MAAM,EAAE,OAAO,EACf,cAAc,GACG;IACjB,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAA,qBAAY,GAAE,CAAC;IAEzC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,6BAA6B,EAAE;QACnE,MAAM,EAAE;YACN,IAAI,EAAE;gBACJ,eAAe,EAAE,cAAc;aAChC;SACF;KACF,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,UAAU,GACd,OAAO,KAAK,KAAK,QAAQ;YACzB,KAAK,KAAK,IAAI;YACd,QAAQ,IAAI,KAAK;YACjB,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC;QACvB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,cAAc,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,uCAAuC;QACvC,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YACzC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spans/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/spans/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}
|
package/dist/src/spans/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./addSpanAnnotation"), exports);
|
|
|
18
18
|
__exportStar(require("./logSpanAnnotations"), exports);
|
|
19
19
|
__exportStar(require("./getSpans"), exports);
|
|
20
20
|
__exportStar(require("./getSpanAnnotations"), exports);
|
|
21
|
+
__exportStar(require("./deleteSpan"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/spans/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,uDAAqC;AACrC,6CAA2B;AAC3B,uDAAqC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/spans/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,uDAAqC;AACrC,6CAA2B;AAC3B,uDAAqC;AACrC,+CAA6B"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { Node } from "./core";
|
|
2
2
|
/**
|
|
3
|
-
* A dataset can be identified by its datasetId
|
|
4
|
-
* TODO: add support for datasetVersionId via discriminated union
|
|
3
|
+
* A dataset can be identified by its datasetId, datasetName, or datasetVersionId
|
|
5
4
|
*/
|
|
6
5
|
export type DatasetSelector = {
|
|
7
6
|
datasetId: string;
|
|
8
7
|
} | {
|
|
9
8
|
datasetName: string;
|
|
10
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Parameters for selecting a specific version of a dataset
|
|
12
|
+
*/
|
|
13
|
+
export interface DatasetVersionSelector {
|
|
14
|
+
dataset: DatasetSelector;
|
|
15
|
+
versionId?: string;
|
|
16
|
+
}
|
|
11
17
|
/**
|
|
12
18
|
* Overview information about a dataset
|
|
13
19
|
*/
|
|
@@ -16,6 +22,14 @@ export interface DatasetInfo extends Node {
|
|
|
16
22
|
description?: string | null;
|
|
17
23
|
metadata?: Record<string, unknown>;
|
|
18
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Information about a dataset version
|
|
27
|
+
*/
|
|
28
|
+
export interface DatasetVersionInfo extends Node {
|
|
29
|
+
description?: string | null;
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
createdAt: Date;
|
|
32
|
+
}
|
|
19
33
|
/**
|
|
20
34
|
* A dataset's examples
|
|
21
35
|
*/
|
|
@@ -45,4 +59,10 @@ export interface ExampleWithId extends Example, Node {
|
|
|
45
59
|
*/
|
|
46
60
|
export interface Dataset extends DatasetInfo, DatasetExamples, Node {
|
|
47
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* A dataset with its version information
|
|
64
|
+
*/
|
|
65
|
+
export interface DatasetWithVersion extends Dataset {
|
|
66
|
+
versionInfo: DatasetVersionInfo;
|
|
67
|
+
}
|
|
48
68
|
//# sourceMappingURL=datasets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../../src/types/datasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B
|
|
1
|
+
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../../src/types/datasets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,IAAI;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI;IAC9C,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,OAAO,EAAE,IAAI;IAClD,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAQ,SAAQ,WAAW,EAAE,eAAe,EAAE,IAAI;CAAG;AAEtE;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,WAAW,EAAE,kBAAkB,CAAC;CACjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatPromptMessages.d.ts","sourceRoot":"","sources":["../../../src/utils/formatPromptMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAO3E;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,cAAc,EAAE,iBAAiB,EAAE,EACnC,SAAS,GAAE,SAAc;;;;;;;
|
|
1
|
+
{"version":3,"file":"formatPromptMessages.d.ts","sourceRoot":"","sources":["../../../src/utils/formatPromptMessages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAO3E;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,cAAc,EAAE,iBAAiB,EAAE,EACnC,SAAS,GAAE,SAAc;;;;;;;mBA4D+t2E,uDAAsB;;;;;;;;;IAlB/w2E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPromptBySelector.d.ts","sourceRoot":"","sources":["../../../src/utils/getPromptBySelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG;IACjD;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,MAAM,EAAE,OAAO,EACf,MAAM,GACP,EAAE,yBAAyB;;
|
|
1
|
+
{"version":3,"file":"getPromptBySelector.d.ts","sourceRoot":"","sources":["../../../src/utils/getPromptBySelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG;IACjD;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,EACxC,MAAM,EAAE,OAAO,EACf,MAAM,GACP,EAAE,yBAAyB;;oBAkD0qgE,uDAAsB;;cAAkI,uDAAsB,yBAAwB,uDAAsB;mBAAoD,uDAAsB;qBAAoD,uDAAsB;2BAAqG,uDAAsB,uCAAsC,uDAAsB,4CAA2C,uDAAsB,0CAAyC,uDAAsB,uCAAsC,uDAAsB,yCAAwC,uDAAsB,oCAAmC,uDAAsB,uCAAsC,uDAAsB;YAAsD,uDAAsB;sBAAwF,uDAAsB;;UADrxiE"}
|