@keymanapp/kmc-kmn 18.0.40-alpha → 18.0.45-alpha

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 (45) hide show
  1. package/build/src/compiler/compiler.d.ts +181 -181
  2. package/build/src/compiler/compiler.js +493 -496
  3. package/build/src/compiler/compiler.js.map +1 -1
  4. package/build/src/compiler/kmn-compiler-messages.d.ts +458 -458
  5. package/build/src/compiler/kmn-compiler-messages.d.ts.map +1 -1
  6. package/build/src/compiler/kmn-compiler-messages.js +459 -462
  7. package/build/src/compiler/kmn-compiler-messages.js.map +1 -1
  8. package/build/src/compiler/osk.d.ts +31 -31
  9. package/build/src/compiler/osk.js +84 -87
  10. package/build/src/compiler/osk.js.map +1 -1
  11. package/build/src/import/kmcmplib/wasm-host.d.ts +2 -2
  12. package/build/src/import/kmcmplib/wasm-host.js +3262 -3265
  13. package/build/src/import/kmcmplib/wasm-host.js.map +1 -1
  14. package/build/src/import/kmcmplib/wasm-host.wasm +0 -0
  15. package/build/src/kmw-compiler/compiler-globals.d.ts +19 -19
  16. package/build/src/kmw-compiler/compiler-globals.js +38 -41
  17. package/build/src/kmw-compiler/compiler-globals.js.map +1 -1
  18. package/build/src/kmw-compiler/constants.d.ts +16 -16
  19. package/build/src/kmw-compiler/constants.js +79 -82
  20. package/build/src/kmw-compiler/constants.js.map +1 -1
  21. package/build/src/kmw-compiler/javascript-strings.d.ts +32 -32
  22. package/build/src/kmw-compiler/javascript-strings.js +852 -855
  23. package/build/src/kmw-compiler/javascript-strings.js.map +1 -1
  24. package/build/src/kmw-compiler/keymanweb-key-codes.d.ts +22 -22
  25. package/build/src/kmw-compiler/keymanweb-key-codes.js +819 -822
  26. package/build/src/kmw-compiler/keymanweb-key-codes.js.map +1 -1
  27. package/build/src/kmw-compiler/kmw-compiler-messages.d.ts +30 -30
  28. package/build/src/kmw-compiler/kmw-compiler-messages.js +40 -43
  29. package/build/src/kmw-compiler/kmw-compiler-messages.js.map +1 -1
  30. package/build/src/kmw-compiler/kmw-compiler.d.ts +13 -13
  31. package/build/src/kmw-compiler/kmw-compiler.js +547 -550
  32. package/build/src/kmw-compiler/kmw-compiler.js.map +1 -1
  33. package/build/src/kmw-compiler/util.d.ts +74 -74
  34. package/build/src/kmw-compiler/util.js +247 -250
  35. package/build/src/kmw-compiler/util.js.map +1 -1
  36. package/build/src/kmw-compiler/validate-layout-file.d.ts +8 -8
  37. package/build/src/kmw-compiler/validate-layout-file.js +276 -279
  38. package/build/src/kmw-compiler/validate-layout-file.js.map +1 -1
  39. package/build/src/kmw-compiler/visual-keyboard-compiler.d.ts +2 -2
  40. package/build/src/kmw-compiler/visual-keyboard-compiler.js +119 -122
  41. package/build/src/kmw-compiler/visual-keyboard-compiler.js.map +1 -1
  42. package/build/src/main.d.ts +9 -9
  43. package/build/src/main.js +10 -13
  44. package/build/src/main.js.map +1 -1
  45. package/package.json +5 -5
