@dxos/observability 0.6.11 → 0.6.12-main.2d19bf1

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.
Files changed (36) hide show
  1. package/dist/lib/node-esm/chunk-BHETLWXO.mjs +939 -0
  2. package/dist/lib/node-esm/chunk-BHETLWXO.mjs.map +7 -0
  3. package/dist/lib/node-esm/chunk-CMDADTM3.mjs +133 -0
  4. package/dist/lib/node-esm/chunk-CMDADTM3.mjs.map +7 -0
  5. package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs +2 -0
  6. package/dist/lib/node-esm/chunk-YJ4KVBWC.mjs.map +7 -0
  7. package/dist/lib/node-esm/index.mjs +34 -0
  8. package/dist/lib/node-esm/index.mjs.map +7 -0
  9. package/dist/lib/node-esm/meta.json +1 -0
  10. package/dist/lib/node-esm/observability-QJFZLUL4.mjs +8 -0
  11. package/dist/lib/node-esm/observability-QJFZLUL4.mjs.map +7 -0
  12. package/dist/lib/node-esm/otel-YI7HAFOG.mjs +258 -0
  13. package/dist/lib/node-esm/otel-YI7HAFOG.mjs.map +7 -0
  14. package/dist/lib/node-esm/segment/index.mjs +144 -0
  15. package/dist/lib/node-esm/segment/index.mjs.map +7 -0
  16. package/dist/lib/node-esm/sentry/index.mjs +25 -0
  17. package/dist/lib/node-esm/sentry/index.mjs.map +7 -0
  18. package/dist/lib/node-esm/sentry-log-processor-JYJH3AMG.mjs +133 -0
  19. package/dist/lib/node-esm/sentry-log-processor-JYJH3AMG.mjs.map +7 -0
  20. package/dist/types/src/sentry/node.node.test.d.ts +2 -0
  21. package/dist/types/src/sentry/node.node.test.d.ts.map +1 -0
  22. package/dist/types/src/sentry/{node.test.js → node.node.test.js} +8 -15
  23. package/dist/types/src/sentry/node.node.test.js.map +1 -0
  24. package/dist/types/src/sentry/sentry.node.test.d.ts +2 -0
  25. package/dist/types/src/sentry/sentry.node.test.d.ts.map +1 -0
  26. package/dist/types/src/sentry/{sentry.test.js → sentry.node.test.js} +8 -15
  27. package/dist/types/src/sentry/sentry.node.test.js.map +1 -0
  28. package/package.json +21 -18
  29. package/src/sentry/{node.test.ts → node.node.test.ts} +2 -9
  30. package/src/sentry/{sentry.test.ts → sentry.node.test.ts} +2 -7
  31. package/dist/types/src/sentry/node.test.d.ts +0 -2
  32. package/dist/types/src/sentry/node.test.d.ts.map +0 -1
  33. package/dist/types/src/sentry/node.test.js.map +0 -1
  34. package/dist/types/src/sentry/sentry.test.d.ts +0 -2
  35. package/dist/types/src/sentry/sentry.test.d.ts.map +0 -1
  36. package/dist/types/src/sentry/sentry.test.js.map +0 -1
@@ -25,20 +25,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  __setModuleDefault(result, mod);
26
26
  return result;
27
27
  };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
28
  Object.defineProperty(exports, "__esModule", { value: true });
32
- const chai_1 = require("chai");
33
- const wait_for_expect_1 = __importDefault(require("wait-for-expect"));
34
- const test_1 = require("@dxos/test");
29
+ const vitest_1 = require("vitest");
35
30
  const Sentry = __importStar(require("./node"));
36
31
  const testing_1 = require("../testing");
37
32
  const { testkit, sentryTransport } = (0, testing_1.sentryTestkit)();
38
33
  // TODO(burdon): https://example.com?
39
34
  const MOCK_DESTINATION = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
