@loaders.gl/xml 3.4.0-alpha.1 → 3.4.0-alpha.3

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 (73) hide show
  1. package/dist/dist.min.js +419 -196
  2. package/dist/es5/html-loader.js +57 -0
  3. package/dist/es5/html-loader.js.map +1 -0
  4. package/dist/es5/index.js +33 -0
  5. package/dist/es5/index.js.map +1 -1
  6. package/dist/es5/lib/{parse-xml.js → parsers/parse-xml.js} +7 -7
  7. package/dist/es5/lib/parsers/parse-xml.js.map +1 -0
  8. package/dist/es5/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +10 -15
  9. package/dist/es5/lib/parsers/streaming-xml-parser.js.map +1 -0
  10. package/dist/es5/lib/xml-utils/uncapitalize.js +32 -0
  11. package/dist/es5/lib/xml-utils/uncapitalize.js.map +1 -0
  12. package/dist/es5/lib/xml-utils/xml-utils.js +23 -0
  13. package/dist/es5/lib/xml-utils/xml-utils.js.map +1 -0
  14. package/dist/es5/sax-ts/sax.js +1 -18
  15. package/dist/es5/sax-ts/sax.js.map +1 -1
  16. package/dist/es5/xml-loader.js +44 -12
  17. package/dist/es5/xml-loader.js.map +1 -1
  18. package/dist/esm/bundle.js +0 -1
  19. package/dist/esm/bundle.js.map +1 -1
  20. package/dist/esm/html-loader.js +27 -0
  21. package/dist/esm/html-loader.js.map +1 -0
  22. package/dist/esm/index.js +3 -3
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/lib/parsers/parse-xml.js +22 -0
  25. package/dist/esm/lib/parsers/parse-xml.js.map +1 -0
  26. package/dist/esm/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +3 -8
  27. package/dist/esm/lib/parsers/streaming-xml-parser.js.map +1 -0
  28. package/dist/esm/lib/xml-utils/uncapitalize.js +17 -0
  29. package/dist/esm/lib/xml-utils/uncapitalize.js.map +1 -0
  30. package/dist/esm/lib/xml-utils/xml-utils.js +14 -0
  31. package/dist/esm/lib/xml-utils/xml-utils.js.map +1 -0
  32. package/dist/esm/sax-ts/sax.js +1 -19
  33. package/dist/esm/sax-ts/sax.js.map +1 -1
  34. package/dist/esm/xml-loader.js +38 -6
  35. package/dist/esm/xml-loader.js.map +1 -1
  36. package/dist/html-loader.d.ts +11 -0
  37. package/dist/html-loader.d.ts.map +1 -0
  38. package/dist/html-loader.js +40 -0
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +11 -1
  42. package/dist/lib/parsers/parse-xml.d.ts +12 -0
  43. package/dist/lib/parsers/parse-xml.d.ts.map +1 -0
  44. package/dist/lib/{parse-xml.js → parsers/parse-xml.js} +7 -8
  45. package/dist/lib/{parser/xml-parser.d.ts → parsers/streaming-xml-parser.d.ts} +6 -2
  46. package/dist/lib/parsers/streaming-xml-parser.d.ts.map +1 -0
  47. package/dist/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +6 -6
  48. package/dist/lib/xml-utils/uncapitalize.d.ts +13 -0
  49. package/dist/lib/xml-utils/uncapitalize.d.ts.map +1 -0
  50. package/dist/lib/xml-utils/uncapitalize.js +32 -0
  51. package/dist/lib/xml-utils/xml-utils.d.ts +11 -0
  52. package/dist/lib/xml-utils/xml-utils.d.ts.map +1 -0
  53. package/dist/lib/xml-utils/xml-utils.js +30 -0
  54. package/dist/sax-ts/sax.js +1 -1
  55. package/dist/xml-loader.d.ts +21 -3
  56. package/dist/xml-loader.d.ts.map +1 -1
  57. package/dist/xml-loader.js +41 -5
  58. package/package.json +5 -5
  59. package/src/html-loader.ts +46 -0
  60. package/src/index.ts +16 -0
  61. package/src/lib/{parse-xml.ts → parsers/parse-xml.ts} +9 -6
  62. package/src/lib/{parser/xml-parser.ts → parsers/streaming-xml-parser.ts} +5 -3
  63. package/src/lib/xml-utils/uncapitalize.ts +31 -0
  64. package/src/lib/xml-utils/xml-utils.ts +27 -0
  65. package/src/xml-loader.ts +63 -6
  66. package/dist/es5/lib/parse-xml.js.map +0 -1
  67. package/dist/es5/lib/parser/xml-parser.js.map +0 -1
  68. package/dist/esm/lib/parse-xml.js +0 -24
  69. package/dist/esm/lib/parse-xml.js.map +0 -1
  70. package/dist/esm/lib/parser/xml-parser.js.map +0 -1
  71. package/dist/lib/parse-xml.d.ts +0 -9
  72. package/dist/lib/parse-xml.d.ts.map +0 -1
  73. package/dist/lib/parser/xml-parser.d.ts.map +0 -1
