nightingale-browser-console 14.2.0 → 15.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/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,33 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [15.0.0](https://github.com/christophehurpeau/nightingale/compare/v14.2.1...v15.0.0) (2023-12-25)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### ⚠ BREAKING CHANGES
|
|
10
|
+
|
|
11
|
+
* update babel and drop browser modern version
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* update babel and drop browser modern version ([5c76abc](https://github.com/christophehurpeau/nightingale/commit/5c76abc8bfb595a617fc4c8b795dae7e674ea664))
|
|
16
|
+
|
|
17
|
+
Version bump for dependency: nightingale-browser-console-formatter
|
|
18
|
+
Version bump for dependency: nightingale-console-output
|
|
19
|
+
Version bump for dependency: nightingale-debug
|
|
20
|
+
Version bump for dependency: nightingale-types
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [14.2.1](https://github.com/christophehurpeau/nightingale/compare/v14.2.0...v14.2.1) (2023-11-05)
|
|
24
|
+
|
|
25
|
+
Note: no notable changes
|
|
26
|
+
|
|
27
|
+
Version bump for dependency: nightingale-browser-console-formatter
|
|
28
|
+
Version bump for dependency: nightingale-console-output
|
|
29
|
+
Version bump for dependency: nightingale-debug
|
|
30
|
+
Version bump for dependency: nightingale-types
|
|
31
|
+
|
|
32
|
+
|
|
6
33
|
## [14.2.0](https://github.com/christophehurpeau/nightingale/compare/v14.1.0...v14.2.0) (2023-11-04)
|
|
7
34
|
|
|
8
35
|
Note: no notable changes
|
package/dist/index-browser.es.js
CHANGED
|
@@ -4,52 +4,43 @@ import { createFindDebugLevel } from 'nightingale-debug';
|
|
|
4
4
|
|
|
5
5
|
function getDebugString() {
|
|
6
6
|
var _document$location;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const querystring = (_document$location = document.location) == null ? void 0 : _document$location.search;
|
|
8
|
+
const debugFromLocalStorage = window.localStorage && localStorage.getItem('debug') || '';
|
|
9
9
|
if (!querystring) {
|
|
10
10
|
return debugFromLocalStorage;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
// https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param
|
|
14
|
-
|
|
14
|
+
const debugFromQueryString = decodeURI(querystring.replace(
|
|
15
15
|
// eslint-disable-next-line prefer-regex-literals
|
|
16
16
|
new RegExp('^(?:.*[&\\?]DEBUG(?:\\=([^&]*))?)?.*$', 'i'), '$1'));
|
|
17
|
-
return (debugFromLocalStorage ? debugFromLocalStorage
|
|
17
|
+
return (debugFromLocalStorage ? `${debugFromLocalStorage},` : '') + debugFromQueryString;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
// debug string can change any time (localStorage), so we need a new object each time.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
};
|
|
24
|
-
var getDefaultTheme = function getDefaultTheme() {
|
|
25
|
-
var configInLocalStorage;
|
|
21
|
+
const findDebugLevel = (minLevel, key) => createFindDebugLevel(getDebugString())(minLevel, key);
|
|
22
|
+
const getDefaultTheme = () => {
|
|
26
23
|
try {
|
|
27
|
-
configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');
|
|
24
|
+
const configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');
|
|
28
25
|
if (configInLocalStorage && configInLocalStorage === 'dark') {
|
|
29
26
|
return configInLocalStorage;
|
|
30
27
|
}
|
|
31
|
-
} catch
|
|
28
|
+
} catch {}
|
|
32
29
|
return 'light';
|
|
33
30
|
};
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
var browserConsoleFormatter = createBrowserConsoleFormatter(theme);
|
|
39
|
-
return function (record) {
|
|
31
|
+
const createHandler = (theme = getDefaultTheme()) => {
|
|
32
|
+
const browserConsoleFormatter = createBrowserConsoleFormatter(theme);
|
|
33
|
+
return record => {
|
|
40
34
|
consoleOutput(browserConsoleFormatter(record), record);
|
|
41
35
|
};
|
|
42
36
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
37
|
+
class BrowserConsoleHandler {
|
|
38
|
+
constructor(minLevel, options = {}) {
|
|
39
|
+
this.minLevel = 0;
|
|
40
|
+
this.isHandling = (level, key) => level >= findDebugLevel(minLevel, key);
|
|
41
|
+
this.handle = createHandler(options.theme);
|
|
46
42
|
}
|
|
47
|
-
|
|
48
|
-
this.isHandling = function (level, key) {
|
|
49
|
-
return level >= findDebugLevel(minLevel, key);
|
|
50
|
-
};
|
|
51
|
-
this.handle = createHandler(options.theme);
|
|
52
|
-
};
|
|
43
|
+
}
|
|
53
44
|
|
|
54
45
|
export { BrowserConsoleHandler };
|
|
55
46
|
//# sourceMappingURL=index-browser.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-browser.es.js","sources":["../src/debug.ts","../src/index.ts"],"sourcesContent":["export function getDebugString(): string {\n const querystring = document.location?.search;\n const debugFromLocalStorage =\n (window.localStorage && localStorage.getItem('debug')) || '';\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals\n new RegExp('^(?:.*[&\\\\?]DEBUG(?:\\\\=([^&]*))?)?.*$', 'i'),\n '$1',\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : '') +\n debugFromQueryString\n );\n}\n","import { createBrowserConsoleFormatter } from 'nightingale-browser-console-formatter';\nimport consoleOutput from 'nightingale-console-output';\nimport { createFindDebugLevel } from 'nightingale-debug';\nimport type {\n Level,\n Handle,\n IsHandling,\n LogRecord,\n Metadata,\n Handler,\n} from 'nightingale-types';\nimport { getDebugString } from './debug';\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = 'dark' | 'light';\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');\n if (configInLocalStorage && configInLocalStorage === 'dark') {\n return configInLocalStorage;\n }\n } catch {}\n return 'light';\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = createBrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n"],"names":["getDebugString","_document$location","querystring","document","location","search","debugFromLocalStorage","window","localStorage","getItem","debugFromQueryString","decodeURI","replace","RegExp","findDebugLevel","minLevel","key","createFindDebugLevel","getDefaultTheme","configInLocalStorage","
|
|
1
|
+
{"version":3,"file":"index-browser.es.js","sources":["../src/debug.ts","../src/index.ts"],"sourcesContent":["export function getDebugString(): string {\n const querystring = document.location?.search;\n const debugFromLocalStorage =\n (window.localStorage && localStorage.getItem('debug')) || '';\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals\n new RegExp('^(?:.*[&\\\\?]DEBUG(?:\\\\=([^&]*))?)?.*$', 'i'),\n '$1',\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : '') +\n debugFromQueryString\n );\n}\n","import { createBrowserConsoleFormatter } from 'nightingale-browser-console-formatter';\nimport consoleOutput from 'nightingale-console-output';\nimport { createFindDebugLevel } from 'nightingale-debug';\nimport type {\n Level,\n Handle,\n IsHandling,\n LogRecord,\n Metadata,\n Handler,\n} from 'nightingale-types';\nimport { getDebugString } from './debug';\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = 'dark' | 'light';\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');\n if (configInLocalStorage && configInLocalStorage === 'dark') {\n return configInLocalStorage;\n }\n } catch {}\n return 'light';\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = createBrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n"],"names":["getDebugString","_document$location","querystring","document","location","search","debugFromLocalStorage","window","localStorage","getItem","debugFromQueryString","decodeURI","replace","RegExp","findDebugLevel","minLevel","key","createFindDebugLevel","getDefaultTheme","configInLocalStorage","createHandler","theme","browserConsoleFormatter","createBrowserConsoleFormatter","record","consoleOutput","BrowserConsoleHandler","constructor","options","isHandling","level","handle"],"mappings":";;;;AAAO,SAASA,cAAcA,GAAW;AAAA,EAAA,IAAAC,kBAAA,CAAA;EACvC,MAAMC,WAAW,GAAAD,CAAAA,kBAAA,GAAGE,QAAQ,CAACC,QAAQ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAjBH,kBAAA,CAAmBI,MAAM,CAAA;AAC7C,EAAA,MAAMC,qBAAqB,GACxBC,MAAM,CAACC,YAAY,IAAIA,YAAY,CAACC,OAAO,CAAC,OAAO,CAAC,IAAK,EAAE,CAAA;EAE9D,IAAI,CAACP,WAAW,EAAE;AAChB,IAAA,OAAOI,qBAAqB,CAAA;AAC9B,GAAA;;AAEA;AACA,EAAA,MAAMI,oBAAoB,GAAGC,SAAS,CACpCT,WAAW,CAACU,OAAO;AACjB;EACA,IAAIC,MAAM,CAAC,uCAAuC,EAAE,GAAG,CAAC,EACxD,IACF,CACF,CAAC,CAAA;EAED,OACE,CAACP,qBAAqB,GAAI,CAAA,EAAEA,qBAAsB,CAAE,CAAA,CAAA,GAAG,EAAE,IACzDI,oBAAoB,CAAA;AAExB;;ACTA;AACA,MAAMI,cAAc,GAAGA,CAACC,QAAe,EAAEC,GAAW,KAClDC,oBAAoB,CAACjB,cAAc,EAAE,CAAC,CAACe,QAAQ,EAAEC,GAAG,CAAC,CAAA;AAIvD,MAAME,eAAe,GAAGA,MAAa;EACnC,IAAI;AACF,IAAA,MAAMC,oBAAoB,GAAGX,YAAY,CAACC,OAAO,CAAC,mBAAmB,CAAC,CAAA;AACtE,IAAA,IAAIU,oBAAoB,IAAIA,oBAAoB,KAAK,MAAM,EAAE;AAC3D,MAAA,OAAOA,oBAAoB,CAAA;AAC7B,KAAA;GACD,CAAC,MAAM,EAAC;AACT,EAAA,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAMC,aAAa,GAAGA,CAACC,KAAY,GAAGH,eAAe,EAAE,KAAa;AAClE,EAAA,MAAMI,uBAAuB,GAAGC,6BAA6B,CAACF,KAAK,CAAC,CAAA;AACpE,EAAA,OAA4BG,MAAoB,IAAK;AACnDC,IAAAA,aAAa,CAACH,uBAAuB,CAACE,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;GACvD,CAAA;AACH,CAAC,CAAA;AAMM,MAAME,qBAAqB,CAAoB;AAOpDC,EAAAA,WAAWA,CAACZ,QAAe,EAAEa,OAAqC,GAAG,EAAE,EAAE;IAAA,IANzEb,CAAAA,QAAQ,GAAU,CAAC,CAAA;AAOjB,IAAA,IAAI,CAACc,UAAU,GAAG,CAACC,KAAY,EAAEd,GAAW,KAC1Cc,KAAK,IAAIhB,cAAc,CAACC,QAAQ,EAAEC,GAAG,CAAC,CAAA;IAExC,IAAI,CAACe,MAAM,GAAGX,aAAa,CAACQ,OAAO,CAACP,KAAK,CAAC,CAAA;AAC5C,GAAA;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nightingale-browser-console",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "15.0.0",
|
|
4
4
|
"description": "Browser console handler for nightingale",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nightingale",
|
|
@@ -35,9 +35,6 @@
|
|
|
35
35
|
".": {
|
|
36
36
|
"types": "./dist/definitions/index.d.ts",
|
|
37
37
|
"browser": {
|
|
38
|
-
"browser:modern": {
|
|
39
|
-
"import": "./dist/index-browsermodern.es.js"
|
|
40
|
-
},
|
|
41
38
|
"import": "./dist/index-browser.es.js"
|
|
42
39
|
}
|
|
43
40
|
}
|
|
@@ -59,10 +56,6 @@
|
|
|
59
56
|
"prettier": "@pob/root/prettier-config",
|
|
60
57
|
"pob": {
|
|
61
58
|
"babelEnvs": [
|
|
62
|
-
{
|
|
63
|
-
"target": "browser",
|
|
64
|
-
"version": "modern"
|
|
65
|
-
},
|
|
66
59
|
{
|
|
67
60
|
"target": "browser"
|
|
68
61
|
}
|
|
@@ -72,15 +65,15 @@
|
|
|
72
65
|
]
|
|
73
66
|
},
|
|
74
67
|
"dependencies": {
|
|
75
|
-
"nightingale-browser-console-formatter": "
|
|
76
|
-
"nightingale-console-output": "
|
|
77
|
-
"nightingale-debug": "
|
|
78
|
-
"nightingale-types": "
|
|
68
|
+
"nightingale-browser-console-formatter": "15.0.0",
|
|
69
|
+
"nightingale-console-output": "15.0.0",
|
|
70
|
+
"nightingale-debug": "15.0.0",
|
|
71
|
+
"nightingale-types": "15.0.0"
|
|
79
72
|
},
|
|
80
73
|
"devDependencies": {
|
|
81
|
-
"@babel/core": "7.23.
|
|
82
|
-
"@babel/preset-env": "7.23.
|
|
83
|
-
"pob-babel": "
|
|
84
|
-
"typescript": "5.
|
|
74
|
+
"@babel/core": "7.23.6",
|
|
75
|
+
"@babel/preset-env": "7.23.6",
|
|
76
|
+
"pob-babel": "38.0.0",
|
|
77
|
+
"typescript": "5.3.3"
|
|
85
78
|
}
|
|
86
79
|
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { createBrowserConsoleFormatter } from 'nightingale-browser-console-formatter';
|
|
2
|
-
import consoleOutput from 'nightingale-console-output';
|
|
3
|
-
import { createFindDebugLevel } from 'nightingale-debug';
|
|
4
|
-
|
|
5
|
-
function getDebugString() {
|
|
6
|
-
const querystring = document.location?.search;
|
|
7
|
-
const debugFromLocalStorage = window.localStorage && localStorage.getItem('debug') || '';
|
|
8
|
-
if (!querystring) {
|
|
9
|
-
return debugFromLocalStorage;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param
|
|
13
|
-
const debugFromQueryString = decodeURI(querystring.replace(
|
|
14
|
-
// eslint-disable-next-line prefer-regex-literals
|
|
15
|
-
new RegExp('^(?:.*[&\\?]DEBUG(?:\\=([^&]*))?)?.*$', 'i'), '$1'));
|
|
16
|
-
return (debugFromLocalStorage ? `${debugFromLocalStorage},` : '') + debugFromQueryString;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// debug string can change any time (localStorage), so we need a new object each time.
|
|
20
|
-
const findDebugLevel = (minLevel, key) => createFindDebugLevel(getDebugString())(minLevel, key);
|
|
21
|
-
const getDefaultTheme = () => {
|
|
22
|
-
try {
|
|
23
|
-
const configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');
|
|
24
|
-
if (configInLocalStorage && configInLocalStorage === 'dark') {
|
|
25
|
-
return configInLocalStorage;
|
|
26
|
-
}
|
|
27
|
-
} catch {}
|
|
28
|
-
return 'light';
|
|
29
|
-
};
|
|
30
|
-
const createHandler = (theme = getDefaultTheme()) => {
|
|
31
|
-
const browserConsoleFormatter = createBrowserConsoleFormatter(theme);
|
|
32
|
-
return record => {
|
|
33
|
-
consoleOutput(browserConsoleFormatter(record), record);
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
class BrowserConsoleHandler {
|
|
37
|
-
minLevel = 0;
|
|
38
|
-
constructor(minLevel, options = {}) {
|
|
39
|
-
this.isHandling = (level, key) => level >= findDebugLevel(minLevel, key);
|
|
40
|
-
this.handle = createHandler(options.theme);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export { BrowserConsoleHandler };
|
|
45
|
-
//# sourceMappingURL=index-browsermodern.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-browsermodern.es.js","sources":["../src/debug.ts","../src/index.ts"],"sourcesContent":["export function getDebugString(): string {\n const querystring = document.location?.search;\n const debugFromLocalStorage =\n (window.localStorage && localStorage.getItem('debug')) || '';\n\n if (!querystring) {\n return debugFromLocalStorage;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/URLUtils/search#Get_the_value_of_a_single_search_param\n const debugFromQueryString = decodeURI(\n querystring.replace(\n // eslint-disable-next-line prefer-regex-literals\n new RegExp('^(?:.*[&\\\\?]DEBUG(?:\\\\=([^&]*))?)?.*$', 'i'),\n '$1',\n ),\n );\n\n return (\n (debugFromLocalStorage ? `${debugFromLocalStorage},` : '') +\n debugFromQueryString\n );\n}\n","import { createBrowserConsoleFormatter } from 'nightingale-browser-console-formatter';\nimport consoleOutput from 'nightingale-console-output';\nimport { createFindDebugLevel } from 'nightingale-debug';\nimport type {\n Level,\n Handle,\n IsHandling,\n LogRecord,\n Metadata,\n Handler,\n} from 'nightingale-types';\nimport { getDebugString } from './debug';\n\n// debug string can change any time (localStorage), so we need a new object each time.\nconst findDebugLevel = (minLevel: Level, key: string): Level =>\n createFindDebugLevel(getDebugString())(minLevel, key);\n\ntype Theme = 'dark' | 'light';\n\nconst getDefaultTheme = (): Theme => {\n try {\n const configInLocalStorage = localStorage.getItem('NIGHTINGALE_THEME');\n if (configInLocalStorage && configInLocalStorage === 'dark') {\n return configInLocalStorage;\n }\n } catch {}\n return 'light';\n};\n\nconst createHandler = (theme: Theme = getDefaultTheme()): Handle => {\n const browserConsoleFormatter = createBrowserConsoleFormatter(theme);\n return <T extends Metadata>(record: LogRecord<T>) => {\n consoleOutput(browserConsoleFormatter(record), record);\n };\n};\n\nexport interface BrowserConsoleHandlerOptions {\n theme?: Theme;\n}\n\nexport class BrowserConsoleHandler implements Handler {\n minLevel: Level = 0;\n\n handle: Handle;\n\n isHandling: IsHandling;\n\n constructor(minLevel: Level, options: BrowserConsoleHandlerOptions = {}) {\n this.isHandling = (level: Level, key: string) =>\n level >= findDebugLevel(minLevel, key);\n\n this.handle = createHandler(options.theme);\n }\n}\n"],"names":["getDebugString","querystring","document","location","search","debugFromLocalStorage","window","localStorage","getItem","debugFromQueryString","decodeURI","replace","RegExp","findDebugLevel","minLevel","key","createFindDebugLevel","getDefaultTheme","configInLocalStorage","createHandler","theme","browserConsoleFormatter","createBrowserConsoleFormatter","record","consoleOutput","BrowserConsoleHandler","constructor","options","isHandling","level","handle"],"mappings":";;;;AAAO,SAASA,cAAcA,GAAW;AACvC,EAAA,MAAMC,WAAW,GAAGC,QAAQ,CAACC,QAAQ,EAAEC,MAAM,CAAA;AAC7C,EAAA,MAAMC,qBAAqB,GACxBC,MAAM,CAACC,YAAY,IAAIA,YAAY,CAACC,OAAO,CAAC,OAAO,CAAC,IAAK,EAAE,CAAA;EAE9D,IAAI,CAACP,WAAW,EAAE;AAChB,IAAA,OAAOI,qBAAqB,CAAA;AAC9B,GAAA;;AAEA;AACA,EAAA,MAAMI,oBAAoB,GAAGC,SAAS,CACpCT,WAAW,CAACU,OAAO;AACjB;EACA,IAAIC,MAAM,CAAC,uCAAuC,EAAE,GAAG,CAAC,EACxD,IACF,CACF,CAAC,CAAA;EAED,OACE,CAACP,qBAAqB,GAAI,CAAA,EAAEA,qBAAsB,CAAE,CAAA,CAAA,GAAG,EAAE,IACzDI,oBAAoB,CAAA;AAExB;;ACTA;AACA,MAAMI,cAAc,GAAGA,CAACC,QAAe,EAAEC,GAAW,KAClDC,oBAAoB,CAAChB,cAAc,EAAE,CAAC,CAACc,QAAQ,EAAEC,GAAG,CAAC,CAAA;AAIvD,MAAME,eAAe,GAAGA,MAAa;EACnC,IAAI;AACF,IAAA,MAAMC,oBAAoB,GAAGX,YAAY,CAACC,OAAO,CAAC,mBAAmB,CAAC,CAAA;AACtE,IAAA,IAAIU,oBAAoB,IAAIA,oBAAoB,KAAK,MAAM,EAAE;AAC3D,MAAA,OAAOA,oBAAoB,CAAA;AAC7B,KAAA;GACD,CAAC,MAAM,EAAC;AACT,EAAA,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,MAAMC,aAAa,GAAGA,CAACC,KAAY,GAAGH,eAAe,EAAE,KAAa;AAClE,EAAA,MAAMI,uBAAuB,GAAGC,6BAA6B,CAACF,KAAK,CAAC,CAAA;AACpE,EAAA,OAA4BG,MAAoB,IAAK;AACnDC,IAAAA,aAAa,CAACH,uBAAuB,CAACE,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;GACvD,CAAA;AACH,CAAC,CAAA;AAMM,MAAME,qBAAqB,CAAoB;AACpDX,EAAAA,QAAQ,GAAU,CAAC,CAAA;AAMnBY,EAAAA,WAAWA,CAACZ,QAAe,EAAEa,OAAqC,GAAG,EAAE,EAAE;AACvE,IAAA,IAAI,CAACC,UAAU,GAAG,CAACC,KAAY,EAAEd,GAAW,KAC1Cc,KAAK,IAAIhB,cAAc,CAACC,QAAQ,EAAEC,GAAG,CAAC,CAAA;IAExC,IAAI,CAACe,MAAM,GAAGX,aAAa,CAACQ,OAAO,CAACP,KAAK,CAAC,CAAA;AAC5C,GAAA;AACF;;;;"}
|