@magic-xpa/utils 4.1200.0-dev4120.21 → 4.1200.0-dev4120.212

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.
@@ -1,300 +0,0 @@
1
- import { Encoding, StringBuilder } from "@magic-xpa/mscorelib";
2
- export class UtilStrByteMode {
3
- static Encoding = Encoding.UTF8;
4
- static strNavigatorLang = window.navigator.language;
5
- static _bLocaleDefLangJPN = UtilStrByteMode.strNavigatorLang.startsWith('ja');
6
- static _bLocaleDefLangCHN = UtilStrByteMode.strNavigatorLang.startsWith('zh');
7
- static _bLocaleDefLangKOR = UtilStrByteMode.strNavigatorLang.startsWith('ko');
8
- static isLocaleDefLangDBCS() {
9
- return UtilStrByteMode._bLocaleDefLangJPN || UtilStrByteMode._bLocaleDefLangCHN || UtilStrByteMode._bLocaleDefLangKOR;
10
- }
11
- static isLocaleDefLangJPN() {
12
- return UtilStrByteMode._bLocaleDefLangJPN;
13
- }
14
- static isLocaleDefLangKOR() {
15
- return UtilStrByteMode._bLocaleDefLangKOR;
16
- }
17
- static isKoreanCharacter(c) {
18
- return (44032 <= c && c <= 55203) || (4352 <= c && c <= 4607) || (12592 <= c && c <= 12687) || (43360 <= c && c <= 43391) || (55216 <= c && c <= 55295);
19
- }
20
- static lenB(strVal) {
21
- return UtilStrByteMode.Encoding.GetByteCount(strVal);
22
- }
23
- static midB(strVal, ofs, len) {
24
- let intValidMaxIndex = -1;
25
- let intValidMinIndex = -1;
26
- let bHeadSpace = false;
27
- let bEndSpace = false;
28
- let strRet;
29
- if (len <= 0)
30
- return "";
31
- if (ofs <= 0) {
32
- ofs = 0;
33
- intValidMinIndex = 0;
34
- bHeadSpace = false;
35
- }
36
- let intByteLength = UtilStrByteMode.lenB(strVal);
37
- if (intByteLength < ofs)
38
- return "";
39
- let LenMax = intByteLength - ofs;
40
- if (LenMax < len)
41
- len = LenMax;
42
- intByteLength = 0;
43
- for (let intIndex = 0; intIndex < strVal.length; intIndex = intIndex + 1) {
44
- let s = strVal.substr(intIndex, 1);
45
- intByteLength = intByteLength + UtilStrByteMode.Encoding.GetByteCount(s);
46
- if (intValidMinIndex === -1) {
47
- if (intByteLength === ofs) {
48
- intValidMinIndex = intIndex + 1;
49
- bHeadSpace = false;
50
- }
51
- else if (intByteLength > ofs) {
52
- intValidMinIndex = intIndex + 1;
53
- bHeadSpace = true;
54
- }
55
- }
56
- if (intValidMaxIndex === -1) {
57
- if (intByteLength === ofs + len) {
58
- intValidMaxIndex = intIndex;
59
- bEndSpace = false;
60
- break;
61
- }
62
- else if (intByteLength > ofs + len) {
63
- intValidMaxIndex = intIndex - 1;
64
- bEndSpace = true;
65
- break;
66
- }
67
- }
68
- }
69
- let strbufAddingBuf = new StringBuilder(len);
70
- if (bHeadSpace) {
71
- strbufAddingBuf.Append(' ');
72
- }
73
- if (intValidMinIndex <= intValidMaxIndex) {
74
- strbufAddingBuf.Append(strVal.substr(intValidMinIndex, intValidMaxIndex + 1 - intValidMinIndex));
75
- }
76
- if (bEndSpace) {
77
- strbufAddingBuf.Append(' ');
78
- }
79
- strRet = strbufAddingBuf.ToString();
80
- strbufAddingBuf = null;
81
- return strRet;
82
- }
83
- static leftB(strVal, len) {
84
- return UtilStrByteMode.midB(strVal, 0, len);
85
- }
86
- static rightB(strVal, len) {
87
- let byteFldsValLen = UtilStrByteMode.lenB(strVal);
88
- if (len < 0) {
89
- len = 0;
90
- }
91
- let ofs = byteFldsValLen - len;
92
- if (ofs < 0) {
93
- ofs = 0;
94
- }
95
- return UtilStrByteMode.midB(strVal, ofs, len);
96
- }
97
- static insB(strTarget, strSource, ofs, len) {
98
- if (ofs < 0) {
99
- ofs = 0;
100
- }
101
- else {
102
- if (ofs >= 1) {
103
- ofs = ofs - 1;
104
- }
105
- }
106
- if (len < 0) {
107
- len = 0;
108
- }
109
- let intTargetLenB = UtilStrByteMode.lenB(strTarget);
110
- let intSourceLenB = UtilStrByteMode.lenB(strSource);
111
- let strbufRetVal = new StringBuilder(ofs + len);
112
- strbufRetVal.Append(UtilStrByteMode.leftB(strTarget, ofs));
113
- for (let intAddSpaceLen = ofs - intTargetLenB; intAddSpaceLen > 0; intAddSpaceLen = intAddSpaceLen - 1) {
114
- strbufRetVal.Append(' ');
115
- }
116
- strbufRetVal.Append(UtilStrByteMode.leftB(strSource, len));
117
- for (let i = len - intSourceLenB; i > 0; i = i - 1) {
118
- strbufRetVal.Append(' ');
119
- }
120
- strbufRetVal.Append(UtilStrByteMode.rightB(strTarget, intTargetLenB - ofs));
121
- return strbufRetVal.ToString();
122
- }
123
- static delB(strVal, ofs, len) {
124
- if (ofs < 0) {
125
- ofs = 0;
126
- }
127
- else {
128
- if (ofs >= 1) {
129
- ofs = ofs - 1;
130
- }
131
- }
132
- let intValLenB = UtilStrByteMode.lenB(strVal);
133
- if (ofs + len > intValLenB) {
134
- len = intValLenB - ofs;
135
- }
136
- let strRet;
137
- if (len <= 0) {
138
- strRet = strVal;
139
- }
140
- else {
141
- let intRightSideLenB = intValLenB - ofs - len;
142
- if (intRightSideLenB < 0) {
143
- strRet = strVal;
144
- }
145
- else {
146
- let strbufRetVal = new StringBuilder(ofs + intRightSideLenB);
147
- strbufRetVal.Append(UtilStrByteMode.leftB(strVal, ofs));
148
- strbufRetVal.Append(UtilStrByteMode.rightB(strVal, intRightSideLenB));
149
- strRet = strbufRetVal.ToString();
150
- }
151
- }
152
- return strRet;
153
- }
154
- static instrB(strTarget, strSearch) {
155
- if (strSearch.length === 0) {
156
- return 0;
157
- }
158
- let ofs = strTarget.indexOf(strSearch);
159
- if (ofs < 0) {
160
- return 0;
161
- }
162
- return UtilStrByteMode.lenB(strTarget.substr(0, ofs)) + 1;
163
- }
164
- static repB(strTarget, strOrigin, ofs, len) {
165
- let strbufAddingBuf = new StringBuilder();
166
- if (ofs < 0) {
167
- ofs = 0;
168
- }
169
- else {
170
- if (ofs >= 1) {
171
- ofs = ofs - 1;
172
- }
173
- }
174
- if (len < 0) {
175
- len = 0;
176
- }
177
- strbufAddingBuf.Append(UtilStrByteMode.leftB(strTarget, ofs));
178
- let intAddSpaceLen = ofs - UtilStrByteMode.lenB(strTarget);
179
- for (; intAddSpaceLen > 0; intAddSpaceLen--)
180
- strbufAddingBuf.Append(' ');
181
- strbufAddingBuf.Append(UtilStrByteMode.leftB(strOrigin, len));
182
- let intRightLen = UtilStrByteMode.lenB(strTarget) - (ofs + len);
183
- if (intRightLen > 0) {
184
- strbufAddingBuf.Append(UtilStrByteMode.rightB(strTarget, intRightLen));
185
- }
186
- intAddSpaceLen = len - UtilStrByteMode.lenB(strOrigin);
187
- for (; intAddSpaceLen > 0; intAddSpaceLen--) {
188
- strbufAddingBuf.Append(' ');
189
- }
190
- return strbufAddingBuf.ToString();
191
- }
192
- static repC(strTarget, strOrigin, ofs, len) {
193
- let strbufAddingBuf = new StringBuilder();
194
- if (ofs < 0) {
195
- ofs = 0;
196
- }
197
- else {
198
- if (ofs >= 1) {
199
- ofs = ofs - 1;
200
- }
201
- }
202
- if (len < 0) {
203
- len = 0;
204
- }
205
- strbufAddingBuf.Append(strTarget.substr(0, ofs));
206
- let intAddSpaceLen = ofs - strTarget.length;
207
- for (; intAddSpaceLen > 0; intAddSpaceLen--)
208
- strbufAddingBuf.Append(' ');
209
- strbufAddingBuf.Append(strOrigin.substr(0, len));
210
- let intRightLen = strTarget.length - (ofs + len);
211
- if (intRightLen > 0) {
212
- strbufAddingBuf.Append(strTarget.substr(ofs + len));
213
- }
214
- for (let i = len - strOrigin.length; i > 0; i = i - 1) {
215
- strbufAddingBuf.Append(' ');
216
- }
217
- return strbufAddingBuf.ToString();
218
- }
219
- static isHalfWidth(str) {
220
- let letter = str.charCodeAt(0);
221
- if (32 <= letter && letter <= 126) {
222
- return true;
223
- }
224
- else {
225
- let len = UtilStrByteMode.lenB(str);
226
- if (len === 1)
227
- return true;
228
- }
229
- return false;
230
- }
231
- static isDigit(letter) {
232
- return 48 <= letter.charCodeAt(0) && letter.charCodeAt(0) <= 57;
233
- }
234
- static asNumeric(letter) {
235
- let result;
236
- switch (letter.charCodeAt(0)) {
237
- case 42:
238
- case 43:
239
- case 44:
240
- case 45:
241
- case 46:
242
- case 47:
243
- result = true;
244
- break;
245
- default:
246
- result = false;
247
- break;
248
- }
249
- return result;
250
- }
251
- static convPos(strSource, strDest, pos, isAdvance) {
252
- let retPos;
253
- if (pos < 0)
254
- return 0;
255
- if (pos > strSource.length)
256
- pos = strSource.length;
257
- let diffLen = UtilStrByteMode.lenB(strSource) - UtilStrByteMode.lenB(strDest);
258
- if (diffLen > 0) {
259
- let stringBuilder = new StringBuilder(strDest);
260
- for (; diffLen > 0; diffLen--)
261
- stringBuilder.Append(' ');
262
- strDest = stringBuilder.ToString();
263
- }
264
- let byteSource = UtilStrByteMode.Encoding.GetBytes(strSource.substr(0, pos));
265
- let strLeftB = UtilStrByteMode.leftB(strDest, byteSource.length);
266
- retPos = strLeftB.length;
267
- if (!isAdvance && retPos > 0 && strLeftB.charCodeAt(retPos - 1) === 32 && strDest.charCodeAt(retPos - 1) !== 32) {
268
- retPos = retPos - 1;
269
- }
270
- return retPos;
271
- }
272
- static getMinLenPicture(str, picture) {
273
- let len = 0;
274
- if (UtilStrByteMode.lenB(picture) - UtilStrByteMode.lenB(str) > 0) {
275
- len = UtilStrByteMode.convPos(str, picture, str.length, false);
276
- }
277
- else
278
- len = picture.length;
279
- return len;
280
- }
281
- static strcmp(str1, str2) {
282
- let array1 = UtilStrByteMode.Encoding.GetBytes(str1);
283
- let array2 = UtilStrByteMode.Encoding.GetBytes(str2);
284
- for (let i = 0; i < array1.length && i < array2.length; i++) {
285
- if (array1[i] > array2[i]) {
286
- return 1;
287
- }
288
- else if (array1[i] < array2[i]) {
289
- return -1;
290
- }
291
- }
292
- if (array1.length > array2.length)
293
- return 1;
294
- if (array1.length < array2.length)
295
- return -1;
296
- else
297
- return 0;
298
- }
299
- }
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXRpbFN0ckJ5dGVNb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL1V0aWxTdHJCeXRlTW9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE1BQU0sT0FBTyxlQUFlO0lBQ25CLE1BQU0sQ0FBQyxRQUFRLEdBQWEsUUFBUSxDQUFDLElBQUksQ0FBQztJQUVqRCxNQUFNLENBQUMsZ0JBQWdCLEdBQVcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7SUFDcEQsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkYsTUFBTSxDQUFDLGtCQUFrQixHQUFZLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFTL0YsTUFBTSxDQUFDLG1CQUFtQjtRQUN4QixPQUFPLGVBQWUsQ0FBQyxrQkFBa0IsSUFBSSxlQUFlLENBQUMsa0JBQWtCLElBQUksZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQ3hILENBQUM7SUFRRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFRRCxNQUFNLENBQUMsa0JBQWtCO1FBQ3ZCLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBUztRQUNoQyxPQUFPLENBQUMsS0FBSyxJQUFXLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFRLElBQUksQ0FBQyxJQUFJLElBQVcs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QUFDLEVBQUUsRUFBRTtZQUNuRSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3pCLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQ0ksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUM1QixPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ1g7U0FDRjtRQUVILElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtZQUMvQixPQUFPLENBQUMsQ0FBQztRQUVYLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTTtZQUMvQixPQUFPLENBQUMsQ0FBQyxDQUFDOztZQUVWLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vLyA8c3VtbWFyeT5KUE46IERCQ1Mgc3VwcG9ydFxyXG4vLy8gVXRpbGl0eSBDbGFzcyBmb3IgU3RyaW5nXHJcbi8vLyBJbiB0aGlzIGNsYXNzLCBjb25zaWRlcmluZyBEQkNTLCBzdHJpbmdzIGFyZSBjb3VudGVkIGJ5IHRoZSBudW1iZXJcclxuLy8vIG9mIGJ5dGVzLCBub3QgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG4vLy8gPGF1dGhvcj4gIFRvc2hpcm8gTmFrYXlvc2hpIChNU0opIDwvYXV0aG9yPlxyXG5pbXBvcnQge0VuY29kaW5nLCBTdHJpbmdCdWlsZGVyfSBmcm9tIFwiQG1hZ2ljLXhwYS9tc2NvcmVsaWJcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBVdGlsU3RyQnl0ZU1vZGUgIHtcclxuICBwdWJsaWMgc3RhdGljIEVuY29kaW5nOiBFbmNvZGluZyA9IEVuY29kaW5nLlVURjg7XHJcbiAgICAvLyBUT0RPIDogbmVlZCB0byBjaGVjayB3aGF0IHRvIGRvIHdpdGggQ3VsdHVyZUluZm9cclxuICBzdGF0aWMgc3RyTmF2aWdhdG9yTGFuZzogc3RyaW5nID0gd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZTtcclxuICBwcml2YXRlIHN0YXRpYyBfYkxvY2FsZURlZkxhbmdKUE46IGJvb2xlYW4gPSBVdGlsU3RyQnl0ZU1vZGUuc3RyTmF2aWdhdG9yTGFuZy5zdGFydHNXaXRoKCdqYScpO1xyXG4gIHByaXZhdGUgc3RhdGljIF9iTG9jYWxlRGVmTGFuZ0NITjogYm9vbGVhbiA9IFV0aWxTdHJCeXRlTW9kZS5zdHJOYXZpZ2F0b3JMYW5nLnN0YXJ0c1dpdGgoJ3poJyk7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2JMb2NhbGVEZWZMYW5nS09SOiBib29sZWFuID0gVXRpbFN0ckJ5dGVNb2RlLnN0ck5hdmlnYXRvckxhbmcuc3RhcnRzV2l0aCgna28nKTtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3MgdGhlIGVudmlyb25tZW50IHdoZXRoZXIgaXQgaXMgcnVubmluZyBvbiBEQkNTIGVudmlyb25tZW50XHJcbiAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGUgaXNcclxuICAvLy8gREJDUyBsYW5ndWFnZSAoaW4gbm9uLVVuaWNvZGUgZW5jb2RpbmcpLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIERCQ1MsIG9yIGZhbHNlIGlmIFNCQ1NcclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpc0xvY2FsZURlZkxhbmdEQkNTKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5fYkxvY2FsZURlZkxhbmdKUE4gfHwgVXRpbFN0ckJ5dGVNb2RlLl9iTG9jYWxlRGVmTGFuZ0NITiB8fCBVdGlsU3RyQnl0ZU1vZGUuX2JMb2NhbGVEZWZMYW5nS09SO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGVcclxuICAvLy8gaXMgSkFQQU5FU0UuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgSkFQQU5FU0UsIG9yIGZhbHNlIGlmIG5vdFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGlzTG9jYWxlRGVmTGFuZ0pQTigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBVdGlsU3RyQnl0ZU1vZGUuX2JMb2NhbGVEZWZMYW5nSlBOO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciB0aGUgbGFuZ3VhZ2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBMb2NhbGVcclxuICAvLy8gaXMgS09SRUFOLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIEtPUkVBTiwgb3IgZmFsc2UgaWYgbm90XHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgaXNMb2NhbGVEZWZMYW5nS09SKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5fYkxvY2FsZURlZkxhbmdLT1I7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNLb3JlYW5DaGFyYWN0ZXIoYzogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKDQ0MDMyIDw9IC8qJ+qwgCcqL2MgJiYgYyA8PSA1NTIwMy8qJ+2eoycqLykgfHwgKDQzNTIgPD0gLyon4YSAJyovYyAmJiBjIDw9IDQ2MDcvKifhh78nKi8pIHx8ICgxMjU5MiA8PSAvKifjhLAnKi9jICYmIGMgPD0gMTI2ODcvKifjho8nKi8pIHx8ICg0MzM2MCA8PSAvKifqpaAnKi9jICYmIGMgPD0gNDMzOTEvKifqpb8nKi8pIHx8ICg1NTIxNiA8PSAvKiftnrAnKi9jICYmIGMgPD0gNTUyOTUvKiftn78nKi8pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBMZW5ndGggb2YgU3RyaW5nXHJcbiAgLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyAoaW4gZGVmYXVsdCBlbmNvZGluZykuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJWYWw6XCI+c3RyaW5nIChpbiBVbmljb2RlKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdGhlIG51bWJlciBvZiBieXRlcyAoaW4gZGVmYXVsdCBlbmNvZGluZylcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogbGVuQihcImFiWFljXCIpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gNy5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBsZW5CKHN0clZhbDogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIC8vIGNvbnZlcnQgdG8gYnl0ZVtdIGJ5IGRlZmF1bHQtZW5jb2RpbmdcclxuICAgIHJldHVybiBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZUNvdW50KHN0clZhbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFN1YnN0cmluZyBvZiBTdHJpbmdcclxuICAvLy8gRXh0cmFjdHMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgKGEgc3Vic3RyaW5nKSBmcm9tIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2ZzOlwiPnN0YXJ0aW5nIHBvc2l0aW9uIChieXRlKSBvZiB0aGUgc3Vic3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSBleHRyYWN0ZWQgKGkuZS4gYnl0ZXMgb2Ygc3Vic3RyaW5nKVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3Vic3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IG1pZEIoXCJhYlhZY1wiLCAyLCA0KVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJyBhbmQgICdjJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLCBpdCByZXR1cm5zXHJcbiAgLy8vIFwiYlggXCIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgbWlkQihzdHJWYWw6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBpbnRWYWxpZE1heEluZGV4OiBudW1iZXIgPSAtMTsgLy8gcGFyYW0gIzEgb2Ygc3Vic3RyaW5nXHJcbiAgICBsZXQgaW50VmFsaWRNaW5JbmRleDogbnVtYmVyID0gLTE7IC8vIHBhcmFtICMyIG9mIHN1YnN0cmluZ1xyXG4gICAgbGV0IGJIZWFkU3BhY2U6IGJvb2xlYW4gPSBmYWxzZTsgICAvLyBmbGFnOiBuZWVkIHRvIGFkZCBzcGFjZVxyXG4gICAgbGV0IGJFbmRTcGFjZTogYm9vbGVhbiA9IGZhbHNlOyAgICAvLyBmbGFnOiBuZWVkIHRvIGFkZCBzcGFjZVxyXG5cclxuICAgIGxldCBzdHJSZXQ6IHN0cmluZztcclxuXHJcbiAgICAvLyBjaGVjayBhbmQgbW9kaWZ5IG9mcyAmIGxlblxyXG4gICAgaWYgKGxlbiA8PSAwKVxyXG4gICAgICByZXR1cm4gXCJcIjtcclxuXHJcbiAgICBpZiAob2ZzIDw9IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgICAgaW50VmFsaWRNaW5JbmRleCA9IDA7XHJcbiAgICAgIGJIZWFkU3BhY2UgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgaW50Qnl0ZUxlbmd0aDogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuXHJcbiAgICBpZiAoaW50Qnl0ZUxlbmd0aCA8IG9mcylcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgbGV0IExlbk1heDogbnVtYmVyID0gaW50Qnl0ZUxlbmd0aCAtIG9mcztcclxuICAgIGlmIChMZW5NYXggPCBsZW4pXHJcbiAgICAgIGxlbiA9IExlbk1heDtcclxuXHJcbiAgICAvLyBzZXQgTWluSW5kZXggYW5kIE1heEluZGV4IGZvciBzdWJzdHJpbmdcclxuICAgIGludEJ5dGVMZW5ndGggPSAwO1xyXG5cclxuICAgIGZvciAobGV0IGludEluZGV4OiBudW1iZXIgPSAwOyBpbnRJbmRleCA8IHN0clZhbC5sZW5ndGg7IGludEluZGV4ID0gaW50SW5kZXggKyAxKSB7XHJcbiAgICAgIGxldCBzOiBzdHJpbmcgPSBzdHJWYWwuc3Vic3RyKGludEluZGV4LCAxKTtcclxuICAgICAgaW50Qnl0ZUxlbmd0aCA9IGludEJ5dGVMZW5ndGggKyBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZUNvdW50KHMpO1xyXG5cclxuICAgICAgaWYgKGludFZhbGlkTWluSW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgaWYgKGludEJ5dGVMZW5ndGggPT09IG9mcykge1xyXG4gICAgICAgICAgaW50VmFsaWRNaW5JbmRleCA9IGludEluZGV4ICsgMTtcclxuICAgICAgICAgIGJIZWFkU3BhY2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW50Qnl0ZUxlbmd0aCA+IG9mcykge1xyXG4gICAgICAgICAgaW50VmFsaWRNaW5JbmRleCA9IGludEluZGV4ICsgMTtcclxuICAgICAgICAgIGJIZWFkU3BhY2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGludFZhbGlkTWF4SW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgaWYgKGludEJ5dGVMZW5ndGggPT09IG9mcyArIGxlbikge1xyXG4gICAgICAgICAgaW50VmFsaWRNYXhJbmRleCA9IGludEluZGV4O1xyXG4gICAgICAgICAgYkVuZFNwYWNlID0gZmFsc2U7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaW50Qnl0ZUxlbmd0aCA+IG9mcyArIGxlbikge1xyXG4gICAgICAgICAgaW50VmFsaWRNYXhJbmRleCA9IGludEluZGV4IC0gMTtcclxuICAgICAgICAgIGJFbmRTcGFjZSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBwcmVwYXJlIGZvciBzdWJzdHJpbmdcclxuICAgIGxldCBzdHJidWZBZGRpbmdCdWY6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihsZW4pO1xyXG5cclxuICAgIC8vIGV4ZWN1dGUgTWlkXHJcbiAgICBpZiAoYkhlYWRTcGFjZSkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGludFZhbGlkTWluSW5kZXggPD0gaW50VmFsaWRNYXhJbmRleCkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKHN0clZhbC5zdWJzdHIoaW50VmFsaWRNaW5JbmRleCwgaW50VmFsaWRNYXhJbmRleCArIDEgLSBpbnRWYWxpZE1pbkluZGV4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGJFbmRTcGFjZSkge1xyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RyUmV0ID0gc3RyYnVmQWRkaW5nQnVmLlRvU3RyaW5nKCk7XHJcbiAgICBzdHJidWZBZGRpbmdCdWYgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBzdHJSZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IEdldCBDaGFyYWN0ZXJzIGZyb20gTGVmdCBvZiBTdHJpbmdcclxuICAvLy8gUmV0dXJucyBhIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMgZnJvbSB0aGUgbGVmdCBzaWRlIG9mIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSByZXR1cmVkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IGxlZnRCKFwiYWJYWWNcIiwgNClcclxuICAvLy8gV2hlcmUgJ2EnLCAnYicgYW5kICAnYycgYXJlIFNCQ1MsIGFuZCAnWCcgYW5kICdZJyBhcmUgREJDUywgaXQgcmV0dXJuc1xyXG4gIC8vLyBcImFiWFwiLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGxlZnRCKHN0clZhbDogc3RyaW5nLCBsZW46IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gVXRpbFN0ckJ5dGVNb2RlLm1pZEIoc3RyVmFsLCAwLCBsZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBHZXQgQ2hhcmFjdGVycyBmcm9tIFJpZ2h0IG9mIFN0cmluZ1xyXG4gIC8vLyBSZXR1cm5zIGEgc3BlY2lmaWVkIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZSByaWdodCBzaWRlIG9mIGEgc3RyaW5nLlxyXG4gIC8vLyBJZiBhIERCQ1MgY2hhcmFjdGVyIGlzIGRpdmlkZWQgaW4gdHdvLCBpdCB3aWxsIGJlIHJlcGxhY2UgdG8gYSBzcGFjZS5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0clZhbDpcIj5zdHJpbmcgKGluIFVuaWNvZGUpXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPm51bWJlciBvZiBieXRlcyB0byBiZSByZXR1cmVkXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IHJpZ2h0QihcImFiWFljXCIsIDQpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gXCIgWWNcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyByaWdodEIoc3RyVmFsOiBzdHJpbmcsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBieXRlRmxkc1ZhbExlbjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuXHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgbGV0IG9mczogbnVtYmVyID0gYnl0ZUZsZHNWYWxMZW4gLSBsZW47XHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFV0aWxTdHJCeXRlTW9kZS5taWRCKHN0clZhbCwgb2ZzLCBsZW4pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBJbnNlcnQgU3RyaW5nXHJcbiAgLy8vIEluc2VydHMgb25lIHN0cmluZyBpbnRvIGFub3RoZXIuXHJcbiAgLy8vIElmIGEgREJDUyBjaGFyYWN0ZXIgaXMgZGl2aWRlZCBpbiB0d28sIGl0IHdpbGwgYmUgcmVwbGFjZSB0byBhIHNwYWNlLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPkEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgdGFyZ2V0IHN0cmluZy5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTb3VyY2U6XCI+QSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzb3VyY2Ugc3RyaW5nLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mczpcIj5BIG51bWJlciB0aGF0IHJlcHJlc2VudHMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uIChieXRlKSBpblxyXG4gIC8vLyB0aGUgdGFyZ2V0LlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlbjpcIj5BIG51bWJlciB0aGF0IHJlcHJlc2VudHMgdGhlIG51bWJlciBvZiBieXRlcyBmcm9tIHRoZVxyXG4gIC8vLyBzb3VyY2UgdGhhdCB3aWxsIGJlIGluc2VydGVkIGludG8gdGhlIHRhcmdldC5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG91dHB1dCBzdHJpbmdcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogaW5zQihcImFiWFljXCIsIFwiZGVcIiwgNCwgMSlcclxuICAvLy8gV2hlcmUgJ2EnLCAnYicsICdjJywgJ2QnIGFuZCAnZScgYXJlIFNCQ1MsIGFuZCAnWCcgYW5kICdZJyBhcmUgREJDUyxcclxuICAvLy8gaXQgcmV0dXJucyBcImFiIGQgWWNcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpbnNCKHN0clRhcmdldDogc3RyaW5nLCBzdHJTb3VyY2U6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmIChvZnMgPj0gMSkge1xyXG4gICAgICAgIG9mcyA9IG9mcyAtIDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgbGV0IGludFRhcmdldExlbkI6IG51bWJlciA9IFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clRhcmdldCk7XHJcbiAgICBsZXQgaW50U291cmNlTGVuQjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyU291cmNlKTtcclxuICAgIGxldCBzdHJidWZSZXRWYWw6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihvZnMgKyBsZW4pO1xyXG5cclxuICAgIHN0cmJ1ZlJldFZhbC5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0clRhcmdldCwgb2ZzKSk7XHJcbiAgICBmb3IgKGxldCBpbnRBZGRTcGFjZUxlbjogbnVtYmVyID0gb2ZzIC0gaW50VGFyZ2V0TGVuQjsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbiA9IGludEFkZFNwYWNlTGVuIC0gMSkge1xyXG4gICAgICBzdHJidWZSZXRWYWwuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcbiAgICBzdHJidWZSZXRWYWwuQXBwZW5kKFV0aWxTdHJCeXRlTW9kZS5sZWZ0QihzdHJTb3VyY2UsIGxlbikpO1xyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gbGVuIC0gaW50U291cmNlTGVuQjsgaSA+IDA7IGkgPSBpIC0gMSkge1xyXG4gICAgICBzdHJidWZSZXRWYWwuQXBwZW5kKCcgJyk7XHJcbiAgICB9XHJcbiAgICBzdHJidWZSZXRWYWwuQXBwZW5kKFV0aWxTdHJCeXRlTW9kZS5yaWdodEIoc3RyVGFyZ2V0LCBpbnRUYXJnZXRMZW5CIC0gb2ZzKSk7XHJcbiAgICByZXR1cm4gc3RyYnVmUmV0VmFsLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IERlbGV0ZSBDaGFyYWN0ZXJzXHJcbiAgLy8vIERlbGV0ZSBjaGFyYWN0ZXJzIGZyb20gYSBzdHJpbmcuXHJcbiAgLy8vIElmIGEgREJDUyBjaGFyYWN0ZXIgaXMgZGl2aWRlZCBpbiB0d28sIGl0IHdpbGwgYmUgcmVwbGFjZSB0byBhIHNwYWNlLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVmFsOlwiPnN0cmluZyAoaW4gVW5pY29kZSlcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZnM6XCI+VGhlIHBvc2l0aW9uIChieXRlKSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGJlIGRlbGV0ZWQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVuOlwiPlRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBiZSBkZWxldGVkLCBiZWdpbm5pbmcgd2l0aFxyXG4gIC8vLyBwb3NpdGlvbiBzdGFydCBhbmQgcHJvY2VlZGluZyByaWdodHdhcmQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBvdXRwdXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IGRlbEIoXCJhYlhZY1wiLCAyLCA0KVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJyBhbmQgICdjJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLCBpdCByZXR1cm5zXHJcbiAgLy8vIFwiYSBjXCIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgZGVsQihzdHJWYWw6IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuXHJcbiAgICBpZiAob2ZzIDwgMCkge1xyXG4gICAgICBvZnMgPSAwO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGlmICggb2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgaW50VmFsTGVuQjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVmFsKTtcclxuICAgIGlmIChvZnMgKyBsZW4gPiBpbnRWYWxMZW5CKSB7XHJcbiAgICAgIGxlbiA9IGludFZhbExlbkIgLSBvZnM7XHJcbiAgICB9XHJcbiAgICBsZXQgc3RyUmV0OiBzdHJpbmc7XHJcbiAgICBpZiAobGVuIDw9IDApIHtcclxuICAgICAgc3RyUmV0ID0gc3RyVmFsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBpbnRSaWdodFNpZGVMZW5COiBudW1iZXIgPSBpbnRWYWxMZW5CIC0gb2ZzIC0gbGVuO1xyXG4gICAgICBpZiAoaW50UmlnaHRTaWRlTGVuQiA8IDApIHtcclxuICAgICAgICBzdHJSZXQgPSBzdHJWYWw7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IHN0cmJ1ZlJldFZhbDogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKG9mcyArIGludFJpZ2h0U2lkZUxlbkIpO1xyXG4gICAgICAgIHN0cmJ1ZlJldFZhbC5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0clZhbCwgb2ZzKSk7XHJcbiAgICAgICAgc3RyYnVmUmV0VmFsLkFwcGVuZChVdGlsU3RyQnl0ZU1vZGUucmlnaHRCKHN0clZhbCwgaW50UmlnaHRTaWRlTGVuQikpO1xyXG4gICAgICAgIHN0clJldCA9IHN0cmJ1ZlJldFZhbC5Ub1N0cmluZygpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyUmV0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBJbi1TdHJpbmcgU2VhcmNoXHJcbiAgLy8vIFJldHVybnMgYSBudW1iZXIgdGhhdCByZXByZXNlbnRzIHRoZSBmaXJzdCBwb3NpdGlvbiAoYnl0ZSkgb2YgYVxyXG4gIC8vLyBzdWJzdHJpbmcgd2l0aGluIGEgc3RyaW5nLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPnN0cmluZyAoaW4gVW5pY29kZSlcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTZWFyY2g6XCI+c3RyaW5nIHdoaWNoIHdpbGwgYmUgdGhlIHNlYXJjaCBhcmd1bWVudCBpbiBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IG51bWJlciwgMCBpZiBub3QgZm91bmRcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogaW5zdHJCKFwiYWJYWWNcIiwgXCJZXCIpXHJcbiAgLy8vIFdoZXJlICdhJywgJ2InIGFuZCAgJ2MnIGFyZSBTQkNTLCBhbmQgJ1gnIGFuZCAnWScgYXJlIERCQ1MsIGl0IHJldHVybnNcclxuICAvLy8gNS5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpbnN0ckIoc3RyVGFyZ2V0OiBzdHJpbmcsIHN0clNlYXJjaDogc3RyaW5nKTogbnVtYmVyIHtcclxuXHJcbiAgICBpZiAoc3RyU2VhcmNoLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAvLyBub3RoaW5nIHRvIGxvb2sgZm9yXHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBvZnM6IG51bWJlciA9IHN0clRhcmdldC5pbmRleE9mKHN0clNlYXJjaCk7XHJcblxyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgLy8gbm90IGZvdW5kXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyVGFyZ2V0LnN1YnN0cigwLCBvZnMpKSArIDE7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFJlcGxhY2UgU3Vic3RyaW5nIFdpdGhpbiBhIFN0cmluZyAoQnl0ZSBNb2RlKVxyXG4gIC8vLyBSZXBsYWNlcyBhIHN1YnN0cmluZyB3aXRoaW4gYSBzdHJpbmcgd2l0aCBhbm90aGVyIHN1YnN0cmluZy5cclxuICAvLy8gSWYgYSBEQkNTIGNoYXJhY3RlciBpcyBkaXZpZGVkIGluIHR3bywgaXQgd2lsbCBiZSByZXBsYWNlIHRvIGEgc3BhY2UuXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJUYXJnZXQ6XCI+dGFyZ2V0IHN0cmluZyB3aGVyZSB0aGUgcmVwbGFjZW1lbnQgd2lsbCB0YWtlIHBsYWNlLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0ck9yaWdpbjpcIj5zdHJpbmcgdGhhdCBwcm92aWRlcyB0aGUgc3Vic3RyaW5nIHRvIGJlIGNvcGllZCB0b1xyXG4gIC8vLyB0YXJnZXQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2ZzOlwiPnRoZSBmaXJzdCBwb3NpdGlvbiAoYnl0ZSkgaW4gdGhlIHRhcmdldCBzdHJpbmcgdGhhdCB3aWxsXHJcbiAgLy8vIHJlY2VpdmUgdGhlIHN1YnN0cmluZyBmcm9tIG9yaWdpbi5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW46XCI+dGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdpbGwgYmUgbW92ZWQgZnJvbSBvcmlnaW4gdG9cclxuICAvLy8gdGFyZ2V0LCBzdGFydGluZyBmcm9tIHRoZSBsZWZ0bW9zdCBjaGFyYWN0ZXIgb2Ygb3JpZ2luLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gc3RyaW5nIGNvbnRhaW5pbmcgbW9kaWZpZWQgdGFyZ2V0IHN0cmluZ1xyXG4gIC8vL1xyXG4gIC8vLyBFeGFtcGxlOiByZXBCKFwiYWJYWWNcIiwgXCJkZVwiLCA0LCAyKVxyXG4gIC8vLyBXaGVyZSAnYScsICdiJywgJ2MnLCAnZCcgYW5kICdlJyBhcmUgU0JDUywgYW5kICdYJyBhbmQgJ1knIGFyZSBEQkNTLFxyXG4gIC8vLyBpdCByZXR1cm5zIFwiYWIgZGUgY1wiLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIHJlcEIoc3RyVGFyZ2V0OiBzdHJpbmcsIHN0ck9yaWdpbjogc3RyaW5nLCBvZnM6IG51bWJlciwgbGVuOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmJ1ZkFkZGluZ0J1ZjogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7XHJcblxyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAob2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZChVdGlsU3RyQnl0ZU1vZGUubGVmdEIoc3RyVGFyZ2V0LCBvZnMpKTtcclxuXHJcbiAgICBsZXQgaW50QWRkU3BhY2VMZW46IG51bWJlciA9IG9mcyAtIFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clRhcmdldCk7XHJcbiAgICBmb3IgKDsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbi0tKVxyXG4gICAgICBzdHJidWZBZGRpbmdCdWYuQXBwZW5kKCcgJyk7XHJcblxyXG5cclxuICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0ck9yaWdpbiwgbGVuKSk7XHJcblxyXG4gICAgbGV0IGludFJpZ2h0TGVuOiBudW1iZXIgPSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHJUYXJnZXQpIC0gKG9mcyArIGxlbik7XHJcbiAgICBpZiAoaW50UmlnaHRMZW4gPiAwKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoVXRpbFN0ckJ5dGVNb2RlLnJpZ2h0QihzdHJUYXJnZXQsIGludFJpZ2h0TGVuKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gYWRkIGJsYW5rcyB0byB0aGUgZW5kXHJcbiAgICBpbnRBZGRTcGFjZUxlbiA9IGxlbiAtIFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0ck9yaWdpbik7XHJcbiAgICBmb3IgKDsgaW50QWRkU3BhY2VMZW4gPiAwOyBpbnRBZGRTcGFjZUxlbi0tKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoJyAnKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyYnVmQWRkaW5nQnVmLlRvU3RyaW5nKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IFJlcGxhY2UgU3Vic3RyaW5nIFdpdGhpbiBhIFN0cmluZyAoQ2hhcmFjdGVyIE1vZGUpXHJcbiAgLy8vIFJlcGxhY2VzIGEgc3Vic3RyaW5nIHdpdGhpbiBhIHN0cmluZyB3aXRoIGFub3RoZXIgc3Vic3RyaW5nLlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RyVGFyZ2V0OlwiPnRhcmdldCBzdHJpbmcgd2hlcmUgdGhlIHJlcGxhY2VtZW50IHdpbGwgdGFrZSBwbGFjZS5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJPcmlnaW46XCI+c3RyaW5nIHRoYXQgcHJvdmlkZXMgdGhlIHN1YnN0cmluZyB0byBiZSBjb3BpZWQgdG9cclxuICAvLy8gdGFyZ2V0LlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mczpcIj50aGUgZmlyc3QgcG9zaXRpb24gKGNoYXJhY3RlcikgaW4gdGhlIHRhcmdldCBzdHJpbmcgdGhhdFxyXG4gIC8vLyB3aWxsIHJlY2VpdmUgdGhlIHN1YnN0cmluZyBmcm9tIG9yaWdpbi5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZW46XCI+dGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBtb3ZlZCBmcm9tIG9yaWdpblxyXG4gIC8vLyB0byB0YXJnZXQsIHN0YXJ0aW5nIGZyb20gdGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvZiBvcmlnaW4uXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBzdHJpbmcgY29udGFpbmluZyBtb2RpZmllZCB0YXJnZXQgc3RyaW5nXHJcbiAgLy8vXHJcbiAgLy8vIEV4YW1wbGU6IHJlcEIoXCJhYlhZY1wiLCBcImRlXCIsIDQsIDIpXHJcbiAgLy8vIFdoZXRoZXIgZWFjaCBjaGFyYWN0ZXIgaXMgU0JDUyBvciBEQkNTLCBpdCByZXR1cm5zIFwiYWJYZGVcIi5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyByZXBDKHN0clRhcmdldDogc3RyaW5nLCBzdHJPcmlnaW46IHN0cmluZywgb2ZzOiBudW1iZXIsIGxlbjogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHJidWZBZGRpbmdCdWY6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpO1xyXG4gICAgaWYgKG9mcyA8IDApIHtcclxuICAgICAgb2ZzID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAob2ZzID49IDEpIHtcclxuICAgICAgICBvZnMgPSBvZnMgLSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGVuIDwgMCkge1xyXG4gICAgICBsZW4gPSAwO1xyXG4gICAgfVxyXG4gICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZChzdHJUYXJnZXQuc3Vic3RyKDAsIG9mcykpO1xyXG5cclxuICAgIC8vIGFkZCBibGFua3MgYmV0d2VlbiBzdHJUYXJnZXQgYW5kIHN0ck9yaWdpblxyXG4gICAgbGV0IGludEFkZFNwYWNlTGVuOiBudW1iZXIgPSBvZnMgLSBzdHJUYXJnZXQubGVuZ3RoO1xyXG4gICAgZm9yICg7IGludEFkZFNwYWNlTGVuID4gMDsgaW50QWRkU3BhY2VMZW4tLSlcclxuICAgICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZCgnICcpO1xyXG5cclxuICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoc3RyT3JpZ2luLnN1YnN0cigwLCBsZW4pKTtcclxuXHJcbiAgICBsZXQgaW50UmlnaHRMZW46IG51bWJlciA9IHN0clRhcmdldC5sZW5ndGggLSAob2ZzICsgbGVuKTtcclxuXHJcbiAgICBpZiAoaW50UmlnaHRMZW4gPiAwKSB7XHJcbiAgICAgIHN0cmJ1ZkFkZGluZ0J1Zi5BcHBlbmQoc3RyVGFyZ2V0LnN1YnN0cihvZnMgKyBsZW4pKTtcclxuICAgIH1cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IGxlbiAtIHN0ck9yaWdpbi5sZW5ndGg7IGkgPiAwOyBpID0gaSAtIDEpIHtcclxuICAgICAgc3RyYnVmQWRkaW5nQnVmLkFwcGVuZCgnICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0cmJ1ZkFkZGluZ0J1Zi5Ub1N0cmluZygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDaGVja3Mgd2hldGhlciBhIGNoYXJhY3RlciBpcyAxIGJ5dGUgKGhhbGZ3aWR0aCkgb3Igbm90IChmdWxsd2lkdGgpXHJcbiAgLy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5IDEgYnl0ZSBpbiBub24tVW5pY29kZVxyXG4gIC8vLyBlbmNvZGluZy5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxldHRlcjpcIj5hIGNoYXJhY3RlciB0byBiZSBjaGVja2VkLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGlzIGhhbGZ3aWR0aCAoU0JDUyksIG9yIGZhbHNlIGlmIGl0IGlzXHJcbiAgLy8vIGZ1bGx3aWR0aCAoREJDUykuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgaXNIYWxmV2lkdGgoc3RyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuXHJcbiAgICBsZXQgbGV0dGVyOiBudW1iZXIgPSBzdHIuY2hhckNvZGVBdCgwKTtcclxuICAgIGlmICgzMiA8PSAvKicgJyovbGV0dGVyICYmIGxldHRlciA8PSAxMjYvKid+JyovKSB7XHJcbiAgICAgIHJldHVybiB0cnVlXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGxlbjogbnVtYmVyID0gVXRpbFN0ckJ5dGVNb2RlLmxlbkIoc3RyKTtcclxuICAgICAgaWYgKGxlbiA9PT0gMSlcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gQ2hlY2tzIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgaGFsZndpZHRoIGRpZ2l0IGxldHRlclxyXG4gIC8vLyBEbyBub3QgdXNlIFwiQ2hhcmFjdGVyLmlzRGlnaXRcIiB3aGljaCBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlblxyXG4gIC8vLyBoYWxmd2lkdGggZGlnaXQgbGV0dGVyKFNCQ1MpIGFuZCBmdWxsd2lkdGggZGlmaXQgbGV0dGVyKERCQ1MpLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGV0dGVyOlwiPmEgY2hhcmFjdGVyIHRvIGJlIGNoZWNrZWQuXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB0cnVlIGlmIHRoZSBjaGFyYWN0ZXIgaXMgaGFsZndpZHRoIGRpZ2l0IGxldHRlciwgb3JcclxuICAvLy8gZmFsc2UgaWYgaXQgaXMgREJDUyBvciBub3QgZGlnaXQgbGV0dGVyLlxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGlzRGlnaXQobGV0dGVyOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiA0OCA8PSAvKicwJyovbGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgbGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gNTcvKic5JyovO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PkNoZWNrcyB3aGV0aGVyIGEgY2hhcmFjdGVyIGlzIG9uZSBvZiB0aG9zZSBzdXBwb3J0ZWQgZm9yICMgQWxwaGEgTWFzazwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZXR0ZXI6XCI+YSBjaGFyYWN0ZXIgdG8gYmUgY2hlY2tlZC5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgaWYgdGhlIGNoYXJhY3RlciBpcyBoYWxmd2lkdGggZGlnaXQgbGV0dGVyLCBvclxyXG4gIC8vLyBmYWxzZSBpZiBpdCBpcyBEQkNTIG9yIG5vdCBkaWdpdCBsZXR0ZXIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgYXNOdW1lcmljKGxldHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmVzdWx0OiBib29sZWFuO1xyXG4gICAgc3dpdGNoIChsZXR0ZXIuY2hhckNvZGVBdCgwKSkge1xyXG4gICAgICBjYXNlIDQyOi8qJyonKi9cclxuICAgICAgY2FzZSA0MzovKicrJyovXHJcbiAgICAgIGNhc2UgNDQ6LyonLCcqL1xyXG4gICAgICBjYXNlIDQ1Oi8qJy0nKi9cclxuICAgICAgY2FzZSA0NjovKicuJyovXHJcbiAgICAgIGNhc2UgNDc6LyonLycqL1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBDb252ZXJ0cyBhIHBvc2l0aW9uIGZvciB0aGUgMXN0IHN0cmluZyAoU291cmNlKSB0byBhIHBvc2l0aW9uIGZvclxyXG4gIC8vLyB0aGUgMm5kIHN0cmluZyAoRGVzdCkuXHJcbiAgLy8vIElmIGEgZG91YmxlIGJ5dGUgY2hhcmFjdGVyIGV4aXN0cyBpbiB0aGUgc3RyaW5ncywgdGhlIHBvc2l0aW9uIGZvciB0aGVcclxuICAvLy8gU291cmNlIGNvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBwb3NpdGlvbiBmb3IgdGhlIERlc3QuXHJcbiAgLy8vIChEQkNTIFN1cHBvcnQpXHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHJTb3VyY2U6XCI+U291cmNlIHN0cmluZ1xyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0ckRlc3Q6XCI+RGVzdCBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwb3M6XCI+cG9zaXRpb24gaW4gdGhlIFNvdXJjZSBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc0FkdmFuY2U6XCI+YWR2YW5jZSBvciByZXRyZWF0IHRoZSByZXQgcG9zIGlmIGEgREJDUyBjaGFyIGlzIHNwbGl0XHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBwb3NpdGlvbiBpbiB0aGUgRGVzdCBzdHJpbmdcclxuICAvLy9cclxuICAvLy8gRXhhbXBsZTogY29udlBvcyhcImFiY1laXCIsIFwiWVphYmNcIiwgNClcclxuICAvLy8gSXQgcmV0dXJucyA0LCBpZiB0aGUgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ3MgYXJlIFNCQ1MuXHJcbiAgLy8vXHJcbiAgLy8vIElmICdhJywgJ2InIGFuZCAnYycgYXJlIFNCQ1MsIGFuZCAnWScgYW5kICdaJyBhcmUgREJDUywgaXRcclxuICAvLy8gcmV0dXJucyAzLlxyXG4gIC8vLyBwb3NcclxuICAvLy8gVW5pY29kZSBpbmRleCAgMCAxIDIgIDMgIFs0XVxyXG4gIC8vLyArLS0tLS0tLS0tLS0tLStcclxuICAvLy8gU291cmNlIHN0cmluZyB8YXxifGN8IFkgfCBaIHxcclxuICAvLy8gKy0tLS0tLS0tLS0tLS0rXHJcbiAgLy8vIEFOU0kgaW5kZXggICAgIDAgMSAyIDMgNFs1XTZcclxuICAvLy8gKy0tLS0tLS0tLS0tLS0rXHJcbiAgLy8vIERlc3Qgc3RyaW5nICAgfCBZIHwgWiB8YXxifGN8XHJcbiAgLy8vICstLS0tLS0tLS0tLS0tK1xyXG4gIC8vLyBVbmljb2RlIGluZGV4ICAgMCAgIDEgIDJbM100XHJcbiAgLy8vIHJldFxyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgc3RhdGljIGNvbnZQb3Moc3RyU291cmNlOiBzdHJpbmcsIHN0ckRlc3Q6IHN0cmluZywgcG9zOiBudW1iZXIsIGlzQWR2YW5jZTogYm9vbGVhbik6IG51bWJlciB7XHJcbiAgICBsZXQgcmV0UG9zOiBudW1iZXI7XHJcbiAgICBpZiAocG9zIDwgMClcclxuICAgICAgcmV0dXJuIDA7XHJcblxyXG4gICAgaWYgKHBvcyA+IHN0clNvdXJjZS5sZW5ndGgpXHJcbiAgICAgIHBvcyA9IHN0clNvdXJjZS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBhZGQgYmxhbmtzIHRvIHRoZSBEZXN0IHN0cmluZyBpZiBpdCBpcyBzaG9ydGVyIHRoYW4gdGhlIFNyYyBzdHJpbmdcclxuICAgICAgbGV0IGRpZmZMZW46IG51bWJlciA9IFV0aWxTdHJCeXRlTW9kZS5sZW5CKHN0clNvdXJjZSkgLSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHJEZXN0KTtcclxuICAgICAgaWYgKGRpZmZMZW4gPiAwKSB7XHJcbiAgICAgICAgbGV0IHN0cmluZ0J1aWxkZXI6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihzdHJEZXN0KTtcclxuICAgICAgICBmb3IgKDsgZGlmZkxlbiA+IDA7IGRpZmZMZW4tLSlcclxuICAgICAgICAgIHN0cmluZ0J1aWxkZXIuQXBwZW5kKCcgJyk7XHJcblxyXG4gICAgICAgIHN0ckRlc3QgPSBzdHJpbmdCdWlsZGVyLlRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBieXRlU291cmNlOiBVaW50OEFycmF5ID0gVXRpbFN0ckJ5dGVNb2RlLkVuY29kaW5nLkdldEJ5dGVzKHN0clNvdXJjZS5zdWJzdHIoMCwgcG9zKSk7XHJcbiAgICAgIGxldCBzdHJMZWZ0Qjogc3RyaW5nID0gVXRpbFN0ckJ5dGVNb2RlLmxlZnRCKHN0ckRlc3QsIGJ5dGVTb3VyY2UubGVuZ3RoKTtcclxuICAgICAgcmV0UG9zID0gc3RyTGVmdEIubGVuZ3RoO1xyXG4gICAgICBpZiAoIWlzQWR2YW5jZSAmJiByZXRQb3MgPiAwICYmIHN0ckxlZnRCLmNoYXJDb2RlQXQocmV0UG9zIC0gMSkgPT09IDMyLyonICcqLyAmJiBzdHJEZXN0LmNoYXJDb2RlQXQocmV0UG9zIC0gMSkgIT09IDMyLyonICcqLykge1xyXG4gICAgICAgIHJldFBvcyA9IHJldFBvcyAtIDE7XHJcbiAgICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmV0UG9zO1xyXG4gIH1cclxuICAvLy8gPHN1bW1hcnk+IHJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb2YgcGljdHVyZSB3aGljaCBjb3JyZXNwb25kcyB0b1xyXG4gIC8vLyBnaXZlbiBzdHJpbmcuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHI6XCI+Z2l2ZW4gc3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicGljdHVyZTpcIj5waWN0dXJlXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiBtaW5pbWFsIGxlbmd0aCBvZiBwaWN0dXJlXHJcbiAgLy8vIEV4YW1wbGU6IGdldE1pbkxlblBpY3R1cmUoXCJaWjIwLzExL1wiLCBcIkpKSkpZWS9NTS9ERFwiKSBbWlogaXMgREJDU11cclxuICAvLy8gSXQgcmV0dXJucyAxMC5cclxuICAvLy8gPC9yZXR1cm5zPlxyXG4gIC8vLyAoREJDUyBTdXBwb3J0KVxyXG4gIHN0YXRpYyBnZXRNaW5MZW5QaWN0dXJlKHN0cjogc3RyaW5nLCBwaWN0dXJlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgbGV0IGxlbjogbnVtYmVyID0gMDtcclxuXHJcbiAgICBpZiAoVXRpbFN0ckJ5dGVNb2RlLmxlbkIocGljdHVyZSkgLSBVdGlsU3RyQnl0ZU1vZGUubGVuQihzdHIpID4gMCkge1xyXG4gICAgICBsZW4gPSBVdGlsU3RyQnl0ZU1vZGUuY29udlBvcyhzdHIsIHBpY3R1cmUsIHN0ci5sZW5ndGgsIGZhbHNlKTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgbGVuID0gcGljdHVyZS5sZW5ndGg7XHJcblxyXG4gICAgcmV0dXJuIGxlbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gPC9zdW1tYXJ5PiBDb21wYXJlcyB0d28gc3BlY2lmaWVkIHN0cmluZ3MgaW4gdGhlIERCQ1Mgc29ydCBvcmRlciBhbmQgcmV0dXJucyBhbiBpbnRlZ2VyXHJcbiAgLy8vIHRoYXQgaW5kaWNhdGVzIHRoZWlyIHJlbGF0aXZlIHBvc2l0aW9uLlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjE6XCI+VGhlIGZpcnN0IHN0cmluZyB0byBjb21wYXJlLlxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0cjI6XCI+VGhlIHNlY29uZCBzdHJpbmcgdG8gY29tcGFyZS5cclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+YW4gaW50ZWdlciB0aGF0IGluZGljYXRlcyB0aGUgbGV4aWNhbCByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgdHdvIHN0cmluZ3MuXHJcbiAgLy8vICAtMTogc3RyMSBpcyBsZXNzIHRoYW4gc3RyMi5cclxuICAvLy8gICAwOiBzdHIxIGVxdWFscyBzdHIyLlxyXG4gIC8vLyAgIDE6IHN0cjEgaXMgZ3JlYXRlciB0aGFuIHN0cjIuXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBzdGF0aWMgc3RyY21wKHN0cjE6IHN0cmluZywgc3RyMjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGxldCBhcnJheTE6IFVpbnQ4QXJyYXkgPSBVdGlsU3RyQnl0ZU1vZGUuRW5jb2RpbmcuR2V0Qnl0ZXMoc3RyMSk7XHJcbiAgICBsZXQgYXJyYXkyOiBVaW50OEFycmF5ID0gVXRpbFN0ckJ5dGVNb2RlLkVuY29kaW5nLkdldEJ5dGVzKHN0cjIpO1xyXG5cclxuICAgIGZvciAobGV0IGk6IG51bWJlciA9IDA7IGkgPCBhcnJheTEubGVuZ3RoICYmIGkgPCBhcnJheTIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGFycmF5MVtpXSA+IGFycmF5MltpXSkge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGFycmF5MVtpXSA8IGFycmF5MltpXSkge1xyXG4gICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgIGlmIChhcnJheTEubGVuZ3RoID4gYXJyYXkyLmxlbmd0aClcclxuICAgICAgcmV0dXJuIDE7XHJcblxyXG4gICAgaWYgKGFycmF5MS5sZW5ndGggPCBhcnJheTIubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gLTE7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJldHVybiAwO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,169 +0,0 @@
1
- export class XMLConstants {
2
- static MG_TAG_XML = "xml";
3
- static MG_TAG_XML_END = "/xml";
4
- static TAG_TERM = "/>";
5
- static TAG_OPEN = "<";
6
- static TAG_CLOSE = ">";
7
- static XML_ATTR_DELIM = "\"";
8
- static START_TAG = "\n <";
9
- static END_TAG = "</";
10
- static XML_TAB = " ";
11
- static MG_ATTR_ID = "id";
12
- static MG_TAG_XML_END_TAGGED = XMLConstants.END_TAG + XMLConstants.MG_TAG_XML + XMLConstants.TAG_CLOSE;
13
- static MG_TAG_OPEN = XMLConstants.TAG_OPEN + XMLConstants.MG_TAG_XML + " " + XMLConstants.MG_ATTR_ID + "=\"MGDATA\">";
14
- static MG_TAG_TASK = "task";
15
- static MG_TAG_TASK_END = "/task";
16
- static MG_TAG_RECOMPUTE = "recompute";
17
- static MG_ATTR_VB_VIEW_ROWIDX = "db_view_rowidx";
18
- static MG_ATTR_CONTROL_ISN = "controlIsn";
19
- static MG_HOR_ALIGMENT_IS_INHERITED = "horizontalAlignmentIsFromSystemDefault";
20
- static MAX_PATH = 260;
21
- static FILE_NAME_SIZE = XMLConstants.MAX_PATH + 1;
22
- static CDATA_START = "<![CDATA[";
23
- static CDATA_END = "]]>";
24
- static MG_ATTR_VALUE = "val";
25
- static MG_ATTR_STUDIO_VALUE = "studioValue";
26
- static MG_ATTR_NAME = "name";
27
- static MG_ATTR_TYPE = "type";
28
- static MG_ATTR_SIZE = "size";
29
- static MG_ATTR_VAR_NAME = "var_name";
30
- static MG_ATTR_VAR_DISP_NAME = "var_disp_name";
31
- static MG_ATTR_VEC_CELLS_SIZE = "vecCellsSize";
32
- static MG_ATTR_VEC_CELLS_ATTR = "vec_cells_attr";
33
- static MG_ATTR_VEC_CELLS_CONTENT = "CellContentType";
34
- static MG_ATTR_NULLVALUE = "nullvalue";
35
- static MG_ATTR_NULLDISPLAY = "nulldisplay";
36
- static MG_ATTR_NULLDEFAULT = "nulldefault";
37
- static MG_ATTR_DB_MODIFIABLE = "db_modifiable";
38
- static MG_ATTR_DEFAULTVALUE = "defaultvalue";
39
- static MG_ATTR_NULLALLOWED = "nullallowed";
40
- static MG_ATTR_BLOB_CONTENT = "ContentType";
41
- static MG_ATTR_PART_OF_DATAVIEW = "partOfDataview";
42
- static MG_ATTR_DATA_TYPE = "dataType";
43
- static MG_ATTR_DATA_CTRL = "data_ctrl";
44
- static MG_ATTR_LINKED_PARENT = "linked_parent";
45
- static MG_ATTR_CONTAINER = "container";
46
- static MG_ATTR_IS_FRAMESET = "isFrameSet";
47
- static MG_ATTR_IS_LIGAL_RC_FORM = "isLegalRcForm";
48
- static MG_ATTR_USERSTATE_ID = "userStateId";
49
- static MG_ATTR_PB_IMAGES_NUMBER = "PBImagesNumber";
50
- static MG_ATTR_FORM_ISN = "formIsn";
51
- static MG_ATTR_TASKID = "taskid";
52
- static MG_ATTR_IS_MODAL = "IsModal";
53
- static MG_ATTR_TASK_IS_SERIALIZATION_PARTIAL = "isSerializationPartial";
54
- static MG_ATTR_XML_TRUE = "1";
55
- static MG_ATTR_XML_FALSE = "0";
56
- static MG_ATTR_TOOLKIT_PARENT_TASK = "toolkit_parent_task";
57
- static MG_ATTR_CTL_IDX = "ctl_idx";
58
- static MG_ATTR_MAINPRG = "mainprg";
59
- static MG_ATTR_NULL_ARITHMETIC = "nullArithmetic";
60
- static MG_ATTR_INTERACTIVE = "interactive";
61
- static MG_ATTR_IS_OFFLINE = "IsOffline";
62
- static MG_ATTR_RETURN_VALUE_EXP = "returnValueExp";
63
- static MG_ATTR_PARALLEL = "ParallelExecution";
64
- static MG_ATTR_OPEN_WIN = "OpenWin";
65
- static MG_ATTR_ALLOW_EVENTS = "AllowEvents";
66
- static MG_ATTR_ISPRG = "isPrg";
67
- static MG_ATTR_APPL_GUID = "applicationGuid";
68
- static MG_ATTR_PROGRAM_ISN = "programIsn";
69
- static MG_ATTR_TASK_ISN = "taskIsn";
70
- static MG_ATTR_ROUTER_PATH = "RouterPath";
71
- static MG_ATTR_IN_DEFAULT_ROUTER_OUTLET = "InDefaultRouterOutlet";
72
- static MG_ATTR_EXPAND = "expand";
73
- static MG_ATTR_EXP = "exp";
74
- static MG_ATTR_ERROR_EXP = "errorExp";
75
- static MG_ATTR_ERROR = "errorMsg";
76
- static MG_ATTR_IS_GENERIC = "isGeneric";
77
- static MG_ATTR_HASHCODE = "hashCode";
78
- static MG_ATTR_PICTURE = "picture";
79
- static MG_ATTR_STORAGE = "storage";
80
- static MG_ATTR_DITIDX = "ditidx";
81
- static MG_ATTR_ICON_FILE_NAME = "iconFileName";
82
- static MG_ATTR_SYS_CONTEXT_MENU = "systemContextMenu";
83
- static MG_TAG_FLDH = "fldh";
84
- static MG_TAG_DVHEADER = "dvheader";
85
- static MG_ATTR_MENUS_FILE_NAME = "menusFileName";
86
- static MG_ATTR_MENU_CONTENT = "MenusContent";
87
- static MG_ATTR_SORT_BY_RECENTLY_USED = "SortWindowListByRecentlyUsed";
88
- static MG_ATTR_CONTROL_Z_ORDER = "zorder";
89
- static MG_TAG_PROP = "prop";
90
- static MG_TAG_CONTROL = "control";
91
- static MG_TAG_FORM = "form";
92
- static MG_TAG_FORM_PROPERTIES = "propertiesForm";
93
- static MG_TAG_FORMS = "forms";
94
- static MG_TAG_TREE = "tree";
95
- static MG_TAG_NODE = "node";
96
- static MG_TAG_FLD = "fld";
97
- static MG_ATTR_CHILDREN_RETRIEVED = "children_retrieved";
98
- static MG_TAG_HELPTABLE = "helptable";
99
- static MG_TAG_HELPITEM = "helpitem";
100
- static MG_ATTR_FULLNAME = "fullname";
101
- static MG_ATTR_ISSPECIFIC = "isSpecific";
102
- static MG_ATTR_IS_GUI_THREAD_EXECUTION = "isGuiThreadExecution";
103
- static MG_TAG_TASKDEFINITIONID_ENTRY = "taskDefinitionId";
104
- static MG_TAG_OBJECT_REFERENCE = "objectRef";
105
- static MG_ATTR_HLP_TYP_TOOLTIP = "T";
106
- static MG_ATTR_HLP_TYP_PROMPT = "P";
107
- static MG_ATTR_HLP_TYP_URL = "U";
108
- static MG_ATTR_HLP_TYP_INTERNAL = "I";
109
- static MG_ATTR_HLP_TYP_WINDOWS = "W";
110
- static MG_ATTR_INTERNAL_HELP_TYPE = "type";
111
- static MG_ATTR_INTERNAL_HELP_NAME = "name";
112
- static MG_ATTR_INTERNAL_HELP_FRAMEX = "framex";
113
- static MG_ATTR_INTERNAL_HELP_FRAMEY = "framey";
114
- static MG_ATTR_INTERNAL_HELP_FRAMEDX = "famedx";
115
- static MG_ATTR_INTERNAL_HELP_FRAMEDY = "framedy";
116
- static MG_ATTR_INTERNAL_HELP_SIZEDX = "sizedx";
117
- static MG_ATTR_INTERNAL_HELP_SIZEDY = "sizedy";
118
- static MG_ATTR_INTERNAL_HELP_FACTORX = "factorx";
119
- static MG_ATTR_INTERNAL_HELP_FACTORY = "factory";
120
- static MG_ATTR_INTERNAL_HELP_BORDERSTYLE = "borderstyle";
121
- static MG_ATTR_INTERNAL_TITLE_BAR = "titlebar";
122
- static MG_ATTR_INTERNAL_HELP_SYSTEM_MENU = "sysmenu";
123
- static MG_ATTR_INTERNAL_HELP_FONT_TABLE_INDEX = "fonttableindex";
124
- static MG_ATTR_WINDOWS_HELP_FILE = "file";
125
- static MG_ATTR_WINDOWS_HELP_COMMAND = "command";
126
- static MG_ATTR_WINDOWS_HELP_KEY = "key";
127
- static MG_TAG_PRINT_DATA = "Print_data";
128
- static MG_TAG_PRINT_DATA_END = "/Print_data";
129
- static MG_TAG_RECORD = "Record";
130
- static MG_TAG_RECORD_END = "/Record";
131
- static MG_TAG_CUSTOM_VALIDATORS = "CustomValidators";
132
- static MG_TAG_CUSTOM_VALIDATORS_END = "/CustomValidators";
133
- static MG_TAG_CUSTOM_VALIDATOR = "CustomValidator";
134
- static ERROR_LOG_TIME_FORMAT = "HH:mm:ss.S";
135
- static ERROR_LOG_DATE_FORMAT = "DD/MM/YYYY";
136
- static HTTP_ERROR_TIME_FORMAT = "HH:mm:ss";
137
- static CACHED_DATE_TIME_FORMAT = "DD/MM/YYYY HH:mm:ss";
138
- static MG_TAG_WS_READ_REQUEST = "Read";
139
- static MG_TAG_WS_CREATE_REQUEST = "Create";
140
- static MG_TAG_WS_CREATE_REQUEST_END = "/Create";
141
- static MG_TAG_WS_UPDATE_REQUEST = "Update";
142
- static MG_TAG_WS_UPDATE_REQUEST_END = "/Update";
143
- static MG_TAG_WS_DELETE_REQUEST = "Delete";
144
- static MG_TAG_WS_DELETE_REQUEST_END = "/Delete";
145
- static MG_TAG_WS_MANIPULATE_REQUEST = "Manipulate";
146
- static MG_TAG_WS_MANIPULATE_REQUEST_END = "/Manipulate";
147
- static MG_TAG_WS_DATABASE = "Database";
148
- static MG_TAG_WS_DATASOURCE = "Datasource";
149
- static MG_TAG_WS_COLUMNS = "Columns";
150
- static MG_TAG_WS_COLUMN = "string";
151
- static MG_TAG_WS_RANGES = "Ranges";
152
- static MG_TAG_WS_RANGES_END = "/Ranges";
153
- static MG_TAG_WS_MIN = "Min";
154
- static MG_TAG_WS_MAX = "Max";
155
- static MG_TAG_WS_RECORD = "Row";
156
- static MG_TAG_WS_RECORD_END = "/Row";
157
- static MG_TAG_WS_WHERE = "Where";
158
- static MG_TAG_WS_WHERE_END = "/Where";
159
- static MG_TAG_WS_RESPONSE = "Response";
160
- static MG_TAG_WS_ERROR = "Error";
161
- static MG_TAG_WS_ERROR_CODE = "errorCode";
162
- static MG_TAG_WS_DESCRIPTION = "description";
163
- static MG_TAG_MENUS_OPEN = "Menus";
164
- static MG_TAG_MENUS_CLOSE = "/Menus";
165
- static MG_TAG_MENU = "Menu";
166
- constructor() {
167
- }
168
- }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWE1MQ29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXRpbHMvc3JjL1hNTENvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQVUsVUFBVSxHQUFXLEtBQUssQ0FBQztJQUMzQyxNQUFNLENBQVUsY0FBYyxHQUFXLE1BQU0sQ0FBQztJQUVoRCxNQUFNLENBQVUsUUFBUSxHQUFXLElBQUksQ0FBQztJQUN4QyxNQUFNLENBQVUsUUFBUSxHQUFXLEdBQUcsQ0FBQztJQUN2QyxNQUFNLENBQVUsU0FBUyxHQUFXLEdBQUcsQ0FBQztJQUN4QyxNQUFNLENBQVUsY0FBYyxHQUFXLElBQUksQ0FBQztJQUM5QyxNQUFNLENBQVUsU0FBUyxHQUFXLFFBQVEsQ0FBQztJQUM3QyxNQUFNLENBQVUsT0FBTyxHQUFXLElBQUksQ0FBQztJQUN2QyxNQUFNLENBQVUsT0FBTyxHQUFXLEtBQUssQ0FBQztJQUV4QyxNQUFNLENBQVUsVUFBVSxHQUFXLElBQUksQ0FBQztJQUUxQyxNQUFNLENBQVUscUJBQXFCLEdBQVcsWUFBWSxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUM7SUFDeEgsTUFBTSxDQUFVLFdBQVcsR0FBVyxZQUFZLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxVQUFVLEdBQUcsR0FBRyxHQUFHLFlBQVksQ0FBQyxVQUFVLEdBQUcsY0FBYyxDQUFDO0lBQ3ZJLE1BQU0sQ0FBVSxXQUFXLEdBQVcsTUFBTSxDQUFDO0lBQzdDLE1BQU0sQ0FBVSxlQUFlLEdBQVcsT0FBTyxDQUFDO0lBQ2xELE1BQU0sQ0FBVSxnQkFBZ0IsR0FBVyxXQUFXLENBQUM7SUFJdkQsTUFBTSxDQUFVLHNCQUFzQixHQUFXLGdCQUFnQixDQUFDO0lBQ2xFLE1BQU0sQ0FBVSxtQkFBbUIsR0FBVyxZQUFZLENB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QUNsRCxNQUFNLENBQVUsb0JBQW9CLEdBQVcsV0FBVyxDQUFDO0lBQzNELE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyxhQUFhLENBQUM7SUFFOUQsTUFBTSxDQUFVLGlCQUFpQixHQUFXLE9BQU8sQ0FBQztJQUNwRCxNQUFNLENBQVUsa0JBQWtCLEdBQVcsUUFBUSxDQUFDO0lBQ3RELE1BQU0sQ0FBVSxXQUFXLEdBQVcsTUFBTSxDQUFDO0lBRTdDO0lBRUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBYTUxDb25zdGFudHMge1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfWE1MOiBzdHJpbmcgPSBcInhtbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfWE1MX0VORDogc3RyaW5nID0gXCIveG1sXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBUQUdfVEVSTTogc3RyaW5nID0gXCIvPlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBUQUdfT1BFTjogc3RyaW5nID0gXCI8XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFRBR19DTE9TRTogc3RyaW5nID0gXCI+XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFhNTF9BVFRSX0RFTElNOiBzdHJpbmcgPSBcIlxcXCJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBUlRfVEFHOiBzdHJpbmcgPSBcIlxcbiAgIDxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgRU5EX1RBRzogc3RyaW5nID0gXCI8L1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBYTUxfVEFCOiBzdHJpbmcgPSBcIiAgIFwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JRDogc3RyaW5nID0gXCJpZFwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1hNTF9FTkRfVEFHR0VEOiBzdHJpbmcgPSBYTUxDb25zdGFudHMuRU5EX1RBRyArIFhNTENvbnN0YW50cy5NR19UQUdfWE1MICsgWE1MQ29uc3RhbnRzLlRBR19DTE9TRTtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX09QRU46IHN0cmluZyA9IFhNTENvbnN0YW50cy5UQUdfT1BFTiArIFhNTENvbnN0YW50cy5NR19UQUdfWE1MICsgXCIgXCIgKyBYTUxDb25zdGFudHMuTUdfQVRUUl9JRCArIFwiPVxcXCJNR0RBVEFcXFwiPlwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfVEFTSzogc3RyaW5nID0gXCJ0YXNrXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19UQVNLX0VORDogc3RyaW5nID0gXCIvdGFza1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfUkVDT01QVVRFOiBzdHJpbmcgPSBcInJlY29tcHV0ZVwiO1xyXG5cclxuICAvL1RPRE86IHRoaXMgY2xhc3MgY29udGFpbnMgdGhlIGNvbnN0YW50cyB3aGljaCBhcmUgdXNlZCBmb3IgWE1MIHBhcnNpbmcuXHJcbiAgLy9DaGVjayBpZiB3ZSBjYW4gbW92ZSBpdCB0byBVdGlsLmRsbFxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1ZCX1ZJRVdfUk9XSURYOiBzdHJpbmcgPSBcImRiX3ZpZXdfcm93aWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQ09OVFJPTF9JU046IHN0cmluZyA9IFwiY29udHJvbElzblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19IT1JfQUxJR01FTlRfSVNfSU5IRVJJVEVEOiBzdHJpbmcgPSBcImhvcml6b250YWxBbGlnbm1lbnRJc0Zyb21TeXN0ZW1EZWZhdWx0XCI7XHJcblxyXG4gIC8vIE1haW5IZWFkZXJzXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9QQVRIOiBudW1iZXIgPSAyNjA7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEZJTEVfTkFNRV9TSVpFOiBudW1iZXIgPSBYTUxDb25zdGFudHMuTUFYX1BBVEggKyAxO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgQ0RBVEFfU1RBUlQ6IHN0cmluZyA9IFwiPCFbQ0RBVEFbXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IENEQVRBX0VORDogc3RyaW5nID0gXCJdXT5cIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVkFMVUU6IHN0cmluZyA9IFwidmFsXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU1RVRElPX1ZBTFVFOiBzdHJpbmcgPSBcInN0dWRpb1ZhbHVlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTkFNRTogc3RyaW5nID0gXCJuYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVFlQRTogc3RyaW5nID0gXCJ0eXBlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU0laRTogc3RyaW5nID0gXCJzaXplXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVkFSX05BTUU6IHN0cmluZyA9IFwidmFyX25hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WQVJfRElTUF9OQU1FOiBzdHJpbmcgPSBcInZhcl9kaXNwX25hbWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WRUNfQ0VMTFNfU0laRTogc3RyaW5nID0gXCJ2ZWNDZWxsc1NpemVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9WRUNfQ0VMTFNfQVRUUjogc3RyaW5nID0gXCJ2ZWNfY2VsbHNfYXR0clwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1ZFQ19DRUxMU19DT05URU5UOiBzdHJpbmcgPSBcIkNlbGxDb250ZW50VHlwZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExWQUxVRTogc3RyaW5nID0gXCJudWxsdmFsdWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9OVUxMRElTUExBWTogc3RyaW5nID0gXCJudWxsZGlzcGxheVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExERUZBVUxUOiBzdHJpbmcgPSBcIm51bGxkZWZhdWx0XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfREJfTU9ESUZJQUJMRTogc3RyaW5nID0gXCJkYl9tb2RpZmlhYmxlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfREVGQVVMVFZBTFVFOiBzdHJpbmcgPSBcImRlZmF1bHR2YWx1ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX05VTExBTExPV0VEOiBzdHJpbmcgPSBcIm51bGxhbGxvd2VkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQkxPQl9DT05URU5UOiBzdHJpbmcgPSBcIkNvbnRlbnRUeXBlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfUEFSVF9PRl9EQVRBVklFVzogc3RyaW5nID0gXCJwYXJ0T2ZEYXRhdmlld1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0RBVEFfVFlQRTogc3RyaW5nID0gXCJkYXRhVHlwZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0RBVEFfQ1RSTDogc3RyaW5nID0gXCJkYXRhX2N0cmxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9MSU5LRURfUEFSRU5UOiBzdHJpbmcgPSBcImxpbmtlZF9wYXJlbnRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9DT05UQUlORVI6IHN0cmluZyA9IFwiY29udGFpbmVyXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSVNfRlJBTUVTRVQ6IHN0cmluZyA9IFwiaXNGcmFtZVNldFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0xJR0FMX1JDX0ZPUk06IHN0cmluZyA9IFwiaXNMZWdhbFJjRm9ybVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1VTRVJTVEFURV9JRDogc3RyaW5nID0gXCJ1c2VyU3RhdGVJZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1BCX0lNQUdFU19OVU1CRVI6IHN0cmluZyA9IFwiUEJJbWFnZXNOdW1iZXJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9GT1JNX0lTTjogc3RyaW5nID0gXCJmb3JtSXNuXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVEFTS0lEOiBzdHJpbmcgPSBcInRhc2tpZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX01PREFMOiBzdHJpbmcgPSBcIklzTW9kYWxcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9UQVNLX0lTX1NFUklBTElaQVRJT05fUEFSVElBTDogc3RyaW5nID0gXCJpc1NlcmlhbGl6YXRpb25QYXJ0aWFsXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfWE1MX1RSVUU6IHN0cmluZyA9IFwiMVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1hNTF9GQUxTRTogc3RyaW5nID0gXCIwXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVE9PTEtJVF9QQVJFTlRfVEFTSzogc3RyaW5nID0gXCJ0b29sa2l0X3BhcmVudF90YXNrXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfQ1RMX0lEWDogc3RyaW5nID0gXCJjdGxfaWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTUFJTlBSRzogc3RyaW5nID0gXCJtYWlucHJnXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTlVMTF9BUklUSE1FVElDOiBzdHJpbmcgPSBcIm51bGxBcml0aG1ldGljXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJBQ1RJVkU6IHN0cmluZyA9IFwiaW50ZXJhY3RpdmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JU19PRkZMSU5FOiBzdHJpbmcgPSBcIklzT2ZmbGluZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1JFVFVSTl9WQUxVRV9FWFA6IHN0cmluZyA9IFwicmV0dXJuVmFsdWVFeHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QQVJBTExFTDogc3RyaW5nID0gXCJQYXJhbGxlbEV4ZWN1dGlvblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX09QRU5fV0lOOiBzdHJpbmcgPSBcIk9wZW5XaW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9BTExPV19FVkVOVFM6IHN0cmluZyA9IFwiQWxsb3dFdmVudHNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JU1BSRzogc3RyaW5nID0gXCJpc1ByZ1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0FQUExfR1VJRDogc3RyaW5nID0gXCJhcHBsaWNhdGlvbkd1aWRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QUk9HUkFNX0lTTjogc3RyaW5nID0gXCJwcm9ncmFtSXNuXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfVEFTS19JU046IHN0cmluZyA9IFwidGFza0lzblwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1JPVVRFUl9QQVRIOiBzdHJpbmcgPSBcIlJvdXRlclBhdGhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTl9ERUZBVUxUX1JPVVRFUl9PVVRMRVQ6IHN0cmluZyA9IFwiSW5EZWZhdWx0Um91dGVyT3V0bGV0XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfRVhQQU5EOiBzdHJpbmcgPSBcImV4cGFuZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0VYUDogc3RyaW5nID0gXCJleHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9FUlJPUl9FWFA6IHN0cmluZyA9IFwiZXJyb3JFeHBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9FUlJPUjogc3RyaW5nID0gXCJlcnJvck1zZ1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0dFTkVSSUM6IHN0cmluZyA9IFwiaXNHZW5lcmljXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSEFTSENPREU6IHN0cmluZyA9IFwiaGFzaENvZGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9QSUNUVVJFOiBzdHJpbmcgPSBcInBpY3R1cmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9TVE9SQUdFOiBzdHJpbmcgPSBcInN0b3JhZ2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ESVRJRFg6IHN0cmluZyA9IFwiZGl0aWR4XCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSUNPTl9GSUxFX05BTUU6IHN0cmluZyA9IFwiaWNvbkZpbGVOYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfU1lTX0NPTlRFWFRfTUVOVTogc3RyaW5nID0gXCJzeXN0ZW1Db250ZXh0TWVudVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRkxESDogc3RyaW5nID0gXCJmbGRoXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19EVkhFQURFUjogc3RyaW5nID0gXCJkdmhlYWRlclwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX01FTlVTX0ZJTEVfTkFNRTogc3RyaW5nID0gXCJtZW51c0ZpbGVOYW1lXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfTUVOVV9DT05URU5UOiBzdHJpbmcgPSBcIk1lbnVzQ29udGVudFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1NPUlRfQllfUkVDRU5UTFlfVVNFRDogc3RyaW5nID0gXCJTb3J0V2luZG93TGlzdEJ5UmVjZW50bHlVc2VkXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0NPTlRST0xfWl9PUkRFUjogc3RyaW5nID0gXCJ6b3JkZXJcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19QUk9QOiBzdHJpbmcgPSBcInByb3BcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX0NPTlRST0w6IHN0cmluZyA9IFwiY29udHJvbFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRk9STTogc3RyaW5nID0gXCJmb3JtXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19GT1JNX1BST1BFUlRJRVM6IHN0cmluZyA9IFwicHJvcGVydGllc0Zvcm1cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX0ZPUk1TOiBzdHJpbmcgPSBcImZvcm1zXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19UUkVFOiBzdHJpbmcgPSBcInRyZWVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX05PREU6IHN0cmluZyA9IFwibm9kZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfRkxEOiBzdHJpbmcgPSBcImZsZFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0NISUxEUkVOX1JFVFJJRVZFRDogc3RyaW5nID0gXCJjaGlsZHJlbl9yZXRyaWV2ZWRcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19IRUxQVEFCTEU6IHN0cmluZyA9IFwiaGVscHRhYmxlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19IRUxQSVRFTTogc3RyaW5nID0gXCJoZWxwaXRlbVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9GVUxMTkFNRTogc3RyaW5nID0gXCJmdWxsbmFtZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTU1BFQ0lGSUM6IHN0cmluZyA9IFwiaXNTcGVjaWZpY1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lTX0dVSV9USFJFQURfRVhFQ1VUSU9OOiBzdHJpbmcgPSBcImlzR3VpVGhyZWFkRXhlY3V0aW9uXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfVEFTS0RFRklOSVRJT05JRF9FTlRSWTogc3RyaW5nID0gXCJ0YXNrRGVmaW5pdGlvbklkXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19PQkpFQ1RfUkVGRVJFTkNFOiBzdHJpbmcgPSBcIm9iamVjdFJlZlwiO1xyXG5cclxuICAvL0hlbHAgdHlwZXNcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ITFBfVFlQX1RPT0xUSVA6IHN0cmluZyA9IFwiVFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0hMUF9UWVBfUFJPTVBUOiBzdHJpbmcgPSBcIlBcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9ITFBfVFlQX1VSTDogc3RyaW5nID0gXCJVXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSExQX1RZUF9JTlRFUk5BTDogc3RyaW5nID0gXCJJXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSExQX1RZUF9XSU5ET1dTOiBzdHJpbmcgPSBcIldcIjtcclxuXHJcbiAgLy9JbnRlcm5hbCBoZWxwIGF0dHJpYnV0ZXMuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9UWVBFOiBzdHJpbmcgPSBcInR5cGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX05BTUU6IHN0cmluZyA9IFwibmFtZVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWDogc3RyaW5nID0gXCJmcmFtZXhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZSQU1FWTogc3RyaW5nID0gXCJmcmFtZXlcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9GUkFNRURYOiBzdHJpbmcgPSBcImZhbWVkeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfRlJBTUVEWTogc3RyaW5nID0gXCJmcmFtZWR5XCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURYOiBzdHJpbmcgPSBcInNpemVkeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfU0laRURZOiBzdHJpbmcgPSBcInNpemVkeVwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX0ZBQ1RPUlg6IHN0cmluZyA9IFwiZmFjdG9yeFwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfRkFDVE9SWTogc3RyaW5nID0gXCJmYWN0b3J5XCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX0lOVEVSTkFMX0hFTFBfQk9SREVSU1RZTEU6IHN0cmluZyA9IFwiYm9yZGVyc3R5bGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9USVRMRV9CQVI6IHN0cmluZyA9IFwidGl0bGViYXJcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9JTlRFUk5BTF9IRUxQX1NZU1RFTV9NRU5VOiBzdHJpbmcgPSBcInN5c21lbnVcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfSU5URVJOQUxfSEVMUF9GT05UX1RBQkxFX0lOREVYOiBzdHJpbmcgPSBcImZvbnR0YWJsZWluZGV4XCI7XHJcblxyXG4gIC8vV2luZG93cyBoZWxwIGF0dHJpYnV0ZXMuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX0FUVFJfV0lORE9XU19IRUxQX0ZJTEU6IHN0cmluZyA9IFwiZmlsZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19BVFRSX1dJTkRPV1NfSEVMUF9DT01NQU5EOiBzdHJpbmcgPSBcImNvbW1hbmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfQVRUUl9XSU5ET1dTX0hFTFBfS0VZOiBzdHJpbmcgPSBcImtleVwiO1xyXG5cclxuICAvL1ByaW50IGRhdGEgYXR0cmlidXRlcy5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1BSSU5UX0RBVEE6IHN0cmluZyA9IFwiUHJpbnRfZGF0YVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfUFJJTlRfREFUQV9FTkQ6IHN0cmluZyA9IFwiL1ByaW50X2RhdGFcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1JFQ09SRDogc3RyaW5nID0gXCJSZWNvcmRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1JFQ09SRF9FTkQ6IHN0cmluZyA9IFwiL1JlY29yZFwiO1xyXG5cclxuICAvL0N1c3RvbSBWYWxpZGF0b3JzICBhdHRyaWJ1dGVzLlxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfQ1VTVE9NX1ZBTElEQVRPUlM6IHN0cmluZyA9IFwiQ3VzdG9tVmFsaWRhdG9yc1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfQ1VTVE9NX1ZBTElEQVRPUlNfRU5EOiBzdHJpbmcgPSBcIi9DdXN0b21WYWxpZGF0b3JzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19DVVNUT01fVkFMSURBVE9SOiBzdHJpbmcgPSBcIkN1c3RvbVZhbGlkYXRvclwiO1xyXG5cclxuICAvLyBkYXRlL3RpbWUgZm9ybWF0cyBmb3IgRGF0ZVRpbWVVdGlsc1xyXG4gIC8vVE9ETzogaXNvbGF0ZSB0byBhIGRpZmZlcmVudCBmaWxlP1xyXG4gIHN0YXRpYyByZWFkb25seSBFUlJPUl9MT0dfVElNRV9GT1JNQVQ6IHN0cmluZyA9IFwiSEg6bW06c3MuU1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBFUlJPUl9MT0dfREFURV9GT1JNQVQ6IHN0cmluZyA9IFwiREQvTU0vWVlZWVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBIVFRQX0VSUk9SX1RJTUVfRk9STUFUOiBzdHJpbmcgPSBcIkhIOm1tOnNzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IENBQ0hFRF9EQVRFX1RJTUVfRk9STUFUOiBzdHJpbmcgPSBcIkREL01NL1lZWVkgSEg6bW06c3NcIjtcclxuXHJcbiAgLy93ZWJzIGNvbnN0YW50c1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfUkVBRF9SRVFVRVNUOiBzdHJpbmcgPSBcIlJlYWRcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0NSRUFURV9SRVFVRVNUOiBzdHJpbmcgPSBcIkNyZWF0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfQ1JFQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9DcmVhdGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1VQREFURV9SRVFVRVNUOiBzdHJpbmcgPSBcIlVwZGF0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfVVBEQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9VcGRhdGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0RFTEVURV9SRVFVRVNUOiBzdHJpbmcgPSBcIkRlbGV0ZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfREVMRVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9EZWxldGVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01BTklQVUxBVEVfUkVRVUVTVDogc3RyaW5nID0gXCJNYW5pcHVsYXRlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19NQU5JUFVMQVRFX1JFUVVFU1RfRU5EOiBzdHJpbmcgPSBcIi9NYW5pcHVsYXRlXCI7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfREFUQUJBU0U6IHN0cmluZyA9IFwiRGF0YWJhc2VcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0RBVEFTT1VSQ0U6IHN0cmluZyA9IFwiRGF0YXNvdXJjZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfQ09MVU1OUzogc3RyaW5nID0gXCJDb2x1bW5zXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19DT0xVTU46IHN0cmluZyA9IFwic3RyaW5nXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SQU5HRVM6IHN0cmluZyA9IFwiUmFuZ2VzXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SQU5HRVNfRU5EOiBzdHJpbmcgPSBcIi9SYW5nZXNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01JTjogc3RyaW5nID0gXCJNaW5cIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX01BWDogc3RyaW5nID0gXCJNYXhcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1JFQ09SRDogc3RyaW5nID0gXCJSb3dcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1JFQ09SRF9FTkQ6IHN0cmluZyA9IFwiL1Jvd1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfV0hFUkU6IHN0cmluZyA9IFwiV2hlcmVcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX1dIRVJFX0VORDogc3RyaW5nID0gXCIvV2hlcmVcIjtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19SRVNQT05TRTogc3RyaW5nID0gXCJSZXNwb25zZVwiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfV1NfRVJST1I6IHN0cmluZyA9IFwiRXJyb3JcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX1dTX0VSUk9SX0NPREU6IHN0cmluZyA9IFwiZXJyb3JDb2RlXCI7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE1HX1RBR19XU19ERVNDUklQVElPTjogc3RyaW5nID0gXCJkZXNjcmlwdGlvblwiO1xyXG5cclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX01FTlVTX09QRU46IHN0cmluZyA9IFwiTWVudXNcIjtcclxuICBzdGF0aWMgcmVhZG9ubHkgTUdfVEFHX01FTlVTX0NMT1NFOiBzdHJpbmcgPSBcIi9NZW51c1wiO1xyXG4gIHN0YXRpYyByZWFkb25seSBNR19UQUdfTUVOVTogc3RyaW5nID0gXCJNZW51XCI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICB9XHJcbn1cclxuIl19