UNPKG

23.5 kBJavaScriptView Raw
1'use strict';
2Object.defineProperty(exports, "__esModule", { value: true });
3const core_1 = require("./util/core");
4/**
5 * 单词类型
6 */
7var POSTAG;
8(function (POSTAG) {
9 /**
10 * 錯字
11 */
12 POSTAG[POSTAG["BAD"] = 2147483648] = "BAD";
13 /**
14 * 形容词 形语素
15 */
16 POSTAG[POSTAG["D_A"] = 1073741824] = "D_A";
17 /**
18 * 区别词 区别语素
19 */
20 POSTAG[POSTAG["D_B"] = 536870912] = "D_B";
21 /**
22 * 连词 连语素
23 */
24 POSTAG[POSTAG["D_C"] = 268435456] = "D_C";
25 // ---
26 /**
27 * 副词 副语素
28 */
29 POSTAG[POSTAG["D_D"] = 134217728] = "D_D";
30 /**
31 * 叹词 叹语素
32 */
33 POSTAG[POSTAG["D_E"] = 67108864] = "D_E";
34 /**
35 * 方位词 方位语素
36 */
37 POSTAG[POSTAG["D_F"] = 33554432] = "D_F";
38 /**
39 * 成语
40 */
41 POSTAG[POSTAG["D_I"] = 16777216] = "D_I";
42 // ---
43 /**
44 * 习语
45 * 類似成語或者曖昧無法分明的用語
46 */
47 POSTAG[POSTAG["D_L"] = 8388608] = "D_L";
48 /**
49 * 数词 数语素
50 * 可以與其他數詞或者量詞合併的詞
51 */
52 POSTAG[POSTAG["A_M"] = 4194304] = "A_M";
53 /**
54 * 数量词
55 */
56 POSTAG[POSTAG["D_MQ"] = 2097152] = "D_MQ";
57 /**
58 * 名词 名语素
59 */
60 POSTAG[POSTAG["D_N"] = 1048576] = "D_N";
61 // ---
62 /**
63 * 拟声词
64 */
65 POSTAG[POSTAG["D_O"] = 524288] = "D_O";
66 /**
67 * 介词
68 */
69 POSTAG[POSTAG["D_P"] = 262144] = "D_P";
70 /**
71 * 量词 量语素
72 * 可以與數詞合併的詞
73 */
74 POSTAG[POSTAG["A_Q"] = 131072] = "A_Q";
75 /**
76 * 代词 代语素
77 */
78 POSTAG[POSTAG["D_R"] = 65536] = "D_R";
79 // ---
80 /**
81 * 处所词
82 */
83 POSTAG[POSTAG["D_S"] = 32768] = "D_S";
84 /**
85 * 时间词
86 */
87 POSTAG[POSTAG["D_T"] = 16384] = "D_T";
88 /**
89 * 助词 助语素
90 */
91 POSTAG[POSTAG["D_U"] = 8192] = "D_U";
92 /**
93 * 动词 动语素
94 */
95 POSTAG[POSTAG["D_V"] = 4096] = "D_V";
96 // ---
97 /**
98 * 标点符号
99 */
100 POSTAG[POSTAG["D_W"] = 2048] = "D_W";
101 /**
102 * 非语素字
103 */
104 POSTAG[POSTAG["D_X"] = 1024] = "D_X";
105 /**
106 * 语气词 语气语素
107 */
108 POSTAG[POSTAG["D_Y"] = 512] = "D_Y";
109 /**
110 * 状态词
111 */
112 POSTAG[POSTAG["D_Z"] = 256] = "D_Z";
113 // ---
114 /**
115 * 人名
116 */
117 POSTAG[POSTAG["A_NR"] = 128] = "A_NR";
118 /**
119 * 地名
120 */
121 POSTAG[POSTAG["A_NS"] = 64] = "A_NS";
122 /**
123 * 机构团体
124 */
125 POSTAG[POSTAG["A_NT"] = 32] = "A_NT";
126 /**
127 * 外文字符
128 */
129 POSTAG[POSTAG["A_NX"] = 16] = "A_NX";
130 // ---
131 /**
132 * 其他专名
133 */
134 POSTAG[POSTAG["A_NZ"] = 8] = "A_NZ";
135 /**
136 * 前接成分
137 */
138 POSTAG[POSTAG["D_ZH"] = 4] = "D_ZH";
139 /**
140 * 后接成分
141 */
142 POSTAG[POSTAG["D_K"] = 2] = "D_K";
143 /**
144 * 网址、邮箱地址
145 */
146 POSTAG[POSTAG["URL"] = 1] = "URL";
147 /**
148 * 未知词性
149 */
150 POSTAG[POSTAG["UNK"] = 0] = "UNK";
151})(POSTAG = exports.POSTAG || (exports.POSTAG = {}));
152(function (POSTAG) {
153 POSTAG.POSTAG_KEYS = core_1.enumList(POSTAG);
154 /**
155 * 中文说明
156 */
157 let CHSNAME;
158 (function (CHSNAME) {
159 CHSNAME["BAD"] = "\u932F\u5B57";
160 CHSNAME["D_A"] = "\u5F62\u5BB9\u8BCD \u5F62\u8BED\u7D20";
161 CHSNAME["D_B"] = "\u533A\u522B\u8BCD \u533A\u522B\u8BED\u7D20";
162 CHSNAME["D_C"] = "\u8FDE\u8BCD \u8FDE\u8BED\u7D20";
163 CHSNAME["D_D"] = "\u526F\u8BCD \u526F\u8BED\u7D20";
164 CHSNAME["D_E"] = "\u53F9\u8BCD \u53F9\u8BED\u7D20";
165 CHSNAME["D_F"] = "\u65B9\u4F4D\u8BCD \u65B9\u4F4D\u8BED\u7D20";
166 CHSNAME["D_I"] = "\u6210\u8BED";
167 CHSNAME["D_L"] = "\u4E60\u8BED";
168 CHSNAME["A_M"] = "\u6570\u8BCD \u6570\u8BED\u7D20";
169 CHSNAME["D_MQ"] = "\u6570\u91CF\u8BCD";
170 CHSNAME["D_N"] = "\u540D\u8BCD \u540D\u8BED\u7D20";
171 CHSNAME["D_O"] = "\u62DF\u58F0\u8BCD";
172 CHSNAME["D_P"] = "\u4ECB\u8BCD";
173 CHSNAME["A_Q"] = "\u91CF\u8BCD \u91CF\u8BED\u7D20";
174 CHSNAME["D_R"] = "\u4EE3\u8BCD \u4EE3\u8BED\u7D20";
175 CHSNAME["D_S"] = "\u5904\u6240\u8BCD";
176 CHSNAME["D_T"] = "\u65F6\u95F4\u8BCD";
177 CHSNAME["D_U"] = "\u52A9\u8BCD \u52A9\u8BED\u7D20";
178 CHSNAME["D_V"] = "\u52A8\u8BCD \u52A8\u8BED\u7D20";
179 CHSNAME["D_W"] = "\u6807\u70B9\u7B26\u53F7";
180 CHSNAME["D_X"] = "\u975E\u8BED\u7D20\u5B57";
181 CHSNAME["D_Y"] = "\u8BED\u6C14\u8BCD \u8BED\u6C14\u8BED\u7D20";
182 CHSNAME["D_Z"] = "\u72B6\u6001\u8BCD";
183 CHSNAME["A_NR"] = "\u4EBA\u540D";
184 CHSNAME["A_NS"] = "\u5730\u540D";
185 CHSNAME["A_NT"] = "\u673A\u6784\u56E2\u4F53";
186 CHSNAME["A_NX"] = "\u5916\u6587\u5B57\u7B26";
187 CHSNAME["A_NZ"] = "\u5176\u4ED6\u4E13\u540D";
188 CHSNAME["D_ZH"] = "\u524D\u63A5\u6210\u5206";
189 CHSNAME["D_K"] = "\u540E\u63A5\u6210\u5206";
190 CHSNAME["URL"] = "\u7F51\u5740 \u90AE\u7BB1\u5730\u5740";
191 CHSNAME["UNK"] = "\u672A\u77E5";
192 })(CHSNAME = POSTAG.CHSNAME || (POSTAG.CHSNAME = {}));
193 /**
194 * 繁體中文说明
195 */
196 let ZHNAME;
197 (function (ZHNAME) {
198 ZHNAME["BAD"] = "\u932F\u5B57";
199 ZHNAME["D_A"] = "\u5F62\u5BB9\u8A5E \u5F62\u8A9E\u7D20";
200 ZHNAME["D_B"] = "\u5340\u5225\u8A5E \u5340\u5225\u8A9E\u7D20";
201 ZHNAME["D_C"] = "\u9023\u8A5E \u9023\u8A9E\u7D20";
202 ZHNAME["D_D"] = "\u526F\u8A5E \u526F\u8A9E\u7D20";
203 ZHNAME["D_E"] = "\u5606\u8A5E \u5606\u8A9E\u7D20";
204 ZHNAME["D_F"] = "\u65B9\u4F4D\u8A5E \u65B9\u4F4D\u8A9E\u7D20";
205 ZHNAME["D_I"] = "\u6210\u8A9E";
206 ZHNAME["D_L"] = "\u7FD2\u8A9E";
207 ZHNAME["A_M"] = "\u6578\u8A5E \u6578\u8A9E\u7D20";
208 ZHNAME["D_MQ"] = "\u6578\u91CF\u8A5E";
209 ZHNAME["D_N"] = "\u540D\u8A5E \u540D\u8A9E\u7D20";
210 ZHNAME["D_O"] = "\u64EC\u8072\u8A5E";
211 ZHNAME["D_P"] = "\u4ECB\u8A5E";
212 ZHNAME["A_Q"] = "\u91CF\u8A5E \u91CF\u8A9E\u7D20";
213 ZHNAME["D_R"] = "\u4EE3\u8A5E \u4EE3\u8A9E\u7D20";
214 ZHNAME["D_S"] = "\u8655\u6240\u8A5E";
215 ZHNAME["D_T"] = "\u6642\u9593\u8A5E";
216 ZHNAME["D_U"] = "\u52A9\u8A5E \u52A9\u8A9E\u7D20";
217 ZHNAME["D_V"] = "\u52D5\u8A5E \u52D5\u8A9E\u7D20";
218 ZHNAME["D_W"] = "\u6A19\u9EDE\u7B26\u865F";
219 ZHNAME["D_X"] = "\u975E\u8A9E\u7D20\u5B57";
220 ZHNAME["D_Y"] = "\u8A9E\u6C23\u8A5E \u8A9E\u6C23\u8A9E\u7D20";
221 ZHNAME["D_Z"] = "\u72C0\u614B\u8A5E";
222 ZHNAME["A_NR"] = "\u4EBA\u540D";
223 ZHNAME["A_NS"] = "\u5730\u540D";
224 ZHNAME["A_NT"] = "\u6A5F\u69CB\u5718\u9AD4";
225 ZHNAME["A_NX"] = "\u5916\u6587\u5B57\u7B26";
226 ZHNAME["A_NZ"] = "\u5176\u4ED6\u5C08\u540D";
227 ZHNAME["D_ZH"] = "\u524D\u63A5\u6210\u5206";
228 ZHNAME["D_K"] = "\u5F8C\u63A5\u6210\u5206";
229 ZHNAME["URL"] = "\u7DB2\u5740 \u90F5\u7BB1\u5730\u5740";
230 ZHNAME["UNK"] = "\u672A\u77E5";
231 })(ZHNAME = POSTAG.ZHNAME || (POSTAG.ZHNAME = {}));
232 /**
233 * 英文
234 */
235 let ENNAME;
236 (function (ENNAME) {
237 ENNAME["D_A"] = "a";
238 ENNAME["D_B"] = "b";
239 ENNAME["D_C"] = "c";
240 ENNAME["D_D"] = "d";
241 ENNAME["D_E"] = "e";
242 ENNAME["D_F"] = "f";
243 ENNAME["D_I"] = "i";
244 ENNAME["D_L"] = "l";
245 ENNAME["A_M"] = "m";
246 ENNAME["D_MQ"] = "mq";
247 ENNAME["D_N"] = "n";
248 ENNAME["D_O"] = "o";
249 ENNAME["D_P"] = "p";
250 ENNAME["A_Q"] = "q";
251 ENNAME["D_R"] = "r";
252 ENNAME["D_S"] = "s";
253 ENNAME["D_T"] = "t";
254 ENNAME["D_U"] = "u";
255 ENNAME["D_V"] = "v";
256 ENNAME["D_W"] = "w";
257 ENNAME["D_X"] = "x";
258 ENNAME["D_Y"] = "y";
259 ENNAME["D_Z"] = "z";
260 ENNAME["A_NR"] = "nr";
261 ENNAME["A_NS"] = "ns";
262 ENNAME["A_NT"] = "nt";
263 ENNAME["A_NX"] = "nx";
264 ENNAME["A_NZ"] = "nz";
265 ENNAME["D_ZH"] = "h";
266 ENNAME["D_K"] = "k";
267 ENNAME["URL"] = "uri";
268 ENNAME["UNK"] = "un";
269 })(ENNAME = POSTAG.ENNAME || (POSTAG.ENNAME = {}));
270 POSTAG.POSTAG_KEYS.forEach(function (key) {
271 let lc = key.toLowerCase();
272 POSTAG[lc] = POSTAG[key];
273 CHSNAME[lc] = CHSNAME[key];
274 ZHNAME[lc] = ZHNAME[key];
275 ENNAME[lc] = ENNAME[key];
276 });
277 POSTAG.enName = getPOSTagTranslator(POSTAG, ENNAME);
278 POSTAG.chsName = getPOSTagTranslator(POSTAG, CHSNAME);
279 POSTAG.zhName = getPOSTagTranslator(POSTAG, ZHNAME);
280 function getPOSTagTranslator(POSTagDict, I18NDict) {
281 return (p) => {
282 if (core_1.enumIsNaN(p)) {
283 return I18NDict[p] || I18NDict.UNK;
284 }
285 if (typeof p == 'string') {
286 p = Number(p);
287 }
288 let ret = POSTAG.POSTAG_KEYS.reduce(function (ret, i) {
289 if ((p & POSTAG[i]))
290 //if ((<number>p & <number>POSTAG[i]) > 0)
291 {
292 ret.push(I18NDict[i] || i);
293 }
294 return ret;
295 }, []);
296 if (ret.length < 1) {
297 return I18NDict.UNK;
298 }
299 else {
300 return ret.toString();
301 }
302 };
303 }
304 POSTAG.getPOSTagTranslator = getPOSTagTranslator;
305})(POSTAG = exports.POSTAG || (exports.POSTAG = {}));
306//console.log(POSTAG);
307//console.log(POSTAG.chsName(0x00000008 | 0x00000010));
308exports.default = POSTAG;
309//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUE9TVEFHLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiUE9TVEFHLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFFYixzQ0FBa0Q7QUFFbEQ7O0dBRUc7QUFDSCxJQUFZLE1BZ0tYO0FBaEtELFdBQVksTUFBTTtJQUdqQjs7T0FFRztJQUNILDBDQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gsMENBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCx5Q0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILHlDQUFnQixDQUFBO0lBRWhCLE1BQU07SUFFTjs7T0FFRztJQUNILHlDQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gsd0NBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCx3Q0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILHdDQUFnQixDQUFBO0lBRWhCLE1BQU07SUFFTjs7O09BR0c7SUFDSCx1Q0FBZ0IsQ0FBQTtJQUNoQjs7O09BR0c7SUFDSCx1Q0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILHlDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsdUNBQWdCLENBQUE7SUFFaEIsTUFBTTtJQUVOOztPQUVHO0lBQ0gsc0NBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCxzQ0FBZ0IsQ0FBQTtJQUNoQjs7O09BR0c7SUFDSCxzQ0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILHFDQUFnQixDQUFBO0lBRWhCLE1BQU07SUFFTjs7T0FFRztJQUNILHFDQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gscUNBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCxvQ0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILG9DQUFnQixDQUFBO0lBRWhCLE1BQU07SUFFTjs7T0FFRztJQUNILG9DQUFnQixDQUFBO0lBQ2hCOztPQUVHO0lBQ0gsb0NBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCxtQ0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILG1DQUFnQixDQUFBO0lBRWhCLE1BQU07SUFFTjs7T0FFRztJQUNILHFDQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsb0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxvQ0FBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0lBRWpCLE1BQU07SUFFTjs7T0FFRztJQUNILG1DQUFpQixDQUFBO0lBQ2pCOztPQUVHO0lBQ0gsbUNBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCxpQ0FBZ0IsQ0FBQTtJQUNoQjs7T0FFRztJQUNILGlDQUFnQixDQUFBO0lBRWhCOztPQUVHO0lBQ0gsaUNBQWdCLENBQUE7QUFDakIsQ0FBQyxFQWhLVyxNQUFNLEdBQU4sY0FBTSxLQUFOLGNBQU0sUUFnS2pCO0FBRUQsV0FBaUIsTUFBTTtJQUVULGtCQUFXLEdBQUcsZUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTVDOztPQUVHO0lBQ0gsSUFBWSxPQW1DWDtJQW5DRCxXQUFZLE9BQU87UUFFbEIsK0JBQVUsQ0FBQTtRQUNWLHdEQUFlLENBQUE7UUFDZiw4REFBZ0IsQ0FBQTtRQUNoQixrREFBYyxDQUFBO1FBQ2Qsa0RBQWMsQ0FBQTtRQUNkLGtEQUFjLENBQUE7UUFDZCw4REFBZ0IsQ0FBQTtRQUNoQiwrQkFBVSxDQUFBO1FBQ1YsK0JBQVUsQ0FBQTtRQUNWLGtEQUFjLENBQUE7UUFDZCxzQ0FBWSxDQUFBO1FBQ1osa0RBQWMsQ0FBQTtRQUNkLHFDQUFXLENBQUE7UUFDWCwrQkFBVSxDQUFBO1FBQ1Ysa0RBQWMsQ0FBQTtRQUNkLGtEQUFjLENBQUE7UUFDZCxxQ0FBVyxDQUFBO1FBQ1gscUNBQVcsQ0FBQTtRQUNYLGtEQUFjLENBQUE7UUFDZCxrREFBYyxDQUFBO1FBQ2QsMkNBQVksQ0FBQTtRQUNaLDJDQUFZLENBQUE7UUFDWiw4REFBZ0IsQ0FBQTtRQUNoQixxQ0FBVyxDQUFBO1FBQ1gsZ0NBQVcsQ0FBQTtRQUNYLGdDQUFXLENBQUE7UUFDWCw0Q0FBYSxDQUFBO1FBQ2IsNENBQWEsQ0FBQTtRQUNiLDRDQUFhLENBQUE7UUFDYiw0Q0FBYSxDQUFBO1FBQ2IsMkNBQVksQ0FBQTtRQUNaLHdEQUFlLENBQUE7UUFDZiwrQkFBVSxDQUFBO0lBQ1gsQ0FBQyxFQW5DVyxPQUFPLEdBQVAsY0FBTyxLQUFQLGNBQU8sUUFtQ2xCO0lBRUQ7O09BRUc7SUFDSCxJQUFZLE1BbUNYO0lBbkNELFdBQVksTUFBTTtRQUVqQiw4QkFBVSxDQUFBO1FBQ1YsdURBQWUsQ0FBQTtRQUNmLDZEQUFnQixDQUFBO1FBQ2hCLGlEQUFjLENBQUE7UUFDZCxpREFBYyxDQUFBO1FBQ2QsaURBQWMsQ0FBQTtRQUNkLDZEQUFnQixDQUFBO1FBQ2hCLDhCQUFVLENBQUE7UUFDViw4QkFBVSxDQUFBO1FBQ1YsaURBQWMsQ0FBQTtRQUNkLHFDQUFZLENBQUE7UUFDWixpREFBYyxDQUFBO1FBQ2Qsb0NBQVcsQ0FBQTtRQUNYLDhCQUFVLENBQUE7UUFDVixpREFBYyxDQUFBO1FBQ2QsaURBQWMsQ0FBQTtRQUNkLG9DQUFXLENBQUE7UUFDWCxvQ0FBVyxDQUFBO1FBQ1gsaURBQWMsQ0FBQTtRQUNkLGlEQUFjLENBQUE7UUFDZCwwQ0FBWSxDQUFBO1FBQ1osMENBQVksQ0FBQTtRQUNaLDZEQUFnQixDQUFBO1FBQ2hCLG9DQUFXLENBQUE7UUFDWCwrQkFBVyxDQUFBO1FBQ1gsK0JBQVcsQ0FBQTtRQUNYLDJDQUFhLENBQUE7UUFDYiwyQ0FBYSxDQUFBO1FBQ2IsMkNBQWEsQ0FBQTtRQUNiLDJDQUFhLENBQUE7UUFDYiwwQ0FBWSxDQUFBO1FBQ1osdURBQWUsQ0FBQTtRQUNmLDhCQUFVLENBQUE7SUFDWCxDQUFDLEVBbkNXLE1BQU0sR0FBTixhQUFNLEtBQU4sYUFBTSxRQW1DakI7SUFFRDs7T0FFRztJQUNILElBQVksTUFrQ1g7SUFsQ0QsV0FBWSxNQUFNO1FBRWpCLG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULHFCQUFXLENBQUE7UUFDWCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QsbUJBQVMsQ0FBQTtRQUNULG1CQUFTLENBQUE7UUFDVCxtQkFBUyxDQUFBO1FBQ1QscUJBQVcsQ0FBQTtRQUNYLHFCQUFXLENBQUE7UUFDWCxxQkFBVyxDQUFBO1FBQ1gscUJBQVcsQ0FBQTtRQUNYLHFCQUFXLENBQUE7UUFDWCxvQkFBVSxDQUFBO1FBQ1YsbUJBQVMsQ0FBQTtRQUNULHFCQUFXLENBQUE7UUFDWCxvQkFBVSxDQUFBO0lBQ1gsQ0FBQyxFQWxDVyxNQUFNLEdBQU4sYUFBTSxLQUFOLGFBQU0sUUFrQ2pCO0lBRUQsT0FBQSxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsR0FBRztRQUVoQyxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFM0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUVVLGFBQU0sR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0MsY0FBTyxHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMvQyxhQUFNLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTFELFNBQWdCLG1CQUFtQixDQUFDLFVBQXlCLEVBQUUsUUFBUTtRQUV0RSxPQUFPLENBQUMsQ0FBa0IsRUFBVSxFQUFFO1lBRXJDLElBQUksZ0JBQVMsQ0FBQyxDQUFDLENBQUMsRUFDaEI7Z0JBQ0MsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQzthQUNuQztZQUVELElBQUksT0FBTyxDQUFDLElBQUksUUFBUSxFQUN4QjtnQkFDQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7WUFFRCxJQUFJLEdBQUcsR0FBRyxPQUFBLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFFNUMsSUFBSSxDQUFTLENBQUMsR0FBVyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ25DLDBDQUEwQztnQkFDMUM7b0JBQ0MsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7aUJBQzNCO2dCQUVELE9BQU8sR0FBRyxDQUFDO1lBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRVAsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDbEI7Z0JBQ0MsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDO2FBQ3BCO2lCQUVEO2dCQUNDLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2FBQ3RCO1FBQ0YsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQWxDZSwwQkFBbUIsc0JBa0NsQyxDQUFBO0FBQ0YsQ0FBQyxFQTVLZ0IsTUFBTSxHQUFOLGNBQU0sS0FBTixjQUFNLFFBNEt0QjtBQUVELHNCQUFzQjtBQUN0Qix1REFBdUQ7QUFFdkQsa0JBQWUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBlbnVtTGlzdCwgZW51bUlzTmFOIH0gZnJvbSAnLi91dGlsL2NvcmUnO1xuXG4vKipcbiAqIOWNleivjeexu+Wei1xuICovXG5leHBvcnQgZW51bSBQT1NUQUdcbntcblx0XG5cdC8qKlxuXHQgKiDpjK/lrZdcblx0ICovXG5cdEJBRCA9IDB4ODAwMDAwMDAsXG5cdC8qKlxuXHQgKiDlvaLlrrnor40g5b2i6K+t57SgXG5cdCAqL1xuXHREX0EgPSAweDQwMDAwMDAwLFxuXHQvKipcblx0ICog5Yy65Yir6K+NIOWMuuWIq+ivree0oFxuXHQgKi9cblx0RF9CID0gMHgyMDAwMDAwMCxcblx0LyoqXG5cdCAqIOi/nuivjSDov57or63ntKBcblx0ICovXG5cdERfQyA9IDB4MTAwMDAwMDAsXG5cblx0Ly8gLS0tXG5cblx0LyoqXG5cdCAqIOWJr+ivjSDlia/or63ntKBcblx0ICovXG5cdERfRCA9IDB4MDgwMDAwMDAsXG5cdC8qKlxuXHQgKiDlj7nor40g5Y+56K+t57SgXG5cdCAqL1xuXHREX0UgPSAweDA0MDAwMDAwLFxuXHQvKipcblx0ICog5pa55L2N6K+NIOaWueS9jeivree0oFxuXHQgKi9cblx0RF9GID0gMHgwMjAwMDAwMCxcblx0LyoqXG5cdCAqIOaIkOivrVxuXHQgKi9cblx0RF9JID0gMHgwMTAwMDAwMCxcblxuXHQvLyAtLS1cblxuXHQvKipcblx0ICog5Lmg6K+tXG5cdCAqIOmhnuS8vOaIkOiqnuaIluiAheabluaYp+eEoeazleWIhuaYjueahOeUqOiqnlxuXHQgKi9cblx0RF9MID0gMHgwMDgwMDAwMCxcblx0LyoqXG5cdCAqIOaVsOivjSDmlbDor63ntKBcblx0ICog5Y+v5Lul6IiH5YW25LuW5pW46Kme5oiW6ICF6YeP6Kme5ZCI5L2155qE6KmeXG5cdCAqL1xuXHRBX00gPSAweDAwNDAwMDAwLFxuXHQvKipcblx0ICog5pWw6YeP6K+NXG5cdCAqL1xuXHREX01RID0gMHgwMDIwMDAwMCxcblx0LyoqXG5cdCAqIOWQjeivjSDlkI3or63ntKBcblx0ICovXG5cdERfTiA9IDB4MDAxMDAwMDAsXG5cblx0Ly8gLS0tXG5cblx0LyoqXG5cdCAqIOaLn+WjsOivjVxuXHQgKi9cblx0RF9PID0gMHgwMDA4MDAwMCxcblx0LyoqXG5cdCAqIOS7i+ivjVxuXHQgKi9cblx0RF9QID0gMHgwMDA0MDAwMCxcblx0LyoqXG5cdCAqIOmHj+ivjSDph4/or63ntKBcblx0ICog5Y+v5Lul6IiH5pW46Kme5ZCI5L2155qE6KmeXG5cdCAqL1xuXHRBX1EgPSAweDAwMDIwMDAwLFxuXHQvKipcblx0ICog5Luj6K+NIOS7o+ivree0oFxuXHQgKi9cblx0RF9SID0gMHgwMDAxMDAwMCxcblxuXHQvLyAtLS1cblxuXHQvKipcblx0ICog5aSE5omA6K+NXG5cdCAqL1xuXHREX1MgPSAweDAwMDA4MDAwLFxuXHQvKipcblx0ICog5pe26Ze06K+NXG5cdCAqL1xuXHREX1QgPSAweDAwMDA0MDAwLFxuXHQvKipcblx0ICog5Yqp6K+NIOWKqeivree0oFxuXHQgKi9cblx0RF9VID0gMHgwMDAwMjAwMCxcblx0LyoqXG5cdCAqIOWKqOivjSDliqjor63ntKBcblx0ICovXG5cdERfViA9IDB4MDAwMDEwMDAsXG5cblx0Ly8gLS0tXG5cblx0LyoqXG5cdCAqIOagh+eCueespuWPt1xuXHQgKi9cblx0RF9XID0gMHgwMDAwMDgwMCxcblx0LyoqXG5cdCAqIOmdnuivree0oOWtl1xuXHQgKi9cblx0RF9YID0gMHgwMDAwMDQwMCxcblx0LyoqXG5cdCAqIOivreawlOivjSDor63msJTor63ntKBcblx0ICovXG5cdERfWSA9IDB4MDAwMDAyMDAsXG5cdC8qKlxuXHQgKiDnirbmgIHor41cblx0ICovXG5cdERfWiA9IDB4MDAwMDAxMDAsXG5cblx0Ly8gLS0tXG5cblx0LyoqXG5cdCAqIOS6uuWQjVxuXHQgKi9cblx0QV9OUiA9IDB4MDAwMDAwODAsXG5cdC8qKlxuXHQgKiDlnLDlkI1cblx0ICovXG5cdEFfTlMgPSAweDAwMDAwMDQwLFxuXHQvKipcblx0ICog5py65p6E5Zui5L2TXG5cdCAqL1xuXHRBX05UID0gMHgwMDAwMDAyMCxcblx0LyoqXG5cdCAqIOWkluaWh+Wtl+esplxuXHQgKi9cblx0QV9OWCA9IDB4MDAwMDAwMTAsXG5cblx0Ly8gLS0tXG5cblx0LyoqXG5cdCAqIOWFtuS7luS4k+WQjVxuXHQgKi9cblx0QV9OWiA9IDB4MDAwMDAwMDgsXG5cdC8qKlxuXHQgKiDliY3mjqXmiJDliIZcblx0ICovXG5cdERfWkggPSAweDAwMDAwMDA0LFxuXHQvKipcblx0ICog5ZCO5o6l5oiQ5YiGXG5cdCAqL1xuXHREX0sgPSAweDAwMDAwMDAyLFxuXHQvKipcblx0ICog572R5Z2A44CB6YKu566x5Zyw5Z2AXG5cdCAqL1xuXHRVUkwgPSAweDAwMDAwMDAxLFxuXG5cdC8qKlxuXHQgKiDmnKrnn6Xor43mgKdcblx0ICovXG5cdFVOSyA9IDB4MDAwMDAwMDAsXG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUE9TVEFHXG57XG5cdGV4cG9ydCBjb25zdCBQT1NUQUdfS0VZUyA9IGVudW1MaXN0KFBPU1RBRyk7XG5cblx0LyoqXG5cdCAqIOS4reaWh+ivtOaYjlxuXHQgKi9cblx0ZXhwb3J0IGVudW0gQ0hTTkFNRVxuXHR7XG5cdFx0QkFEID0gJ+mMr+WtlycsXG5cdFx0RF9BID0gJ+W9ouWuueivjSDlvaLor63ntKAnLFxuXHRcdERfQiA9ICfljLrliKvor40g5Yy65Yir6K+t57SgJyxcblx0XHREX0MgPSAn6L+e6K+NIOi/nuivree0oCcsXG5cdFx0RF9EID0gJ+WJr+ivjSDlia/or63ntKAnLFxuXHRcdERfRSA9ICflj7nor40g5Y+56K+t57SgJyxcblx0XHREX0YgPSAn5pa55L2N6K+NIOaWueS9jeivree0oCcsXG5cdFx0RF9JID0gJ+aIkOivrScsXG5cdFx0RF9MID0gJ+S5oOivrScsXG5cdFx0QV9NID0gJ+aVsOivjSDmlbDor63ntKAnLFxuXHRcdERfTVEgPSAn5pWw6YeP6K+NJyxcblx0XHREX04gPSAn5ZCN6K+NIOWQjeivree0oCcsXG5cdFx0RF9PID0gJ+aLn+WjsOivjScsXG5cdFx0RF9QID0gJ+S7i+ivjScsXG5cdFx0QV9RID0gJ+mHj+ivjSDph4/or63ntKAnLFxuXHRcdERfUiA9ICfku6Por40g5Luj6K+t57SgJyxcblx0XHREX1MgPSAn5aSE5omA6K+NJyxcblx0XHREX1QgPSAn5pe26Ze06K+NJyxcblx0XHREX1UgPSAn5Yqp6K+NIOWKqeivree0oCcsXG5cdFx0RF9WID0gJ+WKqOivjSDliqjor63ntKAnLFxuXHRcdERfVyA9ICfmoIfngrnnrKblj7cnLFxuXHRcdERfWCA9ICfpnZ7or63ntKDlrZcnLFxuXHRcdERfWSA9ICfor63msJTor40g6K+t5rCU6K+t57SgJyxcblx0XHREX1ogPSAn54q25oCB6K+NJyxcblx0XHRBX05SID0gJ+S6uuWQjScsXG5cdFx0QV9OUyA9ICflnLDlkI0nLFxuXHRcdEFfTlQgPSAn5py65p6E5Zui5L2TJyxcblx0XHRBX05YID0gJ+WkluaWh+Wtl+espicsXG5cdFx0QV9OWiA9ICflhbbku5bkuJPlkI0nLFxuXHRcdERfWkggPSAn5YmN5o6l5oiQ5YiGJyxcblx0XHREX0sgPSAn5ZCO5o6l5oiQ5YiGJyxcblx0XHRVUkwgPSAn572R5Z2AIOmCrueuseWcsOWdgCcsXG5cdFx0VU5LID0gJ+acquefpScsXG5cdH1cblxuXHQvKipcblx0ICog57mB6auU5Lit5paH6K+05piOXG5cdCAqL1xuXHRleHBvcnQgZW51bSBaSE5BTUVcblx0e1xuXHRcdEJBRCA9ICfpjK/lrZcnLFxuXHRcdERfQSA9ICflvaLlrrnoqZ4g5b2i6Kqe57SgJyxcblx0XHREX0IgPSAn5Y2A5Yil6KmeIOWNgOWIpeiqnue0oCcsXG5cdFx0RF9DID0gJ+mAo+ipniDpgKPoqp7ntKAnLFxuXHRcdERfRCA9ICflia/oqZ4g5Ymv6Kqe57SgJyxcblx0XHREX0UgPSAn5ZiG6KmeIOWYhuiqnue0oCcsXG5cdFx0RF9GID0gJ+aWueS9jeipniDmlrnkvY3oqp7ntKAnLFxuXHRcdERfSSA9ICfmiJDoqp4nLFxuXHRcdERfTCA9ICfnv5Loqp4nLFxuXHRcdEFfTSA9ICfmlbjoqZ4g5pW46Kqe57SgJyxcblx0XHREX01RID0gJ+aVuOmHj+ipnicsXG5cdFx0RF9OID0gJ+WQjeipniDlkI3oqp7ntKAnLFxuXHRcdERfTyA9ICfmk6zogbLoqZ4nLFxuXHRcdERfUCA9ICfku4voqZ4nLFxuXHRcdEFfUSA9ICfph4/oqZ4g6YeP6Kqe57SgJyxcblx0XHREX1IgPSAn5Luj6KmeIOS7o+iqnue0oCcsXG5cdFx0RF9TID0gJ+iZleaJgOipnicsXG5cdFx0RF9UID0gJ+aZgumWk+ipnicsXG5cdFx0RF9VID0gJ+WKqeipniDliqnoqp7ntKAnLFxuXHRcdERfViA9ICfli5XoqZ4g5YuV6Kqe57SgJyxcblx0XHREX1cgPSAn5qiZ6bue56ym6JmfJyxcblx0XHREX1ggPSAn6Z2e6Kqe57Sg5a2XJyxcblx0XHREX1kgPSAn6Kqe5rCj6KmeIOiqnuawo+iqnue0oCcsXG5cdFx0RF9aID0gJ+eLgOaFi+ipnicsXG5cdFx0QV9OUiA9ICfkurrlkI0nLFxuXHRcdEFfTlMgPSAn5Zyw5ZCNJyxcblx0XHRBX05UID0gJ+apn+ani+WcmOmrlCcsXG5cdFx0QV9OWCA9ICflpJbmloflrZfnrKYnLFxuXHRcdEFfTlogPSAn5YW25LuW5bCI5ZCNJyxcblx0XHREX1pIID0gJ+WJjeaOpeaIkOWIhicsXG5cdFx0RF9LID0gJ+W+jOaOpeaIkOWIhicsXG5cdFx0VVJMID0gJ+e2suWdgCDpg7XnrrHlnLDlnYAnLFxuXHRcdFVOSyA9ICfmnKrnn6UnLFxuXHR9XG5cblx0LyoqXG5cdCAqIOiLseaWh1xuXHQgKi9cblx0ZXhwb3J0IGVudW0gRU5OQU1FXG5cdHtcblx0XHREX0EgPSAnYScsXG5cdFx0RF9CID0gJ2InLFxuXHRcdERfQyA9ICdjJyxcblx0XHREX0QgPSAnZCcsXG5cdFx0RF9FID0gJ2UnLFxuXHRcdERfRiA9ICdmJyxcblx0XHREX0kgPSAnaScsXG5cdFx0RF9MID0gJ2wnLFxuXHRcdEFfTSA9ICdtJyxcblx0XHREX01RID0gJ21xJyxcblx0XHREX04gPSAnbicsXG5cdFx0RF9PID0gJ28nLFxuXHRcdERfUCA9ICdwJyxcblx0XHRBX1EgPSAncScsXG5cdFx0RF9SID0gJ3InLFxuXHRcdERfUyA9ICdzJyxcblx0XHREX1QgPSAndCcsXG5cdFx0RF9VID0gJ3UnLFxuXHRcdERfViA9ICd2Jyxcblx0XHREX1cgPSAndycsXG5cdFx0RF9YID0gJ3gnLFxuXHRcdERfWSA9ICd5Jyxcblx0XHREX1ogPSAneicsXG5cdFx0QV9OUiA9ICducicsXG5cdFx0QV9OUyA9ICducycsXG5cdFx0QV9OVCA9ICdudCcsXG5cdFx0QV9OWCA9ICdueCcsXG5cdFx0QV9OWiA9ICdueicsXG5cdFx0RF9aSCA9ICdoJyxcblx0XHREX0sgPSAnaycsXG5cdFx0VVJMID0gJ3VyaScsXG5cdFx0VU5LID0gJ3VuJyxcblx0fVxuXG5cdFBPU1RBR19LRVlTLmZvckVhY2goZnVuY3Rpb24gKGtleSlcblx0e1xuXHRcdGxldCBsYyA9IGtleS50b0xvd2VyQ2FzZSgpO1xuXG5cdFx0UE9TVEFHW2xjXSA9IFBPU1RBR1trZXldO1xuXHRcdENIU05BTUVbbGNdID0gQ0hTTkFNRVtrZXldO1xuXHRcdFpITkFNRVtsY10gPSBaSE5BTUVba2V5XTtcblx0XHRFTk5BTUVbbGNdID0gRU5OQU1FW2tleV07XG5cdH0pO1xuXG5cdGV4cG9ydCBjb25zdCBlbk5hbWUgPSBnZXRQT1NUYWdUcmFuc2xhdG9yKFBPU1RBRywgRU5OQU1FKTtcblx0ZXhwb3J0IGNvbnN0IGNoc05hbWUgPSBnZXRQT1NUYWdUcmFuc2xhdG9yKFBPU1RBRywgQ0hTTkFNRSk7XG5cdGV4cG9ydCBjb25zdCB6aE5hbWUgPSBnZXRQT1NUYWdUcmFuc2xhdG9yKFBPU1RBRywgWkhOQU1FKTtcblxuXHRleHBvcnQgZnVuY3Rpb24gZ2V0UE9TVGFnVHJhbnNsYXRvcihQT1NUYWdEaWN0OiB0eXBlb2YgUE9TVEFHLCBJMThORGljdClcblx0e1xuXHRcdHJldHVybiAocDogbnVtYmVyIHwgc3RyaW5nKTogc3RyaW5nID0+XG5cdFx0e1xuXHRcdFx0aWYgKGVudW1Jc05hTihwKSlcblx0XHRcdHtcblx0XHRcdFx0cmV0dXJuIEkxOE5EaWN0W3BdIHx8IEkxOE5EaWN0LlVOSztcblx0XHRcdH1cblxuXHRcdFx0aWYgKHR5cGVvZiBwID09ICdzdHJpbmcnKVxuXHRcdFx0e1xuXHRcdFx0XHRwID0gTnVtYmVyKHApO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgcmV0ID0gUE9TVEFHX0tFWVMucmVkdWNlKGZ1bmN0aW9uIChyZXQsIGkpXG5cdFx0XHR7XG5cdFx0XHRcdGlmICgoPG51bWJlcj5wICYgPG51bWJlcj5QT1NUQUdbaV0pKVxuXHRcdFx0XHQvL2lmICgoPG51bWJlcj5wICYgPG51bWJlcj5QT1NUQUdbaV0pID4gMClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHJldC5wdXNoKEkxOE5EaWN0W2ldIHx8IGkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHJldDtcblx0XHRcdH0sIFtdKTtcblxuXHRcdFx0aWYgKHJldC5sZW5ndGggPCAxKVxuXHRcdFx0e1xuXHRcdFx0XHRyZXR1cm4gSTE4TkRpY3QuVU5LO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHRyZXR1cm4gcmV0LnRvU3RyaW5nKCk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fVxufVxuXG4vL2NvbnNvbGUubG9nKFBPU1RBRyk7XG4vL2NvbnNvbGUubG9nKFBPU1RBRy5jaHNOYW1lKDB4MDAwMDAwMDggfCAweDAwMDAwMDEwKSk7XG5cbmV4cG9ydCBkZWZhdWx0IFBPU1RBRztcbiJdfQ==
\No newline at end of file