@@ -1,279 +1,276 @@
1
-
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n=(new Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8528f1d8-5ec7-5e50-bde3-a3c955ca5a2b")}catch(e){}}();
3
- import { TouchLayoutFileReader, TouchLayoutFileWriter } from "@keymanapp/common-types";
4
- import { callbacks, fk, IsKeyboardVersion14OrLater, IsKeyboardVersion15OrLater, IsKeyboardVersion17OrLater } from "./compiler-globals.js";
5
- import { JavaScript_Key } from "./javascript-strings.js";
6
- import { TRequiredKey, CRequiredKeys, CSpecialText, CSpecialText14Map, CSpecialText17Map, CSpecialTextMinVer, CSpecialTextMaxVer } from "./constants.js";
7
- import { KeymanWebTouchStandardKeyNames, KMWAdditionalKeyNames, VKeyNames } from "./keymanweb-key-codes.js";
8
- import { KmwCompilerMessages } from "./kmw-compiler-messages.js";
9
- import * as Osk from '../compiler/osk.js';
10
- ;
11
- function IsValidUnicodeValue(ch) {
12
- return ((ch >= 0x0020) && (ch <= 0x007F)) ||
13
- ((ch >= 0x00A0) && (ch <= 0x10FFFF));
14
- }
15
- var TKeyIdType;
16
- (function (TKeyIdType) {
17
- TKeyIdType[TKeyIdType["Key_Invalid"] = 0] = "Key_Invalid";
18
- TKeyIdType[TKeyIdType["Key_Constant"] = 1] = "Key_Constant";
19
- TKeyIdType[TKeyIdType["Key_Touch"] = 2] = "Key_Touch";
20
- TKeyIdType[TKeyIdType["Key_Unicode"] = 3] = "Key_Unicode";
21
- TKeyIdType[TKeyIdType["Key_Unicode_Multi"] = 4] = "Key_Unicode_Multi";
22
- })(TKeyIdType || (TKeyIdType = {}));
23
- ; // I4142
24
- function GetKeyIdUnicodeType(value) {
25
- let values = value.split('_');
26
- for (let v of values) {
27
- if (!IsValidUnicodeValue(parseInt(v, 16))) {
28
- return TKeyIdType.Key_Invalid;
29
- }
30
- }
31
- if (values.length > 1) {
32
- return TKeyIdType.Key_Unicode_Multi;
33
- }
34
- return TKeyIdType.Key_Unicode;
35
- }
36
- function KeyIdType(FId) {
37
- FId = FId.toUpperCase();
38
- switch (FId.charAt(0)) {
39
- case 'T':
40
- return TKeyIdType.Key_Touch;
41
- case 'U':
42
- if (FId.startsWith('U_')) {
43
- return GetKeyIdUnicodeType(FId.substring(2));
44
- }
45
- default:
46
- // Note: can't use indexOf because some VKeyNames are mixed case, e.g. K_oE2
47
- if (VKeyNames.find(key => key.toUpperCase() == FId)) {
48
- return TKeyIdType.Key_Constant;
49
- }
50
- if (KeymanWebTouchStandardKeyNames.indexOf(FId) >= 0) {
51
- return TKeyIdType.Key_Constant;
52
- }
53
- if (KMWAdditionalKeyNames.indexOf(FId) >= 0) {
54
- return TKeyIdType.Key_Constant;
55
- }
56
- }
57
- return TKeyIdType.Key_Invalid;
58
- }
59
- function CheckKey(platformId, FPlatform, layer, FId, FText, FNextLayer, FKeyType, FRequiredKeys, FDictionary) {
60
- //
61
- // Coerce missing ID and Text to empty strings for additional tests
62
- //
63
- FId = FId ?? '';
64
- FText = FText ?? '';
65
- //
66
- // Check that each touch layer has K_LOPT, [K_ROPT,] K_BKSP, K_ENTER
67
- //
68
- for (let key of CRequiredKeys) {
69
- if (TRequiredKey[key].toLowerCase() == FId.toLowerCase()) {
70
- if (FRequiredKeys.indexOf(key) < 0) {
71
- FRequiredKeys.push(key);
72
- }
73
- break;
74
- }
75
- }
76
- //
77
- // Check that each layer referenced exists
78
- //
79
- if (typeof FNextLayer == 'string' && FNextLayer.length > 0) {
80
- if (FPlatform.layer.find(l => l.id.toLowerCase() == FNextLayer.toLowerCase()) == undefined) {
81
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutMissingLayer({
82
- keyId: FId,
83
- layerId: layer.id,
84
- nextLayer: FNextLayer,
85
- platformName: platformId
86
- }));
87
- }
88
- }
89
- //
90
- // Check that the key has a valid id // I4142
91
- //
92
- if (FId.trim() == '') {
93
- if (!([9 /* TouchLayout.TouchLayoutKeySp.blank */, 10 /* TouchLayout.TouchLayoutKeySp.spacer */].includes(FKeyType))) {
94
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutUnidentifiedKey({ layerId: layer.id }));
95
- }
96
- return true;
97
- }
98
- let FValid = KeyIdType(FId);
99
- if (FValid == TKeyIdType.Key_Invalid) {
100
- callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutInvalidIdentifier({ keyId: FId, platformName: platformId, layerId: layer.id }));
101
- return false;
102
- }
103
- else if (FValid == TKeyIdType.Key_Unicode_Multi && !IsKeyboardVersion15OrLater()) {
104
- callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutIdentifierRequires15({ keyId: FId, platformName: platformId, layerId: layer.id }));
105
- return false;
106
- }
107
- //
108
- // Check that each custom key code has at least *a* rule associated with it
109
- //
110
- if (FValid == TKeyIdType.Key_Touch && FNextLayer == '' && [0 /* TouchLayout.TouchLayoutKeySp.normal */, 8 /* TouchLayout.TouchLayoutKeySp.deadkey */].includes(FKeyType)) {
111
- // Search for the key in the key dictionary - ignore K_LOPT, K_ROPT...
112
- if (FDictionary.indexOf(FId) < 0) {
113
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutCustomKeyNotDefined({ keyId: FId, platformName: platformId, layerId: layer.id }));
114
- }
115
- }
116
- //
117
- // Check that if the key has a *special* label, it is available in the target version
118
- //
119
- if (FText.startsWith('*') && FText.endsWith('*') && FText.length > 2) {
120
- // Keyman versions before 14 do not support '*special*' labels on non-special keys.
121
- // ZWNJ use, however, is safe because it will be transformed in function
122
- // TransformSpecialKeys14 to '<|>', which does not require the custom OSK font.
123
- const mapVersion = Math.max(Math.min(fk.fileVersion, CSpecialTextMaxVer), CSpecialTextMinVer);
124
- const specialText = CSpecialText.get(mapVersion);
125
- if (specialText.includes(FText) &&
126
- !IsKeyboardVersion14OrLater() &&
127
- !([1 /* TouchLayout.TouchLayoutKeySp.special */, 2 /* TouchLayout.TouchLayoutKeySp.specialActive */].includes(FKeyType))) {
128
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutSpecialLabelOnNormalKey({
129
- keyId: FId,
130
- platformName: platformId,
131
- layerId: layer.id,
132
- label: FText
133
- }));
134
- }
135
- }
136
- return true;
137
- }
138
- function CheckDictionaryKeyValidity(fk, FDictionary) {
139
- // TODO: O(eeek) performance here
140
- for (let i = 0; i < FDictionary.length; i++) {
141
- if (FDictionary[i] == '') {
142
- continue;
143
- }
144
- if ([TKeyIdType.Key_Invalid, TKeyIdType.Key_Constant].includes(KeyIdType(FDictionary[i]))) {
145
- for (let fgp of fk.groups) {
146
- if (fgp.fUsingKeys) {
147
- for (let fkp of fgp.keys) {
148
- if (JavaScript_Key(fkp, fk.isMnemonic) == i + 256) {
149
- callbacks.reportMessage(KmwCompilerMessages.Error_InvalidKeyCode({ keyId: FDictionary[i] }));
150
- }
151
- }
152
- }
153
- }
154
- }
155
- }
156
- }
157
- function TransformSpecialKeys14(FDebug, sLayoutFile) {
158
- // Rewrite Special key labels that are only supported in Keyman 14+
159
- // This code is a little ugly but effective.
160
- if (!IsKeyboardVersion14OrLater()) {
161
- for (let i = 0; i < CSpecialText14Map.length; i++) {
162
- // Assumes the JSON output format will not change
163
- if (FDebug) {
164
- sLayoutFile = sLayoutFile.replaceAll('"text": "' + CSpecialText14Map[i][0] + '"', '"text": this._v>13 ? "' + CSpecialText14Map[i][0] + '" : "' + CSpecialText14Map[i][1] + '"');
165
- }
166
- else {
167
- sLayoutFile = sLayoutFile.replaceAll('"text":"' + CSpecialText14Map[i][0] + '"', '"text":this._v>13?"' + CSpecialText14Map[i][0] + '":"' + CSpecialText14Map[i][1] + '"');
168
- }
169
- }
170
- }
171
- return sLayoutFile;
172
- }
173
- function TransformSpecialKeys17(FDebug, sLayoutFile) {
174
- // Rewrite Special key labels that are only supported in Keyman 17+
175
- // This code is a little ugly but effective.
176
- if (!IsKeyboardVersion17OrLater()) {
177
- for (let i = 0; i < CSpecialText17Map.length; i++) {
178
- // Assumes the JSON output format will not change
179
- if (FDebug) {
180
- sLayoutFile = sLayoutFile.replaceAll('"text": "' + CSpecialText17Map[i][0] + '"', '"text": this._v>16 ? "' + CSpecialText17Map[i][0] + '" : "' + CSpecialText17Map[i][1] + '"');
181
- }
182
- else {
183
- sLayoutFile = sLayoutFile.replaceAll('"text":"' + CSpecialText17Map[i][0] + '"', '"text":this._v>16?"' + CSpecialText17Map[i][0] + '":"' + CSpecialText17Map[i][1] + '"');
184
- }
185
- }
186
- }
187
- return sLayoutFile;
188
- }
189
- export function ValidateLayoutFile(fk, FDebug, sLayoutFile, sVKDictionary, displayMap) {
190
- let FDictionary = sVKDictionary.split(/\s+/);
191
- CheckDictionaryKeyValidity(fk, FDictionary); // I4142
192
- let reader = new TouchLayoutFileReader();
193
- let data;
194
- try {
195
- if (!callbacks.fs.existsSync(sLayoutFile)) {
196
- callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutFileDoesNotExist({ filename: sLayoutFile }));
197
- return null;
198
- }
199
- data = reader.read(callbacks.loadFile(sLayoutFile));
200
- if (!data) {
201
- throw new Error('Unknown error reading touch layout file');
202
- }
203
- }
204
- catch (e) {
205
- callbacks.reportMessage(KmwCompilerMessages.Error_InvalidTouchLayoutFileFormat({ msg: (e ?? 'Unspecified error').toString() }));
206
- return null;
207
- }
208
- let hasWarnedOfGestureUseDownlevel = false;
209
- const warnGesturesIfNeeded = function (keyId) {
210
- if (!hasWarnedOfGestureUseDownlevel && !IsKeyboardVersion17OrLater()) {
211
- hasWarnedOfGestureUseDownlevel = true;
212
- callbacks.reportMessage(KmwCompilerMessages.Hint_TouchLayoutUsesUnsupportedGesturesDownlevel({ keyId }));
213
- }
214
- };
215
- let result = true;
216
- let FTouchLayoutFont = ''; // I4872
217
- let pid;
218
- for (pid in data) {
219
- let platform = data[pid];
220
- // Test that the font matches on all platforms // I4872
221
- if (FTouchLayoutFont == '') {
222
- FTouchLayoutFont = platform.font?.toLowerCase() ?? '';
223
- }
224
- else if ((platform.font?.toLowerCase() ?? '') != FTouchLayoutFont) {
225
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutFontShouldBeSameForAllPlatforms());
226
- // TODO: why support multiple font values if it has to be the same across all platforms?!
227
- }
228
- // Test that all required keys are present
229
- for (let layer of platform.layer) {
230
- let FRequiredKeys = [];
231
- for (let row of layer.row) {
232
- for (let key of row.key) {
233
- result = CheckKey(pid, platform, layer, key.id, key.text, key.nextlayer, key.sp, FRequiredKeys, FDictionary) && result; // I4119
234
- if (key.sk) {
235
- for (let subkey of key.sk) {
236
- result = CheckKey(pid, platform, layer, subkey.id, subkey.text, subkey.nextlayer, subkey.sp, FRequiredKeys, FDictionary) && result;
237
- }
238
- }
239
- let direction;
240
- if (key.flick) {
241
- for (direction in key.flick) {
242
- warnGesturesIfNeeded(key.id);
243
- result = CheckKey(pid, platform, layer, key.flick[direction].id, key.flick[direction].text, key.flick[direction].nextlayer, key.flick[direction].sp, FRequiredKeys, FDictionary) && result;
244
- }
245
- }
246
- if (key.multitap) {
247
- for (let subkey of key.multitap) {
248
- warnGesturesIfNeeded(key.id);
249
- result = CheckKey(pid, platform, layer, subkey.id, subkey.text, subkey.nextlayer, subkey.sp, FRequiredKeys, FDictionary) && result;
250
- }
251
- }
252
- }
253
- }
254
- if (FRequiredKeys.length != CRequiredKeys.length) {
255
- callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutMissingRequiredKeys({
256
- layerId: layer.id,
257
- platformName: pid,
258
- missingKeys: CRequiredKeys.filter(x => !FRequiredKeys.includes(x)).join(', ')
259
- }));
260
- }
261
- }
262
- }
263
- // Transform the layout keys with displayMap
264
- if (displayMap) {
265
- Osk.remapTouchLayout(data, displayMap);
266
- }
267
- // If not debugging, then this strips out formatting for a big saving in file size
268
- // This also normalises any values such as Pad or Width which should be strings
269
- let writer = new TouchLayoutFileWriter({ formatted: FDebug });
270
- sLayoutFile = writer.compile(data);
271
- sLayoutFile = TransformSpecialKeys14(FDebug, sLayoutFile);
272
- sLayoutFile = TransformSpecialKeys17(FDebug, sLayoutFile);
273
- return {
274
- output: sLayoutFile,
275
- result
276
- };
277
- }
278
- //# sourceMappingURL=validate-layout-file.js.map
279
- //# debugId=8528f1d8-5ec7-5e50-bde3-a3c955ca5a2b
1
+ import { TouchLayoutFileReader, TouchLayoutFileWriter } from "@keymanapp/common-types";
2
+ import { callbacks, fk, IsKeyboardVersion14OrLater, IsKeyboardVersion15OrLater, IsKeyboardVersion17OrLater } from "./compiler-globals.js";
3
+ import { JavaScript_Key } from "./javascript-strings.js";
4
+ import { TRequiredKey, CRequiredKeys, CSpecialText, CSpecialText14Map, CSpecialText17Map, CSpecialTextMinVer, CSpecialTextMaxVer } from "./constants.js";
5
+ import { KeymanWebTouchStandardKeyNames, KMWAdditionalKeyNames, VKeyNames } from "./keymanweb-key-codes.js";
6
+ import { KmwCompilerMessages } from "./kmw-compiler-messages.js";
7
+ import * as Osk from '../compiler/osk.js';
8
+ ;
9
+ function IsValidUnicodeValue(ch) {
10
+ return ((ch >= 0x0020) && (ch <= 0x007F)) ||
11
+ ((ch >= 0x00A0) && (ch <= 0x10FFFF));
12
+ }
13
+ var TKeyIdType;
14
+ (function (TKeyIdType) {
15
+ TKeyIdType[TKeyIdType["Key_Invalid"] = 0] = "Key_Invalid";
16
+ TKeyIdType[TKeyIdType["Key_Constant"] = 1] = "Key_Constant";
17
+ TKeyIdType[TKeyIdType["Key_Touch"] = 2] = "Key_Touch";
18
+ TKeyIdType[TKeyIdType["Key_Unicode"] = 3] = "Key_Unicode";
19
+ TKeyIdType[TKeyIdType["Key_Unicode_Multi"] = 4] = "Key_Unicode_Multi";
20
+ })(TKeyIdType || (TKeyIdType = {}));
21
+ ; // I4142
22
+ function GetKeyIdUnicodeType(value) {
23
+ let values = value.split('_');
24
+ for (let v of values) {
25
+ if (!IsValidUnicodeValue(parseInt(v, 16))) {
26
+ return TKeyIdType.Key_Invalid;
27
+ }
28
+ }
29
+ if (values.length > 1) {
30
+ return TKeyIdType.Key_Unicode_Multi;
31
+ }
32
+ return TKeyIdType.Key_Unicode;
33
+ }
34
+ function KeyIdType(FId) {
35
+ FId = FId.toUpperCase();
36
+ switch (FId.charAt(0)) {
37
+ case 'T':
38
+ return TKeyIdType.Key_Touch;
39
+ case 'U':
40
+ if (FId.startsWith('U_')) {
41
+ return GetKeyIdUnicodeType(FId.substring(2));
42
+ }
43
+ default:
44
+ // Note: can't use indexOf because some VKeyNames are mixed case, e.g. K_oE2
45
+ if (VKeyNames.find(key => key.toUpperCase() == FId)) {
46
+ return TKeyIdType.Key_Constant;
47
+ }
48
+ if (KeymanWebTouchStandardKeyNames.indexOf(FId) >= 0) {
49
+ return TKeyIdType.Key_Constant;
50
+ }
51
+ if (KMWAdditionalKeyNames.indexOf(FId) >= 0) {
52
+ return TKeyIdType.Key_Constant;
53
+ }
54
+ }
55
+ return TKeyIdType.Key_Invalid;
56
+ }
57
+ function CheckKey(platformId, FPlatform, layer, FId, FText, FNextLayer, FKeyType, FRequiredKeys, FDictionary) {
58
+ //
59
+ // Coerce missing ID and Text to empty strings for additional tests
60
+ //
61
+ FId = FId ?? '';
62
+ FText = FText ?? '';
63
+ //
64
+ // Check that each touch layer has K_LOPT, [K_ROPT,] K_BKSP, K_ENTER
65
+ //
66
+ for (let key of CRequiredKeys) {
67
+ if (TRequiredKey[key].toLowerCase() == FId.toLowerCase()) {
68
+ if (FRequiredKeys.indexOf(key) < 0) {
69
+ FRequiredKeys.push(key);
70
+ }
71
+ break;
72
+ }
73
+ }
74
+ //
75
+ // Check that each layer referenced exists
76
+ //
77
+ if (typeof FNextLayer == 'string' && FNextLayer.length > 0) {
78
+ if (FPlatform.layer.find(l => l.id.toLowerCase() == FNextLayer.toLowerCase()) == undefined) {
79
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutMissingLayer({
80
+ keyId: FId,
81
+ layerId: layer.id,
82
+ nextLayer: FNextLayer,
83
+ platformName: platformId
84
+ }));
85
+ }
86
+ }
87
+ //
88
+ // Check that the key has a valid id // I4142
89
+ //
90
+ if (FId.trim() == '') {
91
+ if (!([9 /* TouchLayout.TouchLayoutKeySp.blank */, 10 /* TouchLayout.TouchLayoutKeySp.spacer */].includes(FKeyType))) {
92
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutUnidentifiedKey({ layerId: layer.id }));
93
+ }
94
+ return true;
95
+ }
96
+ let FValid = KeyIdType(FId);
97
+ if (FValid == TKeyIdType.Key_Invalid) {
98
+ callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutInvalidIdentifier({ keyId: FId, platformName: platformId, layerId: layer.id }));
99
+ return false;
100
+ }
101
+ else if (FValid == TKeyIdType.Key_Unicode_Multi && !IsKeyboardVersion15OrLater()) {
102
+ callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutIdentifierRequires15({ keyId: FId, platformName: platformId, layerId: layer.id }));
103
+ return false;
104
+ }
105
+ //
106
+ // Check that each custom key code has at least *a* rule associated with it
107
+ //
108
+ if (FValid == TKeyIdType.Key_Touch && FNextLayer == '' && [0 /* TouchLayout.TouchLayoutKeySp.normal */, 8 /* TouchLayout.TouchLayoutKeySp.deadkey */].includes(FKeyType)) {
109
+ // Search for the key in the key dictionary - ignore K_LOPT, K_ROPT...
110
+ if (FDictionary.indexOf(FId) < 0) {
111
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutCustomKeyNotDefined({ keyId: FId, platformName: platformId, layerId: layer.id }));
112
+ }
113
+ }
114
+ //
115
+ // Check that if the key has a *special* label, it is available in the target version
116
+ //
117
+ if (FText.startsWith('*') && FText.endsWith('*') && FText.length > 2) {
118
+ // Keyman versions before 14 do not support '*special*' labels on non-special keys.
119
+ // ZWNJ use, however, is safe because it will be transformed in function
120
+ // TransformSpecialKeys14 to '<|>', which does not require the custom OSK font.
121
+ const mapVersion = Math.max(Math.min(fk.fileVersion, CSpecialTextMaxVer), CSpecialTextMinVer);
122
+ const specialText = CSpecialText.get(mapVersion);
123
+ if (specialText.includes(FText) &&
124
+ !IsKeyboardVersion14OrLater() &&
125
+ !([1 /* TouchLayout.TouchLayoutKeySp.special */, 2 /* TouchLayout.TouchLayoutKeySp.specialActive */].includes(FKeyType))) {
126
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutSpecialLabelOnNormalKey({
127
+ keyId: FId,
128
+ platformName: platformId,
129
+ layerId: layer.id,
130
+ label: FText
131
+ }));
132
+ }
133
+ }
134
+ return true;
135
+ }
136
+ function CheckDictionaryKeyValidity(fk, FDictionary) {
137
+ // TODO: O(eeek) performance here
138
+ for (let i = 0; i < FDictionary.length; i++) {
139
+ if (FDictionary[i] == '') {
140
+ continue;
141
+ }
142
+ if ([TKeyIdType.Key_Invalid, TKeyIdType.Key_Constant].includes(KeyIdType(FDictionary[i]))) {
143
+ for (let fgp of fk.groups) {
144
+ if (fgp.fUsingKeys) {
145
+ for (let fkp of fgp.keys) {
146
+ if (JavaScript_Key(fkp, fk.isMnemonic) == i + 256) {
147
+ callbacks.reportMessage(KmwCompilerMessages.Error_InvalidKeyCode({ keyId: FDictionary[i] }));
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ function TransformSpecialKeys14(FDebug, sLayoutFile) {
156
+ // Rewrite Special key labels that are only supported in Keyman 14+
157
+ // This code is a little ugly but effective.
158
+ if (!IsKeyboardVersion14OrLater()) {
159
+ for (let i = 0; i < CSpecialText14Map.length; i++) {
160
+ // Assumes the JSON output format will not change
161
+ if (FDebug) {
162
+ sLayoutFile = sLayoutFile.replaceAll('"text": "' + CSpecialText14Map[i][0] + '"', '"text": this._v>13 ? "' + CSpecialText14Map[i][0] + '" : "' + CSpecialText14Map[i][1] + '"');
163
+ }
164
+ else {
165
+ sLayoutFile = sLayoutFile.replaceAll('"text":"' + CSpecialText14Map[i][0] + '"', '"text":this._v>13?"' + CSpecialText14Map[i][0] + '":"' + CSpecialText14Map[i][1] + '"');
166
+ }
167
+ }
168
+ }
169
+ return sLayoutFile;
170
+ }
171
+ function TransformSpecialKeys17(FDebug, sLayoutFile) {
172
+ // Rewrite Special key labels that are only supported in Keyman 17+
173
+ // This code is a little ugly but effective.
174
+ if (!IsKeyboardVersion17OrLater()) {
175
+ for (let i = 0; i < CSpecialText17Map.length; i++) {
176
+ // Assumes the JSON output format will not change
177
+ if (FDebug) {
178
+ sLayoutFile = sLayoutFile.replaceAll('"text": "' + CSpecialText17Map[i][0] + '"', '"text": this._v>16 ? "' + CSpecialText17Map[i][0] + '" : "' + CSpecialText17Map[i][1] + '"');
179
+ }
180
+ else {
181
+ sLayoutFile = sLayoutFile.replaceAll('"text":"' + CSpecialText17Map[i][0] + '"', '"text":this._v>16?"' + CSpecialText17Map[i][0] + '":"' + CSpecialText17Map[i][1] + '"');
182
+ }
183
+ }
184
+ }
185
+ return sLayoutFile;
186
+ }
187
+ export function ValidateLayoutFile(fk, FDebug, sLayoutFile, sVKDictionary, displayMap) {
188
+ let FDictionary = sVKDictionary.split(/\s+/);
189
+ CheckDictionaryKeyValidity(fk, FDictionary); // I4142
190
+ let reader = new TouchLayoutFileReader();
191
+ let data;
192
+ try {
193
+ if (!callbacks.fs.existsSync(sLayoutFile)) {
194
+ callbacks.reportMessage(KmwCompilerMessages.Error_TouchLayoutFileDoesNotExist({ filename: sLayoutFile }));
195
+ return null;
196
+ }
197
+ data = reader.read(callbacks.loadFile(sLayoutFile));
198
+ if (!data) {
199
+ throw new Error('Unknown error reading touch layout file');
200
+ }
201
+ }
202
+ catch (e) {
203
+ callbacks.reportMessage(KmwCompilerMessages.Error_InvalidTouchLayoutFileFormat({ msg: (e ?? 'Unspecified error').toString() }));
204
+ return null;
205
+ }
206
+ let hasWarnedOfGestureUseDownlevel = false;
207
+ const warnGesturesIfNeeded = function (keyId) {
208
+ if (!hasWarnedOfGestureUseDownlevel && !IsKeyboardVersion17OrLater()) {
209
+ hasWarnedOfGestureUseDownlevel = true;
210
+ callbacks.reportMessage(KmwCompilerMessages.Hint_TouchLayoutUsesUnsupportedGesturesDownlevel({ keyId }));
211
+ }
212
+ };
213
+ let result = true;
214
+ let FTouchLayoutFont = ''; // I4872
215
+ let pid;
216
+ for (pid in data) {
217
+ let platform = data[pid];
218
+ // Test that the font matches on all platforms // I4872
219
+ if (FTouchLayoutFont == '') {
220
+ FTouchLayoutFont = platform.font?.toLowerCase() ?? '';
221
+ }
222
+ else if ((platform.font?.toLowerCase() ?? '') != FTouchLayoutFont) {
223
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutFontShouldBeSameForAllPlatforms());
224
+ // TODO: why support multiple font values if it has to be the same across all platforms?!
225
+ }
226
+ // Test that all required keys are present
227
+ for (let layer of platform.layer) {
228
+ let FRequiredKeys = [];
229
+ for (let row of layer.row) {
230
+ for (let key of row.key) {
231
+ result = CheckKey(pid, platform, layer, key.id, key.text, key.nextlayer, key.sp, FRequiredKeys, FDictionary) && result; // I4119
232
+ if (key.sk) {
233
+ for (let subkey of key.sk) {
234
+ result = CheckKey(pid, platform, layer, subkey.id, subkey.text, subkey.nextlayer, subkey.sp, FRequiredKeys, FDictionary) && result;
235
+ }
236
+ }
237
+ let direction;
238
+ if (key.flick) {
239
+ for (direction in key.flick) {
240
+ warnGesturesIfNeeded(key.id);
241
+ result = CheckKey(pid, platform, layer, key.flick[direction].id, key.flick[direction].text, key.flick[direction].nextlayer, key.flick[direction].sp, FRequiredKeys, FDictionary) && result;
242
+ }
243
+ }
244
+ if (key.multitap) {
245
+ for (let subkey of key.multitap) {
246
+ warnGesturesIfNeeded(key.id);
247
+ result = CheckKey(pid, platform, layer, subkey.id, subkey.text, subkey.nextlayer, subkey.sp, FRequiredKeys, FDictionary) && result;
248
+ }
249
+ }
250
+ }
251
+ }
252
+ if (FRequiredKeys.length != CRequiredKeys.length) {
253
+ callbacks.reportMessage(KmwCompilerMessages.Warn_TouchLayoutMissingRequiredKeys({
254
+ layerId: layer.id,
255
+ platformName: pid,
256
+ missingKeys: CRequiredKeys.filter(x => !FRequiredKeys.includes(x)).join(', ')
257
+ }));
258
+ }
259
+ }
260
+ }
261
+ // Transform the layout keys with displayMap
262
+ if (displayMap) {
263
+ Osk.remapTouchLayout(data, displayMap);
264
+ }
265
+ // If not debugging, then this strips out formatting for a big saving in file size
266
+ // This also normalises any values such as Pad or Width which should be strings
267
+ let writer = new TouchLayoutFileWriter({ formatted: FDebug });
268
+ sLayoutFile = writer.compile(data);
269
+ sLayoutFile = TransformSpecialKeys14(FDebug, sLayoutFile);
270
+ sLayoutFile = TransformSpecialKeys17(FDebug, sLayoutFile);
271
+ return {
272
+ output: sLayoutFile,
273
+ result
274
+ };
275
+ }
276
+ //# sourceMappingURL=validate-layout-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate-layout-file.js","sources":["../../../src/kmw-compiler/validate-layout-file.ts"],"sourceRoot":"","names":[],"mappings":";;AAAA,OAAO,EAAoB,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC1I,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzJ,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAKzC,CAAC;AAEF,SAAS,mBAAmB,CAAC,EAAU;IACrC,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,IAAK,UAAmF;AAAxF,WAAK,UAAU;IAAG,yDAAW,CAAA;IAAE,2DAAY,CAAA;IAAE,qDAAS,CAAA;IAAE,yDAAW,CAAA;IAAE,qEAAiB,CAAA;AAAC,CAAC,EAAnF,UAAU,KAAV,UAAU,QAAyE;AAAA,CAAC,CAAG,QAAQ;AAEpG,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAI,IAAI,CAAC,IAAI,MAAM,EAAE;QACnB,IAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE;YACvC,OAAO,UAAU,CAAC,WAAW,CAAC;SAC/B;KACF;IACD,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,OAAO,UAAU,CAAC,iBAAiB,CAAC;KACrC;IACD,OAAO,UAAU,CAAC,WAAW,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxB,QAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACtB,KAAK,GAAG;YACN,OAAO,UAAU,CAAC,SAAS,CAAC;QAC9B,KAAK,GAAG;YACN,IAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACvB,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9C;QACH;YACE,4EAA4E;YAC5E,IAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,EAAE;gBAClD,OAAO,UAAU,CAAC,YAAY,CAAC;aAChC;YAED,IAAG,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACnD,OAAO,UAAU,CAAC,YAAY,CAAC;aAChC;YAED,IAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1C,OAAO,UAAU,CAAC,YAAY,CAAC;aAChC;KACF;IACD,OAAO,UAAU,CAAC,WAAW,CAAC;AAChC,CAAC;AAGD,SAAS,QAAQ,CACf,UAAkB,EAClB,SAA0C,EAC1C,KAAmC,EACnC,GAAW,EACX,KAAa,EACb,UAAkB,EAClB,QAAsC,EACtC,aAA6B,EAC7B,WAAqB;IAErB,EAAE;IACF,mEAAmE;IACnE,EAAE;IAEF,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IAChB,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAEpB,EAAE;IACF,oEAAoE;IACpE,EAAE;IAEF,KAAI,IAAI,GAAG,IAAI,aAAa,EAAE;QAC5B,IAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE;YACvD,IAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACjC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACzB;YACD,MAAM;SACP;KACF;IAED,EAAE;IACF,0CAA0C;IAC1C,EAAE;IAEF,IAAG,OAAO,UAAU,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzD,IAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,EAAE;YACzF,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,4BAA4B,CAAC;gBACvE,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,UAAU;gBACrB,YAAY,EAAE,UAAU;aACzB,CAAC,CAAC,CAAC;SACL;KACF;IAED,EAAE;IACF,+CAA+C;IAC/C,EAAE;IAEF,IAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACnB,IAAG,CAAC,CAAC,0FAAyE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;YAClG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;SACnG;QACD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAE5B,IAAG,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE;QACnC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC3I,OAAO,KAAK,CAAC;KACd;SACI,IAAI,MAAM,IAAI,UAAU,CAAC,iBAAiB,IAAI,CAAC,0BAA0B,EAAE,EAAE;QAChF,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,qCAAqC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC9I,OAAO,KAAK,CAAC;KACd;IAED,EAAE;IACF,2EAA2E;IAC3E,EAAE;IAEF,IAAI,MAAM,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,IAAI,EAAE,IAAI,2FAA2E,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACxJ,sEAAsE;QACtE,IAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC/B,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,mCAAmC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;SAC7I;KACF;IAED,EAAE;IACF,qFAAqF;IACrF,EAAE;IACF,IAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACnE,mFAAmF;QACnF,wEAAwE;QACxE,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1B,CAAC,0BAA0B,EAAE;YAC7B,CAAC,CAAC,kGAAkF,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE;YAC5G,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,uCAAuC,CAAC;gBAClF,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC,CAAC;SACL;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,EAAgB,EAAE,WAAqB;IAEzE,iCAAiC;IAEjC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,SAAS;SACV;QAED,IAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACxF,KAAI,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE;gBACxB,IAAG,GAAG,CAAC,UAAU,EAAE;oBACjB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;wBACvB,IAAG,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAC,GAAG,EAAE;4BAC9C,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;yBAC5F;qBACF;iBACF;aACF;SACF;KACF;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,WAAmB;IAClE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAG,CAAC,0BAA0B,EAAE,EAAE;QAChC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,iDAAiD;YACjD,IAAG,MAAM,EAAE;gBACT,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,wBAAwB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;aACrK;iBAAM;gBACL,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,qBAAqB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;aAC/J;SACF;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,WAAmB;IAClE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAG,CAAC,0BAA0B,EAAE,EAAE;QAChC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAChD,iDAAiD;YACjD,IAAG,MAAM,EAAE;gBACT,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,wBAAwB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;aACrK;iBAAM;gBACL,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,qBAAqB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;aAC/J;SACF;KACF;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAgB,EAAE,MAAe,EAAE,WAAmB,EAAE,aAAqB,EAAE,UAAsB;IACtI,IAAI,WAAW,GAAa,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvD,0BAA0B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAG,QAAQ;IAEvD,IAAI,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACzC,IAAI,IAAiC,CAAC;IACtC,IAAI;QACF,IAAG,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;YACxC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC;YACxG,OAAO,IAAI,CAAC;SACb;QACD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,IAAG,CAAC,IAAI,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;SAC5D;KACF;IAAC,OAAM,CAAC,EAAE;QACT,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,EAAC,GAAG,EAAE,CAAC,CAAC,IAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;QAC5H,OAAO,IAAI,CAAC;KACb;IAED,IAAI,8BAA8B,GAAG,KAAK,CAAC;IAC3C,MAAM,oBAAoB,GAAG,UAAS,KAAa;QACjD,IAAG,CAAC,8BAA8B,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACnE,8BAA8B,GAAG,IAAI,CAAC;YACtC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,gDAAgD,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;SACxG;IACH,CAAC,CAAA;IAED,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,IAAI,gBAAgB,GAAG,EAAE,CAAC,CAAG,QAAQ;IACrC,IAAI,GAAsC,CAAC;IAC3C,KAAI,GAAG,IAAI,IAAI,EAAE;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzB,yDAAyD;QAEzD,IAAG,gBAAgB,IAAI,EAAE,EAAE;YACzB,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;SACvD;aACI,IAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,gBAAgB,EAAE;YAChE,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,+CAA+C,EAAE,CAAC,CAAC;YAC/F,yFAAyF;SAC1F;QAED,0CAA0C;QAC1C,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;YAC/B,IAAI,aAAa,GAAmB,EAAE,CAAC;YACvC,KAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE;gBACxB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;oBACtB,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,CAAG,QAAQ;oBAClI,IAAG,GAAG,CAAC,EAAE,EAAE;wBACT,KAAI,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE;4BACxB,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;yBACpI;qBACF;oBACD,IAAI,SAA6C,CAAC;oBAClD,IAAG,GAAG,CAAC,KAAK,EAAE;wBACZ,KAAI,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE;4BAC1B,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC7B,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EACxF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;yBAClG;qBACF;oBAED,IAAG,GAAG,CAAC,QAAQ,EAAE;wBACf,KAAI,IAAI,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE;4BAC9B,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC7B,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;yBACpI;qBACF;iBACF;aACF;YAED,IAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE;gBAC/C,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,mCAAmC,CAAC;oBAC9E,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,YAAY,EAAE,GAAG;oBACjB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC9E,CAAC,CAAC,CAAC;aACL;SACF;KACF;IAED,4CAA4C;IAC5C,IAAG,UAAU,EAAE;QACb,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KACxC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,IAAI,MAAM,GAAG,IAAI,qBAAqB,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;IAE5D,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM;KACP,CAAA;AACH,CAAC","debug_id":"8528f1d8-5ec7-5e50-bde3-a3c955ca5a2b"}
1
+ {"version":3,"file":"validate-layout-file.js","sourceRoot":"","sources":["../../../src/kmw-compiler/validate-layout-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC1I,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzJ,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAKzC,CAAC;AAEF,SAAS,mBAAmB,CAAC,EAAU;IACrC,OAAO,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC;QAClC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,IAAK,UAAmF;AAAxF,WAAK,UAAU;IAAG,yDAAW,CAAA;IAAE,2DAAY,CAAA;IAAE,qDAAS,CAAA;IAAE,yDAAW,CAAA;IAAE,qEAAiB,CAAA;AAAC,CAAC,EAAnF,UAAU,KAAV,UAAU,QAAyE;AAAA,CAAC,CAAG,QAAQ;AAEpG,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,KAAI,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;QACpB,IAAG,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,UAAU,CAAC,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IACD,IAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,UAAU,CAAC,iBAAiB,CAAC;IACtC,CAAC;IACD,OAAO,UAAU,CAAC,WAAW,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACxB,QAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,KAAK,GAAG;YACN,OAAO,UAAU,CAAC,SAAS,CAAC;QAC9B,KAAK,GAAG;YACN,IAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,OAAO,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH;YACE,4EAA4E;YAC5E,IAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;gBACnD,OAAO,UAAU,CAAC,YAAY,CAAC;YACjC,CAAC;YAED,IAAG,8BAA8B,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,OAAO,UAAU,CAAC,YAAY,CAAC;YACjC,CAAC;YAED,IAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3C,OAAO,UAAU,CAAC,YAAY,CAAC;YACjC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,WAAW,CAAC;AAChC,CAAC;AAGD,SAAS,QAAQ,CACf,UAAkB,EAClB,SAA0C,EAC1C,KAAmC,EACnC,GAAW,EACX,KAAa,EACb,UAAkB,EAClB,QAAsC,EACtC,aAA6B,EAC7B,WAAqB;IAErB,EAAE;IACF,mEAAmE;IACnE,EAAE;IAEF,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;IAChB,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IAEpB,EAAE;IACF,oEAAoE;IACpE,EAAE;IAEF,KAAI,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;QAC7B,IAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACxD,IAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,EAAE;IACF,0CAA0C;IAC1C,EAAE;IAEF,IAAG,OAAO,UAAU,IAAI,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1F,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,4BAA4B,CAAC;gBACvE,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,SAAS,EAAE,UAAU;gBACrB,YAAY,EAAE,UAAU;aACzB,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,EAAE;IACF,+CAA+C;IAC/C,EAAE;IAEF,IAAG,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACpB,IAAG,CAAC,CAAC,0FAAyE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACnG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,+BAA+B,CAAC,EAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAE5B,IAAG,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;QACpC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC3I,OAAO,KAAK,CAAC;IACf,CAAC;SACI,IAAI,MAAM,IAAI,UAAU,CAAC,iBAAiB,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QACjF,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,qCAAqC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC9I,OAAO,KAAK,CAAC;IACf,CAAC;IAED,EAAE;IACF,2EAA2E;IAC3E,EAAE;IAEF,IAAI,MAAM,IAAI,UAAU,CAAC,SAAS,IAAI,UAAU,IAAI,EAAE,IAAI,2FAA2E,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzJ,sEAAsE;QACtE,IAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,mCAAmC,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAC,CAAC,CAAC,CAAC;QAC9I,CAAC;IACH,CAAC;IAED,EAAE;IACF,qFAAqF;IACrF,EAAE;IACF,IAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,mFAAmF;QACnF,wEAAwE;QACxE,gFAAgF;QAChF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC9F,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,IAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1B,CAAC,0BAA0B,EAAE;YAC7B,CAAC,CAAC,kGAAkF,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7G,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,uCAAuC,CAAC;gBAClF,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,UAAU;gBACxB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK,EAAE,KAAK;aACb,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,0BAA0B,CAAC,EAAgB,EAAE,WAAqB;IAEzE,iCAAiC;IAEjC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,KAAI,IAAI,GAAG,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAG,GAAG,CAAC,UAAU,EAAE,CAAC;oBAClB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBACxB,IAAG,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAC,GAAG,EAAE,CAAC;4BAC/C,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,EAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;wBAC7F,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,WAAmB;IAClE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC;QACjC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,iDAAiD;YACjD,IAAG,MAAM,EAAE,CAAC;gBACV,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,wBAAwB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;YACtK,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,qBAAqB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;YAChK,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe,EAAE,WAAmB;IAClE,mEAAmE;IACnE,4CAA4C;IAC5C,IAAG,CAAC,0BAA0B,EAAE,EAAE,CAAC;QACjC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,iDAAiD;YACjD,IAAG,MAAM,EAAE,CAAC;gBACV,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,wBAAwB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,OAAO,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;YACtK,CAAC;iBAAM,CAAC;gBACN,WAAW,GAAG,WAAW,CAAC,UAAU,CAAC,UAAU,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,EAAE,qBAAqB,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,KAAK,GAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAC,GAAG,CAAC,CAAC;YAChK,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAgB,EAAE,MAAe,EAAE,WAAmB,EAAE,aAAqB,EAAE,UAAsB;IACtI,IAAI,WAAW,GAAa,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEvD,0BAA0B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAG,QAAQ;IAEvD,IAAI,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;IACzC,IAAI,IAAiC,CAAC;IACtC,IAAI,CAAC;QACH,IAAG,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,iCAAiC,CAAC,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC,CAAC;YACxG,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,IAAG,CAAC,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAM,CAAC,EAAE,CAAC;QACV,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,kCAAkC,CAAC,EAAC,GAAG,EAAE,CAAC,CAAC,IAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAC,CAAC,CAAC,CAAC;QAC5H,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,8BAA8B,GAAG,KAAK,CAAC;IAC3C,MAAM,oBAAoB,GAAG,UAAS,KAAa;QACjD,IAAG,CAAC,8BAA8B,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;YACpE,8BAA8B,GAAG,IAAI,CAAC;YACtC,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,gDAAgD,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,CAAC;QACzG,CAAC;IACH,CAAC,CAAA;IAED,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,IAAI,gBAAgB,GAAG,EAAE,CAAC,CAAG,QAAQ;IACrC,IAAI,GAAsC,CAAC;IAC3C,KAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzB,yDAAyD;QAEzD,IAAG,gBAAgB,IAAI,EAAE,EAAE,CAAC;YAC1B,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QACxD,CAAC;aACI,IAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjE,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,+CAA+C,EAAE,CAAC,CAAC;YAC/F,yFAAyF;QAC3F,CAAC;QAED,0CAA0C;QAC1C,KAAI,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,aAAa,GAAmB,EAAE,CAAC;YACvC,KAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACzB,KAAI,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,CAAG,QAAQ;oBAClI,IAAG,GAAG,CAAC,EAAE,EAAE,CAAC;wBACV,KAAI,IAAI,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;4BACzB,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;wBACrI,CAAC;oBACH,CAAC;oBACD,IAAI,SAA6C,CAAC;oBAClD,IAAG,GAAG,CAAC,KAAK,EAAE,CAAC;wBACb,KAAI,SAAS,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;4BAC3B,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC7B,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EACxF,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;wBACnG,CAAC;oBACH,CAAC;oBAED,IAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;wBAChB,KAAI,IAAI,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;4BAC/B,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAC7B,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC;wBACrI,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;gBAChD,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,mCAAmC,CAAC;oBAC9E,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,YAAY,EAAE,GAAG;oBACjB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC9E,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAG,UAAU,EAAE,CAAC;QACd,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,kFAAkF;IAClF,+EAA+E;IAC/E,IAAI,MAAM,GAAG,IAAI,qBAAqB,CAAC,EAAC,SAAS,EAAE,MAAM,EAAC,CAAC,CAAC;IAE5D,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,WAAW,GAAG,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE1D,OAAO;QACL,MAAM,EAAE,WAAW;QACnB,MAAM;KACP,CAAA;AACH,CAAC"}