@crawlee/basic 3.0.0-beta.7 → 3.0.0-beta.70
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 +77 -130
- package/index.mjs +68 -0
- package/internals/basic-crawler.d.ts +90 -81
- package/internals/basic-crawler.d.ts.map +1 -1
- package/internals/basic-crawler.js +137 -44
- package/internals/basic-crawler.js.map +1 -1
- package/internals/constants.d.ts +1 -1
- package/internals/constants.js +1 -1
- package/package.json +22 -22
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,65 +1,48 @@
|
|
|
1
|
-
import { Log } from '@apify/log';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { Awaitable } from '@crawlee/
|
|
6
|
-
export interface
|
|
7
|
-
crawler: BasicCrawler;
|
|
8
|
-
enqueueLinks: (options: BasicCrawlerEnqueueLinksOptions) => Promise<QueueOperationInfo[]>;
|
|
9
|
-
sendRequest: (request?: Request) => Promise<GotResponse<string>>;
|
|
10
|
-
}
|
|
11
|
-
export interface BasicCrawlerHandleFailedRequestInput extends CrawlerHandleFailedRequestInput {
|
|
1
|
+
import type { Log } from '@apify/log';
|
|
2
|
+
import type { AutoscaledPoolOptions, EnqueueLinksOptions, EventManager, FinalStatistics, ProxyInfo, Request, RequestList, RequestOptions, RequestQueueOperationOptions, RouterHandler, Session, SessionPoolOptions } from '@crawlee/core';
|
|
3
|
+
import { AutoscaledPool, Configuration, type CrawlingContext, RequestQueue, SessionPool, Statistics } from '@crawlee/core';
|
|
4
|
+
import type { GotOptionsInit, Response as GotResponse } from 'got-scraping';
|
|
5
|
+
import type { ProcessedRequest, Dictionary, Awaitable, BatchAddRequestsResult } from '@crawlee/types';
|
|
6
|
+
export interface BasicCrawlingContext<UserData extends Dictionary = Dictionary> extends CrawlingContext<UserData> {
|
|
12
7
|
crawler: BasicCrawler;
|
|
8
|
+
enqueueLinks: (options: BasicCrawlerEnqueueLinksOptions) => Promise<BatchAddRequestsResult>;
|
|
9
|
+
sendRequest: (overrideOptions?: Partial<GotOptionsInit>) => Promise<GotResponse<string>>;
|
|
13
10
|
}
|
|
14
11
|
/** @internal */
|
|
15
12
|
export declare type BasicCrawlerEnqueueLinksOptions = Omit<EnqueueLinksOptions, 'requestQueue'>;
|
|
16
|
-
export declare type RequestHandler<Context extends CrawlingContext =
|
|
17
|
-
export declare type FailedRequestHandler<
|
|
18
|
-
export interface BasicCrawlerOptions<Context extends CrawlingContext =
|
|
13
|
+
export declare type RequestHandler<Context extends CrawlingContext = BasicCrawlingContext> = (inputs: Context) => Awaitable<void>;
|
|
14
|
+
export declare type FailedRequestHandler<Context extends CrawlingContext = BasicCrawlingContext> = (inputs: Context, error: Error) => Awaitable<void>;
|
|
15
|
+
export interface BasicCrawlerOptions<Context extends CrawlingContext = BasicCrawlingContext> {
|
|
19
16
|
/**
|
|
20
17
|
* User-provided function that performs the logic of the crawler. It is called for each URL to crawl.
|
|
21
18
|
*
|
|
22
|
-
* The function receives the
|
|
23
|
-
*
|
|
24
|
-
* {
|
|
25
|
-
* request: Request,
|
|
26
|
-
* session: Session,
|
|
27
|
-
* crawler: BasicCrawler,
|
|
28
|
-
* }
|
|
29
|
-
* ```
|
|
30
|
-
* where the {@link Request} instance represents the URL to crawl.
|
|
19
|
+
* The function receives the {@link BasicCrawlingContext} as an argument,
|
|
20
|
+
* where the {@link BasicCrawlingContext.request} represents the URL to crawl.
|
|
31
21
|
*
|
|
32
22
|
* The function must return a promise, which is then awaited by the crawler.
|
|
33
23
|
*
|
|
34
24
|
* If the function throws an exception, the crawler will try to re-crawl the
|
|
35
25
|
* request later, up to `option.maxRequestRetries` times.
|
|
36
26
|
* If all the retries fail, the crawler calls the function
|
|
37
|
-
* provided to the `
|
|
27
|
+
* provided to the `failedRequestHandler` parameter.
|
|
38
28
|
* To make this work, you should **always**
|
|
39
29
|
* let your function throw exceptions rather than catch them.
|
|
40
30
|
* The exceptions are logged to the request using the
|
|
41
31
|
* {@link Request.pushErrorMessage} function.
|
|
42
32
|
*/
|
|
43
|
-
requestHandler
|
|
33
|
+
requestHandler?: RequestHandler<Context>;
|
|
44
34
|
/**
|
|
45
35
|
* User-provided function that performs the logic of the crawler. It is called for each URL to crawl.
|
|
46
36
|
*
|
|
47
|
-
* The function receives the
|
|
48
|
-
*
|
|
49
|
-
* {
|
|
50
|
-
* request: Request,
|
|
51
|
-
* session: Session,
|
|
52
|
-
* crawler: BasicCrawler,
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
55
|
-
* where the {@link Request} instance represents the URL to crawl.
|
|
37
|
+
* The function receives the {@link BasicCrawlingContext} as an argument,
|
|
38
|
+
* where the {@link BasicCrawlingContext.request} represents the URL to crawl.
|
|
56
39
|
*
|
|
57
40
|
* The function must return a promise, which is then awaited by the crawler.
|
|
58
41
|
*
|
|
59
42
|
* If the function throws an exception, the crawler will try to re-crawl the
|
|
60
43
|
* request later, up to `option.maxRequestRetries` times.
|
|
61
44
|
* If all the retries fail, the crawler calls the function
|
|
62
|
-
* provided to the `
|
|
45
|
+
* provided to the `failedRequestHandler` parameter.
|
|
63
46
|
* To make this work, you should **always**
|
|
64
47
|
* let your function throw exceptions rather than catch them.
|
|
65
48
|
* The exceptions are logged to the request using the
|
|
@@ -90,49 +73,37 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = BasicCraw
|
|
|
90
73
|
*/
|
|
91
74
|
handleRequestTimeoutSecs?: number;
|
|
92
75
|
/**
|
|
93
|
-
*
|
|
76
|
+
* User-provided function that allows modifying the request object before it gets retried by the crawler.
|
|
77
|
+
* It's executed before each retry for the requests that failed less than `option.maxRequestRetries` times.
|
|
94
78
|
*
|
|
95
|
-
* The function receives the
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* request: Request,
|
|
99
|
-
* error: Error,
|
|
100
|
-
* session: Session,
|
|
101
|
-
* crawler: BasicCrawler,
|
|
102
|
-
* }
|
|
103
|
-
* ```
|
|
104
|
-
* where the {@link Request} instance corresponds to the failed request, and the `Error` instance
|
|
79
|
+
* The function receives the {@link BasicCrawlingContext} as the first argument,
|
|
80
|
+
* where the {@link BasicCrawlingContext.request} corresponds to the request to be retried.
|
|
81
|
+
* Second argument is the `Error` instance that
|
|
105
82
|
* represents the last error thrown during processing of the request.
|
|
106
|
-
*
|
|
107
|
-
* See
|
|
108
|
-
* [source code](https://github.com/apify/apify-js/blob/master/src/crawlers/basic_crawler.js#L11)
|
|
109
|
-
* for the default implementation of this function.
|
|
110
83
|
*/
|
|
111
|
-
|
|
84
|
+
errorHandler?: FailedRequestHandler<Context>;
|
|
112
85
|
/**
|
|
113
86
|
* A function to handle requests that failed more than `option.maxRequestRetries` times.
|
|
114
87
|
*
|
|
115
|
-
* The function receives the
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
* request: Request,
|
|
119
|
-
* error: Error,
|
|
120
|
-
* session: Session,
|
|
121
|
-
* crawler: BasicCrawler,
|
|
122
|
-
* }
|
|
123
|
-
* ```
|
|
124
|
-
* where the {@link Request} instance corresponds to the failed request, and the `Error` instance
|
|
88
|
+
* The function receives the {@link BasicCrawlingContext} as the first argument,
|
|
89
|
+
* where the {@link BasicCrawlingContext.request} corresponds to the failed request.
|
|
90
|
+
* Second argument is the `Error` instance that
|
|
125
91
|
* represents the last error thrown during processing of the request.
|
|
92
|
+
*/
|
|
93
|
+
failedRequestHandler?: FailedRequestHandler<Context>;
|
|
94
|
+
/**
|
|
95
|
+
* A function to handle requests that failed more than `option.maxRequestRetries` times.
|
|
126
96
|
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
97
|
+
* The function receives the {@link BasicCrawlingContext} as the first argument,
|
|
98
|
+
* where the {@link BasicCrawlingContext.request} corresponds to the failed request.
|
|
99
|
+
* Second argument is the `Error` instance that
|
|
100
|
+
* represents the last error thrown during processing of the request.
|
|
130
101
|
*
|
|
131
102
|
* @deprecated `handleFailedRequestFunction` has been renamed to `failedRequestHandler` and will be removed in a future version.
|
|
132
103
|
*/
|
|
133
|
-
handleFailedRequestFunction?: FailedRequestHandler<
|
|
104
|
+
handleFailedRequestFunction?: FailedRequestHandler<Context>;
|
|
134
105
|
/**
|
|
135
|
-
* Indicates how many times the request is retried if {@link requestHandler}
|
|
106
|
+
* Indicates how many times the request is retried if {@link requestHandler} fails.
|
|
136
107
|
* @default 3
|
|
137
108
|
*/
|
|
138
109
|
maxRequestRetries?: number;
|
|
@@ -203,16 +174,13 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = BasicCraw
|
|
|
203
174
|
* **Example usage:**
|
|
204
175
|
*
|
|
205
176
|
* ```javascript
|
|
206
|
-
*
|
|
177
|
+
* import { gotScraping } from 'got-scraping';
|
|
207
178
|
*
|
|
208
179
|
* // Prepare a list of URLs to crawl
|
|
209
|
-
* const requestList =
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
* ],
|
|
214
|
-
* });
|
|
215
|
-
* await requestList.initialize();
|
|
180
|
+
* const requestList = await RequestList.open(null, [
|
|
181
|
+
* { url: 'http://www.example.com/page-1' },
|
|
182
|
+
* { url: 'http://www.example.com/page-2' },
|
|
183
|
+
* ]);
|
|
216
184
|
*
|
|
217
185
|
* // Crawl the URLs
|
|
218
186
|
* const crawler = new BasicCrawler({
|
|
@@ -227,7 +195,7 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = BasicCraw
|
|
|
227
195
|
* headers: request.headers,
|
|
228
196
|
* });
|
|
229
197
|
*
|
|
230
|
-
* await
|
|
198
|
+
* await Dataset.pushData({
|
|
231
199
|
* url: request.url,
|
|
232
200
|
* html: body,
|
|
233
201
|
* })
|
|
@@ -238,8 +206,9 @@ export interface BasicCrawlerOptions<Context extends CrawlingContext = BasicCraw
|
|
|
238
206
|
* ```
|
|
239
207
|
* @category Crawlers
|
|
240
208
|
*/
|
|
241
|
-
export declare class BasicCrawler<Context extends CrawlingContext =
|
|
209
|
+
export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawlingContext> {
|
|
242
210
|
readonly config: Configuration;
|
|
211
|
+
private static readonly CRAWLEE_STATE_KEY;
|
|
243
212
|
/**
|
|
244
213
|
* Static list of URLs to be processed.
|
|
245
214
|
*/
|
|
@@ -270,9 +239,15 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
270
239
|
* or to abort it by calling {@link AutoscaledPool.abort}.
|
|
271
240
|
*/
|
|
272
241
|
autoscaledPool?: AutoscaledPool;
|
|
242
|
+
/**
|
|
243
|
+
* Default router instance that will be used if we don't specify any {@link requestHandler}.
|
|
244
|
+
* See {@link Router.addHandler} and {@link Router.addDefaultHandler.}
|
|
245
|
+
*/
|
|
246
|
+
readonly router: RouterHandler<Context>;
|
|
273
247
|
protected log: Log;
|
|
274
248
|
protected requestHandler: RequestHandler<Context>;
|
|
275
|
-
protected
|
|
249
|
+
protected errorHandler?: FailedRequestHandler<Context>;
|
|
250
|
+
protected failedRequestHandler?: FailedRequestHandler<Context>;
|
|
276
251
|
protected requestHandlerTimeoutMillis: number;
|
|
277
252
|
protected internalTimeoutMillis: number;
|
|
278
253
|
protected maxRequestRetries: number;
|
|
@@ -282,6 +257,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
282
257
|
protected crawlingContexts: Map<string, Context>;
|
|
283
258
|
protected autoscaledPoolOptions: AutoscaledPoolOptions;
|
|
284
259
|
protected events: EventManager;
|
|
260
|
+
private _closeEvents?;
|
|
285
261
|
protected static optionsShape: {
|
|
286
262
|
requestList: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
287
263
|
requestQueue: import("ow").ObjectPredicate<object> & import("ow").BasePredicate<object | undefined>;
|
|
@@ -289,6 +265,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
289
265
|
handleRequestFunction: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
290
266
|
requestHandlerTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
291
267
|
handleRequestTimeoutSecs: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
268
|
+
errorHandler: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
292
269
|
failedRequestHandler: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
293
270
|
handleFailedRequestFunction: import("ow").Predicate<Function> & import("ow").BasePredicate<Function | undefined>;
|
|
294
271
|
maxRequestRetries: import("ow").NumberPredicate & import("ow").BasePredicate<number | undefined>;
|
|
@@ -303,12 +280,18 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
303
280
|
/**
|
|
304
281
|
* All `BasicCrawler` parameters are passed via an options object.
|
|
305
282
|
*/
|
|
306
|
-
constructor(options
|
|
283
|
+
constructor(options?: BasicCrawlerOptions<Context>, config?: Configuration);
|
|
307
284
|
/**
|
|
308
285
|
* Runs the crawler. Returns a promise that gets resolved once all the requests are processed.
|
|
286
|
+
* We can use the `requests` parameter to enqueue the initial requests - it is a shortcut for
|
|
287
|
+
* running `crawler.addRequests()` before the `crawler.run()`.
|
|
288
|
+
*
|
|
289
|
+
* @param [requests] The requests to add
|
|
290
|
+
* @param [options] Options for the request queue
|
|
309
291
|
*/
|
|
310
|
-
run(): Promise<FinalStatistics>;
|
|
292
|
+
run(requests?: (string | Request | RequestOptions)[], options?: CrawlerAddRequestsOptions): Promise<FinalStatistics>;
|
|
311
293
|
getRequestQueue(): Promise<RequestQueue>;
|
|
294
|
+
useState<State extends Dictionary = Dictionary>(defaultValue?: State): Promise<State>;
|
|
312
295
|
/**
|
|
313
296
|
* Adds requests to be processed by the crawler
|
|
314
297
|
* @param requests The requests to add
|
|
@@ -326,7 +309,7 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
326
309
|
* Fetches request from either RequestList or RequestQueue. If request comes from a RequestList
|
|
327
310
|
* and RequestQueue is present then enqueues it to the queue first.
|
|
328
311
|
*/
|
|
329
|
-
protected _fetchNextRequest(): Promise<Request | null>;
|
|
312
|
+
protected _fetchNextRequest(): Promise<Request<Dictionary<any>> | null>;
|
|
330
313
|
/**
|
|
331
314
|
* Wrapper around requestHandler that fetches requests from RequestList/RequestQueue
|
|
332
315
|
* then retries them in a case of an error, etc.
|
|
@@ -349,7 +332,8 @@ export declare class BasicCrawler<Context extends CrawlingContext = BasicCrawler
|
|
|
349
332
|
* Handles errors thrown by user provided requestHandler()
|
|
350
333
|
*/
|
|
351
334
|
protected _requestFunctionErrorHandler(error: Error, crawlingContext: Context, source: RequestList | RequestQueue): Promise<void>;
|
|
352
|
-
protected
|
|
335
|
+
protected _tagUserHandlerError<T>(cb: () => unknown): Promise<T>;
|
|
336
|
+
protected _handleFailedRequestHandler(crawlingContext: Context, error: Error): Promise<void>;
|
|
353
337
|
/**
|
|
354
338
|
* Updates handledRequestsCount from possibly stored counts,
|
|
355
339
|
* usually after worker migration. Since one of the stores
|
|
@@ -406,5 +390,30 @@ interface HandlePropertyNameChangeData<New, Old> {
|
|
|
406
390
|
propertyKey: string;
|
|
407
391
|
allowUndefined?: boolean;
|
|
408
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Creates new {@link Router} instance that works based on request labels.
|
|
395
|
+
* This instance can then serve as a `requestHandler` of your {@link BasicCrawler}.
|
|
396
|
+
* Defaults to the {@link BasicCrawlingContext}.
|
|
397
|
+
*
|
|
398
|
+
* > Serves as a shortcut for using `Router.create<BasicCrawlingContext>()`.
|
|
399
|
+
*
|
|
400
|
+
* ```ts
|
|
401
|
+
* import { BasicCrawler, createBasicRouter } from 'crawlee';
|
|
402
|
+
*
|
|
403
|
+
* const router = createBasicRouter();
|
|
404
|
+
* router.addHandler('label-a', async (ctx) => {
|
|
405
|
+
* ctx.log.info('...');
|
|
406
|
+
* });
|
|
407
|
+
* router.addDefaultHandler(async (ctx) => {
|
|
408
|
+
* ctx.log.info('...');
|
|
409
|
+
* });
|
|
410
|
+
*
|
|
411
|
+
* const crawler = new BasicCrawler({
|
|
412
|
+
* requestHandler: router,
|
|
413
|
+
* });
|
|
414
|
+
* await crawler.run();
|
|
415
|
+
* ```
|
|
416
|
+
*/
|
|
417
|
+
export declare function createBasicRouter<Context extends BasicCrawlingContext = BasicCrawlingContext>(): RouterHandler<Context>;
|
|
409
418
|
export {};
|
|
410
419
|
//# sourceMappingURL=basic-crawler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basic-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/basic-crawler.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"basic-crawler.d.ts","sourceRoot":"","sources":["../../src/internals/basic-crawler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAItC,OAAO,KAAK,EACR,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,SAAS,EACT,OAAO,EACP,WAAW,EACX,cAAc,EACd,4BAA4B,EAC5B,aAAa,EACb,OAAO,EACP,kBAAkB,EACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,cAAc,EACd,aAAa,EACb,KAAK,eAAe,EAOpB,YAAY,EAEZ,WAAW,EACX,UAAU,EAGb,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAA6B,QAAQ,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAEvG,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAItG,MAAM,WAAW,oBAAoB,CAAC,QAAQ,SAAS,UAAU,GAAG,UAAU,CAAE,SAAQ,eAAe,CAAC,QAAQ,CAAC;IAC7G,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,EAAE,CAAC,OAAO,EAAE,+BAA+B,KAAK,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC5F,WAAW,EAAE,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5F;AAED,gBAAgB;AAChB,oBAAY,+BAA+B,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA;AAavF,oBAAY,cAAc,CAAC,OAAO,SAAS,eAAe,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAE1H,oBAAY,oBAAoB,CAAC,OAAO,SAAS,eAAe,GAAG,oBAAoB,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;AAE9I,MAAM,WAAW,mBAAmB,CAAC,OAAO,SAAS,eAAe,GAAG,oBAAoB;IACvF;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAEzC;;;;;;;;;;;;;;;;;;OAkBG;IACH,qBAAqB,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAEhD;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;OAGG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAElC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE7C;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;;OASG;IACH,2BAA2B,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE5D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC,gBAAgB;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;CACb;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACH,qBAAa,YAAY,CAAC,OAAO,SAAS,eAAe,GAAG,oBAAoB;IA4FpB,QAAQ,CAAC,MAAM;IA3FvE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAE5D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAA4B;IAEnE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,SAAS,CAAC,cAAc,EAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACnD,SAAS,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvD,SAAS,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC/D,SAAS,CAAC,2BAA2B,EAAG,MAAM,CAAC;IAC/C,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IACjD,SAAS,CAAC,cAAc,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,gBAAgB,uBAA8B;IACxD,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACvD,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,YAAY,CAAC,CAAU;IAE/B,SAAS,CAAC,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;;;;MA4B3B;IAEF;;OAEG;gBACS,OAAO,GAAE,mBAAmB,CAAC,OAAO,CAAM,EAAW,MAAM,gBAAkC;IA+JzG;;;;;;;OAOG;IACG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BpH,eAAe;IAMf,QAAQ,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU,EAAE,YAAY,QAAc,GAAG,OAAO,CAAC,KAAK,CAAC;IAKjG;;;;OAIG;IACG,WAAW,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC;cAmE9H,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAoBtB,kBAAkB,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;cAQrD,iBAAiB;IAqCjC;;;OAGG;cACa,iBAAiB;IAmBjC;;;OAGG;cACa,gBAAgB;IAoHhC;;;OAGG;cACa,gBAAgB,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,EAAE,UAAU,SAAI,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAarJ;;OAEG;cACa,oBAAoB;IASpC;;OAEG;cACa,0BAA0B;IAY1C;;OAEG;cACa,4BAA4B,CACxC,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,OAAO,EACxB,MAAM,EAAE,WAAW,GAAG,YAAY,GACnC,OAAO,CAAC,IAAI,CAAC;cAoCA,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;cAStD,2BAA2B,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAclG;;;;;;;OAOG;cACa,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC;cAQzC,aAAa,CAAC,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;IAQpI;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,EAC1C,WAAW,EACX,OAAO,EACP,WAAW,EACX,OAAO,EACP,WAAW,EACX,cAAsB,GACzB,EAAE,4BAA4B,CAAC,GAAG,EAAE,GAAG,CAAC;IA0BzC,SAAS,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO;CAGzD;AAED,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,yBAA0B,SAAQ,4BAA4B;IAC3E;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACrC,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC;;;;;;;;;;;;OAYG;IACH,2BAA2B,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAC5D;AAED,UAAU,4BAA4B,CAAC,GAAG,EAAE,GAAG;IAC3C,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,oBAAoB,GAAG,oBAAoB,4BAE5F"}
|