package/src/xml-loader.ts CHANGED
@@ -1,17 +1,30 @@
1
1
  import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
2
2
  import type {SAXParserOptions} from './sax-ts/sax';
3
- import {parseXML} from './lib/parse-xml';
3
+ import {fastParseXML, FastXMLParserOptions} from './lib/parsers/parse-xml';
4
+ import {uncapitalizeKeys} from './lib/xml-utils/uncapitalize';
4
5
 
5
6
  // __VERSION__ is injected by babel-plugin-version-inline
6
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
7
8
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
8
9
 
9
10
  export type XMLLoaderOptions = LoaderOptions & {
10
- xml?: SAXParserOptions;
11
+ xml?: {
12
+ // TODO - type this harder
13
+ parser?: 'fast-xml-parser' | string;
14
+ /** XML is typically PascalCase, JavaScript prefects camelCase */
15
+ uncapitalizeKeys?: boolean;
16
+ removeNSPrefix?: boolean;
17
+ textNodeName?: string;
18
+ arrayPaths?: string[];
19
+ };
20
+ /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */
21
+ _fastXML?: FastXMLParserOptions;
22
+ /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */
23
+ _sax?: SAXParserOptions;
11
24
  };
12
25
 
13
26
  /**
14
- * Worker loader for the OBJ geometry format
27
+ * Loader for XML files
15
28
  */
16
29
  export const XMLLoader = {
17
30
  name: 'XML',
@@ -23,11 +36,17 @@ export const XMLLoader = {
23
36
  mimeTypes: ['application/xml', 'text/xml'],
24
37
  testText: testXMLFile,
25
38
  options: {
26
- xml: {}
39
+ xml: {
40
+ parser: 'fast-xml-parser',
41
+ uncapitalizeKeys: false,
42
+ removeNSPrefix: false,
43
+ textNodeName: 'value',
44
+ arrayPaths: []
45
+ }
27
46
  },
28
47
  parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>
29
- parseXML(new TextDecoder().decode(arrayBuffer), options),
30
- parseTextSync: (text: string, options?: XMLLoaderOptions) => parseXML(text, options)
48
+ parseTextSync(new TextDecoder().decode(arrayBuffer), options),
49
+ parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)
31
50
  };
32
51
 
