@intuitionrobotics/bug-report 2.2.3 → 2.3.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/api/routes.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAa/B,eAAO,MAAM,eAAe,EAAE,MAAiB,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/main/app-backend/api/routes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAe/B,eAAO,MAAM,eAAe,EAAE,MAAiB,CAAC"}
@@ -1,13 +1,13 @@
1
- // Auto-generated by thunderstorm-bootstrap-routes initial seed.
2
- // Hand-edit this from here. The tool runs ONCE; do not regenerate.
1
+ // Hand-wired handler(fn) routes for the bug-report lib.
3
2
  import { Router } from "express";
4
- import download from "./v1/bug-reports/download.js";
5
- import getLogs from "./v1/bug-reports/get-logs.js";
6
- import reports from "./v1/bug-reports/reports.js";
3
+ import { handler, validateBody } from "@intuitionrobotics/thunderstorm/backend";
4
+ import { download } from "./v1/bug-reports/download.js";
5
+ import { getLogs } from "./v1/bug-reports/get-logs.js";
6
+ import { reports, reportsValidator } from "./v1/bug-reports/reports.js";
7
7
  const bugReports = Router();
8
- bugReports.post("/download", download.handler);
9
- bugReports.get("/get-logs", getLogs.handler);
10
- bugReports.post("/reports", reports.handler);
8
+ bugReports.post("/download", handler(download));
9
+ bugReports.get("/get-logs", handler(getLogs));
10
+ bugReports.post("/reports", validateBody(reportsValidator), handler(reports));
11
11
  const v1 = Router();
12
12
  v1.use("/bug-reports", bugReports);
