@keymanapp/common-types 17.0.85-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.
- package/build/src/consts/virtual-key-constants.d.ts +131 -0
- package/build/src/consts/virtual-key-constants.d.ts.map +1 -0
- package/build/src/consts/virtual-key-constants.js +245 -0
- package/build/src/consts/virtual-key-constants.js.map +1 -0
- package/build/src/import/techpreview/cldr_info.json +5 -0
- package/build/src/import/techpreview/keys-Latn-implied.xml +80 -0
- package/build/src/import/techpreview/keys-Zyyy-currency.xml +22 -0
- package/build/src/import/techpreview/keys-Zyyy-punctuation.xml +46 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts +7 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js +74 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-reader.js.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts +24 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js +75 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file-writer.js.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts +76 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.d.ts.map +1 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.js +26 -0
- package/build/src/keyman-touch-layout/keyman-touch-layout-file.js.map +1 -0
- package/build/src/keyman-touch-layout.clean.spec.json +170 -0
- package/build/src/kmx/element-string.d.ts +19 -0
- package/build/src/kmx/element-string.d.ts.map +1 -0
- package/build/src/kmx/element-string.js +72 -0
- package/build/src/kmx/element-string.js.map +1 -0
- package/build/src/kmx/kmx-builder.d.ts +77 -0
- package/build/src/kmx/kmx-builder.d.ts.map +1 -0
- package/build/src/kmx/kmx-builder.js +193 -0
- package/build/src/kmx/kmx-builder.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.js +25 -0
- package/build/src/kmx/kmx-plus-builder/build-disp.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.d.ts +26 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.js +78 -0
- package/build/src/kmx/kmx-plus-builder/build-elem.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.d.ts +60 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.js +107 -0
- package/build/src/kmx/kmx-plus-builder/build-keys.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.d.ts +54 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.js +99 -0
- package/build/src/kmx/kmx-plus-builder/build-layr.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-list.d.ts +34 -0
- package/build/src/kmx/kmx-plus-builder/build-list.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-list.js +62 -0
- package/build/src/kmx/kmx-plus-builder/build-list.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.d.ts +12 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.js +20 -0
- package/build/src/kmx/kmx-plus-builder/build-loca.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.d.ts +17 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.js +21 -0
- package/build/src/kmx/kmx-plus-builder/build-meta.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-name.d.ts +12 -0
- package/build/src/kmx/kmx-plus-builder/build-name.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-name.js +23 -0
- package/build/src/kmx/kmx-plus-builder/build-name.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.js +27 -0
- package/build/src/kmx/kmx-plus-builder/build-ordr.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.d.ts +16 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.js +14 -0
- package/build/src/kmx/kmx-plus-builder/build-sect.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.d.ts +18 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.js +34 -0
- package/build/src/kmx/kmx-plus-builder/build-strs.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.d.ts +20 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.js +30 -0
- package/build/src/kmx/kmx-plus-builder/build-tran.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts +16 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.js +23 -0
- package/build/src/kmx/kmx-plus-builder/build-vkey.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.d.ts +6 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.js +3 -0
- package/build/src/kmx/kmx-plus-builder/builder-section.js.map +1 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts +47 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js +143 -0
- package/build/src/kmx/kmx-plus-builder/kmx-plus-builder.js.map +1 -0
- package/build/src/kmx/kmx-plus.d.ts +259 -0
- package/build/src/kmx/kmx-plus.d.ts.map +1 -0
- package/build/src/kmx/kmx-plus.js +594 -0
- package/build/src/kmx/kmx-plus.js.map +1 -0
- package/build/src/kmx/kmx.d.ts +166 -0
- package/build/src/kmx/kmx.d.ts.map +1 -0
- package/build/src/kmx/kmx.js +271 -0
- package/build/src/kmx/kmx.js.map +1 -0
- package/build/src/kmx/string-list.d.ts +29 -0
- package/build/src/kmx/string-list.d.ts.map +1 -0
- package/build/src/kmx/string-list.js +75 -0
- package/build/src/kmx/string-list.js.map +1 -0
- package/build/src/kpj/keyman-developer-project.d.ts +58 -0
- package/build/src/kpj/keyman-developer-project.d.ts.map +1 -0
- package/build/src/kpj/keyman-developer-project.js +141 -0
- package/build/src/kpj/keyman-developer-project.js.map +1 -0
- package/build/src/kpj/kpj-file-reader.d.ts +17 -0
- package/build/src/kpj/kpj-file-reader.d.ts.map +1 -0
- package/build/src/kpj/kpj-file-reader.js +92 -0
- package/build/src/kpj/kpj-file-reader.js.map +1 -0
- package/build/src/kpj/kpj-file.d.ts +39 -0
- package/build/src/kpj/kpj-file.d.ts.map +1 -0
- package/build/src/kpj/kpj-file.js +11 -0
- package/build/src/kpj/kpj-file.js.map +1 -0
- package/build/src/kpj.schema.json +127 -0
- package/build/src/kvk/kvk-file-reader.d.ts +5 -0
- package/build/src/kvk/kvk-file-reader.d.ts.map +1 -0
- package/build/src/kvk/kvk-file-reader.js +35 -0
- package/build/src/kvk/kvk-file-reader.js.map +1 -0
- package/build/src/kvk/kvk-file-writer.d.ts +20 -0
- package/build/src/kvk/kvk-file-writer.d.ts.map +1 -0
- package/build/src/kvk/kvk-file-writer.js +67 -0
- package/build/src/kvk/kvk-file-writer.js.map +1 -0
- package/build/src/kvk/kvk-file.d.ts +64 -0
- package/build/src/kvk/kvk-file.d.ts.map +1 -0
- package/build/src/kvk/kvk-file.js +63 -0
- package/build/src/kvk/kvk-file.js.map +1 -0
- package/build/src/kvk/kvks-file-reader.d.ts +30 -0
- package/build/src/kvk/kvks-file-reader.d.ts.map +1 -0
- package/build/src/kvk/kvks-file-reader.js +154 -0
- package/build/src/kvk/kvks-file-reader.js.map +1 -0
- package/build/src/kvk/kvks-file-writer.d.ts +6 -0
- package/build/src/kvk/kvks-file-writer.d.ts.map +1 -0
- package/build/src/kvk/kvks-file-writer.js +99 -0
- package/build/src/kvk/kvks-file-writer.js.map +1 -0
- package/build/src/kvk/kvks-file.d.ts +44 -0
- package/build/src/kvk/kvks-file.d.ts.map +1 -0
- package/build/src/kvk/kvks-file.js +10 -0
- package/build/src/kvk/kvks-file.js.map +1 -0
- package/build/src/kvk/visual-keyboard.d.ts +35 -0
- package/build/src/kvk/visual-keyboard.d.ts.map +1 -0
- package/build/src/kvk/visual-keyboard.js +61 -0
- package/build/src/kvk/visual-keyboard.js.map +1 -0
- package/build/src/kvks.schema.json +182 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts +56 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js +20 -0
- package/build/src/ldml-keyboard/ldml-keyboard-testdata-xml.js.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts +91 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js +370 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml-reader.js.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts +143 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.d.ts.map +1 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.js +34 -0
- package/build/src/ldml-keyboard/ldml-keyboard-xml.js.map +1 -0
- package/build/src/ldml-keyboard.schema.json +634 -0
- package/build/src/ldml-keyboardtest.schema.json +221 -0
- package/build/src/main.d.ts +21 -0
- package/build/src/main.d.ts.map +1 -0
- package/build/src/main.js +20 -0
- package/build/src/main.js.map +1 -0
- package/build/src/util/common-events.d.ts +49 -0
- package/build/src/util/common-events.d.ts.map +1 -0
- package/build/src/util/common-events.js +29 -0
- package/build/src/util/common-events.js.map +1 -0
- package/build/src/util/compiler-interfaces.d.ts +51 -0
- package/build/src/util/compiler-interfaces.d.ts.map +1 -0
- package/build/src/util/compiler-interfaces.js +33 -0
- package/build/src/util/compiler-interfaces.js.map +1 -0
- package/build/src/util/util.d.ts +17 -0
- package/build/src/util/util.d.ts.map +1 -0
- package/build/src/util/util.js +67 -0
- package/build/src/util/util.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/build.sh +86 -0
- package/package.json +58 -0
- package/src/consts/virtual-key-constants.ts +257 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file-reader.ts +81 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file-writer.ts +84 -0
- package/src/keyman-touch-layout/keyman-touch-layout-file.ts +87 -0
- package/src/kmx/element-string.ts +79 -0
- package/src/kmx/kmx-builder.ts +287 -0
- package/src/kmx/kmx-plus-builder/build-disp.ts +46 -0
- package/src/kmx/kmx-plus-builder/build-elem.ts +103 -0
- package/src/kmx/kmx-plus-builder/build-keys.ts +175 -0
- package/src/kmx/kmx-plus-builder/build-layr.ts +154 -0
- package/src/kmx/kmx-plus-builder/build-list.ts +95 -0
- package/src/kmx/kmx-plus-builder/build-loca.ts +34 -0
- package/src/kmx/kmx-plus-builder/build-meta.ts +37 -0
- package/src/kmx/kmx-plus-builder/build-name.ts +37 -0
- package/src/kmx/kmx-plus-builder/build-ordr.ts +45 -0
- package/src/kmx/kmx-plus-builder/build-sect.ts +31 -0
- package/src/kmx/kmx-plus-builder/build-strs.ts +58 -0
- package/src/kmx/kmx-plus-builder/build-tran.ts +50 -0
- package/src/kmx/kmx-plus-builder/build-vkey.ts +43 -0
- package/src/kmx/kmx-plus-builder/builder-section.ts +6 -0
- package/src/kmx/kmx-plus-builder/kmx-plus-builder.ts +190 -0
- package/src/kmx/kmx-plus.ts +692 -0
- package/src/kmx/kmx.ts +360 -0
- package/src/kmx/string-list.ts +74 -0
- package/src/kpj/keyman-developer-project.ts +155 -0
- package/src/kpj/kpj-file-reader.ts +103 -0
- package/src/kpj/kpj-file.ts +52 -0
- package/src/kvk/kvk-file-reader.ts +34 -0
- package/src/kvk/kvk-file-writer.ts +72 -0
- package/src/kvk/kvk-file.ts +122 -0
- package/src/kvk/kvks-file-reader.ts +164 -0
- package/src/kvk/kvks-file-writer.ts +113 -0
- package/src/kvk/kvks-file.ts +53 -0
- package/src/kvk/visual-keyboard.ts +80 -0
- package/src/ldml-keyboard/ldml-keyboard-testdata-xml.ts +74 -0
- package/src/ldml-keyboard/ldml-keyboard-xml-reader.ts +387 -0
- package/src/ldml-keyboard/ldml-keyboard-xml.ts +177 -0
- package/src/main.ts +27 -0
- package/src/restructure.d.ts +2 -0
- package/src/util/common-events.ts +50 -0
- package/src/util/compiler-interfaces.ts +54 -0
- package/src/util/util.ts +68 -0
- package/test/fixtures/import-minimal.xml +8 -0
- package/test/fixtures/import-minimal1.xml +11 -0
- package/test/fixtures/import-minimal2.xml +11 -0
- package/test/fixtures/import-symbols.xml +13 -0
- package/test/fixtures/invalid-conforms-to.xml +19 -0
- package/test/fixtures/invalid-import-base.xml +16 -0
- package/test/fixtures/invalid-import-path.xml +16 -0
- package/test/fixtures/invalid-import-readfail.xml +16 -0
- package/test/fixtures/invalid-import-wrongroot.xml +16 -0
- package/test/fixtures/invalid-structure-per-dtd.xml +8 -0
- package/test/fixtures/keyman-touch-layout/khmer_angkor.keyman-touch-layout +1950 -0
- package/test/fixtures/keyman-touch-layout/legacy.keyman-touch-layout +36 -0
- package/test/fixtures/kpj/khmer_angkor.kpj +187 -0
- package/test/fixtures/kvk/khmer_angkor.kvk +0 -0
- package/test/fixtures/kvk/khmer_angkor.kvks +206 -0
- package/test/fixtures/test-fr.xml +22 -0
- package/test/helpers/index.ts +39 -0
- package/test/helpers/reader-callback-test.ts +199 -0
- package/test/keyman-touch-layout/test-keyman-touch-layout-file-reader.ts +71 -0
- package/test/keyman-touch-layout/test-keyman-touch-layout-round-trip.ts +35 -0
- package/test/kpj/test-kpj-file-reader.ts +123 -0
- package/test/kvk/test-kvk-file.ts +15 -0
- package/test/kvk/test-kvk-round-trip.ts +87 -0
- package/test/kvk/test-kvk-utils.ts +24 -0
- package/test/kvk/test-kvks-file.ts +45 -0
- package/test/ldml-keyboard/test-ldml-keyboard-testdata-reader.ts +51 -0
- package/test/ldml-keyboard/test-ldml-keyboard-xml-reader.ts +131 -0
- package/test/tsconfig.json +21 -0
- package/test/util/test-unescape.ts +38 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export declare const BUILDER_KVK_HEADER_IDENTIFIER = 1179342411;
|
|
2
|
+
export declare const BUILDER_KVK_HEADER_VERSION = 1536;
|
|
3
|
+
export interface BUILDER_KVK_STRING {
|
|
4
|
+
len: number;
|
|
5
|
+
str: string;
|
|
6
|
+
}
|
|
7
|
+
export interface BUILDER_KVK_FONT {
|
|
8
|
+
name: BUILDER_KVK_STRING;
|
|
9
|
+
size: number;
|
|
10
|
+
color: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const BUILDER_KVK_FONT_Size = 8;
|
|
13
|
+
export declare const enum BUILDER_KVK_KEY_FLAGS {
|
|
14
|
+
kvkkBitmap = 1,
|
|
15
|
+
kvkkUnicode = 2
|
|
16
|
+
}
|
|
17
|
+
export declare const enum BUILDER_KVK_SHIFT_STATE {
|
|
18
|
+
KVKS_NORMAL = 0,
|
|
19
|
+
KVKS_SHIFT = 1,
|
|
20
|
+
KVKS_CTRL = 2,
|
|
21
|
+
KVKS_ALT = 4,
|
|
22
|
+
KVKS_LCTRL = 8,
|
|
23
|
+
KVKS_RCTRL = 16,
|
|
24
|
+
KVKS_LALT = 32,
|
|
25
|
+
KVKS_RALT = 64
|
|
26
|
+
}
|
|
27
|
+
export interface BUILDER_KVK_KEY {
|
|
28
|
+
flags: BUILDER_KVK_KEY_FLAGS;
|
|
29
|
+
shift: number;
|
|
30
|
+
vkey: number;
|
|
31
|
+
text: BUILDER_KVK_STRING;
|
|
32
|
+
bitmap: number;
|
|
33
|
+
}
|
|
34
|
+
export declare const BUILDER_KVK_KEY_Size = 9;
|
|
35
|
+
export declare const enum BUILDER_KVK_HEADER_FLAGS {
|
|
36
|
+
kvkh102 = 1,
|
|
37
|
+
kvkhDisplayUnderlying = 2,
|
|
38
|
+
kvkhUseUnderlying = 4,
|
|
39
|
+
kvkhAltGr = 8
|
|
40
|
+
}
|
|
41
|
+
export interface BUILDER_KVK_HEADER {
|
|
42
|
+
identifier: number;
|
|
43
|
+
version: number;
|
|
44
|
+
flags: BUILDER_KVK_HEADER_FLAGS;
|
|
45
|
+
associatedKeyboard: BUILDER_KVK_STRING;
|
|
46
|
+
ansiFont: BUILDER_KVK_FONT;
|
|
47
|
+
unicodeFont: BUILDER_KVK_FONT;
|
|
48
|
+
}
|
|
49
|
+
export declare const BUILDER_KVK_HEADER_Size: number;
|
|
50
|
+
export interface BUILDER_KVK_FILE {
|
|
51
|
+
header: BUILDER_KVK_HEADER;
|
|
52
|
+
keyCount: number;
|
|
53
|
+
keys: BUILDER_KVK_KEY[];
|
|
54
|
+
}
|
|
55
|
+
export default class KVKFile {
|
|
56
|
+
KVK_HEADER: any;
|
|
57
|
+
KVK_KEY: any;
|
|
58
|
+
KVK_KEYS: any;
|
|
59
|
+
KVK_FONT: any;
|
|
60
|
+
KVK_FILE: any;
|
|
61
|
+
KVK_STRING: any;
|
|
62
|
+
constructor();
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=kvk-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvk-file.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvk-file.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,6BAA6B,aAAa,CAAC;AACxD,eAAO,MAAM,0BAA0B,OAAY,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,0BAAkB,qBAAqB;IACrC,UAAU,IAAO;IACjB,WAAW,IAAO;CACnB;AAED,0BAAkB,uBAAuB;IACvC,WAAW,IAAK;IAChB,UAAU,IAAM;IAChB,SAAS,IAAO;IAChB,QAAQ,IAAQ;IAChB,UAAU,IAAM;IAChB,UAAU,KAAM;IAChB,SAAS,KAAO;IAChB,SAAS,KAAO;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,qBAAqB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,0BAAkB,wBAAwB;IACxC,OAAO,IAAO;IACd,qBAAqB,IAAO;IAC5B,iBAAiB,IAAO;IACxB,SAAS,IAAO;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,wBAAwB,CAAC;IAChC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,eAAO,MAAM,uBAAuB,QAAoD,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,OAAO;IACnB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,GAAG,CAAC;;CA2CxB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as r from 'restructure';
|
|
2
|
+
//
|
|
3
|
+
// Binary backing structures for .kvk format
|
|
4
|
+
// matching VisualKeyboardSaverBinary.pas
|
|
5
|
+
//
|
|
6
|
+
export const BUILDER_KVK_HEADER_IDENTIFIER = 0x464B564B; // 'KVKF', little-endian
|
|
7
|
+
export const BUILDER_KVK_HEADER_VERSION = 0x0600; // Keyman 6.0
|
|
8
|
+
;
|
|
9
|
+
;
|
|
10
|
+
export const BUILDER_KVK_FONT_Size = 8; // size of fixed elements of BUILDER_KVK_FONT
|
|
11
|
+
;
|
|
12
|
+
;
|
|
13
|
+
;
|
|
14
|
+
export const BUILDER_KVK_KEY_Size = 9; // size of fixed elements of BUILDER_KVK_KEY
|
|
15
|
+
;
|
|
16
|
+
;
|
|
17
|
+
export const BUILDER_KVK_HEADER_Size = 9 + BUILDER_KVK_FONT_Size + BUILDER_KVK_FONT_Size; // size of fixed elements of BUILDER_KVK_HEADER
|
|
18
|
+
;
|
|
19
|
+
export default class KVKFile {
|
|
20
|
+
KVK_HEADER;
|
|
21
|
+
KVK_KEY;
|
|
22
|
+
KVK_KEYS;
|
|
23
|
+
KVK_FONT;
|
|
24
|
+
KVK_FILE;
|
|
25
|
+
KVK_STRING;
|
|
26
|
+
constructor() {
|
|
27
|
+
//
|
|
28
|
+
// Binary restructure definitions matching VisualKeyboardSaverBinary.pas
|
|
29
|
+
// TODO: move binaries to separate kvk-file.ts
|
|
30
|
+
//
|
|
31
|
+
this.KVK_STRING = new r.Struct({
|
|
32
|
+
len: r.int16le,
|
|
33
|
+
str: new r.String(null, 'utf16le')
|
|
34
|
+
});
|
|
35
|
+
this.KVK_FONT = new r.Struct({
|
|
36
|
+
name: this.KVK_STRING,
|
|
37
|
+
size: r.int32le,
|
|
38
|
+
color: r.uint32le
|
|
39
|
+
});
|
|
40
|
+
this.KVK_KEY = new r.Struct({
|
|
41
|
+
flags: r.uint8,
|
|
42
|
+
shift: r.uint16le,
|
|
43
|
+
vkey: r.uint16le,
|
|
44
|
+
text: this.KVK_STRING,
|
|
45
|
+
bitmap: r.uint32le // always 00 00 00 00 for now
|
|
46
|
+
});
|
|
47
|
+
this.KVK_HEADER = new r.Struct({
|
|
48
|
+
identifier: r.uint32le,
|
|
49
|
+
version: r.uint32le,
|
|
50
|
+
flags: r.uint8,
|
|
51
|
+
associatedKeyboard: this.KVK_STRING,
|
|
52
|
+
ansiFont: this.KVK_FONT,
|
|
53
|
+
unicodeFont: this.KVK_FONT
|
|
54
|
+
});
|
|
55
|
+
this.KVK_FILE = new r.Struct({
|
|
56
|
+
header: this.KVK_HEADER,
|
|
57
|
+
keyCount: r.uint32le,
|
|
58
|
+
keys: new r.Array(this.KVK_KEY, 'keyCount')
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
;
|
|
63
|
+
//# sourceMappingURL=kvk-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvk-file.js","sourceRoot":"","sources":["../../../src/kvk/kvk-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,EAAE;AACF,4CAA4C;AAC5C,yCAAyC;AACzC,EAAE;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,CAAC,CAAC,wBAAwB;AACjF,MAAM,CAAC,MAAM,0BAA0B,GAAM,MAAM,CAAC,CAAK,aAAa;AAKrE,CAAC;AAMD,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,CAAC,6CAA6C;AAKpF,CAAC;AAWD,CAAC;AAQD,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,CAAC,4CAA4C;AAOlF,CAAC;AASD,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,qBAAqB,GAAG,qBAAqB,CAAC,CAAC,+CAA+C;AAMxI,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,OAAO;IACnB,UAAU,CAAM;IAChB,OAAO,CAAM;IACb,QAAQ,CAAM;IACd,QAAQ,CAAM;IACd,QAAQ,CAAM;IACd,UAAU,CAAM;IAEvB;QACE,EAAE;QACF,wEAAwE;QACxE,8CAA8C;QAC9C,EAAE;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7B,GAAG,EAAE,CAAC,CAAC,OAAO;YACd,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,IAAI,EAAE,CAAC,CAAC,OAAO;YACf,KAAK,EAAE,CAAC,CAAC,QAAQ;SAClB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,QAAQ;YACjB,IAAI,EAAE,CAAC,CAAC,QAAQ;YAChB,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7B,UAAU,EAAE,CAAC,CAAC,QAAQ;YACtB,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,kBAAkB,EAAE,IAAI,CAAC,UAAU;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,QAAQ;SAC3B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;SAC5C,CAAC,CAAC;IAEL,CAAC;CACF;AAAA,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import KVKSourceFile from './kvks-file.js';
|
|
3
|
+
import { VisualKeyboard, VisualKeyboardShiftState } from './visual-keyboard.js';
|
|
4
|
+
export declare enum KVKSParseErrorType {
|
|
5
|
+
invalidVkey = 0
|
|
6
|
+
}
|
|
7
|
+
export declare class KVKSParseError extends Error {
|
|
8
|
+
type: KVKSParseErrorType;
|
|
9
|
+
vkey: string;
|
|
10
|
+
}
|
|
11
|
+
export default class KVKSFileReader {
|
|
12
|
+
read(file: Uint8Array): KVKSourceFile;
|
|
13
|
+
/**
|
|
14
|
+
* The only element that allows spaces is <key>. Remove
|
|
15
|
+
* all other empty whitespace-only values.
|
|
16
|
+
* @param root
|
|
17
|
+
* @param source
|
|
18
|
+
*/
|
|
19
|
+
private cleanupUnderscore;
|
|
20
|
+
validate(source: KVKSourceFile, schemaBuffer: Buffer): void;
|
|
21
|
+
transform(source: KVKSourceFile, errors?: KVKSParseError[]): VisualKeyboard;
|
|
22
|
+
/**
|
|
23
|
+
* xml2js will not place single-entry objects into arrays.
|
|
24
|
+
* Easiest way to fix this is to box them ourselves as needed
|
|
25
|
+
* @param source KVKSourceFile
|
|
26
|
+
*/
|
|
27
|
+
private boxArrays;
|
|
28
|
+
kvksShiftToKvkShift(shift: string): VisualKeyboardShiftState;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=kvks-file-reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file-reader.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file-reader.ts"],"names":[],"mappings":";AACA,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAE,cAAc,EAAwG,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAItL,oBAAY,kBAAkB;IAAG,WAAW,IAAA;CAAE;AAC9C,qBAAa,cAAe,SAAQ,KAAK;IAChC,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa;IAyB5C;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAoBlB,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ3D,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,cAAc,EAAE,GAAG,cAAc;IA4DlF;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAYV,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;CAWpE"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import * as xml2js from 'xml2js';
|
|
2
|
+
import { default as AjvModule } from 'ajv';
|
|
3
|
+
const Ajv = AjvModule.default; // The actual expected Ajv type.
|
|
4
|
+
import { boxXmlArray } from '../util/util.js';
|
|
5
|
+
import { VisualKeyboardLegalShiftStates } from './visual-keyboard.js';
|
|
6
|
+
import { USVirtualKeyCodes } from '../consts/virtual-key-constants.js';
|
|
7
|
+
import { BUILDER_KVK_HEADER_VERSION } from './kvk-file.js';
|
|
8
|
+
export var KVKSParseErrorType;
|
|
9
|
+
(function (KVKSParseErrorType) {
|
|
10
|
+
KVKSParseErrorType[KVKSParseErrorType["invalidVkey"] = 0] = "invalidVkey";
|
|
11
|
+
})(KVKSParseErrorType || (KVKSParseErrorType = {}));
|
|
12
|
+
;
|
|
13
|
+
export class KVKSParseError extends Error {
|
|
14
|
+
type;
|
|
15
|
+
vkey;
|
|
16
|
+
}
|
|
17
|
+
;
|
|
18
|
+
export default class KVKSFileReader {
|
|
19
|
+
read(file) {
|
|
20
|
+
let source;
|
|
21
|
+
const parser = new xml2js.Parser({
|
|
22
|
+
explicitArray: false,
|
|
23
|
+
mergeAttrs: false,
|
|
24
|
+
includeWhiteChars: true,
|
|
25
|
+
normalize: false,
|
|
26
|
+
emptyTag: {}
|
|
27
|
+
// Why "as any"? xml2js is broken:
|
|
28
|
+
// https://github.com/Leonidas-from-XIV/node-xml2js/issues/648 means
|
|
29
|
+
// that an old version of `emptyTag` is used which doesn't support
|
|
30
|
+
// functions, but DefinitelyTyped is requiring use of function or a
|
|
31
|
+
// string. See also notes at
|
|
32
|
+
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/59259#issuecomment-1254405470
|
|
33
|
+
// An alternative fix would be to pull xml2js directly from github
|
|
34
|
+
// rather than using the version tagged on npmjs.com.
|
|
35
|
+
});
|
|
36
|
+
parser.parseString(file, (e, r) => { source = r; });
|
|
37
|
+
source = this.boxArrays(source);
|
|
38
|
+
this.cleanupUnderscore('visualkeyboard', source.visualkeyboard);
|
|
39
|
+
return source;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The only element that allows spaces is <key>. Remove
|
|
43
|
+
* all other empty whitespace-only values.
|
|
44
|
+
* @param root
|
|
45
|
+
* @param source
|
|
46
|
+
*/
|
|
47
|
+
cleanupUnderscore(root, source) {
|
|
48
|
+
if (root != 'key') {
|
|
49
|
+
if (source?.['_']?.trim() === '') {
|
|
50
|
+
delete source['_'];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (let key of Object.keys(source)) {
|
|
54
|
+
if (Array.isArray(source[key])) {
|
|
55
|
+
for (let item of source[key]) {
|
|
56
|
+
if (typeof (item) === 'object') {
|
|
57
|
+
this.cleanupUnderscore(key, item);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (typeof source[key] === 'object') {
|
|
62
|
+
this.cleanupUnderscore(key, source[key]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
validate(source, schemaBuffer) {
|
|
67
|
+
const schema = JSON.parse(schemaBuffer.toString('utf8'));
|
|
68
|
+
const ajv = new Ajv();
|
|
69
|
+
if (!ajv.validate(schema, source)) {
|
|
70
|
+
throw new Error(ajv.errorsText());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
transform(source, errors) {
|
|
74
|
+
// NOTE: at this point, the xml should have been validated
|
|
75
|
+
// and matched the schema result so we can assume properties exist
|
|
76
|
+
let result = {
|
|
77
|
+
header: {
|
|
78
|
+
version: BUILDER_KVK_HEADER_VERSION,
|
|
79
|
+
flags: 0,
|
|
80
|
+
ansiFont: { name: "Arial", size: -12, color: 0xFF000008 },
|
|
81
|
+
unicodeFont: { name: "Arial", size: -12, color: 0xFF000008 },
|
|
82
|
+
associatedKeyboard: source.visualkeyboard?.header?.kbdname,
|
|
83
|
+
underlyingLayout: source.visualkeyboard?.header?.layout,
|
|
84
|
+
},
|
|
85
|
+
keys: []
|
|
86
|
+
};
|
|
87
|
+
if (source.visualkeyboard?.header?.flags?.displayunderlying !== undefined) {
|
|
88
|
+
result.header.flags |= 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */;
|
|
89
|
+
}
|
|
90
|
+
if (source.visualkeyboard?.header?.flags?.key102 !== undefined) {
|
|
91
|
+
result.header.flags |= 1 /* VisualKeyboardHeaderFlags.kvkh102 */;
|
|
92
|
+
}
|
|
93
|
+
if (source.visualkeyboard?.header?.flags?.usealtgr !== undefined) {
|
|
94
|
+
result.header.flags |= 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */;
|
|
95
|
+
}
|
|
96
|
+
if (source.visualkeyboard?.header?.flags?.useunderlying !== undefined) {
|
|
97
|
+
result.header.flags |= 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */;
|
|
98
|
+
}
|
|
99
|
+
for (let encoding of source.visualkeyboard.encoding) {
|
|
100
|
+
let isUnicode = (encoding.$?.name == 'unicode'), font = isUnicode ? result.header.unicodeFont : result.header.ansiFont;
|
|
101
|
+
font.name = encoding.$?.fontname;
|
|
102
|
+
font.size = parseInt(encoding.$?.fontsize, 10);
|
|
103
|
+
for (let layer of encoding.layer) {
|
|
104
|
+
let shift = this.kvksShiftToKvkShift(layer.$?.shift);
|
|
105
|
+
for (let sourceKey of layer.key) {
|
|
106
|
+
let vkey = USVirtualKeyCodes[sourceKey.$?.vkey];
|
|
107
|
+
if (!vkey) {
|
|
108
|
+
if (errors) {
|
|
109
|
+
let e = new KVKSParseError();
|
|
110
|
+
e.type = KVKSParseErrorType.invalidVkey;
|
|
111
|
+
e.vkey = sourceKey.$?.vkey;
|
|
112
|
+
errors.push(e);
|
|
113
|
+
}
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
let key = {
|
|
117
|
+
flags: isUnicode ? 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ : 0,
|
|
118
|
+
shift: shift,
|
|
119
|
+
text: sourceKey._ ?? '',
|
|
120
|
+
vkey: vkey
|
|
121
|
+
};
|
|
122
|
+
result.keys.push(key);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* xml2js will not place single-entry objects into arrays.
|
|
130
|
+
* Easiest way to fix this is to box them ourselves as needed
|
|
131
|
+
* @param source KVKSourceFile
|
|
132
|
+
*/
|
|
133
|
+
boxArrays(source) {
|
|
134
|
+
boxXmlArray(source.visualkeyboard, 'encoding');
|
|
135
|
+
for (let encoding of source.visualkeyboard.encoding) {
|
|
136
|
+
boxXmlArray(encoding, 'layer');
|
|
137
|
+
for (let layer of encoding.layer) {
|
|
138
|
+
boxXmlArray(layer, 'key');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return source;
|
|
142
|
+
}
|
|
143
|
+
kvksShiftToKvkShift(shift) {
|
|
144
|
+
shift = shift.toUpperCase();
|
|
145
|
+
// TODO-LDML(lowpri): make a map of this?
|
|
146
|
+
for (let state of VisualKeyboardLegalShiftStates) {
|
|
147
|
+
if (state.name == shift) {
|
|
148
|
+
return state.shift;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=kvks-file-reader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file-reader.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file-reader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { VisualKeyboard, VisualKeyboardShiftState } from './visual-keyboard.js';
|
|
2
|
+
export default class KVKSFileWriter {
|
|
3
|
+
write(vk: VisualKeyboard): string;
|
|
4
|
+
kvkShiftToKvksShift(shift: VisualKeyboardShiftState): string;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=kvks-file-writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file-writer.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file-writer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAqF,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGnK,MAAM,CAAC,OAAO,OAAO,cAAc;IAC1B,KAAK,CAAC,EAAE,EAAE,cAAc,GAAG,MAAM;IAiGjC,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM;CASpE"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as xml2js from 'xml2js';
|
|
2
|
+
import { VisualKeyboardLegalShiftStates } from './visual-keyboard.js';
|
|
3
|
+
import { USVirtualKeyCodes } from '../consts/virtual-key-constants.js';
|
|
4
|
+
export default class KVKSFileWriter {
|
|
5
|
+
write(vk) {
|
|
6
|
+
const builder = new xml2js.Builder({
|
|
7
|
+
allowSurrogateChars: true,
|
|
8
|
+
attrkey: '$',
|
|
9
|
+
charkey: '_',
|
|
10
|
+
xmldec: {
|
|
11
|
+
version: '1.0',
|
|
12
|
+
encoding: 'UTF-8',
|
|
13
|
+
standalone: true
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
let flags = {};
|
|
17
|
+
if (vk.header.flags & 2 /* VisualKeyboardHeaderFlags.kvkhDisplayUnderlying */) {
|
|
18
|
+
flags.displayunderlying = '';
|
|
19
|
+
}
|
|
20
|
+
if (vk.header.flags & 1 /* VisualKeyboardHeaderFlags.kvkh102 */) {
|
|
21
|
+
flags.key102 = '';
|
|
22
|
+
}
|
|
23
|
+
if (vk.header.flags & 8 /* VisualKeyboardHeaderFlags.kvkhAltGr */) {
|
|
24
|
+
flags.usealtgr = '';
|
|
25
|
+
}
|
|
26
|
+
if (vk.header.flags & 4 /* VisualKeyboardHeaderFlags.kvkhUseUnderlying */) {
|
|
27
|
+
flags.useunderlying = '';
|
|
28
|
+
}
|
|
29
|
+
let kvks = {
|
|
30
|
+
visualkeyboard: {
|
|
31
|
+
header: {
|
|
32
|
+
version: '10.0',
|
|
33
|
+
kbdname: vk.header.associatedKeyboard,
|
|
34
|
+
flags: flags,
|
|
35
|
+
},
|
|
36
|
+
encoding: []
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
if (vk.header.underlyingLayout)
|
|
40
|
+
kvks.visualkeyboard.header.layout = vk.header.underlyingLayout;
|
|
41
|
+
let encodings = { ansi: null, unicode: null };
|
|
42
|
+
for (let key of vk.keys) {
|
|
43
|
+
const encoding = key.flags & 2 /* VisualKeyboardKeyFlags.kvkkUnicode */ ? 'unicode' : 'ansi';
|
|
44
|
+
const shift = this.kvkShiftToKvksShift(key.shift);
|
|
45
|
+
if (!encodings[encoding]) {
|
|
46
|
+
encodings[encoding] = {
|
|
47
|
+
o: {
|
|
48
|
+
layer: [],
|
|
49
|
+
$: { name: encoding,
|
|
50
|
+
fontname: encoding == 'ansi' ? vk.header.ansiFont.name : vk.header.unicodeFont.name,
|
|
51
|
+
fontsize: (encoding == 'ansi' ? vk.header.ansiFont.size : vk.header.unicodeFont.size).toString(),
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
l: {}
|
|
55
|
+
};
|
|
56
|
+
kvks.visualkeyboard.encoding.push(encodings[encoding].o);
|
|
57
|
+
}
|
|
58
|
+
let e = encodings[encoding];
|
|
59
|
+
if (!e.l[shift]) {
|
|
60
|
+
e.l[shift] = {
|
|
61
|
+
key: [],
|
|
62
|
+
$: { shift: shift },
|
|
63
|
+
};
|
|
64
|
+
e.o.layer.push(e.l[shift]);
|
|
65
|
+
}
|
|
66
|
+
let l = e.l[shift];
|
|
67
|
+
// TODO-LDML: map
|
|
68
|
+
let vkeyName = '';
|
|
69
|
+
for (let vkey of Object.keys(USVirtualKeyCodes)) {
|
|
70
|
+
if (USVirtualKeyCodes[vkey] == key.vkey) {
|
|
71
|
+
vkeyName = vkey;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (vkeyName == '') {
|
|
76
|
+
//TODO-LDML: warn
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
let k = {
|
|
80
|
+
$: { vkey: vkeyName },
|
|
81
|
+
_: key.text,
|
|
82
|
+
};
|
|
83
|
+
l.key.push(k);
|
|
84
|
+
}
|
|
85
|
+
// console.dir(kvks, {depth:8});
|
|
86
|
+
let result = builder.buildObject(kvks);
|
|
87
|
+
return result; //Uint8Array.from(result);
|
|
88
|
+
}
|
|
89
|
+
kvkShiftToKvksShift(shift) {
|
|
90
|
+
// TODO-LDML(lowpri): make a map of this?
|
|
91
|
+
for (let state of VisualKeyboardLegalShiftStates) {
|
|
92
|
+
if (state.shift == shift) {
|
|
93
|
+
return state.name;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=kvks-file-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file-writer.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export default interface KVKSourceFile {
|
|
2
|
+
/**
|
|
3
|
+
* <visualkeyboard> -- the root element.
|
|
4
|
+
*/
|
|
5
|
+
visualkeyboard: KVKSVisualKeyboard;
|
|
6
|
+
}
|
|
7
|
+
export interface KVKSVisualKeyboard {
|
|
8
|
+
header?: KVKSHeader;
|
|
9
|
+
encoding?: KVKSEncoding[];
|
|
10
|
+
}
|
|
11
|
+
export interface KVKSHeader {
|
|
12
|
+
version?: string;
|
|
13
|
+
kbdname?: string;
|
|
14
|
+
flags?: KVKSFlags;
|
|
15
|
+
layout?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface KVKSFlags {
|
|
18
|
+
key102?: string;
|
|
19
|
+
displayunderlying?: string;
|
|
20
|
+
useunderlying?: string;
|
|
21
|
+
usealtgr?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface KVKSEncoding {
|
|
24
|
+
$?: {
|
|
25
|
+
name?: string;
|
|
26
|
+
fontname?: string;
|
|
27
|
+
fontsize?: string;
|
|
28
|
+
};
|
|
29
|
+
layer?: KVKSLayer[];
|
|
30
|
+
}
|
|
31
|
+
export interface KVKSLayer {
|
|
32
|
+
$?: {
|
|
33
|
+
shift?: string;
|
|
34
|
+
};
|
|
35
|
+
key?: KVKSKey[];
|
|
36
|
+
}
|
|
37
|
+
export interface KVKSKey {
|
|
38
|
+
$?: {
|
|
39
|
+
vkey?: string;
|
|
40
|
+
};
|
|
41
|
+
bitmap?: string;
|
|
42
|
+
_?: string;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=kvks-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file.d.ts","sourceRoot":"","sources":["../../../src/kvk/kvks-file.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,WAAW,aAAa;IACpC;;OAEG;IACH,cAAc,EAAE,kBAAkB,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,CAAC,EAAE;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,CAAC,CAAC,EAAE;QACF,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvks-file.js","sourceRoot":"","sources":["../../../src/kvk/kvks-file.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,gFAAgF;AAY/E,CAAC;AAOD,CAAC;AAOD,CAAC;AASD,CAAC;AAOD,CAAC;AAQD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BUILDER_KVK_SHIFT_STATE, BUILDER_KVK_HEADER_FLAGS, BUILDER_KVK_KEY_FLAGS } from "./kvk-file.js";
|
|
2
|
+
export declare class VisualKeyboard {
|
|
3
|
+
header: VisualKeyboardHeader;
|
|
4
|
+
keys: VisualKeyboardKey[];
|
|
5
|
+
}
|
|
6
|
+
export { BUILDER_KVK_HEADER_FLAGS as VisualKeyboardHeaderFlags } from "./kvk-file.js";
|
|
7
|
+
export declare class VisualKeyboardHeader {
|
|
8
|
+
version?: number;
|
|
9
|
+
flags: BUILDER_KVK_HEADER_FLAGS;
|
|
10
|
+
associatedKeyboard?: string;
|
|
11
|
+
ansiFont: VisualKeyboardFont;
|
|
12
|
+
unicodeFont: VisualKeyboardFont;
|
|
13
|
+
underlyingLayout?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class VisualKeyboardFont {
|
|
16
|
+
name?: string;
|
|
17
|
+
size?: number;
|
|
18
|
+
color?: number;
|
|
19
|
+
}
|
|
20
|
+
export { BUILDER_KVK_KEY_FLAGS as VisualKeyboardKeyFlags } from "./kvk-file.js";
|
|
21
|
+
export { BUILDER_KVK_SHIFT_STATE as VisualKeyboardShiftState } from "./kvk-file.js";
|
|
22
|
+
export declare class VisualKeyboardKey {
|
|
23
|
+
flags?: BUILDER_KVK_KEY_FLAGS;
|
|
24
|
+
shift?: BUILDER_KVK_SHIFT_STATE;
|
|
25
|
+
vkey?: number;
|
|
26
|
+
text?: string;
|
|
27
|
+
}
|
|
28
|
+
interface VisualKeyboardLegalShiftState {
|
|
29
|
+
desc: string;
|
|
30
|
+
name: string;
|
|
31
|
+
shift: number;
|
|
32
|
+
vkeys: number[];
|
|
33
|
+
}
|
|
34
|
+
export declare const VisualKeyboardLegalShiftStates: VisualKeyboardLegalShiftState[];
|
|
35
|
+
//# sourceMappingURL=visual-keyboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-keyboard.d.ts","sourceRoot":"","sources":["../../../src/kvk/visual-keyboard.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEzG,qBAAa,cAAc;IACzB,MAAM,EAAE,oBAAoB,CAAwE;IACpG,IAAI,EAAE,iBAAiB,EAAE,CAAM;CAChC;AAED,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEtF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,wBAAwB,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,kBAAkB;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEpF,qBAAa,iBAAiB;IAC5B,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,uBAAuB,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CAEf;AAED,UAAU,6BAA6B;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAKD,eAAO,MAAM,8BAA8B,EAAE,6BAA6B,EA2BzE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Visual Keyboard in-memory data
|
|
3
|
+
//
|
|
4
|
+
// Corresponds to .kvk / .kvks file data
|
|
5
|
+
//
|
|
6
|
+
export class VisualKeyboard {
|
|
7
|
+
header = { flags: 0, ansiFont: {}, unicodeFont: {}, underlyingLayout: undefined };
|
|
8
|
+
keys = [];
|
|
9
|
+
}
|
|
10
|
+
;
|
|
11
|
+
export class VisualKeyboardHeader {
|
|
12
|
+
version; // 0x0600
|
|
13
|
+
flags;
|
|
14
|
+
associatedKeyboard;
|
|
15
|
+
ansiFont; // generally unused
|
|
16
|
+
unicodeFont;
|
|
17
|
+
underlyingLayout;
|
|
18
|
+
}
|
|
19
|
+
;
|
|
20
|
+
export class VisualKeyboardFont {
|
|
21
|
+
name;
|
|
22
|
+
size;
|
|
23
|
+
color; // unused
|
|
24
|
+
}
|
|
25
|
+
;
|
|
26
|
+
export class VisualKeyboardKey {
|
|
27
|
+
flags;
|
|
28
|
+
shift;
|
|
29
|
+
vkey;
|
|
30
|
+
text;
|
|
31
|
+
}
|
|
32
|
+
;
|
|
33
|
+
;
|
|
34
|
+
import { USVirtualKeyCodes as vk } from "../consts/virtual-key-constants.js";
|
|
35
|
+
export const VisualKeyboardLegalShiftStates = [
|
|
36
|
+
{ desc: 'Unshifted', name: '', shift: 0 /* ss.KVKS_NORMAL */, vkeys: [] },
|
|
37
|
+
{ desc: 'Shift', name: 'S', shift: 1 /* ss.KVKS_SHIFT */, vkeys: [vk.K_SHIFT] },
|
|
38
|
+
{ desc: 'Ctrl', name: 'C', shift: 2 /* ss.KVKS_CTRL */, vkeys: [vk.K_CONTROL] },
|
|
39
|
+
{ desc: 'Alt', name: 'A', shift: 4 /* ss.KVKS_ALT */, vkeys: [vk.K_ALT] },
|
|
40
|
+
{ desc: 'Shift+Ctrl', name: 'SC', shift: 1 /* ss.KVKS_SHIFT */ | 2 /* ss.KVKS_CTRL */, vkeys: [vk.K_SHIFT, vk.K_CONTROL] },
|
|
41
|
+
{ desc: 'Shift+Alt', name: 'SA', shift: 1 /* ss.KVKS_SHIFT */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_SHIFT, vk.K_ALT] },
|
|
42
|
+
{ desc: 'Ctrl+Alt', name: 'CA', shift: 2 /* ss.KVKS_CTRL */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_CONTROL, vk.K_ALT] },
|
|
43
|
+
{ desc: 'Shift+Ctrl+Alt', name: 'SCA', shift: 1 /* ss.KVKS_SHIFT */ | 2 /* ss.KVKS_CTRL */ | 4 /* ss.KVKS_ALT */, vkeys: [vk.K_SHIFT, vk.K_CONTROL, vk.K_ALT] },
|
|
44
|
+
{ desc: 'Left Ctrl', name: 'LC', shift: 8 /* ss.KVKS_LCTRL */, vkeys: [vk.K_LCONTROL] },
|
|
45
|
+
{ desc: 'Right Ctrl', name: 'RC', shift: 16 /* ss.KVKS_RCTRL */, vkeys: [vk.K_RCONTROL] },
|
|
46
|
+
{ desc: 'Left Alt', name: 'LA', shift: 32 /* ss.KVKS_LALT */, vkeys: [vk.K_LALT] },
|
|
47
|
+
{ desc: 'Right Alt', name: 'RA', shift: 64 /* ss.KVKS_RALT */, vkeys: [vk.K_RALT] },
|
|
48
|
+
{ desc: 'Shift+Left Ctrl', name: 'SLC', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL] },
|
|
49
|
+
{ desc: 'Shift+Right Ctrl', name: 'SRC', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL] },
|
|
50
|
+
{ desc: 'Shift+Left Alt', name: 'SLA', shift: 1 /* ss.KVKS_SHIFT */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_LALT] },
|
|
51
|
+
{ desc: 'Shift+Right Alt', name: 'SRA', shift: 1 /* ss.KVKS_SHIFT */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_RALT] },
|
|
52
|
+
{ desc: 'Left Ctrl+Left Alt', name: 'LCLA', shift: 8 /* ss.KVKS_LCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_LCONTROL, vk.K_LALT] },
|
|
53
|
+
{ desc: 'Left Ctrl+Right Alt', name: 'LCRA', shift: 8 /* ss.KVKS_LCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_LCONTROL, vk.K_RALT] },
|
|
54
|
+
{ desc: 'Right Ctrl+Left Alt', name: 'RCLA', shift: 16 /* ss.KVKS_RCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_RCONTROL, vk.K_LALT] },
|
|
55
|
+
{ desc: 'Right Ctrl+Right Alt', name: 'RCRA', shift: 16 /* ss.KVKS_RCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_RCONTROL, vk.K_RALT] },
|
|
56
|
+
{ desc: 'Shift+Left Ctrl+Left Alt', name: 'SLCLA', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL, vk.K_LALT] },
|
|
57
|
+
{ desc: 'Shift+Left Ctrl+Right Alt', name: 'SLCRA', shift: 1 /* ss.KVKS_SHIFT */ | 8 /* ss.KVKS_LCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_LCONTROL, vk.K_RALT] },
|
|
58
|
+
{ desc: 'Shift+Right Ctrl+Left Alt', name: 'SRCLA', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */ | 32 /* ss.KVKS_LALT */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL, vk.K_LALT] },
|
|
59
|
+
{ desc: 'Shift+Right Ctrl+Right Alt', name: 'SRCRA', shift: 1 /* ss.KVKS_SHIFT */ | 16 /* ss.KVKS_RCTRL */ | 64 /* ss.KVKS_RALT */, vkeys: [vk.K_SHIFT, vk.K_RCONTROL, vk.K_RALT] }, //16
|
|
60
|
+
];
|
|
61
|
+
//# sourceMappingURL=visual-keyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visual-keyboard.js","sourceRoot":"","sources":["../../../src/kvk/visual-keyboard.ts"],"names":[],"mappings":"AAAA,EAAE;AACF,iCAAiC;AACjC,EAAE;AACF,wCAAwC;AACxC,EAAE;AAIF,MAAM,OAAO,cAAc;IACzB,MAAM,GAAyB,EAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAC,EAAE,EAAE,WAAW,EAAC,EAAE,EAAE,gBAAgB,EAAE,SAAS,EAAC,CAAC;IACpG,IAAI,GAAwB,EAAE,CAAC;CAChC;AAAA,CAAC;AAIF,MAAM,OAAO,oBAAoB;IAC/B,OAAO,CAAU,CAAsB,SAAS;IAChD,KAAK,CAA2B;IAChC,kBAAkB,CAAU;IAC5B,QAAQ,CAAqB,CAAU,mBAAmB;IAC1D,WAAW,CAAqB;IAChC,gBAAgB,CAAU;CAC3B;AAAA,CAAC;AAEF,MAAM,OAAO,kBAAkB;IAC7B,IAAI,CAAU;IACd,IAAI,CAAU;IACd,KAAK,CAAU,CAAC,SAAS;CAC1B;AAAA,CAAC;AAMF,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAyB;IAC9B,KAAK,CAA2B;IAChC,IAAI,CAAU;IACd,IAAI,CAAU;CAEf;AAAA,CAAC;AAOD,CAAC;AAGF,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,CAAC,MAAM,8BAA8B,GAAoC;IAC7E,EAAC,IAAI,EAAE,WAAW,EAAmB,IAAI,EAAE,EAAE,EAAO,KAAK,wBAAgB,EAAE,KAAK,EAAE,EAAE,EAAC;IAErF,EAAC,IAAI,EAAE,OAAO,EAAuB,IAAI,EAAE,GAAG,EAAM,KAAK,uBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAC;IAC9F,EAAC,IAAI,EAAE,MAAM,EAAwB,IAAI,EAAE,GAAG,EAAM,KAAK,sBAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,EAAC;IAC/F,EAAC,IAAI,EAAE,KAAK,EAAyB,IAAI,EAAE,GAAG,EAAM,KAAK,qBAAa,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC;IAC1F,EAAC,IAAI,EAAE,YAAY,EAAkB,IAAI,EAAE,IAAI,EAAK,KAAK,EAAE,4CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,SAAS,CAAC,EAAC;IAC1H,EAAC,IAAI,EAAE,WAAW,EAAmB,IAAI,EAAE,IAAI,EAAK,KAAK,EAAE,2CAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,KAAK,CAAC,EAAC;IACrH,EAAC,IAAI,EAAE,UAAU,EAAoB,IAAI,EAAE,IAAI,EAAK,KAAK,EAAE,0CAA0B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,SAAS,EAAC,EAAE,CAAC,KAAK,CAAC,EAAC;IACtH,EAAC,IAAI,EAAE,gBAAgB,EAAc,IAAI,EAAE,KAAK,EAAI,KAAK,EAAE,4CAA4B,sBAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,SAAS,EAAC,EAAE,CAAC,KAAK,CAAC,EAAC;IAEjJ,EAAC,IAAI,EAAE,WAAW,EAAmB,IAAI,EAAE,IAAI,EAAK,KAAK,uBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAC;IACjG,EAAC,IAAI,EAAE,YAAY,EAAkB,IAAI,EAAE,IAAI,EAAK,KAAK,wBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAC;IACjG,EAAC,IAAI,EAAE,UAAU,EAAoB,IAAI,EAAE,IAAI,EAAK,KAAK,uBAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC5F,EAAC,IAAI,EAAE,WAAW,EAAmB,IAAI,EAAE,IAAI,EAAK,KAAK,uBAAc,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC5F,EAAC,IAAI,EAAE,iBAAiB,EAAa,IAAI,EAAE,KAAK,EAAI,KAAK,EAAE,6CAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,UAAU,CAAC,EAAC;IAC5H,EAAC,IAAI,EAAE,kBAAkB,EAAY,IAAI,EAAE,KAAK,EAAI,KAAK,EAAE,8CAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,UAAU,CAAC,EAAC;IAC5H,EAAC,IAAI,EAAE,gBAAgB,EAAc,IAAI,EAAE,KAAK,EAAI,KAAK,EAAE,6CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IACvH,EAAC,IAAI,EAAE,iBAAiB,EAAa,IAAI,EAAE,KAAK,EAAI,KAAK,EAAE,6CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IACvH,EAAC,IAAI,EAAE,oBAAoB,EAAU,IAAI,EAAE,MAAM,EAAG,KAAK,EAAE,6CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC1H,EAAC,IAAI,EAAE,qBAAqB,EAAS,IAAI,EAAE,MAAM,EAAG,KAAK,EAAE,6CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC1H,EAAC,IAAI,EAAE,qBAAqB,EAAS,IAAI,EAAE,MAAM,EAAG,KAAK,EAAE,8CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC1H,EAAC,IAAI,EAAE,sBAAsB,EAAQ,IAAI,EAAE,MAAM,EAAG,KAAK,EAAE,8CAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IAC1H,EAAC,IAAI,EAAE,0BAA0B,EAAI,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6B,wBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IACtJ,EAAC,IAAI,EAAE,2BAA2B,EAAG,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,6CAA6B,wBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IACtJ,EAAC,IAAI,EAAE,2BAA2B,EAAG,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,8CAA6B,wBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC;IACtJ,EAAC,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,8CAA6B,wBAAe,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,EAAC,EAAE,CAAC,MAAM,CAAC,EAAC,EAAG,IAAI;CAC9J,CAAC"}
|