40
- (0, test_1.describe)('Node error reporting', () => {
41
- (0, test_1.beforeAll)(() => {
35
+ (0, vitest_1.describe)('Node error reporting', () => {
36
+ (0, vitest_1.beforeAll)(() => {
42
37
  Sentry.init({
43
38
  destination: MOCK_DESTINATION,
44
39
  release: 'test',
@@ -46,21 +41,19 @@ const MOCK_DESTINATION = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000
46
41
  scrubFilenames: true,
47
42
  });
48
43
  });
49
- (0, test_1.beforeEach)(() => {
44
+ (0, vitest_1.beforeEach)(() => {
50
45
  testkit.reset();
51
46
  });
52
- (0, test_1.test)('should scrub stacktraces', async () => {
47
+ (0, vitest_1.test)('should scrub stacktraces', async () => {
53
48
  var _a, _b;
54
49
  const err = new Error('error to look for');
55
50
  Sentry.captureException(err);
56
- await (0, wait_for_expect_1.default)(() => {
57
- (0, chai_1.expect)(testkit.reports()).to.be.lengthOf(1);
58
- });
51
+ await vitest_1.expect.poll(() => testkit.reports()).toHaveLength(1);
59
52
  const report = testkit.findReport(err);
60
53
  (_b = ((_a = report === null || report === void 0 ? void 0 : report.error) === null || _a === void 0 ? void 0 : _a.stacktrace).frames) === null || _b === void 0 ? void 0 : _b.forEach((frame) => {
61
54
  var _a;
62
- (0, chai_1.expect)((_a = frame.filename) === null || _a === void 0 ? void 0 : _a.includes('/')).to.be.false;
55
+ (0, vitest_1.expect)((_a = frame.filename) === null || _a === void 0 ? void 0 : _a.includes('/')).to.be.false;
63
56
  });
64
57
  });
65
58
  });
66
- //# sourceMappingURL=node.test.js.map
59
+ //# sourceMappingURL=node.node.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.node.test.js","sourceRoot":"","sources":["../../../../src/sentry/node.node.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAGF,mCAAuE;AAEvE,+CAAiC;AACjC,wCAA2C;AAE3C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAa,GAAE,CAAC;AAErD,qCAAqC;AACrC,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AAErF,IAAA,iBAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,eAAe;YAC1B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;;QAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,MAAA,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,UAAyB,CAAA,CAAC,MAAM,0CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;YAClE,IAAA,eAAM,EAAC,MAAA,KAAK,CAAC,QAAQ,0CAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sentry.node.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.node.test.d.ts","sourceRoot":"","sources":["../../../../src/sentry/sentry.node.test.ts"],"names":[],"mappings":""}
@@ -25,36 +25,29 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  __setModuleDefault(result, mod);
26
26
  return result;
27
27
  };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
28
  Object.defineProperty(exports, "__esModule", { value: true });
32
- const chai_1 = require("chai");
33
- const wait_for_expect_1 = __importDefault(require("wait-for-expect"));
34
- const test_1 = require("@dxos/test");
29
+ const vitest_1 = require("vitest");
35
30
  const Sentry = __importStar(require("./node"));
36
31
  const testing_1 = require("../testing");
37
32
  const { testkit, sentryTransport } = (0, testing_1.sentryTestkit)();
38
33
  const MOCK_DESTINATION = 'https://acacaeaccacacacabcaacdacdacadaca@sentry.io/000001';
39
- (0, test_1.describe)('Error reporting', () => {
40
- (0, test_1.beforeAll)(() => {
34
+ (0, vitest_1.describe)('Error reporting', () => {
35
+ (0, vitest_1.beforeAll)(() => {
41
36
  Sentry.init({
42
37
  destination: MOCK_DESTINATION,
43
38
  release: 'test',
44
39
  transport: sentryTransport,
45
40
  });
46
41
  });
47
- (0, test_1.beforeEach)(() => {
42
+ (0, vitest_1.beforeEach)(() => {
48
43
  testkit.reset();
49
44
  });
50
- (0, test_1.test)('should capture errors', async () => {
45
+ (0, vitest_1.test)('should capture errors', async () => {
51
46
  const err = new Error('error to look for');
52
47
  Sentry.captureException(err);
53
- await (0, wait_for_expect_1.default)(() => {
54
- (0, chai_1.expect)(testkit.reports()).to.be.lengthOf(1);
55
- });
48
+ await vitest_1.expect.poll(() => testkit.reports()).toHaveLength(1);
56
49
  const report = testkit.findReport(err);
57
- (0, chai_1.expect)(report).to.exist;
50
+ (0, vitest_1.expect)(report).to.exist;
58
51
  });
59
52
  });
60
- //# sourceMappingURL=sentry.test.js.map
53
+ //# sourceMappingURL=sentry.node.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.node.test.js","sourceRoot":"","sources":["../../../../src/sentry/sentry.node.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,mCAAuE;AAEvE,+CAAiC;AACjC,wCAA2C;AAE3C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAa,GAAE,CAAC;AAErD,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AAErF,IAAA,iBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,kBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,mBAAU,EAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/observability",
3
- "version": "0.6.11",
3
+ "version": "0.6.12-main.2d19bf1",
4
4
  "description": "Provides a common interface for app and platform observability",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -10,21 +10,24 @@
10
10
  ".": {
11
11
  "browser": "./dist/lib/browser/index.mjs",
12
12
  "node": {
13
- "default": "./dist/lib/node/index.cjs"
13
+ "require": "./dist/lib/node/index.cjs",
14
+ "default": "./dist/lib/node-esm/index.mjs"
14
15
  },
15
16
  "types": "./dist/types/src/index.d.ts"
16
17
  },
17
18
  "./segment": {
18
19
  "browser": "./dist/lib/browser/segment/index.mjs",
19
20
  "node": {
20
- "default": "./dist/lib/node/segment/index.cjs"
21
+ "require": "./dist/lib/node/segment/index.cjs",
22
+ "default": "./dist/lib/node-esm/segment/index.mjs"
21
23
  },
22
24
  "types": "./dist/types/src/segment/index.d.ts"
23
25
  },
24
26
  "./sentry": {
25
27
  "browser": "./dist/lib/browser/sentry/index.mjs",
26
28
  "node": {
27
- "default": "./dist/lib/node/sentry/index.cjs"
29
+ "require": "./dist/lib/node/sentry/index.cjs",
30
+ "default": "./dist/lib/node-esm/sentry/index.mjs"
28
31
  },
29
32
  "types": "./dist/types/src/sentry/index.d.ts"
30
33
  }
@@ -72,20 +75,20 @@
72
75
  "js-yaml": "^4.1.0",
73
76
  "localforage": "^1.10.0",
74
77
  "uuid": "^9.0.0",
75
- "@dxos/async": "0.6.11",
76
- "@dxos/client": "0.6.11",
77
- "@dxos/client-services": "0.6.11",
78
- "@dxos/client-protocol": "0.6.11",
79
- "@dxos/context": "0.6.11",
80
- "@dxos/config": "0.6.11",
81
- "@dxos/invariant": "0.6.11",
82
- "@dxos/debug": "0.6.11",
83
- "@dxos/log": "0.6.11",
84
- "@dxos/network-manager": "0.6.11",
85
- "@dxos/protocols": "0.6.11",
86
- "@dxos/tracing": "0.6.11",
87
- "@dxos/util": "0.6.11",
88
- "@dxos/node-std": "0.6.11"
78
+ "@dxos/async": "0.6.12-main.2d19bf1",
79
+ "@dxos/client": "0.6.12-main.2d19bf1",
80
+ "@dxos/client-protocol": "0.6.12-main.2d19bf1",
81
+ "@dxos/config": "0.6.12-main.2d19bf1",
82
+ "@dxos/client-services": "0.6.12-main.2d19bf1",
83
+ "@dxos/context": "0.6.12-main.2d19bf1",
84
+ "@dxos/invariant": "0.6.12-main.2d19bf1",
85
+ "@dxos/debug": "0.6.12-main.2d19bf1",
86
+ "@dxos/log": "0.6.12-main.2d19bf1",
87
+ "@dxos/network-manager": "0.6.12-main.2d19bf1",
88
+ "@dxos/node-std": "0.6.12-main.2d19bf1",
89
+ "@dxos/tracing": "0.6.12-main.2d19bf1",
90
+ "@dxos/protocols": "0.6.12-main.2d19bf1",
91
+ "@dxos/util": "0.6.12-main.2d19bf1"
89
92
  },
90
93
  "devDependencies": {
91
94
  "@sentry/types": "^8.8.0",
@@ -2,13 +2,8 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- // @dxos/test platform=nodejs
6
-
7
5
  import type { Stacktrace } from '@sentry/types';
8
- import { expect } from 'chai';
9
- import waitForExpect from 'wait-for-expect';
10
-
11
- import { beforeAll, beforeEach, describe, test } from '@dxos/test';
6
+ import { beforeAll, beforeEach, describe, expect, test } from 'vitest';
12
7
 
13
8
  import * as Sentry from './node';
14
9
  import { sentryTestkit } from '../testing';
@@ -35,9 +30,7 @@ describe('Node error reporting', () => {
35
30
  test('should scrub stacktraces', async () => {
36
31
  const err = new Error('error to look for');
37
32
  Sentry.captureException(err);
38
- await waitForExpect(() => {
39
- expect(testkit.reports()).to.be.lengthOf(1);
40
- });
33
+ await expect.poll(() => testkit.reports()).toHaveLength(1);
41
34
  const report = testkit.findReport(err);
42
35
  (report?.error?.stacktrace as Stacktrace).frames?.forEach((frame) => {
43
36
  expect(frame.filename?.includes('/')).to.be.false;
@@ -2,10 +2,7 @@
2
2
  // Copyright 2022 DXOS.org
3
3
  //
4
4
 
5
- import { expect } from 'chai';
6
- import waitForExpect from 'wait-for-expect';
7
-
8
- import { beforeAll, beforeEach, describe, test } from '@dxos/test';
5
+ import { beforeAll, beforeEach, describe, expect, test } from 'vitest';
9
6
 
10
7
  import * as Sentry from './node';
11
8
  import { sentryTestkit } from '../testing';
@@ -30,9 +27,7 @@ describe('Error reporting', () => {
30
27
  test('should capture errors', async () => {
31
28
  const err = new Error('error to look for');
32
29
  Sentry.captureException(err);
33
- await waitForExpect(() => {
34
- expect(testkit.reports()).to.be.lengthOf(1);
35
- });
30
+ await expect.poll(() => testkit.reports()).toHaveLength(1);
36
31
  const report = testkit.findReport(err);
37
32
  expect(report).to.exist;
38
33
  });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=node.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.test.d.ts","sourceRoot":"","sources":["../../../../src/sentry/node.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"node.test.js","sourceRoot":"","sources":["../../../../src/sentry/node.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKF,+BAA8B;AAC9B,sEAA4C;AAE5C,qCAAmE;AAEnE,+CAAiC;AACjC,wCAA2C;AAE3C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAa,GAAE,CAAC;AAErD,qCAAqC;AACrC,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AAErF,IAAA,eAAQ,EAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAA,gBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,eAAe;YAC1B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAU,EAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;;QAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,aAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,MAAA,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,0CAAE,UAAyB,CAAA,CAAC,MAAM,0CAAE,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;;YAClE,IAAA,aAAM,EAAC,MAAA,KAAK,CAAC,QAAQ,0CAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sentry.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.test.d.ts","sourceRoot":"","sources":["../../../../src/sentry/sentry.test.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.test.js","sourceRoot":"","sources":["../../../../src/sentry/sentry.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+BAA8B;AAC9B,sEAA4C;AAE5C,qCAAmE;AAEnE,+CAAiC;AACjC,wCAA2C;AAE3C,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,IAAA,uBAAa,GAAE,CAAC;AAErD,MAAM,gBAAgB,GAAG,2DAA2D,CAAC;AAErF,IAAA,eAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAA,gBAAS,EAAC,GAAG,EAAE;QACb,MAAM,CAAC,IAAI,CAAC;YACV,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAA,iBAAU,EAAC,GAAG,EAAE;QACd,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAA,WAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,aAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}