13
13
  export const bugReportRoutes = Router();
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/main/app-backend/api/routes.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,mEAAmE;AAEnE,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAE/B,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,OAAO,MAAM,8BAA8B,CAAC;AACnD,OAAO,OAAO,MAAM,6BAA6B,CAAC;AAClD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAC5B,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC/C,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC7C,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7C,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACpB,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,EAAE,CAAC;AAChD,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/main/app-backend/api/routes.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAC,OAAO,EAAE,YAAY,EAAC,MAAM,yCAAyC,CAAC;AAE9E,OAAO,EAAC,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAC,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAC,OAAO,EAAE,gBAAgB,EAAC,MAAM,6BAA6B,CAAC;AAEtE,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC;AAC5B,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChD,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9E,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;AACpB,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAW,MAAM,EAAE,CAAC;AAChD,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC"}
@@ -1,13 +1,4 @@
1
- import { ApiResponse, type ExpressRequest, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
2
- import { type ApiPostPath, type Paths } from "./_imports.js";
3
- declare class ServerApi_DownloadLogs extends ServerApi<ApiPostPath> {
4
- constructor();
5
- protected process(request: ExpressRequest, response: ApiResponse, queryParams: {}, body: Paths): Promise<{
6
- fileName: string;
7
- securedUrl: string;
8
- publicUrl: string;
9
- }>;
10
- }
11
- declare const _default: ServerApi_DownloadLogs;
12
- export default _default;
1
+ import { type TypedHandler } from "@intuitionrobotics/thunderstorm/backend";
2
+ import { type ApiPostPath } from "./_imports.js";
3
+ export declare const download: TypedHandler<ApiPostPath>;
13
4
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/download.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,KAAK,cAAc,EAAc,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAChH,OAAO,EAEN,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,MAAM,eAAe,CAAC;AAEvB,cAAM,sBACL,SAAQ,SAAS,CAAC,WAAW,CAAC;;cAMd,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK;;;;;CAGpG;;AAED,wBAA4C"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAgB,KAAK,WAAW,EAAa,MAAM,eAAe,CAAC;AAC1E,eAAO,MAAM,QAAQ,EAAE,YAAY,CAAC,WAAW,CAG9C,CAAC"}
@@ -1,12 +1,7 @@
1
- import { ApiResponse, HttpMethod, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
1
+ import {} from "@intuitionrobotics/thunderstorm/backend";
2
2
  import { AdminBRModule } from "./_imports.js";
3
- class ServerApi_DownloadLogs extends ServerApi {
4
- constructor() {
5
- super(HttpMethod.POST);
6
- }
7
- async process(request, response, queryParams, body) {
8
- return AdminBRModule.downloadFiles(body);
9
- }
10
- }
11
- export default new ServerApi_DownloadLogs();
3
+ export const download = async (req) => {
4
+ const body = req.body;
5
+ return AdminBRModule.downloadFiles(body);
6
+ };
12
7
  //# sourceMappingURL=download.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/download.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAuB,UAAU,EAAE,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAChH,OAAO,EACN,aAAa,EAGb,MAAM,eAAe,CAAC;AAEvB,MAAM,sBACL,SAAQ,SAAsB;IAE9B;QACC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,QAAqB,EAAE,WAAe,EAAE,IAAW;QACnG,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;CACD;AAED,eAAe,IAAI,sBAAsB,EAAE,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAC,aAAa,EAA+B,MAAM,eAAe,CAAC;AAC1E,MAAM,CAAC,MAAM,QAAQ,GAA8B,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAa,CAAC;IAC/B,OAAO,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -1,9 +1,4 @@
1
- import { ApiResponse, type ExpressRequest, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
1
+ import { type TypedHandler } from "@intuitionrobotics/thunderstorm/backend";
2
2
  import { type ApiGetLog } from "./_imports.js";
3
- declare class ServerApi_GetReport extends ServerApi<ApiGetLog> {
4
- constructor();
5
- protected process(_request: ExpressRequest, _response: ApiResponse, _queryParams: {}, _body: void): Promise<import("./_imports.js").DB_BugReport[]>;
6
- }
7
- declare const _default: ServerApi_GetReport;
8
- export default _default;
3
+ export declare const getLogs: TypedHandler<ApiGetLog>;
9
4
  //# sourceMappingURL=get-logs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-logs.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/get-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,KAAK,cAAc,EAAc,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAChH,OAAO,EAEN,KAAK,SAAS,EACd,MAAM,eAAe,CAAC;AAEvB,cAAM,mBACL,SAAQ,SAAS,CAAC,SAAS,CAAC;;cAMZ,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI;CAGvG;;AAED,wBAAyC"}
1
+ {"version":3,"file":"get-logs.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/get-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAgB,KAAK,SAAS,EAAC,MAAM,eAAe,CAAC;AAC5D,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,SAAS,CAE3C,CAAC"}
@@ -1,12 +1,6 @@
1
- import { ApiResponse, HttpMethod, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
1
+ import {} from "@intuitionrobotics/thunderstorm/backend";
2
2
  import { AdminBRModule } from "./_imports.js";
3
- class ServerApi_GetReport extends ServerApi {
4
- constructor() {
5
- super(HttpMethod.GET);
6
- }
7
- async process(_request, _response, _queryParams, _body) {
8
- return AdminBRModule.getFilesFirebase();
9
- }
10
- }
11
- export default new ServerApi_GetReport();
3
+ export const getLogs = async (req) => {
4
+ return AdminBRModule.getFilesFirebase();
5
+ };
12
6
  //# sourceMappingURL=get-logs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-logs.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/get-logs.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAuB,UAAU,EAAE,SAAS,EAAC,MAAM,yCAAyC,CAAC;AAChH,OAAO,EACN,aAAa,EAEb,MAAM,eAAe,CAAC;AAEvB,MAAM,mBACL,SAAQ,SAAoB;IAE5B;QACC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,QAAwB,EAAE,SAAsB,EAAE,YAAgB,EAAE,KAAW;QACtG,OAAO,aAAa,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;CACD;AAED,eAAe,IAAI,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"get-logs.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/get-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAiB,MAAM,eAAe,CAAC;AAC5D,MAAM,CAAC,MAAM,OAAO,GAA4B,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1D,OAAO,aAAa,CAAC,gBAAgB,EAAE,CAAC;AAC5C,CAAC,CAAC"}
@@ -1,9 +1,12 @@
1
- import { ApiResponse, type ExpressRequest, ServerApi } from "@intuitionrobotics/thunderstorm/backend";
2
- import { type ApiBugReport, type Request_BugReport } from "./_imports.js";
3
- declare class ServerApi_SendReport extends ServerApi<ApiBugReport> {
4
- constructor();
5
- protected process(request: ExpressRequest, response: ApiResponse, queryParams: {}, body: Request_BugReport): Promise<import("./_imports.js").TicketDetails[]>;
6
- }
7
- declare const _default: ServerApi_SendReport;
8
- export default _default;
1
+ import { type TypedHandler } from "@intuitionrobotics/thunderstorm/backend";
2
+ import { type ApiBugReport } from "./_imports.js";
3
+ export declare const reportsValidator: {
4
+ subject: import("@intuitionrobotics/ts-common").Validator<any>;
5
+ description: import("@intuitionrobotics/ts-common").Validator<any>;
6
+ reports: import("@intuitionrobotics/ts-common").Validator<{
7
+ [k: string]: unknown;
8
+ }[]>;
9
+ platforms: import("@intuitionrobotics/ts-common").Validator<any[]>;
10
+ };
11
+ export declare const reports: TypedHandler<ApiBugReport>;
9
12
  //# sourceMappingURL=reports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/reports.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAE,KAAK,cAAc,EAAc,SAAS,EAA4B,MAAM,yCAAyC,CAAC;AAC3I,OAAO,EACN,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,MAAM,eAAe,CAAC;AAKvB,cAAM,oBACL,SAAQ,SAAS,CAAC,YAAY,CAAC;;cAgBf,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB;CAMhH;;AAED,wBAA0C"}
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,YAAY,EAAsB,MAAM,yCAAyC,CAAC;AAC1H,OAAO,EAAC,KAAK,YAAY,EAA0C,MAAM,eAAe,CAAC;AAEzF,eAAO,MAAM,gBAAgB;;;;;;;CAQzB,CAAC;AAEL,eAAO,MAAM,OAAO,EAAE,YAAY,CAAC,YAAY,CAM9C,CAAC"}
@@ -1,25 +1,20 @@
1
- import { ApiResponse, HttpMethod, ServerApi, dispatch_queryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
1
+ import { dispatch_queryRequestInfo } from "@intuitionrobotics/thunderstorm/backend";
2
2
  import { BugReportModule } from "./_imports.js";
3
3
  import { validateArray, validateObjectValues, validateString } from "@intuitionrobotics/ts-common";
4
- // import {AccountModule} from "@intuitionrobotics/user-account/backend";
5
- class ServerApi_SendReport extends ServerApi {
6
- constructor() {
7
- super(HttpMethod.POST);
8
- this.setBodyValidator({
9
- subject: validateString(),
10
- description: validateString(),
11
- reports: validateArray(validateObjectValues({
12
- name: validateString(),
13
- log: validateArray(validateString())
14
- })),
15
- platforms: validateArray(validateString())
16
- });
17
- }
18
- async process(request, response, queryParams, body) {
19
- const resp = await dispatch_queryRequestInfo.dispatchModuleAsync(request);
20
- const userId = resp.find(e => e.key === 'AccountsModule')?.data?.email || resp.find(e => e.key === 'RemoteProxy')?.data;
21
- return await BugReportModule.saveFile(body, userId);
22
- }
23
- }
24
- export default new ServerApi_SendReport();
4
+ export const reportsValidator = {
5
+ subject: validateString(),
6
+ description: validateString(),
7
+ reports: validateArray(validateObjectValues({
8
+ name: validateString(),
9
+ log: validateArray(validateString())
10
+ })),
11
+ platforms: validateArray(validateString())
12
+ };
13
+ export const reports = async (req) => {
14
+ const request = req;
15
+ const body = req.body;
16
+ const resp = await dispatch_queryRequestInfo.dispatchModuleAsync(request);
17
+ const userId = resp.find(e => e.key === 'AccountsModule')?.data?.email || resp.find(e => e.key === 'RemoteProxy')?.data;
18
+ return await BugReportModule.saveFile(body, userId);
19
+ };
25
20
  //# sourceMappingURL=reports.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/reports.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAuB,UAAU,EAAE,SAAS,EAAE,yBAAyB,EAAC,MAAM,yCAAyC,CAAC;AAC3I,OAAO,EAEN,eAAe,EAEf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAC,MAAM,8BAA8B,CAAC;AAEjG,yEAAyE;AAEzE,MAAM,oBACL,SAAQ,SAAuB;IAE/B;QACC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,gBAAgB,CACpB;YACC,OAAO,EAAE,cAAc,EAAE;YACzB,WAAW,EAAE,cAAc,EAAE;YAC7B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC;gBAC3C,IAAI,EAAE,cAAc,EAAE;gBACtB,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC;aAC7B,CAAC,CAAC;YACV,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,OAAuB,EAAE,QAAqB,EAAE,WAAe,EAAE,IAAuB;QAC/G,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAuB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,IAAI,CAAC;QAE5I,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACD;AAED,eAAe,IAAI,oBAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../../../../src/main/app-backend/api/v1/bug-reports/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,yBAAyB,EAAyC,MAAM,yCAAyC,CAAC;AAC1H,OAAO,EAAoB,eAAe,EAAyB,MAAM,eAAe,CAAC;AACzF,OAAO,EAAC,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAC,MAAM,8BAA8B,CAAC;AACjG,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO,EAAE,cAAc,EAAE;IACzB,WAAW,EAAE,cAAc,EAAE;IAC7B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC;QAC3C,IAAI,EAAE,cAAc,EAAE;QACtB,GAAG,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC;KAC7B,CAAC,CAAC;IACV,SAAS,EAAE,aAAa,CAAC,cAAc,EAAE,CAAC;CAC1C,CAAC;AAEL,MAAM,CAAC,MAAM,OAAO,GAA+B,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,GAAqB,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAyB,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAuB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,EAAE,IAAI,CAAC;IAC5I,OAAO,MAAM,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC,CAAC"}