langtell 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -1
- package/dist/chrome-ai.d.ts +1 -1
- package/dist/chunk-2Z7REIOE.js +41 -0
- package/dist/chunk-2Z7REIOE.js.map +1 -0
- package/dist/{chunk-7TDGJOIJ.js → chunk-66W4QJGT.js} +5 -5
- package/dist/chunk-66W4QJGT.js.map +1 -0
- package/dist/{chunk-JXGCCDSV.js → chunk-OUYN7BWC.js} +18 -9
- package/dist/chunk-OUYN7BWC.js.map +1 -0
- package/dist/chunk-VWKQLGB4.js +204 -0
- package/dist/chunk-VWKQLGB4.js.map +1 -0
- package/dist/classify.d.ts +131 -5
- package/dist/classify.js +2 -1
- package/dist/cyrillic.d.ts +2 -36
- package/dist/cyrillic.js +20 -0
- package/dist/cyrillic.js.map +1 -1
- package/dist/franc.d.ts +4 -3
- package/dist/franc.js +8 -5
- package/dist/franc.js.map +1 -1
- package/dist/fuse.d.ts +1 -1
- package/dist/fuse.js +3 -2
- package/dist/headers.d.ts +1 -1
- package/dist/html.d.ts +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +13 -8
- package/dist/index.js.map +1 -1
- package/dist/profiles.d.ts +1 -1
- package/dist/profiles.js +0 -23
- package/dist/profiles.js.map +1 -1
- package/dist/text.d.ts +3 -3
- package/dist/text.js +3 -2
- package/dist/{types-DfHZ5hkh.d.ts → types-DbPJ0sxF.d.ts} +13 -1
- package/package.json +1 -1
- package/dist/chunk-7TDGJOIJ.js.map +0 -1
- package/dist/chunk-BL627TWI.js +0 -132
- package/dist/chunk-BL627TWI.js.map +0 -1
- package/dist/chunk-JXGCCDSV.js.map +0 -1
package/dist/profiles.js
CHANGED
|
@@ -8,8 +8,6 @@ var FREQUENT_GENERATED = {
|
|
|
8
8
|
"\u0442\u0438",
|
|
9
9
|
"\u0447\u0442\u043E",
|
|
10
10
|
"\u0442\u0430\u043A",
|
|
11
|
-
"\u0442\u044B",
|
|
12
|
-
"\u044D\u0442\u043E",
|
|
13
11
|
"\u043C\u0438",
|
|
14
12
|
"\u0432\u0441\u0435",
|
|
15
13
|
"\u0442\u0435\u0431\u0435",
|
|
@@ -23,7 +21,6 @@ var FREQUENT_GENERATED = {
|
|
|
23
21
|
"\u043C\u0435\u043D\u0456",
|
|
24
22
|
"\u043D\u0456",
|
|
25
23
|
"\u0430\u043B\u0435",
|
|
26
|
-
"\u043C\u044B",
|
|
27
24
|
"\u043C\u043D\u0435",
|
|
28
25
|
"\u0434\u0430",
|
|
29
26
|
"\u043A\u0430\u043A",
|
|
@@ -33,7 +30,6 @@ var FREQUENT_GENERATED = {
|
|
|
33
30
|
"\u0442\u0443\u0442",
|
|
34
31
|
"\u0434\u043B\u044F",
|
|
35
32
|
"\u0439\u043E\u0433\u043E",
|
|
36
|
-
"\u0432\u044B",
|
|
37
33
|
"\u043D\u043E",
|
|
38
34
|
"\u0442\u043E",
|
|
39
35
|
"\u043D\u0443",
|
|
@@ -59,7 +55,6 @@ var FREQUENT_GENERATED = {
|
|
|
59
55
|
"\u0445\u043E\u0447\u0443",
|
|
60
56
|
"\u043A\u043E\u043B\u0438",
|
|
61
57
|
"\u0435\u0441\u043B\u0438",
|
|
62
|
-
"\u0431\u044B",
|
|
63
58
|
"\u0436\u0435",
|
|
64
59
|
"\u0432\u0436\u0435",
|
|
65
60
|
"\u0431\u0443\u043B\u043E",
|
|
@@ -67,7 +62,6 @@ var FREQUENT_GENERATED = {
|
|
|
67
62
|
"\u043E\u043D\u0438",
|
|
68
63
|
"\u043C\u043E\u0436\u0435",
|
|
69
64
|
"\u0447\u0438",
|
|
70
|
-
"\u0447\u0442\u043E\u0431\u044B",
|
|
71
65
|
"\u0434\u0443\u0436\u0435",
|
|
72
66
|
"\u0432\u0456\u0434",
|
|
73
67
|
"\u0445\u043E\u0440\u043E\u0448\u043E",
|
|
@@ -75,7 +69,6 @@ var FREQUENT_GENERATED = {
|
|
|
75
69
|
"\u0431\u0443\u0434\u0435",
|
|
76
70
|
"\u0445\u0442\u043E",
|
|
77
71
|
"\u0435\u0441\u0442\u044C",
|
|
78
|
-
"\u0432\u0441\u0451",
|
|
79
72
|
"\u0434\u0430\u0432\u0430\u0439",
|
|
80
73
|
"\u0442\u043E\u043C\u0443",
|
|
81
74
|
"\u0434\u0435",
|
|
@@ -88,11 +81,9 @@ var FREQUENT_GENERATED = {
|
|
|
88
81
|
"\u0442\u043E\u0433\u043E",
|
|
89
82
|
"\u0449\u043E\u0441\u044C",
|
|
90
83
|
"\u0433\u0430\u0440\u0430\u0437\u0434",
|
|
91
|
-
"\u0431\u044B\u043B",
|
|
92
84
|
"\u0446\u044C\u043E\u0433\u043E",
|
|
93
85
|
"\u0442\u043E\u043B\u044C\u043A\u043E",
|
|
94
86
|
"\u0437\u0430\u0440\u0430\u0437",
|
|
95
|
-
"\u0431\u044B\u043B\u043E",
|
|
96
87
|
"\u043C\u043E\u0436\u0435\u0442",
|
|
97
88
|
"\u043D\u0456\u0447\u043E\u0433\u043E",
|
|
98
89
|
"\u043C\u043E\u044F",
|
|
@@ -104,7 +95,6 @@ var FREQUENT_GENERATED = {
|
|
|
104
95
|
"\u043C\u043E\u0436\u0443",
|
|
105
96
|
"\u0442\u0435\u043F\u0435\u0440",
|
|
106
97
|
"\u043C\u0456\u0439",
|
|
107
|
-
"\u0431\u044B\u0442\u044C",
|
|
108
98
|
"\u043E\u0441\u044C",
|
|
109
99
|
"\u043F\u043E\u0447\u0435\u043C\u0443",
|
|
110
100
|
"\u0434\u044F\u043A\u0443\u044E",
|
|
@@ -138,7 +128,6 @@ var FREQUENT_GENERATED = {
|
|
|
138
128
|
"\u0433\u0434\u0435",
|
|
139
129
|
"\u043B\u0438\u0448\u0435",
|
|
140
130
|
"\u043E\u0447\u0435\u043D\u044C",
|
|
141
|
-
"\u0431\u044B\u043B\u0430",
|
|
142
131
|
"\u043D\u0438\u043C",
|
|
143
132
|
"\u043F\u0440\u0438\u0432\u0456\u0442",
|
|
144
133
|
"\u043D\u0438\u0445",
|
|
@@ -146,10 +135,8 @@ var FREQUENT_GENERATED = {
|
|
|
146
135
|
"\u043D\u0430\u0432\u0456\u0442\u044C",
|
|
147
136
|
"\u043D\u0456\u043A\u043E\u043B\u0438",
|
|
148
137
|
"\u0437\u043D\u0430\u0435\u0448\u044C",
|
|
149
|
-
"\u044D\u0442\u043E\u0433\u043E",
|
|
150
138
|
"\u0431\u0443\u0434\u0443",
|
|
151
139
|
"\u0431\u0438",
|
|
152
|
-
"\u0435\u0451",
|
|
153
140
|
"\u0437\u0456",
|
|
154
141
|
"\u0435\u0435",
|
|
155
142
|
"\u043C\u043E\u0439",
|
|
@@ -159,7 +146,6 @@ var FREQUENT_GENERATED = {
|
|
|
159
146
|
"\u0446\u0435\u0439",
|
|
160
147
|
"\u0447\u043E\u0433\u043E",
|
|
161
148
|
"\u0436\u0438\u0442\u0442\u044F",
|
|
162
|
-
"\u044D\u0442\u043E\u043C",
|
|
163
149
|
"\u0442\u0435\u0436",
|
|
164
150
|
"\u043B\u044E\u0434\u0438",
|
|
165
151
|
"\u0442\u0432\u043E\u044F",
|
|
@@ -168,7 +154,6 @@ var FREQUENT_GENERATED = {
|
|
|
168
154
|
"\u0441\u043A\u0430\u0437\u0430\u0432",
|
|
169
155
|
"\u0431\u043E\u043B\u044C\u0448\u0435",
|
|
170
156
|
"\u0442\u0435\u043F\u0435\u0440\u044C",
|
|
171
|
-
"\u0435\u0449\u0451",
|
|
172
157
|
"\u043B\u044E\u0434\u0435\u0439",
|
|
173
158
|
"\u0430\u0431\u043E",
|
|
174
159
|
"\u0441\u0432\u043E\u044E",
|
|
@@ -194,14 +179,12 @@ var FREQUENT_GENERATED = {
|
|
|
194
179
|
"\u0442\u043E\u0447\u043D\u043E",
|
|
195
180
|
"\u043B\u0430\u0441\u043A\u0430",
|
|
196
181
|
"\u0432\u0440\u0435\u043C\u044F",
|
|
197
|
-
"\u044D\u0439",
|
|
198
182
|
"\u0442\u043E\u0439",
|
|
199
183
|
"\u0441\u0435\u0431\u044F",
|
|
200
184
|
"\u043D\u0430\u0434\u043E",
|
|
201
185
|
"\u0441\u0430\u043C",
|
|
202
186
|
"\u043C\u043D\u043E\u044E",
|
|
203
187
|
"\u0442\u043E\u0436\u0435",
|
|
204
|
-
"\u044D\u0442\u043E\u0442",
|
|
205
188
|
"\u043F\u0440\u043E\u0448\u0443",
|
|
206
189
|
"\u043C\u0430\u044E",
|
|
207
190
|
"\u0441\u043A\u0430\u0437\u0430\u043B",
|
|
@@ -243,7 +226,6 @@ var FREQUENT_GENERATED = {
|
|
|
243
226
|
"\u043C\u043D\u043E\u0439",
|
|
244
227
|
"\u043F\u043E\u0442\u0456\u043C",
|
|
245
228
|
"\u043D\u0456\u0436",
|
|
246
|
-
"\u0431\u044B\u043B\u0438",
|
|
247
229
|
"\u0433\u0435\u0439",
|
|
248
230
|
"\u0434\u0430\u0439",
|
|
249
231
|
"\u043F\u0435\u0440\u0435\u0434",
|
|
@@ -285,7 +267,6 @@ var FREQUENT_GENERATED = {
|
|
|
285
267
|
"\u0437\u0432\u0438\u0447\u0430\u0439\u043D\u043E",
|
|
286
268
|
"\u0441\u043F\u0440\u0430\u0432\u0434\u0456",
|
|
287
269
|
"\u043F\u043E\u043A\u0438",
|
|
288
|
-
"\u0434\u043E\u043B\u0436\u043D\u044B",
|
|
289
270
|
"\u0432\u0441\u0435\u0433\u0434\u0430",
|
|
290
271
|
"\u0434\u0435\u043B\u0430\u0442\u044C",
|
|
291
272
|
"\u0434\u0435\u043B\u043E",
|
|
@@ -296,7 +277,6 @@ var FREQUENT_GENERATED = {
|
|
|
296
277
|
"\u0445\u0456\u0431\u0430",
|
|
297
278
|
"\u043D\u0435\u0439",
|
|
298
279
|
"\u0442\u0432\u043E\u0439",
|
|
299
|
-
"\u044D\u0442\u0438\u043C",
|
|
300
280
|
"\u043F\u043E\u0432\u0438\u043D\u0435\u043D",
|
|
301
281
|
"\u0434\u0440\u0443\u0433",
|
|
302
282
|
"\u043C\u043E\u0436\u043D\u043E",
|
|
@@ -329,7 +309,6 @@ var FREQUENT_GENERATED = {
|
|
|
329
309
|
"\u0442\u0430\u043A\u043E\u0439",
|
|
330
310
|
"\u0434\u043E\u043A\u0442\u043E\u0440",
|
|
331
311
|
"\u043F\u043E\u0432\u0438\u043D\u043D\u0456",
|
|
332
|
-
"\u044D\u0442\u0438",
|
|
333
312
|
"\u0433\u043E\u0432\u043E\u0440\u0438\u0442\u044C",
|
|
334
313
|
"\u043C\u043E\u0433\u043E",
|
|
335
314
|
"\u043D\u0435\u043C\u0430",
|
|
@@ -381,13 +360,11 @@ var FREQUENT_GENERATED = {
|
|
|
381
360
|
"\u0442\u0443\u0434\u0438",
|
|
382
361
|
"\u0440\u0435\u0447\u0456",
|
|
383
362
|
"\u0437\u043D\u0430\u0442\u0438",
|
|
384
|
-
"\u043F\u043E\u044D\u0442\u043E\u043C\u0443",
|
|
385
363
|
"\u043C\u043E\u0433",
|
|
386
364
|
"\u0445\u043E\u0447\u0435\u0442\u0435",
|
|
387
365
|
"\u043F\u043E\u043C\u043E\u0447\u044C",
|
|
388
366
|
"\u043E\u0434\u043D\u0443",
|
|
389
367
|
"\u0432\u0441\u0435\u0445",
|
|
390
|
-
"\u043A\u043E\u0442\u043E\u0440\u044B\u0439",
|
|
391
368
|
"\u0438\u043C",
|
|
392
369
|
"\u0456\u043C",
|
|
393
370
|
"\u0434\u0443\u043C\u0430\u0432",
|
package/dist/profiles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/internal/frequent.ts","../src/profiles.ts"],"names":[],"mappings":";AAmBO,IAAM,kBAAA,GAAkE;AAAA,EAC7E,EAAA,EAAI;AAAA,IACF,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CA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AAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,8DAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,I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","file":"profiles.js","sourcesContent":["// Generated frequency lists — the top everyday words for each language,\n// taken from an open subtitle-frequency corpus (general vocabulary; no\n// project-specific terms). Source: hermitdave/FrequencyWords (OpenSubtitles,\n// the 2018 content set). Kept out of the zero-dependency core: this data lives\n// behind the `langtell/profiles` subpath only.\n//\n// Rung 2b of the classifier (internal/classify.ts) reads these. They sharpen\n// distinctive-free disambiguation (e.g. uk \"робота\" vs ru \"работа\").\n//\n// Coverage notes for the Cyrillic-sibling additions:\n// - mk — top words from the curated `mk_50k.txt` list (Cyrillic, clean).\n// - kk — top Cyrillic words from `kk_full.txt`; OpenSubtitles has no curated\n// `kk_50k.txt`, so this list is shorter and was filtered to drop a handful\n// of subtitle proper nouns (character/show names). Still corpus-derived, not\n// hand-written, but thinner than the Slavic lists.\n// - sr — NOT here: FrequencyWords Serbian is Latin script only, so there is no\n// Cyrillic-Serbian corpus to draw from. The sr profile uses a hand-curated\n// Cyrillic content-word fallback (see SR_FREQUENT in profiles.ts), mirroring\n// the be/bg precedent. Flagged there for native-speaker review.\nexport const FREQUENT_GENERATED: Readonly<Record<string, readonly string[]>> = {\n uk: [\n \"не\",\n \"що\",\n \"на\",\n \"це\",\n \"ти\",\n \"что\",\n \"так\",\n \"ты\",\n \"это\",\n \"ми\",\n \"все\",\n \"тебе\",\n \"він\",\n \"як\",\n \"за\",\n \"ви\",\n \"до\",\n \"мене\",\n \"он\",\n \"мені\",\n \"ні\",\n \"але\",\n \"мы\",\n \"мне\",\n \"да\",\n \"как\",\n \"просто\",\n \"меня\",\n \"нет\",\n \"тут\",\n \"для\",\n \"його\",\n \"вы\",\n \"но\",\n \"то\",\n \"ну\",\n \"знаю\",\n \"про\",\n \"нас\",\n \"вас\",\n \"вони\",\n \"тебя\",\n \"вона\",\n \"она\",\n \"тобі\",\n \"его\",\n \"там\",\n \"якщо\",\n \"ще\",\n \"та\",\n \"добре\",\n \"щоб\",\n \"вам\",\n \"по\",\n \"нам\",\n \"хочу\",\n \"коли\",\n \"если\",\n \"бы\",\n \"же\",\n \"вже\",\n \"було\",\n \"був\",\n \"они\",\n \"може\",\n \"чи\",\n \"чтобы\",\n \"дуже\",\n \"від\",\n \"хорошо\",\n \"чому\",\n \"буде\",\n \"хто\",\n \"есть\",\n \"всё\",\n \"давай\",\n \"тому\",\n \"де\",\n \"здесь\",\n \"треба\",\n \"от\",\n \"думаю\",\n \"когда\",\n \"из\",\n \"того\",\n \"щось\",\n \"гаразд\",\n \"был\",\n \"цього\",\n \"только\",\n \"зараз\",\n \"было\",\n \"может\",\n \"нічого\",\n \"моя\",\n \"тільки\",\n \"те\",\n \"бути\",\n \"один\",\n \"уже\",\n \"можу\",\n \"тепер\",\n \"мій\",\n \"быть\",\n \"ось\",\n \"почему\",\n \"дякую\",\n \"раз\",\n \"вот\",\n \"могу\",\n \"через\",\n \"нужно\",\n \"всі\",\n \"бо\",\n \"кто\",\n \"будет\",\n \"правда\",\n \"без\",\n \"себе\",\n \"більше\",\n \"тоді\",\n \"час\",\n \"день\",\n \"ладно\",\n \"сейчас\",\n \"можна\",\n \"була\",\n \"их\",\n \"боже\",\n \"еще\",\n \"спасибо\",\n \"или\",\n \"будь\",\n \"йому\",\n \"где\",\n \"лише\",\n \"очень\",\n \"была\",\n \"ним\",\n \"привіт\",\n \"них\",\n \"чем\",\n \"навіть\",\n \"ніколи\",\n \"знаешь\",\n \"этого\",\n \"буду\",\n \"би\",\n \"её\",\n \"зі\",\n \"ее\",\n \"мой\",\n \"ничего\",\n \"хочеш\",\n \"нього\",\n \"цей\",\n \"чого\",\n \"життя\",\n \"этом\",\n \"теж\",\n \"люди\",\n \"твоя\",\n \"со\",\n \"потому\",\n \"сказав\",\n \"больше\",\n \"теперь\",\n \"ещё\",\n \"людей\",\n \"або\",\n \"свою\",\n \"привет\",\n \"який\",\n \"сюди\",\n \"таке\",\n \"даже\",\n \"із\",\n \"об\",\n \"тобою\",\n \"були\",\n \"два\",\n \"краще\",\n \"пока\",\n \"ему\",\n \"завжди\",\n \"хочешь\",\n \"должен\",\n \"багато\",\n \"сьогодні\",\n \"ей\",\n \"точно\",\n \"ласка\",\n \"время\",\n \"эй\",\n \"той\",\n \"себя\",\n \"надо\",\n \"сам\",\n \"мною\",\n \"тоже\",\n \"этот\",\n \"прошу\",\n \"маю\",\n \"сказал\",\n \"мама\",\n \"ли\",\n \"зробити\",\n \"сказати\",\n \"сказала\",\n \"назад\",\n \"які\",\n \"можеш\",\n \"тобой\",\n \"трохи\",\n \"потрібно\",\n \"ці\",\n \"тогда\",\n \"порядке\",\n \"ага\",\n \"саме\",\n \"хотів\",\n \"можешь\",\n \"під\",\n \"три\",\n \"никогда\",\n \"можете\",\n \"років\",\n \"собі\",\n \"скажи\",\n \"него\",\n \"пане\",\n \"робити\",\n \"знову\",\n \"твій\",\n \"люблю\",\n \"пожалуйста\",\n \"наш\",\n \"ни\",\n \"сегодня\",\n \"мной\",\n \"потім\",\n \"ніж\",\n \"были\",\n \"гей\",\n \"дай\",\n \"перед\",\n \"завтра\",\n \"вами\",\n \"яка\",\n \"одного\",\n \"ваша\",\n \"конечно\",\n \"сделать\",\n \"лучше\",\n \"цьому\",\n \"ваш\",\n \"цю\",\n \"сказать\",\n \"пам\",\n \"ніхто\",\n \"сюда\",\n \"нами\",\n \"можливо\",\n \"після\",\n \"значит\",\n \"прямо\",\n \"скільки\",\n \"одна\",\n \"чудово\",\n \"давайте\",\n \"бачив\",\n \"такий\",\n \"кого\",\n \"хтось\",\n \"сер\",\n \"ця\",\n \"мою\",\n \"усе\",\n \"разом\",\n \"чего\",\n \"куди\",\n \"звичайно\",\n \"справді\",\n \"поки\",\n \"должны\",\n \"всегда\",\n \"делать\",\n \"дело\",\n \"гроші\",\n \"цим\",\n \"міг\",\n \"том\",\n \"хіба\",\n \"ней\",\n \"твой\",\n \"этим\",\n \"повинен\",\n \"друг\",\n \"можно\",\n \"дня\",\n \"досить\",\n \"можемо\",\n \"зробив\",\n \"много\",\n \"хотел\",\n \"над\",\n \"должна\",\n \"после\",\n \"хоче\",\n \"якби\",\n \"могли\",\n \"місце\",\n \"всего\",\n \"воно\",\n \"часу\",\n \"робиш\",\n \"хлопці\",\n \"вибачте\",\n \"додому\",\n \"весь\",\n \"руки\",\n \"ведь\",\n \"ясно\",\n \"возможно\",\n \"вибач\",\n \"такой\",\n \"доктор\",\n \"повинні\",\n \"эти\",\n \"говорить\",\n \"мого\",\n \"нема\",\n \"нб\",\n \"йди\",\n \"думаешь\",\n \"моей\",\n \"немного\",\n \"навіщо\",\n \"господи\",\n \"мабуть\",\n \"жизнь\",\n \"твою\",\n \"зачем\",\n \"чоловік\",\n \"ходімо\",\n \"лет\",\n \"такое\",\n \"случилось\",\n \"звідси\",\n \"слишком\",\n \"мати\",\n \"скажу\",\n \"скоро\",\n \"сталося\",\n \"прости\",\n \"нормально\",\n \"пані\",\n \"всіх\",\n \"також\",\n \"вместе\",\n \"кілька\",\n \"брат\",\n \"чорт\",\n \"сама\",\n \"во\",\n \"потом\",\n \"такого\",\n \"казав\",\n \"розумію\",\n \"батько\",\n \"отже\",\n \"сделал\",\n \"таким\",\n \"могла\",\n \"тим\",\n \"швидше\",\n \"жаль\",\n \"туди\",\n \"речі\",\n \"знати\",\n \"поэтому\",\n \"мог\",\n \"хочете\",\n \"помочь\",\n \"одну\",\n \"всех\",\n \"который\",\n \"им\",\n \"ім\",\n \"думав\",\n \"можем\",\n \"под\",\n \"допомогти\",\n \"людина\",\n \"куда\",\n \"яку\",\n \"правильно\",\n \"давно\",\n \"зовсім\",\n \"при\",\n ],\n ru: [\n \"не\",\n \"что\",\n \"ты\",\n \"это\",\n \"на\",\n \"он\",\n \"мы\",\n \"как\",\n \"вы\",\n \"да\",\n \"мне\",\n \"нет\",\n \"меня\",\n \"так\",\n \"но\",\n \"его\",\n \"все\",\n \"она\",\n \"тебя\",\n \"если\",\n \"за\",\n \"бы\",\n \"тебе\",\n \"они\",\n \"чтобы\",\n \"же\",\n \"есть\",\n \"просто\",\n \"из\",\n \"для\",\n \"ну\",\n \"когда\",\n \"хорошо\",\n \"здесь\",\n \"по\",\n \"был\",\n \"знаю\",\n \"то\",\n \"только\",\n \"всё\",\n \"было\",\n \"вас\",\n \"может\",\n \"нас\",\n \"вот\",\n \"от\",\n \"быть\",\n \"кто\",\n \"будет\",\n \"почему\",\n \"вам\",\n \"их\",\n \"очень\",\n \"могу\",\n \"уже\",\n \"спасибо\",\n \"или\",\n \"нам\",\n \"еще\",\n \"там\",\n \"нужно\",\n \"сейчас\",\n \"где\",\n \"чем\",\n \"хочу\",\n \"ничего\",\n \"этого\",\n \"была\",\n \"мой\",\n \"ее\",\n \"ладно\",\n \"знаешь\",\n \"до\",\n \"этом\",\n \"потому\",\n \"теперь\",\n \"думаю\",\n \"больше\",\n \"её\",\n \"со\",\n \"раз\",\n \"ему\",\n \"надо\",\n \"время\",\n \"этот\",\n \"ли\",\n \"ещё\",\n \"пока\",\n \"даже\",\n \"привет\",\n \"сказал\",\n \"себя\",\n \"должен\",\n \"тоже\",\n \"хочешь\",\n \"давай\",\n \"никогда\",\n \"эй\",\n \"того\",\n \"тогда\",\n \"него\",\n \"ни\",\n \"тут\",\n \"были\",\n \"конечно\",\n \"правда\",\n \"об\",\n \"моя\",\n \"пожалуйста\",\n \"тобой\",\n \"сказать\",\n \"сегодня\",\n \"один\",\n \"лучше\",\n \"можешь\",\n \"сюда\",\n \"мной\",\n \"значит\",\n \"сделать\",\n \"всегда\",\n \"дело\",\n \"можно\",\n \"ей\",\n \"должны\",\n \"порядке\",\n \"без\",\n \"день\",\n \"том\",\n \"буду\",\n \"делать\",\n \"хотел\",\n \"чего\",\n \"эти\",\n \"много\",\n \"после\",\n \"этим\",\n \"всего\",\n \"во\",\n \"твой\",\n \"ним\",\n \"лет\",\n \"боже\",\n \"них\",\n \"сэр\",\n \"ведь\",\n \"мистер\",\n \"жизнь\",\n \"потом\",\n \"ней\",\n \"такой\",\n \"который\",\n \"всех\",\n \"через\",\n \"им\",\n \"возможно\",\n \"немного\",\n \"такое\",\n \"слишком\",\n \"себе\",\n \"зачем\",\n \"должна\",\n \"моей\",\n \"люди\",\n \"знаете\",\n \"этой\",\n \"думаешь\",\n \"свою\",\n \"точно\",\n \"человек\",\n \"твоя\",\n \"под\",\n \"сказала\",\n \"назад\",\n \"эту\",\n \"можем\",\n \"случилось\",\n \"мама\",\n \"мог\",\n \"вместе\",\n \"отец\",\n \"сделал\",\n \"мои\",\n \"кажется\",\n \"друг\",\n \"куда\",\n \"никто\",\n \"поэтому\",\n \"эта\",\n \"которые\",\n \"два\",\n \"тот\",\n \"сколько\",\n \"понимаю\",\n \"снова\",\n \"жизни\",\n \"нравится\",\n \"людей\",\n \"помочь\",\n \"видел\",\n \"люблю\",\n \"хочет\",\n \"место\",\n \"знать\",\n \"прости\",\n \"отлично\",\n \"похоже\",\n \"парень\",\n \"домой\",\n \"всем\",\n \"деньги\",\n \"иди\",\n \"времени\",\n \"дома\",\n \"именно\",\n \"доктор\",\n \"думал\",\n \"говорил\",\n \"делаешь\",\n \"будем\",\n \"прямо\",\n \"стоит\",\n \"поговорить\",\n \"найти\",\n \"разве\",\n \"слушай\",\n \"своей\",\n \"лишь\",\n \"ага\",\n \"можете\",\n \"простите\",\n \"хотела\",\n \"сам\",\n \"тем\",\n \"будешь\",\n \"прошу\",\n \"три\",\n \"деле\",\n \"хотите\",\n \"говорить\",\n \"давайте\",\n \"совсем\",\n \"знал\",\n \"знает\",\n \"какой\",\n \"моего\",\n \"скажи\",\n \"дом\",\n \"дела\",\n \"вами\",\n \"свои\",\n \"говорит\",\n \"несколько\",\n \"должно\",\n \"про\",\n \"ваш\",\n \"происходит\",\n \"жаль\",\n \"туда\",\n \"действительно\",\n \"папа\",\n \"завтра\",\n \"оно\",\n \"черт\",\n \"одна\",\n \"перед\",\n \"наш\",\n \"уверен\",\n \"отсюда\",\n \"нужна\",\n \"самом\",\n \"тех\",\n \"нужен\",\n \"свой\",\n \"мою\",\n \"кого\",\n \"верно\",\n \"работу\",\n \"каждый\",\n \"твоей\",\n \"будут\",\n \"хватит\",\n \"понял\",\n \"нее\",\n \"уж\",\n \"имя\",\n \"против\",\n \"пор\",\n \"чём\",\n \"раньше\",\n \"говорю\",\n \"более\",\n \"надеюсь\",\n \"итак\",\n \"при\",\n \"ваша\",\n \"вообще\",\n \"пошли\",\n \"мать\",\n \"нельзя\",\n \"наверное\",\n \"нами\",\n \"твои\",\n \"могли\",\n \"дай\",\n \"ради\",\n \"всю\",\n \"ребята\",\n \"ко\",\n \"хотя\",\n \"понимаешь\",\n \"идти\",\n \"этих\",\n \"откуда\",\n \"такая\",\n \"ясно\",\n \"другой\",\n \"извините\",\n \"вижу\",\n \"видеть\",\n \"над\",\n \"могут\",\n \"равно\",\n \"мисс\",\n \"скоро\",\n \"будто\",\n \"зовут\",\n \"виду\",\n \"наши\",\n \"думала\",\n \"послушай\",\n \"между\",\n \"своего\",\n \"вопрос\",\n \"этому\",\n \"почти\",\n \"года\",\n \"человека\",\n \"которая\",\n \"подожди\",\n \"руки\",\n \"нормально\",\n \"такие\",\n \"возьми\",\n \"минут\",\n \"извини\",\n \"вещи\",\n \"могла\",\n \"смотри\",\n \"хоть\",\n \"работа\",\n \"пару\",\n \"сын\",\n \"ваше\",\n \"дня\",\n \"пора\",\n \"неё\",\n \"жить\",\n \"видишь\",\n \"достаточно\",\n \"господи\",\n \"быстро\",\n \"твою\",\n \"весь\",\n \"убить\",\n \"ночь\",\n \"говоришь\",\n \"собой\",\n \"скажу\",\n \"готов\",\n \"слышал\",\n \"какая\",\n \"посмотри\",\n \"первый\",\n \"самое\",\n \"видела\",\n \"пусть\",\n \"месте\",\n \"нашли\",\n \"сказали\",\n \"плохо\",\n \"смогу\",\n \"ваши\",\n \"отца\",\n \"детей\",\n \"знаем\",\n \"рад\",\n \"прав\",\n \"никаких\",\n \"имею\",\n \"миссис\",\n \"иногда\",\n \"смерти\",\n \"своих\",\n \"пойду\",\n \"брат\",\n \"вроде\",\n \"рядом\",\n \"мир\",\n \"произошло\",\n \"которую\",\n ],\n mk: [\n \"да\",\n \"не\",\n \"се\",\n \"е\",\n \"на\",\n \"го\",\n \"и\",\n \"што\",\n \"во\",\n \"за\",\n \"тоа\",\n \"ти\",\n \"дека\",\n \"од\",\n \"со\",\n \"ми\",\n \"си\",\n \"ја\",\n \"како\",\n \"јас\",\n \"ги\",\n \"ова\",\n \"сум\",\n \"добро\",\n \"ме\",\n \"те\",\n \"само\",\n \"ли\",\n \"нема\",\n \"но\",\n \"ако\",\n \"а\",\n \"тој\",\n \"беше\",\n \"треба\",\n \"кога\",\n \"сега\",\n \"многу\",\n \"знам\",\n \"кој\",\n \"му\",\n \"има\",\n \"нешто\",\n \"може\",\n \"мене\",\n \"би\",\n \"каде\",\n \"сакам\",\n \"тебе\",\n \"тука\",\n \"дали\",\n \"така\",\n \"зошто\",\n \"сите\",\n \"ајде\",\n \"ред\",\n \"ни\",\n \"па\",\n \"знаеш\",\n \"овде\",\n \"таа\",\n \"можам\",\n \"биде\",\n \"по\",\n \"мислам\",\n \"сакаш\",\n \"до\",\n \"еден\",\n \"ви\",\n \"уште\",\n \"или\",\n \"некој\",\n \"ама\",\n \"време\",\n \"ништо\",\n \"тие\",\n \"таму\",\n \"сме\",\n \"мора\",\n \"сте\",\n \"пред\",\n \"можеби\",\n \"имам\",\n \"ве\",\n \"малку\",\n \"молам\",\n \"ние\",\n \"еј\",\n \"одиме\",\n \"навистина\",\n \"можеш\",\n \"колку\",\n \"него\",\n \"мојот\",\n \"работа\",\n \"тогаш\",\n \"оди\",\n \"здраво\",\n \"толку\",\n \"никогаш\",\n \"имаш\",\n \"вие\",\n \"мислиш\",\n \"им\",\n \"кои\",\n \"значи\",\n \"затоа\",\n \"една\",\n \"благодарам\",\n \"мојата\",\n \"овој\",\n \"која\",\n \"татко\",\n \"работи\",\n \"нели\",\n \"без\",\n \"одам\",\n \"кажам\",\n \"човек\",\n \"имаме\",\n \"години\",\n \"нас\",\n \"ден\",\n \"оваа\",\n \"фала\",\n \"правиш\",\n \"кај\",\n \"сака\",\n \"направи\",\n \"о\",\n \"рече\",\n \"види\",\n \"твојот\",\n \"бев\",\n \"изгледа\",\n \"додека\",\n \"случи\",\n \"кажи\",\n \"пат\",\n \"вас\",\n \"твојата\",\n \"никој\",\n \"мислев\",\n \"место\",\n \"овие\",\n \"дома\",\n \"мајка\",\n \"секогаш\",\n \"жал\",\n \"морам\",\n ],\n kk: [\n \"мен\",\n \"ол\",\n \"сен\",\n \"не\",\n \"керек\",\n \"оны\",\n \"ба\",\n \"ма\",\n \"бар\",\n \"бе\",\n \"деп\",\n \"емес\",\n \"сіз\",\n \"біз\",\n \"ал\",\n \"мені\",\n \"де\",\n \"жатыр\",\n \"енді\",\n \"олар\",\n \"бір\",\n \"да\",\n \"сені\",\n \"неге\",\n \"адам\",\n \"осында\",\n \"болады\",\n \"келеді\",\n \"доктор\",\n \"мына\",\n \"болды\",\n \"тек\",\n \"рахмет\",\n \"сол\",\n \"еді\",\n \"ме\",\n \"болып\",\n \"егер\",\n \"осы\",\n \"мында\",\n \"солай\",\n \"едім\",\n \"міне\",\n \"президент\",\n \"екен\",\n \"кетті\",\n \"кім\",\n \"болса\",\n \"білмеймін\",\n \"бізге\",\n \"жарайды\",\n \"алып\",\n \"сізді\",\n \"пе\",\n \"сізге\",\n \"жерде\",\n \"ше\",\n \"кеттік\",\n \"бола\",\n \"шын\",\n \"жерден\",\n \"адамдар\",\n \"туралы\",\n \"жерге\",\n \"сонда\",\n \"келді\",\n \"мырза\",\n \"тірі\",\n \"деген\",\n \"болар\",\n \"білемін\",\n \"онда\",\n \"а\",\n \"бірге\",\n \"тым\",\n \"себебі\",\n \"екенін\",\n \"кел\",\n \"келген\",\n \"тауып\",\n \"дейді\",\n \"бер\",\n \"тіпті\",\n \"оларды\",\n \"алмаймын\",\n \"осылай\",\n \"олай\",\n \"одан\",\n \"бері\",\n \"жатырмын\",\n \"мынау\",\n \"келе\",\n \"у\",\n \"апа\",\n \"сондай\",\n \"кешірім\",\n \"ешкім\",\n \"бізді\",\n \"па\",\n \"іздеп\",\n \"тиіс\",\n \"сендер\",\n \"менде\",\n \"дене\",\n \"кейін\",\n \"тез\",\n \"тарт\",\n \"біреу\",\n \"болмайды\",\n \"ана\",\n \"тыныш\",\n \"ойлап\",\n \"екі\",\n \"болмаса\",\n \"айтты\",\n \"келдім\",\n \"арнайы\",\n \"былай\",\n \"шынымен\",\n \"келіп\",\n \"бол\",\n \"барып\",\n \"алтын\",\n \"отыр\",\n \"болу\",\n \"кішкене\",\n \"алмай\",\n \"келмейді\",\n \"керемет\",\n \"адамдары\",\n \"деймін\",\n \"жеп\",\n \"бойы\",\n \"сэр\",\n \"дегенмен\",\n \"кей\",\n \"боп\",\n \"тезірек\",\n \"біраз\",\n \"бара\",\n ],\n en: [],\n};\n","/**\n * `langtell/profiles` — ready-to-use {@link LanguageProfile} data.\n *\n * This is the heavy DATA half of the library: alphabets, curated function-word\n * lists, and corpus-frequent word lists. It is deliberately kept behind its own\n * subpath, OUT of the zero-dependency core, so `import { compile } from\n * \"langtell\"` never drags the word corpora into a bundle that only needs the\n * script/letter rungs. Pass these into `compile({ candidates: [...] })`.\n *\n * Each profile is declarative and auditable:\n * - `alphabet` — the language's lowercased alphabet (raw; distinctiveness\n * is computed at runtime per candidate set).\n * - `marks` — orthographic marks that count as rung-1 evidence but\n * are not alphabet letters (the intra-word apostrophe).\n * - `words.function` — curated grammatical markers, hand-verified.\n * - `words.frequent` — common everyday words from a subtitle-frequency corpus.\n * - `iso6393` — ISO 639-3 code for the optional franc engine.\n *\n * Curation rule for `function`: a token may appear in exactly one candidate's\n * list ONLY if that form is genuinely used by only that language among those we\n * support. Shared forms must be in every list that uses them (set-difference\n * then cancels them) or omitted from all. When in doubt, omit: a missing marker\n * only costs recall.\n */\nimport type { LanguageCode, LanguageProfile } from \"./types.js\";\nimport { FREQUENT_GENERATED } from \"./internal/frequent.js\";\n\n/** Belarusian has no subtitle frequency data — hand-curated content words. */\nconst BE_FREQUENT: readonly string[] = [\n \"навіны\",\n \"відэа\",\n \"горад\",\n \"краіна\",\n \"дзень\",\n \"жыццё\",\n \"людзі\",\n \"праца\",\n \"беларуская\",\n \"сёння\",\n \"вядомы\",\n];\n\n/** Bulgarian has no subtitle frequency data here — hand-curated content words,\n * mirroring the BE fallback. Forms whose spelling is genuinely Bulgarian\n * (e.g. `град`/`днес` vs ru `город`/`сегодня`) so set-difference can use them. */\nconst BG_FREQUENT: readonly string[] = [\n \"новини\",\n \"видео\",\n \"град\",\n \"държава\",\n \"днес\",\n \"живот\",\n \"хора\",\n \"работа\",\n \"българия\",\n \"български\",\n \"известен\",\n \"страна\",\n];\n\n/** Serbian Cyrillic has NO usable subtitle frequency data: hermitdave/\n * FrequencyWords ships Serbian in LATIN script only, and blind transliteration\n * would invent data, so this is a hand-curated Cyrillic content-word list,\n * mirroring the BE/BG fallbacks. Forms are everyday Serbian content words spelt\n * in Cyrillic; many use Serbian-distinctive letters (ј, ћ, ђ, џ) so they read as\n * distinctive at runtime. NEEDS NATIVE-SPEAKER / LINGUISTIC REVIEW before\n * release. */\nconst SR_FREQUENT: readonly string[] = [\n \"вести\",\n \"видео\",\n \"град\",\n \"држава\",\n \"данас\",\n \"живот\",\n \"људи\",\n \"посао\",\n \"србија\",\n \"српски\",\n \"познат\",\n \"земља\",\n \"време\",\n \"деца\",\n \"године\",\n \"човек\",\n \"новине\",\n \"свет\",\n \"данашњи\",\n \"недеља\",\n];\n\nconst uk: LanguageProfile = {\n code: \"uk\",\n iso6393: \"ukr\",\n // has і ї є ґ and и; lacks ё ъ ы э\n alphabet: \"абвгґдеєжзиіїйклмнопрстуфхцчшщьюя\",\n // intra-word apostrophe (uk/be use it where ru uses ъ/nothing). All three\n // codepoints: U+0027 ' U+2019 ’ U+02BC ʼ.\n marks: \"'’ʼ\",\n words: {\n function: [\n \"і\",\n \"й\",\n \"що\",\n \"як\",\n \"це\",\n \"бо\",\n \"ще\",\n \"дуже\",\n \"де\",\n \"його\",\n \"її\",\n \"але\",\n \"який\",\n \"яка\",\n \"цей\",\n \"ця\",\n \"навіть\",\n \"чи\",\n \"або\",\n \"ні\",\n \"щоб\",\n \"теж\",\n \"також\",\n \"він\",\n \"вона\",\n \"вони\",\n ],\n frequent: FREQUENT_GENERATED[\"uk\"] ?? [],\n },\n};\n\nconst ru: LanguageProfile = {\n code: \"ru\",\n iso6393: \"rus\",\n // has ё ъ ы э and и; lacks і ї є ґ ў\n alphabet: \"абвгдеёжзийклмнопрстуфхцчшщъыьэюя\",\n words: {\n function: [\n \"и\",\n \"что\",\n \"как\",\n \"это\",\n \"бы\",\n \"уже\",\n \"или\",\n \"нет\",\n \"очень\",\n \"его\",\n \"её\",\n \"ее\",\n \"где\",\n \"когда\",\n \"этот\",\n \"эта\",\n \"но\",\n \"какой\",\n \"какая\",\n \"даже\",\n \"ещё\",\n \"чтобы\",\n \"потому\",\n \"тоже\",\n \"он\",\n \"она\",\n \"они\",\n ],\n frequent: FREQUENT_GENERATED[\"ru\"] ?? [],\n },\n};\n\nconst be: LanguageProfile = {\n code: \"be\",\n iso6393: \"bel\",\n // has і ў and ы ё э; lacks и щ ъ ї є ґ\n alphabet: \"абвгдеёжзійклмнопрстуўфхцчшыьэюя\",\n // intra-word apostrophe — same uk/be keep-signal; inert between uk and be.\n marks: \"'’ʼ\",\n words: {\n function: [\n \"і\",\n \"што\",\n \"гэта\",\n \"вельмі\",\n \"дзе\",\n \"ці\",\n \"таксама\",\n \"як\",\n \"але\",\n \"бо\",\n \"каб\",\n \"ён\",\n \"яна\",\n \"яны\",\n \"быў\",\n ],\n frequent: FREQUENT_GENERATED[\"be\"] ?? BE_FREQUENT,\n },\n};\n\nconst bg: LanguageProfile = {\n code: \"bg\",\n iso6393: \"bul\",\n // 30-letter Bulgarian alphabet. Has и й щ ъ ь (ъ is a full vowel); lacks ё ы э\n // і ї є ґ ў. `ъ` is shared with ru — inert between {ru, bg}; the word rungs\n // decide, exactly the mechanism `be` relies on for its shared letters.\n alphabet: \"абвгдежзийклмнопрстуфхцчшщъьюя\",\n words: {\n // Bulgarian-distinctive grammatical markers. Shared forms are omitted.\n function: [\n \"ще\",\n \"съм\",\n \"това\",\n \"този\",\n \"тази\",\n \"който\",\n \"която\",\n \"което\",\n \"които\",\n \"защото\",\n \"също\",\n \"тя\",\n \"ние\",\n \"вие\",\n ],\n frequent: FREQUENT_GENERATED[\"bg\"] ?? BG_FREQUENT,\n },\n};\n\nconst en: LanguageProfile = {\n code: \"en\",\n iso6393: \"eng\",\n alphabet: \"abcdefghijklmnopqrstuvwxyz\",\n words: {\n function: [\n \"the\",\n \"and\",\n \"or\",\n \"but\",\n \"of\",\n \"to\",\n \"in\",\n \"on\",\n \"at\",\n \"is\",\n \"are\",\n \"was\",\n \"were\",\n \"this\",\n \"that\",\n \"for\",\n \"with\",\n \"you\",\n \"we\",\n \"they\",\n \"he\",\n \"she\",\n \"it\",\n \"his\",\n \"her\",\n \"what\",\n \"how\",\n \"when\",\n \"where\",\n \"why\",\n \"who\",\n \"which\",\n \"a\",\n \"an\",\n \"i\",\n \"my\",\n \"your\",\n ],\n frequent: FREQUENT_GENERATED[\"en\"] ?? [],\n },\n};\n\nconst sr: LanguageProfile = {\n code: \"sr\",\n iso6393: \"srp\",\n // Serbian Cyrillic azbuka (Вук), 30 letters. Distinctive vs the other Cyrillic\n // profiles: ђ ћ (sr-only) and ј љ њ џ (shared with mk, inert between them; the\n // word rungs decide sr↔mk). No ё й щ ъ ы ь э ю я.\n alphabet: \"абвгдђежзијклљмнњопрстћуфхцчџш\",\n words: {\n // Serbian-distinctive grammatical markers. `сам` (I am) is omitted: it\n // collides with Macedonian `сам` (\"alone\"). Shared forms with mk (и, да, се,\n // не, на, само, …) are omitted so set-difference is not cancelled to nothing.\n // The future markers use ћ, a letter no other profile has.\n function: [\n \"је\",\n \"су\",\n \"али\",\n \"ће\",\n \"ћемо\",\n \"ћеш\",\n \"због\",\n \"јер\",\n \"овај\",\n \"када\",\n \"увек\",\n \"сада\",\n ],\n // Hand-curated Cyrillic fallback — see SR_FREQUENT. Flagged for review.\n frequent: FREQUENT_GENERATED[\"sr\"] ?? SR_FREQUENT,\n },\n};\n\nconst mk: LanguageProfile = {\n code: \"mk\",\n iso6393: \"mkd\",\n // Macedonian alphabet, 31 letters. Distinctive: ѓ ќ ѕ (mk-only) plus ј љ њ џ\n // (shared with sr). No ё й щ ъ ы ь э ю я, no ђ ћ (those are Serbian).\n alphabet: \"абвгдѓежзѕијклљмнњопрстќуфхцчџш\",\n words: {\n // Macedonian-distinctive grammatical markers. The future particle `ќе` and\n // `зошто`/`затоа` use ќ (mk-only); the clitics `го`/`ги` and `сум` (I am) are\n // distinctively Macedonian. Forms shared with sr (и, да, се, не, само, …) are\n // omitted; `вие`/`ние` are omitted as they collide with bg.\n function: [\n \"го\",\n \"ги\",\n \"сум\",\n \"ќе\",\n \"дека\",\n \"зошто\",\n \"затоа\",\n \"тоа\",\n \"оваа\",\n \"овој\",\n \"тој\",\n \"таа\",\n \"тие\",\n \"сега\",\n \"сите\",\n ],\n frequent: FREQUENT_GENERATED[\"mk\"] ?? [],\n },\n};\n\nconst kk: LanguageProfile = {\n code: \"kk\",\n iso6393: \"kaz\",\n // Kazakh Cyrillic, 42 letters (post-1940). Distinctive Turkic letters ә ғ қ ң\n // ө ұ ү һ і set it apart from every Slavic profile; it keeps the Russian set\n // (и й ё ц щ ъ ы ь э ю я) for loanwords. Highly distinctive, so low-risk.\n alphabet: \"аәбвгғдеёжзийкқлмнңоөпрстуұүфхһцчшщъыіьэюя\",\n words: {\n // Kazakh function words — no overlap with any Slavic profile, so every form\n // is safely distinctive. (`ма`/`ба`/`бе`/`па` interrogative particles are\n // omitted: too short and ambiguous against Slavic two-letter clitics.)\n function: [\n \"мен\",\n \"сен\",\n \"бұл\",\n \"және\",\n \"бар\",\n \"жоқ\",\n \"ол\",\n \"үшін\",\n \"оны\",\n \"менің\",\n \"сенің\",\n \"оның\",\n \"бірақ\",\n \"егер\",\n \"сол\",\n \"осы\",\n \"біз\",\n \"сіз\",\n \"олар\",\n \"қайда\",\n \"неге\",\n \"себебі\",\n \"қандай\",\n \"мұнда\",\n \"деп\",\n \"ғой\",\n ],\n // Corpus-derived from the smaller `kk_full.txt` (no curated kk_50k exists).\n frequent: FREQUENT_GENERATED[\"kk\"] ?? [],\n },\n};\n\nexport { uk, ru, be, bg, en, sr, mk, kk };\n\n/** Registry of shipped profiles, keyed by BCP-47 code. */\nexport const PROFILES: Readonly<Record<LanguageCode, LanguageProfile>> = {\n uk,\n ru,\n be,\n bg,\n en,\n sr,\n mk,\n kk,\n};\n\n/** BCP-47 codes for which langtell ships a ready-made {@link LanguageProfile}.\n * Handy for narrowing a caller's roster to codes that can actually classify —\n * e.g. `codes.filter(hasProfile)`. Derived from {@link PROFILES}. */\nexport const PROFILED_CODES: readonly LanguageCode[] = Object.keys(PROFILES);\n\n/** Whether langtell ships a ready-made {@link LanguageProfile} for `code`. An\n * own-property check, so inherited names (`\"toString\"`, `\"constructor\"`) read\n * as absent. */\nexport function hasProfile(code: LanguageCode): boolean {\n return Object.prototype.hasOwnProperty.call(PROFILES, code);\n}\n\n/** Resolve profiles for the given codes, skipping any without a shipped profile. */\nexport function getProfiles(codes: readonly LanguageCode[]): LanguageProfile[] {\n return codes.map((c) => PROFILES[c]).filter((p): p is LanguageProfile => p !== undefined);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/internal/frequent.ts","../src/profiles.ts"],"names":[],"mappings":";AA0BO,IAAM,kBAAA,GAAkE;AAAA,EAC7E,EAAA,EAAI;AAAA,IACF,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,8DAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,kDAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,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A,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,8DAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,kDAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,wDAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,8DAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,wDAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,8DAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gFAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,wDAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,kDAAA;AAAA,IACA,4CAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,wDAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,8DAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,kDAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,wDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,EAAA,EAAI;AAAA,IACF,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,wDAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,8DAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,QAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,oBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,EAAA,EAAI;AAAA,IACF,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,wDAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,wDAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,0BAAA;AAAA,IACA,QAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,kDAAA;AAAA,IACA,sCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,kDAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,QAAA;AAAA,IACA,oBAAA;AAAA,IACA,sCAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,cAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,sCAAA;AAAA,IACA,sCAAA;AAAA,IACA,gCAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,oBAAA;AAAA,IACA,gCAAA;AAAA,IACA,gCAAA;AAAA,IACA,0BAAA;AAAA,IACA,0BAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA,kDAAA;AAAA,IACA,4CAAA;AAAA,IACA,kDAAA;AAAA,IACA,sCAAA;AAAA,IACA,oBAAA;AAAA,IACA,0BAAA;AAAA,IACA,oBAAA;AAAA,IACA,kDAAA;AAAA,IACA,oBAAA;AAAA,IACA,oBAAA;AAAA,IACA,4CAAA;AAAA,IACA,gCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,IAAI;AACN,CAAA;;;ACnjCA,IAAM,WAAA,GAAiC;AAAA,EACrC,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,8DAAA;AAAA,EACA,gCAAA;AAAA,EACA;AACF,CAAA;AAKA,IAAM,WAAA,GAAiC;AAAA,EACrC,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,0BAAA;AAAA,EACA,4CAAA;AAAA,EACA,0BAAA;AAAA,EACA,gCAAA;AAAA,EACA,0BAAA;AAAA,EACA,sCAAA;AAAA,EACA,kDAAA;AAAA,EACA,wDAAA;AAAA,EACA,kDAAA;AAAA,EACA;AACF,CAAA;AASA,IAAM,WAAA,GAAiC;AAAA,EACrC,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,0BAAA;AAAA,EACA,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,0BAAA;AAAA,EACA,gCAAA;AAAA,EACA,sCAAA;AAAA,EACA,sCAAA;AAAA,EACA,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,0BAAA;AAAA,EACA,sCAAA;AAAA,EACA,gCAAA;AAAA,EACA,sCAAA;AAAA,EACA,0BAAA;AAAA,EACA,4CAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA,EAET,QAAA,EAAU,wMAAA;AAAA;AAAA;AAAA,EAGV,KAAA,EAAO,eAAA;AAAA,EACP,KAAA,EAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,QAAA;AAAA,MACA,QAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,sCAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAC;AAE3C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA,EAET,QAAA,EAAU,wMAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,sCAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAC;AAE3C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA,EAET,QAAA,EAAU,kMAAA;AAAA;AAAA,EAEV,KAAA,EAAO,eAAA;AAAA,EACP,KAAA,EAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,QAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,sCAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,4CAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAA;AAE1C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA;AAAA;AAAA,EAIT,QAAA,EAAU,sLAAA;AAAA,EACV,KAAA,EAAO;AAAA;AAAA,IAEL,QAAA,EAAU;AAAA,MACR,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,sCAAA;AAAA,MACA,0BAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAA;AAE1C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA,EACT,QAAA,EAAU,4BAAA;AAAA,EACV,KAAA,EAAO;AAAA,IACL,QAAA,EAAU;AAAA,MACR,KAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAC;AAE3C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA;AAAA;AAAA,EAIT,QAAA,EAAU,sLAAA;AAAA,EACV,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,QAAA,EAAU;AAAA,MACR,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA;AAAA,IAEA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAA;AAE1C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA;AAAA,EAGT,QAAA,EAAU,4LAAA;AAAA,EACV,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,IAKL,QAAA,EAAU;AAAA,MACR,cAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAC;AAE3C;AAEA,IAAM,EAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,IAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA;AAAA;AAAA;AAAA,EAIT,QAAA,EAAU,8PAAA;AAAA,EACV,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA,IAIL,QAAA,EAAU;AAAA,MACR,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,cAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,gCAAA;AAAA,MACA,gCAAA;AAAA,MACA,0BAAA;AAAA,MACA,gCAAA;AAAA,MACA,0BAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,gCAAA;AAAA,MACA,0BAAA;AAAA,MACA,sCAAA;AAAA,MACA,sCAAA;AAAA,MACA,gCAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAAA;AAAA,IAEA,QAAA,EAAU,kBAAA,CAAmB,IAAI,CAAA,IAAK;AAAC;AAE3C;AAKO,IAAM,QAAA,GAA4D;AAAA,EACvE,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF;AAKO,IAAM,cAAA,GAA0C,MAAA,CAAO,IAAA,CAAK,QAAQ;AAKpE,SAAS,WAAW,IAAA,EAA6B;AACtD,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,UAAU,IAAI,CAAA;AAC5D;AAGO,SAAS,YAAY,KAAA,EAAmD;AAC7E,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,QAAA,CAAS,CAAC,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAA4B,CAAA,KAAM,MAAS,CAAA;AAC1F","file":"profiles.js","sourcesContent":["// Generated frequency lists — the top everyday words for each language,\n// taken from an open subtitle-frequency corpus (general vocabulary; no\n// project-specific terms). Source: hermitdave/FrequencyWords (OpenSubtitles,\n// the 2018 content set). Kept out of the zero-dependency core: this data lives\n// behind the `langtell/profiles` subpath only.\n//\n// Rung 2b of the classifier (internal/classify.ts) reads these. They sharpen\n// distinctive-free disambiguation (e.g. uk \"робота\" vs ru \"работа\").\n//\n// Coverage notes for the Cyrillic-sibling additions:\n// - uk — the OpenSubtitles Ukrainian content set carries Russian subtitle\n// lines, so the raw list arrived with 23 Russian words in it (`это`, `ты`,\n// `который`, …). Every one is spelled with a letter Ukrainian does not have\n// (ы/э/ё), which is exactly the filter applied: a word its own language\n// cannot spell is not evidence for that language, and leaving it in makes it\n// cancel against ru's list — silently disarming a word ru genuinely owns.\n// `profiles.test.ts` pins the invariant for every shipped list.\n// - mk — top words from the curated `mk_50k.txt` list (Cyrillic, clean).\n// - kk — top Cyrillic words from `kk_full.txt`; OpenSubtitles has no curated\n// `kk_50k.txt`, so this list is shorter and was filtered to drop a handful\n// of subtitle proper nouns (character/show names). Still corpus-derived, not\n// hand-written, but thinner than the Slavic lists.\n// - sr — NOT here: FrequencyWords Serbian is Latin script only, so there is no\n// Cyrillic-Serbian corpus to draw from. The sr profile uses a hand-curated\n// Cyrillic content-word fallback (see SR_FREQUENT in profiles.ts), mirroring\n// the be/bg precedent. Flagged there for native-speaker review.\nexport const FREQUENT_GENERATED: Readonly<Record<string, readonly string[]>> = {\n uk: [\n \"не\",\n \"що\",\n \"на\",\n \"це\",\n \"ти\",\n \"что\",\n \"так\",\n \"ми\",\n \"все\",\n \"тебе\",\n \"він\",\n \"як\",\n \"за\",\n \"ви\",\n \"до\",\n \"мене\",\n \"он\",\n \"мені\",\n \"ні\",\n \"але\",\n \"мне\",\n \"да\",\n \"как\",\n \"просто\",\n \"меня\",\n \"нет\",\n \"тут\",\n \"для\",\n \"його\",\n \"но\",\n \"то\",\n \"ну\",\n \"знаю\",\n \"про\",\n \"нас\",\n \"вас\",\n \"вони\",\n \"тебя\",\n \"вона\",\n \"она\",\n \"тобі\",\n \"его\",\n \"там\",\n \"якщо\",\n \"ще\",\n \"та\",\n \"добре\",\n \"щоб\",\n \"вам\",\n \"по\",\n \"нам\",\n \"хочу\",\n \"коли\",\n \"если\",\n \"же\",\n \"вже\",\n \"було\",\n \"був\",\n \"они\",\n \"може\",\n \"чи\",\n \"дуже\",\n \"від\",\n \"хорошо\",\n \"чому\",\n \"буде\",\n \"хто\",\n \"есть\",\n \"давай\",\n \"тому\",\n \"де\",\n \"здесь\",\n \"треба\",\n \"от\",\n \"думаю\",\n \"когда\",\n \"из\",\n \"того\",\n \"щось\",\n \"гаразд\",\n \"цього\",\n \"только\",\n \"зараз\",\n \"может\",\n \"нічого\",\n \"моя\",\n \"тільки\",\n \"те\",\n \"бути\",\n \"один\",\n \"уже\",\n \"можу\",\n \"тепер\",\n \"мій\",\n \"ось\",\n \"почему\",\n \"дякую\",\n \"раз\",\n \"вот\",\n \"могу\",\n \"через\",\n \"нужно\",\n \"всі\",\n \"бо\",\n \"кто\",\n \"будет\",\n \"правда\",\n \"без\",\n \"себе\",\n \"більше\",\n \"тоді\",\n \"час\",\n \"день\",\n \"ладно\",\n \"сейчас\",\n \"можна\",\n \"була\",\n \"их\",\n \"боже\",\n \"еще\",\n \"спасибо\",\n \"или\",\n \"будь\",\n \"йому\",\n \"где\",\n \"лише\",\n \"очень\",\n \"ним\",\n \"привіт\",\n \"них\",\n \"чем\",\n \"навіть\",\n \"ніколи\",\n \"знаешь\",\n \"буду\",\n \"би\",\n \"зі\",\n \"ее\",\n \"мой\",\n \"ничего\",\n \"хочеш\",\n \"нього\",\n \"цей\",\n \"чого\",\n \"життя\",\n \"теж\",\n \"люди\",\n \"твоя\",\n \"со\",\n \"потому\",\n \"сказав\",\n \"больше\",\n \"теперь\",\n \"людей\",\n \"або\",\n \"свою\",\n \"привет\",\n \"який\",\n \"сюди\",\n \"таке\",\n \"даже\",\n \"із\",\n \"об\",\n \"тобою\",\n \"були\",\n \"два\",\n \"краще\",\n \"пока\",\n \"ему\",\n \"завжди\",\n \"хочешь\",\n \"должен\",\n \"багато\",\n \"сьогодні\",\n \"ей\",\n \"точно\",\n \"ласка\",\n \"время\",\n \"той\",\n \"себя\",\n \"надо\",\n \"сам\",\n \"мною\",\n \"тоже\",\n \"прошу\",\n \"маю\",\n \"сказал\",\n \"мама\",\n \"ли\",\n \"зробити\",\n \"сказати\",\n \"сказала\",\n \"назад\",\n \"які\",\n \"можеш\",\n \"тобой\",\n \"трохи\",\n \"потрібно\",\n \"ці\",\n \"тогда\",\n \"порядке\",\n \"ага\",\n \"саме\",\n \"хотів\",\n \"можешь\",\n \"під\",\n \"три\",\n \"никогда\",\n \"можете\",\n \"років\",\n \"собі\",\n \"скажи\",\n \"него\",\n \"пане\",\n \"робити\",\n \"знову\",\n \"твій\",\n \"люблю\",\n \"пожалуйста\",\n \"наш\",\n \"ни\",\n \"сегодня\",\n \"мной\",\n \"потім\",\n \"ніж\",\n \"гей\",\n \"дай\",\n \"перед\",\n \"завтра\",\n \"вами\",\n \"яка\",\n \"одного\",\n \"ваша\",\n \"конечно\",\n \"сделать\",\n \"лучше\",\n \"цьому\",\n \"ваш\",\n \"цю\",\n \"сказать\",\n \"пам\",\n \"ніхто\",\n \"сюда\",\n \"нами\",\n \"можливо\",\n \"після\",\n \"значит\",\n \"прямо\",\n \"скільки\",\n \"одна\",\n \"чудово\",\n \"давайте\",\n \"бачив\",\n \"такий\",\n \"кого\",\n \"хтось\",\n \"сер\",\n \"ця\",\n \"мою\",\n \"усе\",\n \"разом\",\n \"чего\",\n \"куди\",\n \"звичайно\",\n \"справді\",\n \"поки\",\n \"всегда\",\n \"делать\",\n \"дело\",\n \"гроші\",\n \"цим\",\n \"міг\",\n \"том\",\n \"хіба\",\n \"ней\",\n \"твой\",\n \"повинен\",\n \"друг\",\n \"можно\",\n \"дня\",\n \"досить\",\n \"можемо\",\n \"зробив\",\n \"много\",\n \"хотел\",\n \"над\",\n \"должна\",\n \"после\",\n \"хоче\",\n \"якби\",\n \"могли\",\n \"місце\",\n \"всего\",\n \"воно\",\n \"часу\",\n \"робиш\",\n \"хлопці\",\n \"вибачте\",\n \"додому\",\n \"весь\",\n \"руки\",\n \"ведь\",\n \"ясно\",\n \"возможно\",\n \"вибач\",\n \"такой\",\n \"доктор\",\n \"повинні\",\n \"говорить\",\n \"мого\",\n \"нема\",\n \"нб\",\n \"йди\",\n \"думаешь\",\n \"моей\",\n \"немного\",\n \"навіщо\",\n \"господи\",\n \"мабуть\",\n \"жизнь\",\n \"твою\",\n \"зачем\",\n \"чоловік\",\n \"ходімо\",\n \"лет\",\n \"такое\",\n \"случилось\",\n \"звідси\",\n \"слишком\",\n \"мати\",\n \"скажу\",\n \"скоро\",\n \"сталося\",\n \"прости\",\n \"нормально\",\n \"пані\",\n \"всіх\",\n \"також\",\n \"вместе\",\n \"кілька\",\n \"брат\",\n \"чорт\",\n \"сама\",\n \"во\",\n \"потом\",\n \"такого\",\n \"казав\",\n \"розумію\",\n \"батько\",\n \"отже\",\n \"сделал\",\n \"таким\",\n \"могла\",\n \"тим\",\n \"швидше\",\n \"жаль\",\n \"туди\",\n \"речі\",\n \"знати\",\n \"мог\",\n \"хочете\",\n \"помочь\",\n \"одну\",\n \"всех\",\n \"им\",\n \"ім\",\n \"думав\",\n \"можем\",\n \"под\",\n \"допомогти\",\n \"людина\",\n \"куда\",\n \"яку\",\n \"правильно\",\n \"давно\",\n \"зовсім\",\n \"при\",\n ],\n ru: [\n \"не\",\n \"что\",\n \"ты\",\n \"это\",\n \"на\",\n \"он\",\n \"мы\",\n \"как\",\n \"вы\",\n \"да\",\n \"мне\",\n \"нет\",\n \"меня\",\n \"так\",\n \"но\",\n \"его\",\n \"все\",\n \"она\",\n \"тебя\",\n \"если\",\n \"за\",\n \"бы\",\n \"тебе\",\n \"они\",\n \"чтобы\",\n \"же\",\n \"есть\",\n \"просто\",\n \"из\",\n \"для\",\n \"ну\",\n \"когда\",\n \"хорошо\",\n \"здесь\",\n \"по\",\n \"был\",\n \"знаю\",\n \"то\",\n \"только\",\n \"всё\",\n \"было\",\n \"вас\",\n \"может\",\n \"нас\",\n \"вот\",\n \"от\",\n \"быть\",\n \"кто\",\n \"будет\",\n \"почему\",\n \"вам\",\n \"их\",\n \"очень\",\n \"могу\",\n \"уже\",\n \"спасибо\",\n \"или\",\n \"нам\",\n \"еще\",\n \"там\",\n \"нужно\",\n \"сейчас\",\n \"где\",\n \"чем\",\n \"хочу\",\n \"ничего\",\n \"этого\",\n \"была\",\n \"мой\",\n \"ее\",\n \"ладно\",\n \"знаешь\",\n \"до\",\n \"этом\",\n \"потому\",\n \"теперь\",\n \"думаю\",\n \"больше\",\n \"её\",\n \"со\",\n \"раз\",\n \"ему\",\n \"надо\",\n \"время\",\n \"этот\",\n \"ли\",\n \"ещё\",\n \"пока\",\n \"даже\",\n \"привет\",\n \"сказал\",\n \"себя\",\n \"должен\",\n \"тоже\",\n \"хочешь\",\n \"давай\",\n \"никогда\",\n \"эй\",\n \"того\",\n \"тогда\",\n \"него\",\n \"ни\",\n \"тут\",\n \"были\",\n \"конечно\",\n \"правда\",\n \"об\",\n \"моя\",\n \"пожалуйста\",\n \"тобой\",\n \"сказать\",\n \"сегодня\",\n \"один\",\n \"лучше\",\n \"можешь\",\n \"сюда\",\n \"мной\",\n \"значит\",\n \"сделать\",\n \"всегда\",\n \"дело\",\n \"можно\",\n \"ей\",\n \"должны\",\n \"порядке\",\n \"без\",\n \"день\",\n \"том\",\n \"буду\",\n \"делать\",\n \"хотел\",\n \"чего\",\n \"эти\",\n \"много\",\n \"после\",\n \"этим\",\n \"всего\",\n \"во\",\n \"твой\",\n \"ним\",\n \"лет\",\n \"боже\",\n \"них\",\n \"сэр\",\n \"ведь\",\n \"мистер\",\n \"жизнь\",\n \"потом\",\n \"ней\",\n \"такой\",\n \"который\",\n \"всех\",\n \"через\",\n \"им\",\n \"возможно\",\n \"немного\",\n \"такое\",\n \"слишком\",\n \"себе\",\n \"зачем\",\n \"должна\",\n \"моей\",\n \"люди\",\n \"знаете\",\n \"этой\",\n \"думаешь\",\n \"свою\",\n \"точно\",\n \"человек\",\n \"твоя\",\n \"под\",\n \"сказала\",\n \"назад\",\n \"эту\",\n \"можем\",\n \"случилось\",\n \"мама\",\n \"мог\",\n \"вместе\",\n \"отец\",\n \"сделал\",\n \"мои\",\n \"кажется\",\n \"друг\",\n \"куда\",\n \"никто\",\n \"поэтому\",\n \"эта\",\n \"которые\",\n \"два\",\n \"тот\",\n \"сколько\",\n \"понимаю\",\n \"снова\",\n \"жизни\",\n \"нравится\",\n \"людей\",\n \"помочь\",\n \"видел\",\n \"люблю\",\n \"хочет\",\n \"место\",\n \"знать\",\n \"прости\",\n \"отлично\",\n \"похоже\",\n \"парень\",\n \"домой\",\n \"всем\",\n \"деньги\",\n \"иди\",\n \"времени\",\n \"дома\",\n \"именно\",\n \"доктор\",\n \"думал\",\n \"говорил\",\n \"делаешь\",\n \"будем\",\n \"прямо\",\n \"стоит\",\n \"поговорить\",\n \"найти\",\n \"разве\",\n \"слушай\",\n \"своей\",\n \"лишь\",\n \"ага\",\n \"можете\",\n \"простите\",\n \"хотела\",\n \"сам\",\n \"тем\",\n \"будешь\",\n \"прошу\",\n \"три\",\n \"деле\",\n \"хотите\",\n \"говорить\",\n \"давайте\",\n \"совсем\",\n \"знал\",\n \"знает\",\n \"какой\",\n \"моего\",\n \"скажи\",\n \"дом\",\n \"дела\",\n \"вами\",\n \"свои\",\n \"говорит\",\n \"несколько\",\n \"должно\",\n \"про\",\n \"ваш\",\n \"происходит\",\n \"жаль\",\n \"туда\",\n \"действительно\",\n \"папа\",\n \"завтра\",\n \"оно\",\n \"черт\",\n \"одна\",\n \"перед\",\n \"наш\",\n \"уверен\",\n \"отсюда\",\n \"нужна\",\n \"самом\",\n \"тех\",\n \"нужен\",\n \"свой\",\n \"мою\",\n \"кого\",\n \"верно\",\n \"работу\",\n \"каждый\",\n \"твоей\",\n \"будут\",\n \"хватит\",\n \"понял\",\n \"нее\",\n \"уж\",\n \"имя\",\n \"против\",\n \"пор\",\n \"чём\",\n \"раньше\",\n \"говорю\",\n \"более\",\n \"надеюсь\",\n \"итак\",\n \"при\",\n \"ваша\",\n \"вообще\",\n \"пошли\",\n \"мать\",\n \"нельзя\",\n \"наверное\",\n \"нами\",\n \"твои\",\n \"могли\",\n \"дай\",\n \"ради\",\n \"всю\",\n \"ребята\",\n \"ко\",\n \"хотя\",\n \"понимаешь\",\n \"идти\",\n \"этих\",\n \"откуда\",\n \"такая\",\n \"ясно\",\n \"другой\",\n \"извините\",\n \"вижу\",\n \"видеть\",\n \"над\",\n \"могут\",\n \"равно\",\n \"мисс\",\n \"скоро\",\n \"будто\",\n \"зовут\",\n \"виду\",\n \"наши\",\n \"думала\",\n \"послушай\",\n \"между\",\n \"своего\",\n \"вопрос\",\n \"этому\",\n \"почти\",\n \"года\",\n \"человека\",\n \"которая\",\n \"подожди\",\n \"руки\",\n \"нормально\",\n \"такие\",\n \"возьми\",\n \"минут\",\n \"извини\",\n \"вещи\",\n \"могла\",\n \"смотри\",\n \"хоть\",\n \"работа\",\n \"пару\",\n \"сын\",\n \"ваше\",\n \"дня\",\n \"пора\",\n \"неё\",\n \"жить\",\n \"видишь\",\n \"достаточно\",\n \"господи\",\n \"быстро\",\n \"твою\",\n \"весь\",\n \"убить\",\n \"ночь\",\n \"говоришь\",\n \"собой\",\n \"скажу\",\n \"готов\",\n \"слышал\",\n \"какая\",\n \"посмотри\",\n \"первый\",\n \"самое\",\n \"видела\",\n \"пусть\",\n \"месте\",\n \"нашли\",\n \"сказали\",\n \"плохо\",\n \"смогу\",\n \"ваши\",\n \"отца\",\n \"детей\",\n \"знаем\",\n \"рад\",\n \"прав\",\n \"никаких\",\n \"имею\",\n \"миссис\",\n \"иногда\",\n \"смерти\",\n \"своих\",\n \"пойду\",\n \"брат\",\n \"вроде\",\n \"рядом\",\n \"мир\",\n \"произошло\",\n \"которую\",\n ],\n mk: [\n \"да\",\n \"не\",\n \"се\",\n \"е\",\n \"на\",\n \"го\",\n \"и\",\n \"што\",\n \"во\",\n \"за\",\n \"тоа\",\n \"ти\",\n \"дека\",\n \"од\",\n \"со\",\n \"ми\",\n \"си\",\n \"ја\",\n \"како\",\n \"јас\",\n \"ги\",\n \"ова\",\n \"сум\",\n \"добро\",\n \"ме\",\n \"те\",\n \"само\",\n \"ли\",\n \"нема\",\n \"но\",\n \"ако\",\n \"а\",\n \"тој\",\n \"беше\",\n \"треба\",\n \"кога\",\n \"сега\",\n \"многу\",\n \"знам\",\n \"кој\",\n \"му\",\n \"има\",\n \"нешто\",\n \"може\",\n \"мене\",\n \"би\",\n \"каде\",\n \"сакам\",\n \"тебе\",\n \"тука\",\n \"дали\",\n \"така\",\n \"зошто\",\n \"сите\",\n \"ајде\",\n \"ред\",\n \"ни\",\n \"па\",\n \"знаеш\",\n \"овде\",\n \"таа\",\n \"можам\",\n \"биде\",\n \"по\",\n \"мислам\",\n \"сакаш\",\n \"до\",\n \"еден\",\n \"ви\",\n \"уште\",\n \"или\",\n \"некој\",\n \"ама\",\n \"време\",\n \"ништо\",\n \"тие\",\n \"таму\",\n \"сме\",\n \"мора\",\n \"сте\",\n \"пред\",\n \"можеби\",\n \"имам\",\n \"ве\",\n \"малку\",\n \"молам\",\n \"ние\",\n \"еј\",\n \"одиме\",\n \"навистина\",\n \"можеш\",\n \"колку\",\n \"него\",\n \"мојот\",\n \"работа\",\n \"тогаш\",\n \"оди\",\n \"здраво\",\n \"толку\",\n \"никогаш\",\n \"имаш\",\n \"вие\",\n \"мислиш\",\n \"им\",\n \"кои\",\n \"значи\",\n \"затоа\",\n \"една\",\n \"благодарам\",\n \"мојата\",\n \"овој\",\n \"која\",\n \"татко\",\n \"работи\",\n \"нели\",\n \"без\",\n \"одам\",\n \"кажам\",\n \"човек\",\n \"имаме\",\n \"години\",\n \"нас\",\n \"ден\",\n \"оваа\",\n \"фала\",\n \"правиш\",\n \"кај\",\n \"сака\",\n \"направи\",\n \"о\",\n \"рече\",\n \"види\",\n \"твојот\",\n \"бев\",\n \"изгледа\",\n \"додека\",\n \"случи\",\n \"кажи\",\n \"пат\",\n \"вас\",\n \"твојата\",\n \"никој\",\n \"мислев\",\n \"место\",\n \"овие\",\n \"дома\",\n \"мајка\",\n \"секогаш\",\n \"жал\",\n \"морам\",\n ],\n kk: [\n \"мен\",\n \"ол\",\n \"сен\",\n \"не\",\n \"керек\",\n \"оны\",\n \"ба\",\n \"ма\",\n \"бар\",\n \"бе\",\n \"деп\",\n \"емес\",\n \"сіз\",\n \"біз\",\n \"ал\",\n \"мені\",\n \"де\",\n \"жатыр\",\n \"енді\",\n \"олар\",\n \"бір\",\n \"да\",\n \"сені\",\n \"неге\",\n \"адам\",\n \"осында\",\n \"болады\",\n \"келеді\",\n \"доктор\",\n \"мына\",\n \"болды\",\n \"тек\",\n \"рахмет\",\n \"сол\",\n \"еді\",\n \"ме\",\n \"болып\",\n \"егер\",\n \"осы\",\n \"мында\",\n \"солай\",\n \"едім\",\n \"міне\",\n \"президент\",\n \"екен\",\n \"кетті\",\n \"кім\",\n \"болса\",\n \"білмеймін\",\n \"бізге\",\n \"жарайды\",\n \"алып\",\n \"сізді\",\n \"пе\",\n \"сізге\",\n \"жерде\",\n \"ше\",\n \"кеттік\",\n \"бола\",\n \"шын\",\n \"жерден\",\n \"адамдар\",\n \"туралы\",\n \"жерге\",\n \"сонда\",\n \"келді\",\n \"мырза\",\n \"тірі\",\n \"деген\",\n \"болар\",\n \"білемін\",\n \"онда\",\n \"а\",\n \"бірге\",\n \"тым\",\n \"себебі\",\n \"екенін\",\n \"кел\",\n \"келген\",\n \"тауып\",\n \"дейді\",\n \"бер\",\n \"тіпті\",\n \"оларды\",\n \"алмаймын\",\n \"осылай\",\n \"олай\",\n \"одан\",\n \"бері\",\n \"жатырмын\",\n \"мынау\",\n \"келе\",\n \"у\",\n \"апа\",\n \"сондай\",\n \"кешірім\",\n \"ешкім\",\n \"бізді\",\n \"па\",\n \"іздеп\",\n \"тиіс\",\n \"сендер\",\n \"менде\",\n \"дене\",\n \"кейін\",\n \"тез\",\n \"тарт\",\n \"біреу\",\n \"болмайды\",\n \"ана\",\n \"тыныш\",\n \"ойлап\",\n \"екі\",\n \"болмаса\",\n \"айтты\",\n \"келдім\",\n \"арнайы\",\n \"былай\",\n \"шынымен\",\n \"келіп\",\n \"бол\",\n \"барып\",\n \"алтын\",\n \"отыр\",\n \"болу\",\n \"кішкене\",\n \"алмай\",\n \"келмейді\",\n \"керемет\",\n \"адамдары\",\n \"деймін\",\n \"жеп\",\n \"бойы\",\n \"сэр\",\n \"дегенмен\",\n \"кей\",\n \"боп\",\n \"тезірек\",\n \"біраз\",\n \"бара\",\n ],\n en: [],\n};\n","/**\n * `langtell/profiles` — ready-to-use {@link LanguageProfile} data.\n *\n * This is the heavy DATA half of the library: alphabets, curated function-word\n * lists, and corpus-frequent word lists. It is deliberately kept behind its own\n * subpath, OUT of the zero-dependency core, so `import { compile } from\n * \"langtell\"` never drags the word corpora into a bundle that only needs the\n * script/letter rungs. Pass these into `compile({ candidates: [...] })`.\n *\n * Each profile is declarative and auditable:\n * - `alphabet` — the language's lowercased alphabet (raw; distinctiveness\n * is computed at runtime per candidate set).\n * - `marks` — orthographic marks that count as rung-1 evidence but\n * are not alphabet letters (the intra-word apostrophe).\n * - `words.function` — curated grammatical markers, hand-verified.\n * - `words.frequent` — common everyday words from a subtitle-frequency corpus.\n * - `iso6393` — ISO 639-3 code for the optional franc engine.\n *\n * Curation rule for `function`: a token may appear in exactly one candidate's\n * list ONLY if that form is genuinely used by only that language among those we\n * support. Shared forms must be in every list that uses them (set-difference\n * then cancels them) or omitted from all. When in doubt, omit: a missing marker\n * only costs recall.\n */\nimport type { LanguageCode, LanguageProfile } from \"./types.js\";\nimport { FREQUENT_GENERATED } from \"./internal/frequent.js\";\n\n/** Belarusian has no subtitle frequency data — hand-curated content words. */\nconst BE_FREQUENT: readonly string[] = [\n \"навіны\",\n \"відэа\",\n \"горад\",\n \"краіна\",\n \"дзень\",\n \"жыццё\",\n \"людзі\",\n \"праца\",\n \"беларуская\",\n \"сёння\",\n \"вядомы\",\n];\n\n/** Bulgarian has no subtitle frequency data here — hand-curated content words,\n * mirroring the BE fallback. Forms whose spelling is genuinely Bulgarian\n * (e.g. `град`/`днес` vs ru `город`/`сегодня`) so set-difference can use them. */\nconst BG_FREQUENT: readonly string[] = [\n \"новини\",\n \"видео\",\n \"град\",\n \"държава\",\n \"днес\",\n \"живот\",\n \"хора\",\n \"работа\",\n \"българия\",\n \"български\",\n \"известен\",\n \"страна\",\n];\n\n/** Serbian Cyrillic has NO usable subtitle frequency data: hermitdave/\n * FrequencyWords ships Serbian in LATIN script only, and blind transliteration\n * would invent data, so this is a hand-curated Cyrillic content-word list,\n * mirroring the BE/BG fallbacks. Forms are everyday Serbian content words spelt\n * in Cyrillic; many use Serbian-distinctive letters (ј, ћ, ђ, џ) so they read as\n * distinctive at runtime. NEEDS NATIVE-SPEAKER / LINGUISTIC REVIEW before\n * release. */\nconst SR_FREQUENT: readonly string[] = [\n \"вести\",\n \"видео\",\n \"град\",\n \"држава\",\n \"данас\",\n \"живот\",\n \"људи\",\n \"посао\",\n \"србија\",\n \"српски\",\n \"познат\",\n \"земља\",\n \"време\",\n \"деца\",\n \"године\",\n \"човек\",\n \"новине\",\n \"свет\",\n \"данашњи\",\n \"недеља\",\n];\n\nconst uk: LanguageProfile = {\n code: \"uk\",\n iso6393: \"ukr\",\n // has і ї є ґ and и; lacks ё ъ ы э\n alphabet: \"абвгґдеєжзиіїйклмнопрстуфхцчшщьюя\",\n // intra-word apostrophe (uk/be use it where ru uses ъ/nothing). All three\n // codepoints: U+0027 ' U+2019 ’ U+02BC ʼ.\n marks: \"'’ʼ\",\n words: {\n function: [\n \"і\",\n \"й\",\n \"що\",\n \"як\",\n \"це\",\n \"бо\",\n \"ще\",\n \"дуже\",\n \"де\",\n \"його\",\n \"її\",\n \"але\",\n \"який\",\n \"яка\",\n \"цей\",\n \"ця\",\n \"навіть\",\n \"чи\",\n \"або\",\n \"ні\",\n \"щоб\",\n \"теж\",\n \"також\",\n \"він\",\n \"вона\",\n \"вони\",\n ],\n frequent: FREQUENT_GENERATED[\"uk\"] ?? [],\n },\n};\n\nconst ru: LanguageProfile = {\n code: \"ru\",\n iso6393: \"rus\",\n // has ё ъ ы э and и; lacks і ї є ґ ў\n alphabet: \"абвгдеёжзийклмнопрстуфхцчшщъыьэюя\",\n words: {\n function: [\n \"и\",\n \"что\",\n \"как\",\n \"это\",\n \"бы\",\n \"уже\",\n \"или\",\n \"нет\",\n \"очень\",\n \"его\",\n \"её\",\n \"ее\",\n \"где\",\n \"когда\",\n \"этот\",\n \"эта\",\n \"но\",\n \"какой\",\n \"какая\",\n \"даже\",\n \"ещё\",\n \"чтобы\",\n \"потому\",\n \"тоже\",\n \"он\",\n \"она\",\n \"они\",\n ],\n frequent: FREQUENT_GENERATED[\"ru\"] ?? [],\n },\n};\n\nconst be: LanguageProfile = {\n code: \"be\",\n iso6393: \"bel\",\n // has і ў and ы ё э; lacks и щ ъ ї є ґ\n alphabet: \"абвгдеёжзійклмнопрстуўфхцчшыьэюя\",\n // intra-word apostrophe — same uk/be keep-signal; inert between uk and be.\n marks: \"'’ʼ\",\n words: {\n function: [\n \"і\",\n \"што\",\n \"гэта\",\n \"вельмі\",\n \"дзе\",\n \"ці\",\n \"таксама\",\n \"як\",\n \"але\",\n \"бо\",\n \"каб\",\n \"ён\",\n \"яна\",\n \"яны\",\n \"быў\",\n ],\n frequent: FREQUENT_GENERATED[\"be\"] ?? BE_FREQUENT,\n },\n};\n\nconst bg: LanguageProfile = {\n code: \"bg\",\n iso6393: \"bul\",\n // 30-letter Bulgarian alphabet. Has и й щ ъ ь (ъ is a full vowel); lacks ё ы э\n // і ї є ґ ў. `ъ` is shared with ru — inert between {ru, bg}; the word rungs\n // decide, exactly the mechanism `be` relies on for its shared letters.\n alphabet: \"абвгдежзийклмнопрстуфхцчшщъьюя\",\n words: {\n // Bulgarian-distinctive grammatical markers. Shared forms are omitted.\n function: [\n \"ще\",\n \"съм\",\n \"това\",\n \"този\",\n \"тази\",\n \"който\",\n \"която\",\n \"което\",\n \"които\",\n \"защото\",\n \"също\",\n \"тя\",\n \"ние\",\n \"вие\",\n ],\n frequent: FREQUENT_GENERATED[\"bg\"] ?? BG_FREQUENT,\n },\n};\n\nconst en: LanguageProfile = {\n code: \"en\",\n iso6393: \"eng\",\n alphabet: \"abcdefghijklmnopqrstuvwxyz\",\n words: {\n function: [\n \"the\",\n \"and\",\n \"or\",\n \"but\",\n \"of\",\n \"to\",\n \"in\",\n \"on\",\n \"at\",\n \"is\",\n \"are\",\n \"was\",\n \"were\",\n \"this\",\n \"that\",\n \"for\",\n \"with\",\n \"you\",\n \"we\",\n \"they\",\n \"he\",\n \"she\",\n \"it\",\n \"his\",\n \"her\",\n \"what\",\n \"how\",\n \"when\",\n \"where\",\n \"why\",\n \"who\",\n \"which\",\n \"a\",\n \"an\",\n \"i\",\n \"my\",\n \"your\",\n ],\n frequent: FREQUENT_GENERATED[\"en\"] ?? [],\n },\n};\n\nconst sr: LanguageProfile = {\n code: \"sr\",\n iso6393: \"srp\",\n // Serbian Cyrillic azbuka (Вук), 30 letters. Distinctive vs the other Cyrillic\n // profiles: ђ ћ (sr-only) and ј љ њ џ (shared with mk, inert between them; the\n // word rungs decide sr↔mk). No ё й щ ъ ы ь э ю я.\n alphabet: \"абвгдђежзијклљмнњопрстћуфхцчџш\",\n words: {\n // Serbian-distinctive grammatical markers. `сам` (I am) is omitted: it\n // collides with Macedonian `сам` (\"alone\"). Shared forms with mk (и, да, се,\n // не, на, само, …) are omitted so set-difference is not cancelled to nothing.\n // The future markers use ћ, a letter no other profile has.\n function: [\n \"је\",\n \"су\",\n \"али\",\n \"ће\",\n \"ћемо\",\n \"ћеш\",\n \"због\",\n \"јер\",\n \"овај\",\n \"када\",\n \"увек\",\n \"сада\",\n ],\n // Hand-curated Cyrillic fallback — see SR_FREQUENT. Flagged for review.\n frequent: FREQUENT_GENERATED[\"sr\"] ?? SR_FREQUENT,\n },\n};\n\nconst mk: LanguageProfile = {\n code: \"mk\",\n iso6393: \"mkd\",\n // Macedonian alphabet, 31 letters. Distinctive: ѓ ќ ѕ (mk-only) plus ј љ њ џ\n // (shared with sr). No ё й щ ъ ы ь э ю я, no ђ ћ (those are Serbian).\n alphabet: \"абвгдѓежзѕијклљмнњопрстќуфхцчџш\",\n words: {\n // Macedonian-distinctive grammatical markers. The future particle `ќе` and\n // `зошто`/`затоа` use ќ (mk-only); the clitics `го`/`ги` and `сум` (I am) are\n // distinctively Macedonian. Forms shared with sr (и, да, се, не, само, …) are\n // omitted; `вие`/`ние` are omitted as they collide with bg.\n function: [\n \"го\",\n \"ги\",\n \"сум\",\n \"ќе\",\n \"дека\",\n \"зошто\",\n \"затоа\",\n \"тоа\",\n \"оваа\",\n \"овој\",\n \"тој\",\n \"таа\",\n \"тие\",\n \"сега\",\n \"сите\",\n ],\n frequent: FREQUENT_GENERATED[\"mk\"] ?? [],\n },\n};\n\nconst kk: LanguageProfile = {\n code: \"kk\",\n iso6393: \"kaz\",\n // Kazakh Cyrillic, 42 letters (post-1940). Distinctive Turkic letters ә ғ қ ң\n // ө ұ ү һ і set it apart from every Slavic profile; it keeps the Russian set\n // (и й ё ц щ ъ ы ь э ю я) for loanwords. Highly distinctive, so low-risk.\n alphabet: \"аәбвгғдеёжзийкқлмнңоөпрстуұүфхһцчшщъыіьэюя\",\n words: {\n // Kazakh function words — no overlap with any Slavic profile, so every form\n // is safely distinctive. (`ма`/`ба`/`бе`/`па` interrogative particles are\n // omitted: too short and ambiguous against Slavic two-letter clitics.)\n function: [\n \"мен\",\n \"сен\",\n \"бұл\",\n \"және\",\n \"бар\",\n \"жоқ\",\n \"ол\",\n \"үшін\",\n \"оны\",\n \"менің\",\n \"сенің\",\n \"оның\",\n \"бірақ\",\n \"егер\",\n \"сол\",\n \"осы\",\n \"біз\",\n \"сіз\",\n \"олар\",\n \"қайда\",\n \"неге\",\n \"себебі\",\n \"қандай\",\n \"мұнда\",\n \"деп\",\n \"ғой\",\n ],\n // Corpus-derived from the smaller `kk_full.txt` (no curated kk_50k exists).\n frequent: FREQUENT_GENERATED[\"kk\"] ?? [],\n },\n};\n\nexport { uk, ru, be, bg, en, sr, mk, kk };\n\n/** Registry of shipped profiles, keyed by BCP-47 code. */\nexport const PROFILES: Readonly<Record<LanguageCode, LanguageProfile>> = {\n uk,\n ru,\n be,\n bg,\n en,\n sr,\n mk,\n kk,\n};\n\n/** BCP-47 codes for which langtell ships a ready-made {@link LanguageProfile}.\n * Handy for narrowing a caller's roster to codes that can actually classify —\n * e.g. `codes.filter(hasProfile)`. Derived from {@link PROFILES}. */\nexport const PROFILED_CODES: readonly LanguageCode[] = Object.keys(PROFILES);\n\n/** Whether langtell ships a ready-made {@link LanguageProfile} for `code`. An\n * own-property check, so inherited names (`\"toString\"`, `\"constructor\"`) read\n * as absent. */\nexport function hasProfile(code: LanguageCode): boolean {\n return Object.prototype.hasOwnProperty.call(PROFILES, code);\n}\n\n/** Resolve profiles for the given codes, skipping any without a shipped profile. */\nexport function getProfiles(codes: readonly LanguageCode[]): LanguageProfile[] {\n return codes.map((c) => PROFILES[c]).filter((p): p is LanguageProfile => p !== undefined);\n}\n"]}
|
package/dist/text.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { L as LanguageProfile, a as LanguageEvidence } from './types-
|
|
2
|
-
import { Rung3Resolver } from './classify.js';
|
|
1
|
+
import { L as LanguageProfile, a as LanguageEvidence } from './types-DbPJ0sxF.js';
|
|
2
|
+
import { Rung3Resolver, ClassifyOptions } from './classify.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Producer: candidate-relative script + lexical signals from the title text.
|
|
@@ -17,6 +17,6 @@ import { Rung3Resolver } from './classify.js';
|
|
|
17
17
|
* (or no usable distinctive signal) it abstains — emitting nothing rather than a
|
|
18
18
|
* coarse "unknown", since the roster decides relevance.
|
|
19
19
|
*/
|
|
20
|
-
declare function evidenceFromText(text: string | undefined, candidates?: readonly LanguageProfile[], rung3?: Rung3Resolver): LanguageEvidence[];
|
|
20
|
+
declare function evidenceFromText(text: string | undefined, candidates?: readonly LanguageProfile[], rung3?: Rung3Resolver, options?: ClassifyOptions): LanguageEvidence[];
|
|
21
21
|
|
|
22
22
|
export { evidenceFromText };
|
package/dist/text.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export { evidenceFromText } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { evidenceFromText } from './chunk-66W4QJGT.js';
|
|
2
|
+
import './chunk-VWKQLGB4.js';
|
|
3
|
+
import './chunk-2Z7REIOE.js';
|
|
3
4
|
//# sourceMappingURL=text.js.map
|
|
4
5
|
//# sourceMappingURL=text.js.map
|
|
@@ -94,7 +94,14 @@ interface AsyncSource {
|
|
|
94
94
|
type EvidenceSource = SyncSource | AsyncSource;
|
|
95
95
|
/** `true` iff the engine tuple contains any async source. Drives {@link DetectFn}. */
|
|
96
96
|
type HasAsync<E extends readonly EvidenceSource[]> = Extract<E[number], AsyncSource> extends never ? false : true;
|
|
97
|
-
/** Weights keyed by evidence `source` id or `kind`; missing keys use defaults.
|
|
97
|
+
/** Weights keyed by evidence `source` id or `kind`; missing keys use defaults.
|
|
98
|
+
*
|
|
99
|
+
* A weight is a finite, non-negative multiplier — `0` silences a signal
|
|
100
|
+
* entirely (it scores nothing, and a silenced script read no longer pins the
|
|
101
|
+
* verdict either). Anything outside that range — `Infinity`, `NaN`, a negative
|
|
102
|
+
* number — is not a usable multiplier and is ignored: that key resolves to the
|
|
103
|
+
* default weight as if it had not been set. There is no "always wins" weight;
|
|
104
|
+
* outrank a signal by weighing it above the others. */
|
|
98
105
|
type Weights = Partial<Record<string, number>>;
|
|
99
106
|
/** How {@link fuse} resolves a *non-discriminating* script read — one whose
|
|
100
107
|
* winning script is owned by ≤1 roster candidate, so the script alone (not the
|
|
@@ -128,6 +135,11 @@ interface DetectorConfig<E extends readonly EvidenceSource[] = []> {
|
|
|
128
135
|
* `"candidate"` (current behavior); opt into `"unknown"` for a roster-closed,
|
|
129
136
|
* evidence-only policy. */
|
|
130
137
|
nonDiscriminatingScript?: NonDiscriminatingScript;
|
|
138
|
+
/** Forwarded to the built-in text producer's classifier: judge each script on
|
|
139
|
+
* its own evidence. Off by default. See `ClassifyOptions.isolateScripts` in
|
|
140
|
+
* `langtell/classify`. Opt-in engines take their own option (e.g.
|
|
141
|
+
* `createFrancEngine(candidates, { isolateScripts: true })`). */
|
|
142
|
+
isolateScripts?: boolean;
|
|
131
143
|
}
|
|
132
144
|
/** The compiled detector. Synchronous when every source is sync; `Promise`-typed
|
|
133
145
|
* the moment an async engine is registered — so callers never guess `await`. */
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/text.ts"],"names":[],"mappings":";;;AAmBO,SAAS,gBAAA,CACd,IAAA,EACA,UAAA,EACA,KAAA,EACoB;AACpB,EAAA,IAAI,IAAA,KAAS,UAAa,IAAA,CAAK,IAAA,GAAO,MAAA,KAAW,CAAA,SAAU,EAAC;AAC5D,EAAA,IAAI,eAAe,MAAA,IAAa,UAAA,CAAW,MAAA,KAAW,CAAA,SAAU,EAAC;AAEjE,EAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,IAAA,EAAM,UAAA,EAAY,KAAK,CAAA;AACzD,EAAA,IAAI,OAAA,CAAQ,QAAA,KAAa,SAAA,EAAW,OAAO,EAAC;AAE5C,EAAA,MAAM,IAAA,GAAyB;AAAA,IAC7B,IAAA,EAAM,cAAA;AAAA,IACN,UAAU,OAAA,CAAQ,QAAA;AAAA,IAClB,UAAA,EAAY,kBAAA,CAAmB,OAAA,CAAQ,MAAA,EAAQ,QAAQ,IAAI,CAAA;AAAA,IAC3D,MAAA,EAAQ,cAAA;AAAA,IACR,OAAO,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,CAAM,GAAG,EAAE;AAAA,GAChC;AAIA,EAAA,IAAI,CAAC,OAAA,CAAQ,cAAA,EAAgB,IAAA,CAAK,cAAA,GAAiB,KAAA;AACnD,EAAA,OAAO,CAAC,IAAI,CAAA;AACd;AAWA,SAAS,kBAAA,CAAmB,QAAgB,IAAA,EAAoB;AAC9D,EAAA,IAAI,SAAS,CAAA,EAAG;AAEd,IAAA,OAAO,OAAA,CAAQ,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,IAAI,CAAA;AAAA,EAC9D;AACA,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ,CAAC,CAAA;AAC/B,EAAA,OAAO,OAAA,CAAQ,MAAO,IAAA,CAAK,GAAA,CAAI,MAAM,CAAC,CAAA,GAAI,IAAK,IAAI,CAAA;AACrD;AAEA,SAAS,QAAQ,KAAA,EAAuB;AACtC,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,GAAG,OAAO,CAAA;AACpC,EAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,CAAA;AACtB,EAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,CAAA;AACtB,EAAA,OAAO,KAAA;AACT","file":"chunk-7TDGJOIJ.js","sourcesContent":["import type { LanguageEvidence, LanguageProfile } from \"./types.js\";\nimport { classifyBySnippet, type Rung, type Rung3Resolver } from \"./internal/classify.js\";\n\n/**\n * Producer: candidate-relative script + lexical signals from the title text.\n *\n * Wraps the ported snippet classifier ({@link classifyBySnippet}): noise strip →\n * dominant-script scope → distinctive letters (rung 1) → function words (2a) →\n * frequent words (2b). The `candidates` roster makes scoring roster-relative —\n * `і` decides Ukrainian only when Russian is also a candidate. Sync and\n * zero-dependency; the optional franc rung is injected via `rung3`.\n *\n * Emits at most one `kind: \"title-script\"` evidence item. The classifier's\n * integer `margin` (the winner's lead over the runner-up) maps to a 0..1\n * `confidence`: a verdict at all means the dominant script and the deciding rung\n * agreed, so the floor is high; a wider lead nudges it up. With no candidates\n * (or no usable distinctive signal) it abstains — emitting nothing rather than a\n * coarse \"unknown\", since the roster decides relevance.\n */\nexport function evidenceFromText(\n text: string | undefined,\n candidates?: readonly LanguageProfile[],\n rung3?: Rung3Resolver,\n): LanguageEvidence[] {\n if (text === undefined || text.trim().length === 0) return [];\n if (candidates === undefined || candidates.length === 0) return [];\n\n const verdict = classifyBySnippet(text, candidates, rung3);\n if (verdict.language === \"unknown\") return [];\n\n const item: LanguageEvidence = {\n kind: \"title-script\",\n language: verdict.language,\n confidence: marginToConfidence(verdict.margin, verdict.rung),\n source: \"title-script\",\n value: text.trim().slice(0, 80),\n };\n // Surface only the meaningful negative: the script was owned by ≤1 candidate,\n // so it didn't choose between candidates. The discriminating case stays narrow\n // (flag omitted). `fuse({ nonDiscriminatingScript: \"unknown\" })` reads this.\n if (!verdict.discriminating) item.discriminating = false;\n return [item];\n}\n\n/**\n * Map the classifier's per-rung lead to a 0..1 confidence.\n *\n * Rungs 1–2 carry an integer count of distinctive items (≥1). A verdict already\n * means script + rung agreed, so the floor is high (0.6) and each extra\n * distinctive item adds up to a 0.35 bonus, saturating by a lead of 4. Rung 3\n * (franc) carries franc's own 0..1 score-gap, which is weaker evidence, so it is\n * scaled into a 0.4..0.75 band.\n */\nfunction marginToConfidence(margin: number, rung: Rung): number {\n if (rung === 3) {\n // franc score-gap is already 0..1; weaker than the distinctive rungs.\n return clamp01(0.4 + Math.min(Math.max(margin, 0), 1) * 0.35);\n }\n const lead = Math.max(margin, 1);\n return clamp01(0.6 + (Math.min(lead, 4) / 4) * 0.35);\n}\n\nfunction clamp01(value: number): number {\n if (!Number.isFinite(value)) return 0;\n if (value < 0) return 0;\n if (value > 1) return 1;\n return value;\n}\n"]}
|