@ai-sdk/cartesia 3.0.46 → 3.0.48
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/CHANGELOG.md +18 -0
- package/dist/index.d.ts +179 -169
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +876 -1025
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @ai-sdk/cartesia
|
|
2
2
|
|
|
3
|
+
## 3.0.48
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [8c65988]
|
|
8
|
+
- Updated dependencies [527a163]
|
|
9
|
+
- @ai-sdk/provider@4.0.21
|
|
10
|
+
- @ai-sdk/provider-utils@5.0.53
|
|
11
|
+
|
|
12
|
+
## 3.0.47
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- ede5b89: chore: migrate package builds from tsup to tsdown
|
|
17
|
+
- Updated dependencies [ede5b89]
|
|
18
|
+
- @ai-sdk/provider@4.0.20
|
|
19
|
+
- @ai-sdk/provider-utils@5.0.52
|
|
20
|
+
|
|
3
21
|
## 3.0.46
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,204 +1,214 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { Experimental_RealtimeFactoryV4, Experimental_RealtimeModelV4, Experimental_RealtimeModelV4ClientEvent, Experimental_RealtimeModelV4ClientSecretOptions, Experimental_RealtimeModelV4ClientSecretResult, Experimental_RealtimeModelV4ServerEvent, Experimental_RealtimeModelV4SessionConfig, Experimental_TranscriptionModelV4StreamOptions, ProviderV4, SpeechModelV4, TranscriptionModelV4 } from "@ai-sdk/provider";
|
|
2
|
+
import { FetchFunction, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, WebSocketConstructor } from "@ai-sdk/provider-utils";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
|
+
//#region src/cartesia-transcription-options.d.ts
|
|
6
5
|
type CartesiaTranscriptionModelId = 'ink-whisper' | 'ink-2' | (string & {});
|
|
7
|
-
|
|
6
|
+
//#endregion
|
|
7
|
+
//#region src/cartesia-config.d.ts
|
|
8
8
|
type CartesiaConfig = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
9
|
+
provider: string;
|
|
10
|
+
url: (options: {
|
|
11
|
+
modelId: string;
|
|
12
|
+
path: string;
|
|
13
|
+
}) => string;
|
|
14
|
+
headers?: () => Record<string, string | undefined>;
|
|
15
|
+
fetch?: FetchFunction;
|
|
16
|
+
version?: string;
|
|
17
|
+
webSocket?: WebSocketConstructor;
|
|
18
|
+
generateId?: () => string;
|
|
19
19
|
};
|
|
20
|
-
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region src/cartesia-speech-options.d.ts
|
|
21
22
|
type CartesiaSpeechModelId = 'sonic-3.5' | 'sonic-3' | 'sonic-2' | 'sonic-turbo' | 'sonic-latest' | (string & {});
|
|
22
23
|
type CartesiaSpeechVoiceId = string;
|
|
23
|
-
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/cartesia-speech-model.d.ts
|
|
24
26
|
interface CartesiaSpeechModelConfig extends CartesiaConfig {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
_internal?: {
|
|
28
|
+
currentDate?: () => Date;
|
|
29
|
+
};
|
|
28
30
|
}
|
|
29
|
-
declare class CartesiaSpeechModel implements SpeechModelV4 {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
export declare class CartesiaSpeechModel implements SpeechModelV4 {
|
|
32
|
+
readonly modelId: CartesiaSpeechModelId;
|
|
33
|
+
private readonly config;
|
|
34
|
+
readonly specificationVersion = "v4";
|
|
35
|
+
get provider(): string;
|
|
36
|
+
static [WORKFLOW_SERIALIZE](model: CartesiaSpeechModel): {
|
|
37
|
+
modelId: string;
|
|
38
|
+
config: import("@ai-sdk/provider").JSONObject;
|
|
39
|
+
};
|
|
40
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
41
|
+
modelId: CartesiaSpeechModelId;
|
|
42
|
+
config: CartesiaSpeechModelConfig;
|
|
43
|
+
}): CartesiaSpeechModel;
|
|
44
|
+
constructor(modelId: CartesiaSpeechModelId, config: CartesiaSpeechModelConfig);
|
|
45
|
+
private getArgs;
|
|
46
|
+
doGenerate(options: Parameters<SpeechModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<SpeechModelV4['doGenerate']>>>;
|
|
45
47
|
}
|
|
46
|
-
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/cartesia-provider.d.ts
|
|
47
50
|
interface CartesiaProvider extends ProviderV4 {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
51
|
+
(modelId: CartesiaSpeechModelId, settings?: {}): {
|
|
52
|
+
speech: CartesiaSpeechModel;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Creates a model for transcription.
|
|
56
|
+
*/
|
|
57
|
+
transcription(modelId: CartesiaTranscriptionModelId): TranscriptionModelV4;
|
|
58
|
+
/**
|
|
59
|
+
* Creates a model for speech generation.
|
|
60
|
+
*/
|
|
61
|
+
speech(modelId: CartesiaSpeechModelId): SpeechModelV4;
|
|
62
|
+
/**
|
|
63
|
+
* Creates a realtime Ink speech-to-text model.
|
|
64
|
+
*/
|
|
65
|
+
experimental_realtime: Experimental_RealtimeFactoryV4;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use `embeddingModel` instead.
|
|
68
|
+
*/
|
|
69
|
+
textEmbeddingModel(modelId: string): never;
|
|
67
70
|
}
|
|
68
71
|
interface CartesiaProviderSettings {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
72
|
+
/**
|
|
73
|
+
* API key for authenticating requests.
|
|
74
|
+
*/
|
|
75
|
+
apiKey?: string;
|
|
76
|
+
/**
|
|
77
|
+
* The Cartesia API version to use (sent via the `Cartesia-Version` header).
|
|
78
|
+
*/
|
|
79
|
+
version?: string;
|
|
80
|
+
/**
|
|
81
|
+
* Custom headers to include in the requests.
|
|
82
|
+
*/
|
|
83
|
+
headers?: Record<string, string>;
|
|
84
|
+
/**
|
|
85
|
+
* Custom fetch implementation. You can use it as a middleware to intercept requests,
|
|
86
|
+
* or to provide a custom fetch implementation for e.g. testing.
|
|
87
|
+
*/
|
|
88
|
+
fetch?: FetchFunction;
|
|
89
|
+
/**
|
|
90
|
+
* Custom WebSocket implementation for streaming transcription.
|
|
91
|
+
*/
|
|
92
|
+
webSocket?: WebSocketConstructor;
|
|
90
93
|
}
|
|
91
94
|
/**
|
|
92
95
|
* Create a Cartesia provider instance.
|
|
93
96
|
*/
|
|
94
|
-
declare function createCartesia(options?: CartesiaProviderSettings): CartesiaProvider;
|
|
97
|
+
export declare function createCartesia(options?: CartesiaProviderSettings): CartesiaProvider;
|
|
95
98
|
/**
|
|
96
99
|
* Default Cartesia provider instance.
|
|
97
100
|
*/
|
|
98
|
-
declare const cartesia: CartesiaProvider;
|
|
99
|
-
|
|
101
|
+
export declare const cartesia: CartesiaProvider;
|
|
102
|
+
//#endregion
|
|
103
|
+
//#region src/cartesia-transcription-model.d.ts
|
|
100
104
|
interface CartesiaTranscriptionModelConfig extends CartesiaConfig {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
_internal?: {
|
|
106
|
+
currentDate?: () => Date;
|
|
107
|
+
};
|
|
104
108
|
}
|
|
105
|
-
declare class CartesiaTranscriptionModel implements TranscriptionModelV4 {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
109
|
+
export declare class CartesiaTranscriptionModel implements TranscriptionModelV4 {
|
|
110
|
+
readonly modelId: CartesiaTranscriptionModelId;
|
|
111
|
+
private readonly config;
|
|
112
|
+
readonly specificationVersion = "v4";
|
|
113
|
+
get provider(): string;
|
|
114
|
+
static [WORKFLOW_SERIALIZE](model: CartesiaTranscriptionModel): {
|
|
115
|
+
modelId: string;
|
|
116
|
+
config: import("@ai-sdk/provider").JSONObject;
|
|
117
|
+
};
|
|
118
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
119
|
+
modelId: CartesiaTranscriptionModelId;
|
|
120
|
+
config: CartesiaTranscriptionModelConfig;
|
|
121
|
+
}): CartesiaTranscriptionModel;
|
|
122
|
+
constructor(modelId: CartesiaTranscriptionModelId, config: CartesiaTranscriptionModelConfig);
|
|
123
|
+
private getArgs;
|
|
124
|
+
doGenerate(options: Parameters<TranscriptionModelV4['doGenerate']>[0]): Promise<Awaited<ReturnType<TranscriptionModelV4['doGenerate']>>>;
|
|
125
|
+
doStream(options: Experimental_TranscriptionModelV4StreamOptions): Promise<Awaited<ReturnType<NonNullable<TranscriptionModelV4['doStream']>>>>;
|
|
126
|
+
private createStreamingAccessToken;
|
|
123
127
|
}
|
|
124
|
-
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/cartesia-realtime-model-options.d.ts
|
|
125
130
|
type CartesiaRealtimeModelId = 'ink-2' | (string & {});
|
|
126
131
|
type CartesiaRealtimeModelOptions = Record<string, never>;
|
|
127
|
-
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region src/cartesia-realtime-model.d.ts
|
|
128
134
|
type CartesiaRealtimeModelConfig = {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
provider: string;
|
|
136
|
+
baseURL: string;
|
|
137
|
+
version: string;
|
|
138
|
+
headers: () => Record<string, string | undefined>;
|
|
139
|
+
fetch?: FetchFunction;
|
|
140
|
+
_internal?: {
|
|
141
|
+
currentDate?: () => Date;
|
|
142
|
+
};
|
|
137
143
|
};
|
|
138
144
|
/**
|
|
139
145
|
* Realtime Ink model using Cartesia's STT WebSocket APIs.
|
|
140
146
|
*/
|
|
141
|
-
declare class CartesiaRealtimeModel implements Experimental_RealtimeModelV4 {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
147
|
+
export declare class CartesiaRealtimeModel implements Experimental_RealtimeModelV4 {
|
|
148
|
+
readonly specificationVersion: "v4";
|
|
149
|
+
readonly provider: string;
|
|
150
|
+
readonly modelId: CartesiaRealtimeModelId;
|
|
151
|
+
private readonly config;
|
|
152
|
+
private manualTranscript;
|
|
153
|
+
private sessionCreated;
|
|
154
|
+
private useTurnDetection;
|
|
155
|
+
constructor(modelId: CartesiaRealtimeModelId, config: CartesiaRealtimeModelConfig);
|
|
156
|
+
doCreateClientSecret(options: Experimental_RealtimeModelV4ClientSecretOptions): Promise<Experimental_RealtimeModelV4ClientSecretResult>;
|
|
157
|
+
getWebSocketConfig(options: {
|
|
158
|
+
token: string;
|
|
159
|
+
url: string;
|
|
160
|
+
}): {
|
|
161
|
+
url: string;
|
|
162
|
+
};
|
|
163
|
+
parseServerEvent(raw: unknown): Experimental_RealtimeModelV4ServerEvent | Experimental_RealtimeModelV4ServerEvent[];
|
|
164
|
+
serializeClientEvent(event: Experimental_RealtimeModelV4ClientEvent): unknown;
|
|
165
|
+
buildSessionConfig(_config: Experimental_RealtimeModelV4SessionConfig): null;
|
|
166
|
+
private finishManualTranscript;
|
|
167
|
+
private withSessionCreated;
|
|
162
168
|
}
|
|
163
|
-
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/cartesia-speech-model-options.d.ts
|
|
164
171
|
declare const cartesiaSpeechModelOptionsSchema: z.ZodObject<{
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
172
|
+
container: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
173
|
+
raw: "raw";
|
|
174
|
+
wav: "wav";
|
|
175
|
+
mp3: "mp3";
|
|
176
|
+
}>>>;
|
|
177
|
+
encoding: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
|
|
178
|
+
pcm_f32le: "pcm_f32le";
|
|
179
|
+
pcm_s16le: "pcm_s16le";
|
|
180
|
+
pcm_mulaw: "pcm_mulaw";
|
|
181
|
+
pcm_alaw: "pcm_alaw";
|
|
182
|
+
}>>>;
|
|
183
|
+
sampleRate: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodLiteral<8000>, z.ZodLiteral<16000>, z.ZodLiteral<22050>, z.ZodLiteral<24000>, z.ZodLiteral<44100>, z.ZodLiteral<48000>]>>>;
|
|
184
|
+
bitRate: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodLiteral<32000>, z.ZodLiteral<64000>, z.ZodLiteral<96000>, z.ZodLiteral<128000>, z.ZodLiteral<192000>]>>>;
|
|
185
|
+
speed: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
186
|
+
language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
180
187
|
}, z.core.$strip>;
|
|
181
188
|
type CartesiaSpeechModelOptions = z.infer<typeof cartesiaSpeechModelOptionsSchema>;
|
|
182
|
-
|
|
189
|
+
//#endregion
|
|
190
|
+
//#region src/cartesia-transcription-model-options.d.ts
|
|
183
191
|
declare const cartesiaTranscriptionModelOptionsSchema: z.ZodObject<{
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
192
|
+
language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
193
|
+
timestampGranularities: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodEnum<{
|
|
194
|
+
word: "word";
|
|
195
|
+
}>>>>;
|
|
196
|
+
streaming: z.ZodOptional<z.ZodObject<{
|
|
197
|
+
encoding: z.ZodOptional<z.ZodEnum<{
|
|
198
|
+
pcm_f32le: "pcm_f32le";
|
|
199
|
+
pcm_s16le: "pcm_s16le";
|
|
200
|
+
pcm_mulaw: "pcm_mulaw";
|
|
201
|
+
pcm_alaw: "pcm_alaw";
|
|
202
|
+
pcm_f16le: "pcm_f16le";
|
|
203
|
+
pcm_s32le: "pcm_s32le";
|
|
204
|
+
}>>;
|
|
205
|
+
turnDetection: z.ZodOptional<z.ZodBoolean>;
|
|
206
|
+
}, z.core.$strip>>;
|
|
199
207
|
}, z.core.$strip>;
|
|
200
208
|
type CartesiaTranscriptionModelOptions = z.infer<typeof cartesiaTranscriptionModelOptionsSchema>;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
209
|
+
//#endregion
|
|
210
|
+
//#region src/version.d.ts
|
|
211
|
+
export declare const VERSION: string;
|
|
212
|
+
//#endregion
|
|
213
|
+
export type { CartesiaProvider, CartesiaProviderSettings, CartesiaRealtimeModelId, CartesiaRealtimeModelOptions, CartesiaSpeechModelId, CartesiaSpeechModelOptions, CartesiaSpeechVoiceId, CartesiaTranscriptionModelId, CartesiaTranscriptionModelOptions };
|
|
214
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["RealtimeFactoryV4","TranscriptionModelV4StreamOptions","RealtimeModelV4ClientSecretOptions","RealtimeModelV4ClientSecretResult","RealtimeModelV4ServerEvent","RealtimeModelV4ClientEvent","RealtimeModelV4SessionConfig","RealtimeModelV4"],"sources":["../src/cartesia-transcription-options.ts","../src/cartesia-config.ts","../src/cartesia-speech-options.ts","../src/cartesia-speech-model.ts","../src/cartesia-provider.ts","../src/cartesia-transcription-model.ts","../src/cartesia-realtime-model-options.ts","../src/cartesia-realtime-model.ts","../src/cartesia-speech-model-options.ts","../src/cartesia-transcription-model-options.ts","../src/version.ts"],"mappings":";;;;KAAY;;;KCKA;EACV;EACA,MAAM;IAAW;IAAiB;;EAClC,gBAAgB;EAChB,QAAQ;EACR;EACA,YAAY;EACZ;;;;KCZU;KAQA;;;UCiBF,kCAAkC;EAC1C;IACE,oBAAoB;;;qBAmHX,+BAA+B;WAsB/B,SAAS;mBACD;WAtBV;MAEL;UAII,oBAAoB,OAAO;;;;UAO3B,sBAAsB;IAC5B,SAAS;IACT,QAAQ;MACT;EAKU,YAAA,SAAS,uBACD,QAAQ;UAGb;EA+ER,WACJ,SAAS,WAAW,kCACnB,QAAQ,QAAQ,WAAW;;;;UC7Nf,yBAAyB;GAEtC,SAAS,uBACT;IAEA,QAAQ;;;;;EAMV,cAAc,SAAS,+BAA+B;;;;EAKtD,OAAO,SAAS,wBAAwB;;;;EAKxC,uBAAuBA;;;;EAKvB,mBAAmB;;UAGJ;;;;EAIf;;;;EAKA;;;;EAKA,UAAU;;;;;EAMV,QAAQ;;;;EAKR,YAAY;;;;;wBAME,eACd,UAAS,2BACR;;;;qBA2GU,UAAQ;;;UCjKX,yCAAyC;EACjD;IACE,oBAAoB;;;qBAeX,sCAAsC;WAsBtC,SAAS;mBACD;WAtBV;MAEL;UAII,oBAAoB,OAAO;;;;UAO3B,sBAAsB;IAC5B,SAAS;IACT,QAAQ;MACT;EAKU,YAAA,SAAS,8BACD,QAAQ;UAGb;EAwDR,WACJ,SAAS,WAAW,yCACnB,QAAQ,QAAQ,WAAW;EAiDxB,SACJ,SAASC,iDACR,QACD,QAAQ,WAAW,YAAY;UA6FnB;;;;KC1RJ;KAEA,+BAA+B;;;KCY/B;EACV;EACA;EACA;EACA,eAAe;EACf,QAAQ;EACR;IACE,oBAAoB;;;;;;qBAwBX,iCAAiCM;WACnC;WACA;WACA,SAAS;mBAED;UACT;UAKA;UACA;EAGN,YAAA,SAAS,yBACT,QAAQ;EAOJ,qBACJ,SAASL,kDACR,QAAQC;EAqFX,mBAAmB;IAAW;IAAe;;IAC3C;;EAQF,iBACE,eACCC,0CAA6BA;EA+EhC,qBAAqB,OAAOC;EAiB5B,mBAAmB,SAASC;UAIpB;UA6BA;;;;cCpSG,kCAAgC,EAAA;;;;;;;;;;;;;;;;GAgC3C,EAAA,KAAA;KAEU,6BAA6B,EAAE,aAClC;;;cCzBI,yCAAuC,EAAA;;;;;;;;;;;;;;;;GAoBlD,EAAA,KAAA;KAEU,oCAAoC,EAAE,aACzC;;;qBClCI"}
|