33
52
  function testXMLFile(text: string): boolean {
@@ -35,4 +54,42 @@ function testXMLFile(text: string): boolean {
35
54
  return text.startsWith('<?xml');
36
55
  }
37
56
 
57
+ function parseTextSync(text: string, options?: XMLLoaderOptions): any {
58
+ const xmlOptions: Required<XMLLoaderOptions['xml']> = {...XMLLoader.options.xml, ...options?.xml};
59
+ switch (xmlOptions.parser) {
60
+ case 'fast-xml-parser':
61
+ const fastXMLOptions: FastXMLParserOptions = {
62
+ // Default FastXML options
63
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes
64
+ allowBooleanAttributes: true,
65
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration
66
+ ignoreDeclaration: true,
67
+
68
+ // XMLLoader Options: Map to FastXMLOptions
69
+
70
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix
71
+ removeNSPrefix: xmlOptions.removeNSPrefix,
72
+
73
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename
74
+ textNodeName: xmlOptions.textNodeName,
75
+
76
+ isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {
77
+ const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));
78
+ return array;
79
+ },
80
+
81
+ // Application overrides
82
+ ...options?._fastXML
83
+ };
84
+
85
+ const xml = fastParseXML(text, fastXMLOptions);
86
+
87
+ // Note - could be done with FastXML tag processing
88
+ return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
89
+
90
+ default:
91
+ throw new Error(options?.xml?.parser);
92
+ }
93
+ }
94
+
38
95
  export const _typecheckXMLLoader: LoaderWithParser = XMLLoader;
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-xml.js","names":["parseXML","text","options","parser","FastXMLParser","ignoreAttributes","attributeNamePrefix","xml","parsedXML","parse","parseXMLInBatches","XMLParser","strict","write","close","result"],"sources":["../../../src/lib/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLParser} from '../lib/parser/xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\n\nexport function parseXML(text: string, options): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n // parseAttributeValue: true,\n ...options?.xml\n });\n\n const parsedXML = parser.parse(text);\n\n return parsedXML;\n}\n\n/**\n * @todo Build a streaming XML parser based on sax-js\n * @param text\n * @param options\n * @returns\n */\nexport function parseXMLInBatches(text: string, options): any {\n const parser = new XMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":";;;;;;;;;AAEA;AACA;AAA2D;AAAA;AAEpD,SAASA,QAAQ,CAACC,IAAY,EAAEC,OAAO,EAAO;EACnD,IAAMC,MAAM,GAAG,IAAIC,wBAAa;IAC9BC,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE;EAAE,GAEpBJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,GAAG,EACf;EAEF,IAAMC,SAAS,GAAGL,MAAM,CAACM,KAAK,CAACR,IAAI,CAAC;EAEpC,OAAOO,SAAS;AAClB;;AAQO,SAASE,iBAAiB,CAACT,IAAY,EAAEC,OAAO,EAAO;EAC5D,IAAMC,MAAM,GAAG,IAAIQ,oBAAS,iCACvBT,OAAO;IACVU,MAAM,EAAE;EAAI,GACZ;EAEFT,MAAM,CAACU,KAAK,CAACZ,IAAI,CAAC;EAClBE,MAAM,CAACW,KAAK,EAAE;EAEd,OAAOX,MAAM,CAACY,MAAM;AACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-parser.js","names":["XMLParser","options","undefined","Object","freeze","container","key","reset","parser","SAXParser","onready","previousStates","length","currentState","onopentag","name","attributes","isSelfClosing","_openObject","emit","onkey","onclosetag","_closeObject","onopenarray","_openArray","onclosearray","_closeArray","ontext","value","_pushOrSet","onerror","error","onend","result","pop","chunk","write","close","Array","isArray","push","newContainer"],"sources":["../../../../src/lib/parser/xml-parser.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// import ClarinetParser, {ClarinetParserOptions} from '../clarinet/clarinet';\nimport {SAXParser, SAXParserOptions} from '../../sax-ts/sax';\n// import JSONPath from '../jsonpath/jsonpath';\n\n// XMLParser builds a JSON object using the events emitted by the Clarinet parser\n\nexport class XMLParser {\n readonly parser: SAXParser;\n result = undefined;\n previousStates = [];\n currentState = Object.freeze({container: [], key: null});\n // jsonpath: JSONPath = new JSONPath();\n\n constructor(options: SAXParserOptions) {\n this.reset();\n this.parser = new SAXParser({\n onready: () => {\n this.previousStates.length = 0;\n this.currentState.container.length = 0;\n },\n\n onopentag: ({name, attributes, isSelfClosing}) => {\n this._openObject({});\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n },\n\n onkey: (name) => {\n this.currentState.key = name;\n },\n\n onclosetag: () => {\n this._closeObject();\n },\n\n onopenarray: () => {\n this._openArray();\n },\n\n onclosearray: () => {\n this._closeArray();\n },\n\n ontext: (value) => {\n this._pushOrSet(value);\n },\n\n onerror: (error) => {\n throw error;\n },\n\n onend: () => {\n this.result = this.currentState.container.pop();\n },\n\n ...options\n });\n }\n\n reset(): void {\n this.result = undefined;\n this.previousStates = [];\n this.currentState = Object.freeze({container: [], key: null});\n }\n\n write(chunk): void {\n this.parser.write(chunk);\n }\n\n close(): void {\n this.parser.close();\n }\n\n // PRIVATE METHODS\n\n _pushOrSet(value): void {\n const {container, key} = this.currentState;\n if (key !== null) {\n container[key] = value;\n this.currentState.key = null;\n } else if (Array.isArray(container)) {\n container.push(value);\n } else if (container) {\n // debugger\n }\n }\n\n _openArray(newContainer = []): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: true, key: null};\n }\n\n _closeArray(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n\n _openObject(newContainer = {}): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: false, key: null};\n }\n\n _closeObject(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n}\n"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
-
2
-
3
- import { XMLParser } from '../lib/parser/xml-parser';
4
- import { XMLParser as FastXMLParser } from 'fast-xml-parser';
5
- export function parseXML(text, options) {
6
- const parser = new FastXMLParser({
7
- ignoreAttributes: false,
8
- attributeNamePrefix: '',
9
- ...(options === null || options === void 0 ? void 0 : options.xml)
10
- });
11
- const parsedXML = parser.parse(text);
12
- return parsedXML;
13
- }
14
-
15
- export function parseXMLInBatches(text, options) {
16
- const parser = new XMLParser({
17
- ...options,
18
- strict: true
19
- });
20
- parser.write(text);
21
- parser.close();
22
- return parser.result;
23
- }
24
- //# sourceMappingURL=parse-xml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-xml.js","names":["XMLParser","FastXMLParser","parseXML","text","options","parser","ignoreAttributes","attributeNamePrefix","xml","parsedXML","parse","parseXMLInBatches","strict","write","close","result"],"sources":["../../../src/lib/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLParser} from '../lib/parser/xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\n\nexport function parseXML(text: string, options): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n // parseAttributeValue: true,\n ...options?.xml\n });\n\n const parsedXML = parser.parse(text);\n\n return parsedXML;\n}\n\n/**\n * @todo Build a streaming XML parser based on sax-js\n * @param text\n * @param options\n * @returns\n */\nexport function parseXMLInBatches(text: string, options): any {\n const parser = new XMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":";;AAEA,SAAQA,SAAS,QAAO,0BAA0B;AAClD,SAAQA,SAAS,IAAIC,aAAa,QAAO,iBAAiB;AAE1D,OAAO,SAASC,QAAQ,CAACC,IAAY,EAAEC,OAAO,EAAO;EACnD,MAAMC,MAAM,GAAG,IAAIJ,aAAa,CAAC;IAC/BK,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE,EAAE;IAEvB,IAAGH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,GAAG;EACjB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGJ,MAAM,CAACK,KAAK,CAACP,IAAI,CAAC;EAEpC,OAAOM,SAAS;AAClB;;AAQA,OAAO,SAASE,iBAAiB,CAACR,IAAY,EAAEC,OAAO,EAAO;EAC5D,MAAMC,MAAM,GAAG,IAAIL,SAAS,CAAC;IAC3B,GAAGI,OAAO;IACVQ,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,MAAM,CAACQ,KAAK,CAACV,IAAI,CAAC;EAClBE,MAAM,CAACS,KAAK,EAAE;EAEd,OAAOT,MAAM,CAACU,MAAM;AACtB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-parser.js","names":["SAXParser","XMLParser","constructor","options","undefined","Object","freeze","container","key","reset","parser","onready","previousStates","length","currentState","onopentag","name","attributes","isSelfClosing","_openObject","emit","onkey","onclosetag","_closeObject","onopenarray","_openArray","onclosearray","_closeArray","ontext","value","_pushOrSet","onerror","error","onend","result","pop","write","chunk","close","Array","isArray","push","newContainer"],"sources":["../../../../src/lib/parser/xml-parser.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// import ClarinetParser, {ClarinetParserOptions} from '../clarinet/clarinet';\nimport {SAXParser, SAXParserOptions} from '../../sax-ts/sax';\n// import JSONPath from '../jsonpath/jsonpath';\n\n// XMLParser builds a JSON object using the events emitted by the Clarinet parser\n\nexport class XMLParser {\n readonly parser: SAXParser;\n result = undefined;\n previousStates = [];\n currentState = Object.freeze({container: [], key: null});\n // jsonpath: JSONPath = new JSONPath();\n\n constructor(options: SAXParserOptions) {\n this.reset();\n this.parser = new SAXParser({\n onready: () => {\n this.previousStates.length = 0;\n this.currentState.container.length = 0;\n },\n\n onopentag: ({name, attributes, isSelfClosing}) => {\n this._openObject({});\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n },\n\n onkey: (name) => {\n this.currentState.key = name;\n },\n\n onclosetag: () => {\n this._closeObject();\n },\n\n onopenarray: () => {\n this._openArray();\n },\n\n onclosearray: () => {\n this._closeArray();\n },\n\n ontext: (value) => {\n this._pushOrSet(value);\n },\n\n onerror: (error) => {\n throw error;\n },\n\n onend: () => {\n this.result = this.currentState.container.pop();\n },\n\n ...options\n });\n }\n\n reset(): void {\n this.result = undefined;\n this.previousStates = [];\n this.currentState = Object.freeze({container: [], key: null});\n }\n\n write(chunk): void {\n this.parser.write(chunk);\n }\n\n close(): void {\n this.parser.close();\n }\n\n // PRIVATE METHODS\n\n _pushOrSet(value): void {\n const {container, key} = this.currentState;\n if (key !== null) {\n container[key] = value;\n this.currentState.key = null;\n } else if (Array.isArray(container)) {\n container.push(value);\n } else if (container) {\n // debugger\n }\n }\n\n _openArray(newContainer = []): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: true, key: null};\n }\n\n _closeArray(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n\n _openObject(newContainer = {}): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: false, key: null};\n }\n\n _closeObject(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n}\n"],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export declare function parseXML(text: string, options: any): any;
2
- /**
3
- * @todo Build a streaming XML parser based on sax-js
4
- * @param text
5
- * @param options
6
- * @returns
7
- */
8
- export declare function parseXMLInBatches(text: string, options: any): any;
9
- //# sourceMappingURL=parse-xml.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-xml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-xml.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAA,GAAG,GAAG,CAWnD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAA,GAAG,GAAG,CAU5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../../src/lib/parser/xml-parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAK7D,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,MAAM,YAAa;IACnB,cAAc,UAAM;IACpB,YAAY;;;OAA6C;gBAG7C,OAAO,EAAE,gBAAgB;IA+CrC,KAAK,IAAI,IAAI;IAMb,KAAK,CAAC,KAAK,KAAA,GAAG,IAAI;IAIlB,KAAK,IAAI,IAAI;IAMb,UAAU,CAAC,KAAK,KAAA,GAAG,IAAI;IAYvB,UAAU,CAAC,YAAY,UAAK,GAAG,IAAI;IAOnC,WAAW,IAAI,IAAI;IAKnB,WAAW,CAAC,YAAY,KAAK,GAAG,IAAI;IAOpC,YAAY,IAAI,IAAI;CAIrB"}