@gipisistemas/ng-core 1.1.14 → 1.1.16

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.
@@ -0,0 +1,598 @@
1
+ import { __read } from "tslib";
2
+ var cUFsValidas = [
3
+ 'AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA',
4
+ 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN',
5
+ 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO', 'EX'
6
+ ];
7
+ var ACBrValidadorIE = /** @class */ (function () {
8
+ function ACBrValidadorIE() {
9
+ this._fsIgnorarChar = './-';
10
+ this._fsDocumento = '';
11
+ this.fsDocto = '';
12
+ this._Complemento = '';
13
+ this.fsMsgErro = '';
14
+ this.fsDigitoCalculado = '';
15
+ this.fsPermiteVazio = false;
16
+ this.fsExibeDigitoCorreto = false;
17
+ this.fsAjustarTamanho = false;
18
+ }
19
+ Object.defineProperty(ACBrValidadorIE.prototype, "IgnorarChar", {
20
+ get: function () {
21
+ return this._fsIgnorarChar;
22
+ },
23
+ set: function (value) {
24
+ this._fsIgnorarChar = value;
25
+ },
26
+ enumerable: false,
27
+ configurable: true
28
+ });
29
+ Object.defineProperty(ACBrValidadorIE.prototype, "Documento", {
30
+ get: function () {
31
+ return this._fsDocumento;
32
+ },
33
+ set: function (value) {
34
+ if (this._fsDocumento === value) {
35
+ return;
36
+ }
37
+ this._fsDocumento = value;
38
+ this.fsMsgErro = 'Função Validar não foi chamada';
39
+ this.fsDigitoCalculado = '';
40
+ this.fsDocto = this._LimpaDocto(this._fsDocumento);
41
+ },
42
+ enumerable: false,
43
+ configurable: true
44
+ });
45
+ Object.defineProperty(ACBrValidadorIE.prototype, "Complemento", {
46
+ get: function () {
47
+ return this._Complemento;
48
+ },
49
+ set: function (value) {
50
+ this._Complemento = value;
51
+ },
52
+ enumerable: false,
53
+ configurable: true
54
+ });
55
+ ACBrValidadorIE.prototype.isValid = function (IE, UF, ignorarChar) {
56
+ if (ignorarChar === void 0) { ignorarChar = './-'; }
57
+ this.Documento = IE;
58
+ this.Complemento = UF;
59
+ this.IgnorarChar = ignorarChar || './-';
60
+ this.Documento = this.formatar();
61
+ if (this._validar()) {
62
+ return { ie: this.Documento, isValid: true, error: '' };
63
+ }
64
+ else {
65
+ return { ie: this.Documento, isValid: false, error: this.fsMsgErro };
66
+ }
67
+ };
68
+ ACBrValidadorIE.prototype._validar = function () {
69
+ this.fsMsgErro = '';
70
+ this.fsDocto = this._LimpaDocto(this._fsDocumento);
71
+ this.fsDigitoCalculado = '';
72
+ if (this.fsDocto === '') {
73
+ if (this.fsPermiteVazio) {
74
+ return true;
75
+ }
76
+ else {
77
+ this.fsMsgErro = "Inscri\u00E7\u00E3o Estadual n\u00E3o pode ser vazio.";
78
+ }
79
+ }
80
+ if (this.fsMsgErro === '') {
81
+ this._ValidarIE();
82
+ }
83
+ return (this.fsMsgErro === '');
84
+ };
85
+ ACBrValidadorIE.prototype.formatar = function () {
86
+ var doc = this._LimpaDocto(this._fsDocumento);
87
+ return this._FormatarIE(doc);
88
+ };
89
+ ACBrValidadorIE.prototype._ValidarIE = function () {
90
+ var c0_9 = '0-9';
91
+ var cPesos = [
92
+ [0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],
93
+ [0, 0, 2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5],
94
+ [2, 0, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5, 6],
95
+ [0, 2, 3, 4, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0],
96
+ [0, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0],
97
+ [0, 2, 3, 4, 5, 6, 7, 0, 0, 8, 9, 0, 0, 0],
98
+ [0, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5],
99
+ [0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7, 8],
100
+ [0, 0, 2, 3, 4, 5, 6, 7, 2, 3, 4, 5, 6, 7],
101
+ [0, 0, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2, 1, 0],
102
+ [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 2, 3, 0],
103
+ [0, 0, 0, 0, 10, 8, 7, 6, 5, 4, 3, 1, 0, 0],
104
+ [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 0, 0],
105
+ [0, 0, 2, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, 7]
106
+ ];
107
+ var vDigitos;
108
+ var xROT;
109
+ var yROT;
110
+ var Tamanho;
111
+ var FatorF;
112
+ var FatorG;
113
+ var xMD;
114
+ var xTP;
115
+ var yMD;
116
+ var yTP;
117
+ var DV;
118
+ var DVX;
119
+ var DVY;
120
+ var SOMA;
121
+ var SOMAq;
122
+ var nD;
123
+ var M;
124
+ var OK;
125
+ var Passo;
126
+ var D;
127
+ var LPrefixo;
128
+ if (this.fsDocto.toUpperCase().trim() === 'ISENTO') {
129
+ return;
130
+ }
131
+ if (this.Complemento === '') {
132
+ this.fsMsgErro = 'Informe a UF no campo complemento';
133
+ return;
134
+ }
135
+ this._ValidarUF(this.Complemento);
136
+ if (this.fsMsgErro !== '') {
137
+ return;
138
+ }
139
+ /**
140
+ * Somente digitos ou letra P na primeira posicao
141
+ * P é usado pela Insc.Estadual de Produtor Rural de SP
142
+ */
143
+ if (!this._StrIsNumber(this.fsDocto.substring(1)) ||
144
+ (!this._CharIsNum(this.fsDocto[0]) && this.fsDocto[0] !== 'P')) {
145
+ this.fsMsgErro = 'Caracteres inválidos na inscrição estadual';
146
+ return;
147
+ }
148
+ Tamanho = 0;
149
+ xROT = 'E';
150
+ xMD = 11;
151
+ xTP = 1;
152
+ yROT = '';
153
+ yMD = 0;
154
+ yTP = 0;
155
+ FatorF = 0;
156
+ FatorG = 0;
157
+ vDigitos = Array(14).fill('');
158
+ if (this.Complemento === 'AC') {
159
+ if (this.fsDocto.length === 9) {
160
+ Tamanho = 9;
161
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1', '0', '', '', '', '', ''];
162
+ }
163
+ else {
164
+ Tamanho = 13;
165
+ xTP = 2;
166
+ yROT = 'E';
167
+ yMD = 11;
168
+ yTP = 1;
169
+ vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1', '0', ''];
170
+ }
171
+ }
172
+ if (this.Complemento === 'AL') {
173
+ Tamanho = 9;
174
+ xROT = 'BD';
175
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '4', '2', '', '', '', '', ''];
176
+ }
177
+ if (this.Complemento === 'AP') {
178
+ Tamanho = 9;
179
+ xROT = 'CE';
180
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '3', '0', '', '', '', '', ''];
181
+ if ((this.fsDocto >= '030170010') && (this.fsDocto <= '030190229')) {
182
+ FatorF = 1;
183
+ }
184
+ else if (this.fsDocto >= '030190230') {
185
+ xROT = 'E';
186
+ }
187
+ }
188
+ if (this.Complemento === 'AM') {
189
+ Tamanho = 9;
190
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
191
+ }
192
+ if (this.Complemento === 'BA') {
193
+ if (this.fsDocto.length < 9) {
194
+ this.fsDocto = this._PadLeft(this.fsDocto, 9, '0');
195
+ }
196
+ Tamanho = 9;
197
+ xTP = 2;
198
+ yTP = 3;
199
+ yROT = 'E';
200
+ vDigitos = ['DVX', 'DVY', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
201
+ if ('0123458'.includes(this.fsDocto[1])) {
202
+ xMD = 10;
203
+ yMD = 10;
204
+ }
205
+ else {
206
+ xMD = 11;
207
+ yMD = 11;
208
+ }
209
+ }
210
+ if (this.Complemento === 'CE') {
211
+ Tamanho = 9;
212
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '', '', '', '', ''];
213
+ }
214
+ if (this.Complemento === 'DF') {
215
+ Tamanho = 13;
216
+ xTP = 2;
217
+ yROT = 'E';
218
+ yMD = 11;
219
+ yTP = 1;
220
+ vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '7,8', '0', ''];
221
+ }
222
+ if (this.Complemento === 'ES') {
223
+ Tamanho = 9;
224
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
225
+ }
226
+ if (this.Complemento === 'GO') {
227
+ Tamanho = 9;
228
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,2', '', '', '', '', ''];
229
+ LPrefixo = this.fsDocto[0] + this.fsDocto[1];
230
+ var prefixoValido = [10, 11, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29];
231
+ if (!prefixoValido.includes(parseInt(LPrefixo))) {
232
+ this.fsMsgErro = 'Prefixo IE inválido 10 ou 11 / 20 a 29';
233
+ }
234
+ if ((parseInt(this.fsDocto) >= 101031050) && (parseInt(this.fsDocto) <= 101199979)) {
235
+ FatorG = 1;
236
+ }
237
+ }
238
+ if (this.Complemento === 'MA') {
239
+ Tamanho = 9;
240
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '2', '1', '', '', '', '', ''];
241
+ }
242
+ if (this.Complemento === 'MT') {
243
+ if (this.fsDocto.length === 9) {
244
+ this.fsDocto = this._PadLeft(this.fsDocto, 11, '0');
245
+ }
246
+ Tamanho = 11;
247
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', ''];
248
+ }
249
+ if (this.Complemento === 'MS') {
250
+ Tamanho = 9;
251
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '8', '2', '', '', '', '', ''];
252
+ }
253
+ if (this.Complemento === 'MG') {
254
+ Tamanho = 13;
255
+ xROT = 'AE';
256
+ xMD = 10;
257
+ xTP = 10;
258
+ yROT = 'E';
259
+ yMD = 11;
260
+ yTP = 11;
261
+ vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, ''];
262
+ }
263
+ if (this.Complemento === 'PA') {
264
+ Tamanho = 9;
265
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '5', '1,7', '', '', '', '', ''];
266
+ }
267
+ if (this.Complemento === 'PB') {
268
+ Tamanho = 9;
269
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '6', '1', '', '', '', '', ''];
270
+ }
271
+ if (this.Complemento === 'PR') {
272
+ Tamanho = 10;
273
+ xTP = 9;
274
+ yROT = 'E';
275
+ yMD = 11;
276
+ yTP = 8;
277
+ vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', ''];
278
+ }
279
+ if (this.Complemento === 'PE') {
280
+ if (this.fsDocto.length === 14) {
281
+ //Antigo CACEPE
282
+ Tamanho = 14;
283
+ xTP = 7;
284
+ FatorF = 1;
285
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1-9', '8', '1'];
286
+ }
287
+ else {
288
+ Tamanho = 9;
289
+ xTP = 14;
290
+ yROT = 'E';
291
+ yMD = 11;
292
+ yTP = 7;
293
+ vDigitos = ['DVY', 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
294
+ }
295
+ }
296
+ if (this.Complemento === 'PI') {
297
+ Tamanho = 9;
298
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '9', '1', '', '', '', '', ''];
299
+ }
300
+ if (this.Complemento === 'RJ') {
301
+ Tamanho = 8;
302
+ xTP = 8;
303
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,7,8,9', '', '', '', '', '', ''];
304
+ }
305
+ if (this.Complemento === 'RN') {
306
+ if (this.fsDocto.length === 9) {
307
+ Tamanho = 9;
308
+ xROT = 'BD';
309
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '2', '', '', '', '', ''];
310
+ }
311
+ else {
312
+ Tamanho = 10;
313
+ xROT = 'BD';
314
+ xTP = 11;
315
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '0', '2', '', '', '', ''];
316
+ }
317
+ }
318
+ if (this.Complemento === 'RS') {
319
+ Tamanho = 10;
320
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', ''];
321
+ }
322
+ if (this.Complemento === 'RO') {
323
+ FatorF = 1;
324
+ if (this.fsDocto.length === 9) {
325
+ Tamanho = 9;
326
+ xTP = 4;
327
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1-9', '', '', '', '', ''];
328
+ }
329
+ else {
330
+ Tamanho = 14;
331
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9];
332
+ }
333
+ }
334
+ if (this.Complemento === 'RR') {
335
+ Tamanho = 9;
336
+ xROT = 'D';
337
+ xMD = 9;
338
+ xTP = 5;
339
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '4', '2', '', '', '', '', ''];
340
+ }
341
+ if ((this.Complemento === 'SC') || (this.Complemento === 'SE')) {
342
+ Tamanho = 9;
343
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
344
+ }
345
+ if (this.Complemento === 'SP') {
346
+ xROT = 'D';
347
+ xTP = 12;
348
+ if (this.fsDocto[0] === 'P') {
349
+ Tamanho = 13;
350
+ vDigitos = [c0_9, c0_9, c0_9, 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, 'P', ''];
351
+ }
352
+ else {
353
+ Tamanho = 12;
354
+ yROT = 'D';
355
+ yMD = 11;
356
+ yTP = 13;
357
+ vDigitos = ['DVY', c0_9, c0_9, 'DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', ''];
358
+ }
359
+ }
360
+ if (this.Complemento === 'TO') {
361
+ if (this.fsDocto.length === 11) {
362
+ Tamanho = 11;
363
+ xTP = 6;
364
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '1,2,3,9', '0,9', '9', '2', '', '', ''];
365
+ }
366
+ else {
367
+ /**
368
+ * Tamanho = 10;
369
+ * vDigitos = ['DVX',c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,c0_9,'0-4','','','',''];
370
+ */
371
+ Tamanho = 9;
372
+ vDigitos = ['DVX', c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, c0_9, '', '', '', '', ''];
373
+ }
374
+ }
375
+ /** Verificando se o Tamanho Total está correto */
376
+ if (this.fsAjustarTamanho) {
377
+ this.fsDocto = this._PadLeft(this.fsDocto, Tamanho, '0');
378
+ }
379
+ OK = (Tamanho > 0) && (this.fsDocto.length === Tamanho);
380
+ if (!OK) {
381
+ this.fsMsgErro = "Tamanho inv\u00E1lido: Esperado " + Tamanho + " caracteres, mas foram digitados somente " + this.fsDocto.length + " caracteres.";
382
+ }
383
+ /** Verificando os digitos nas posicoes são permitidos */
384
+ this.fsDocto = this._PadLeft(this.fsDocto, 14);
385
+ DVX = 0;
386
+ DVY = 0;
387
+ var I = 13;
388
+ while (OK && I >= 0) {
389
+ var D_1 = this.fsDocto[13 - I];
390
+ if (vDigitos[I] === '') {
391
+ OK = (D_1 === ' ');
392
+ }
393
+ else if (vDigitos[I] === 'DVX' || vDigitos[I] === 'DVY' || vDigitos[I] === c0_9) {
394
+ OK = this._CharIsNum(D_1);
395
+ if (vDigitos[I] === 'DVX') {
396
+ DVX = parseInt(D_1, 10);
397
+ }
398
+ else if (vDigitos[I] === 'DVY') {
399
+ DVY = parseInt(D_1, 10);
400
+ }
401
+ }
402
+ else if (vDigitos[I].includes(',')) {
403
+ OK = vDigitos[I].split(',').includes(D_1);
404
+ }
405
+ else if (vDigitos[I].includes('-')) {
406
+ var _a = __read(vDigitos[I].split('-'), 2), min = _a[0], max = _a[1];
407
+ OK = (D_1 >= min && D_1 <= max);
408
+ }
409
+ else {
410
+ OK = (D_1 === vDigitos[I]);
411
+ }
412
+ if (!OK) {
413
+ this.fsMsgErro = "D\u00EDgito " + (13 - I - (13 - Tamanho)) + " deveria ser " + vDigitos[I];
414
+ }
415
+ I--;
416
+ }
417
+ Passo = 'X';
418
+ while (OK && xTP > 0) {
419
+ SOMA = 0;
420
+ SOMAq = 0;
421
+ I = 14;
422
+ while (OK && I > 0) {
423
+ D = this.fsDocto[14 - I];
424
+ if (this._CharIsNum(D)) {
425
+ nD = parseInt(D, 10);
426
+ M = nD * cPesos[xTP - 1][I - 1];
427
+ SOMA += M;
428
+ if (xROT.includes('A')) {
429
+ SOMAq += Math.floor(M / 10);
430
+ }
431
+ }
432
+ I--;
433
+ }
434
+ if (xROT.includes('A')) {
435
+ SOMA += SOMAq;
436
+ }
437
+ else if (xROT.includes('B')) {
438
+ SOMA *= 10;
439
+ }
440
+ else if (xROT.includes('C')) {
441
+ SOMA += (5 + (4 * FatorF));
442
+ }
443
+ /** Calculando digito verificador */
444
+ DV = SOMA % xMD;
445
+ if (xROT.includes('E')) {
446
+ DV = xMD - DV;
447
+ }
448
+ if (DV === 10) {
449
+ DV = FatorG; /** Apenas GO modifica o FatorG para diferente de 0 */
450
+ }
451
+ else if (DV === 11) {
452
+ DV = FatorF;
453
+ }
454
+ if (Passo === 'X') {
455
+ OK = (DVX === DV);
456
+ }
457
+ else {
458
+ OK = (DVY === DV);
459
+ }
460
+ this.fsDigitoCalculado = DV.toString();
461
+ if (!OK) {
462
+ this.fsMsgErro = 'Dígito verificador inválido.';
463
+ if (this.fsExibeDigitoCorreto) {
464
+ this.fsMsgErro += ".. Calculado: " + this.fsDigitoCalculado;
465
+ }
466
+ }
467
+ if (Passo === 'X') {
468
+ Passo = 'Y';
469
+ xROT = yROT;
470
+ xMD = yMD;
471
+ xTP = yTP;
472
+ }
473
+ else {
474
+ break;
475
+ }
476
+ }
477
+ this.fsDocto = this.fsDocto.trim();
478
+ if (this.fsMsgErro !== '') {
479
+ this.fsMsgErro = "Inscri\u00E7\u00E3o estadual inv\u00E1lida para " + this.Complemento + ". " + this.fsMsgErro;
480
+ }
481
+ };
482
+ ACBrValidadorIE.prototype._ValidarUF = function (uf) {
483
+ if (!cUFsValidas.includes(uf.toUpperCase())) {
484
+ this.fsMsgErro = "UF inv\u00E1lido: " + uf;
485
+ }
486
+ };
487
+ ACBrValidadorIE.prototype._StrIsNumber = function (s) {
488
+ return /^\d+$/.test(s);
489
+ };
490
+ ACBrValidadorIE.prototype._CharIsNum = function (c) {
491
+ return /^\d$/.test(c);
492
+ };
493
+ ACBrValidadorIE.prototype._PadLeft = function (value, length, padChar) {
494
+ return value.padStart(length, padChar);
495
+ };
496
+ ACBrValidadorIE.prototype._LimpaDocto = function (aString) {
497
+ var result = '';
498
+ for (var a = 0; a < aString.length; a++) {
499
+ if (!this.IgnorarChar.includes(aString[a])) {
500
+ result += aString[a].toUpperCase();
501
+ }
502
+ }
503
+ return result.trim();
504
+ };
505
+ ACBrValidadorIE.prototype._MascaraIE = function (AValue) {
506
+ var LenDoc = AValue.length;
507
+ var Mascara = '*'.repeat(LenDoc);
508
+ if (this.Complemento === 'AC')
509
+ Mascara = '**.***.***/***-**';
510
+ if (this.Complemento === 'AL')
511
+ Mascara = '*********';
512
+ if (this.Complemento === 'AP')
513
+ Mascara = '*********';
514
+ if (this.Complemento === 'AM')
515
+ Mascara = '**.***.***-*';
516
+ if (this.Complemento === 'BA')
517
+ Mascara = '*******-**';
518
+ if (this.Complemento === 'CE')
519
+ Mascara = '********-*';
520
+ if (this.Complemento === 'DF')
521
+ Mascara = '***********-**';
522
+ if (this.Complemento === 'ES')
523
+ Mascara = '*********';
524
+ if (this.Complemento === 'GO')
525
+ Mascara = '**.***.***-*';
526
+ if (this.Complemento === 'MA')
527
+ Mascara = '*********';
528
+ if (this.Complemento === 'MT')
529
+ Mascara = '**********-*';
530
+ if (this.Complemento === 'MS')
531
+ Mascara = '**.***.***-*';
532
+ if (this.Complemento === 'MG')
533
+ Mascara = '***.***.***/****';
534
+ if (this.Complemento === 'PA')
535
+ Mascara = '**-******-*';
536
+ if (this.Complemento === 'PB')
537
+ Mascara = '********-*';
538
+ if (this.Complemento === 'PR')
539
+ Mascara = '***.*****-**';
540
+ if (this.Complemento === 'PE')
541
+ Mascara = (LenDoc > 9) ? '**.*.***.*******-*' : '*******-**';
542
+ if (this.Complemento === 'PI')
543
+ Mascara = '*********';
544
+ if (this.Complemento === 'RJ')
545
+ Mascara = '**.***.**-*';
546
+ if (this.Complemento === 'RN')
547
+ Mascara = (LenDoc > 9) ? '**.*.***.***-*' : '**.***.***-*';
548
+ if (this.Complemento === 'RS')
549
+ Mascara = '***/*******';
550
+ if (this.Complemento === 'RO')
551
+ Mascara = (LenDoc > 13) ? '*************-*' : '***.*****-*';
552
+ if (this.Complemento === 'RR')
553
+ Mascara = '********-*';
554
+ if (this.Complemento === 'SC')
555
+ Mascara = '***.***.***';
556
+ if (this.Complemento === 'SP')
557
+ Mascara = ((LenDoc > 1) && (AValue[0] === 'P')) ? '*-********.*/***' : '***.***.***.***';
558
+ if (this.Complemento === 'SE')
559
+ Mascara = '**.***.***-*';
560
+ if (this.Complemento === 'TO')
561
+ Mascara = (LenDoc = 11) ? '**.**.******-*' : '**.***.***-*';
562
+ return Mascara;
563
+ };
564
+ ACBrValidadorIE.prototype._FormatarIE = function (AValue) {
565
+ if (AValue.trim().toUpperCase() === 'ISENTO') {
566
+ return AValue;
567
+ }
568
+ var Mascara = this._MascaraIE(AValue);
569
+ return this._FormatarMascaraNumerica(this._OnlyAlphaNum(AValue), Mascara);
570
+ };
571
+ ACBrValidadorIE.prototype._OnlyAlphaNum = function (str) {
572
+ return str.replace(/[^a-zA-Z0-9]/g, '');
573
+ };
574
+ ACBrValidadorIE.prototype._FormatarMascaraNumerica = function (numValue, mascara) {
575
+ var result = '';
576
+ var wNumValue = numValue.trim();
577
+ var lenMas = mascara.length;
578
+ var lenDoc = wNumValue.length;
579
+ var j = lenMas;
580
+ for (var i = lenMas - 1; i >= 0; i--) {
581
+ var c = mascara[i];
582
+ if (c === '*') {
583
+ if (j <= (lenMas - lenDoc)) {
584
+ c = '0';
585
+ }
586
+ else {
587
+ c = wNumValue[j - (lenMas - lenDoc) - 1];
588
+ }
589
+ j--;
590
+ }
591
+ result = c + result;
592
+ }
593
+ return result;
594
+ };
595
+ return ACBrValidadorIE;
596
+ }());
597
+ export { ACBrValidadorIE };
598
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNici12YWxpZGF0b3ItaWUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2lwaXNpc3RlbWFzL25nLWNvcmUvIiwic291cmNlcyI6WyJjb3JlL3V0aWxzL2FjYnItdmFsaWRhdG9yLWllLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFNLFdBQVcsR0FBc0I7SUFDbkMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtJQUMxRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0lBQzFELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0NBQ2pELENBQUM7QUFRRjtJQXlDSTtRQXhDUSxtQkFBYyxHQUFXLEtBQUssQ0FBQztRQVEvQixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQWdCMUIsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQVE1QixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMscUJBQWdCLEdBQVksS0FBSyxDQUFDO0lBRTFCLENBQUM7SUF2Q2pCLHNCQUFXLHdDQUFXO2FBQXRCO1lBQ0ksT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQy9CLENBQUM7YUFDRCxVQUF1QixLQUFhO1lBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLENBQUM7OztPQUhBO0lBTUQsc0JBQVcsc0NBQVM7YUFBcEI7WUFD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RSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxF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LEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDbkc7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQzNCLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDWixRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDMUY7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQzNCLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDWixRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDeEY7UUFFRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFO1lBQzNCLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1IsSUFBSSxHQUFHLEdBQUcsQ0FBQztZQUNYLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDVCxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1IsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFB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QUFDLEdBQUcsR0FBRyxDQUFDO2lCQUNYO3FCQUFNO29CQUNILENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUM1QztnQkFDRCxDQUFDLEVBQUUsQ0FBQzthQUNQO1lBRUQsTUFBTSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7U0FDdkI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUwsc0JBQUM7QUFBRCxDQUFDLEFBN21CRCxJQTZtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjVUZzVmFsaWRhczogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gICAgJ0FDJywgJ0FMJywgJ0FQJywgJ0FNJywgJ0JBJywgJ0NFJywgJ0RGJywgJ0VTJywgJ0dPJywgJ01BJyxcbiAgICAnTVQnLCAnTVMnLCAnTUcnLCAnUEEnLCAnUEInLCAnUFInLCAnUEUnLCAnUEknLCAnUkonLCAnUk4nLFxuICAgICdSUycsICdSTycsICdSUicsICdTQycsICdTUCcsICdTRScsICdUTycsICdFWCdcbl07XG5cbmV4cG9ydCB0eXBlIEFDQlJfVUZzID0gKFxuICAgIHwgJ0FDJyB8ICdBTCcgfCAnQVAnIHwgJ0FNJyB8ICdCQScgfCAnQ0UnIHwgJ0RGJyB8ICdFUycgfCAnR08nIHwgJ01BJ1xuICAgIHwgJ01UJyB8ICdNUycgfCAnTUcnIHwgJ1BBJyB8ICdQQicgfCAnUFInIHwgJ1BFJyB8ICdQSScgfCAnUkonIHwgJ1JOJ1xuICAgIHwgJ1JTJyB8ICdSTycgfCAnUlInIHwgJ1NDJyB8ICdTUCcgfCAnU0UnIHwgJ1RPJyB8ICdFWCcgfCAnJ1xuKTtcblxuZXhwb3J0IGNsYXNzIEFDQnJWYWxpZGFkb3JJRSB7XG4gICAgcHJpdmF0ZSBfZnNJZ25vcmFyQ2hhcjogc3RyaW5nID0gJy4vLSc7XG4gICAgcHVibGljIGdldCBJZ25vcmFyQ2hhcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZnNJZ25vcmFyQ2hhcjtcbiAgICB9XG4gICAgcHVibGljIHNldCBJZ25vcmFyQ2hhcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2ZzSWdub3JhckNoYXIgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9mc0RvY3VtZW50bzogc3RyaW5nID0gJyc7XG4gICAgcHVibGljIGdldCBEb2N1bWVudG8oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZzRG9jdW1lbnRvO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IERvY3VtZW50byh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9mc0RvY3VtZW50byA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZzRG9jdW1lbnRvID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJ0Z1bsOnw6NvIFZhbGlkYXIgbsOjbyBmb2kgY2hhbWFkYSc7XG4gICAgICAgIHRoaXMuZnNEaWdpdG9DYWxjdWxhZG8gPSAnJztcblxuICAgICAgICB0aGlzLmZzRG9jdG8gPSB0aGlzLl9MaW1wYURvY3RvKHRoaXMuX2ZzRG9jdW1lbnRvKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZzRG9jdG86IHN0cmluZyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfQ29tcGxlbWVudG86IEFDQlJfVUZzID0gJyc7XG4gICAgcHVibGljIGdldCBDb21wbGVtZW50bygpOiBBQ0JSX1VGcyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9Db21wbGVtZW50bztcbiAgICB9XG4gICAgcHVibGljIHNldCBDb21wbGVtZW50byh2YWx1ZTogQUNCUl9VRnMpIHtcbiAgICAgICAgdGhpcy5fQ29tcGxlbWVudG8gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZzTXNnRXJybzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBmc0RpZ2l0b0NhbGN1bGFkbzogc3RyaW5nID0gJyc7XG4gICAgcHJpdmF0ZSBmc1Blcm1pdGVWYXppbzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgZnNFeGliZURpZ2l0b0NvcnJldG86IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwcml2YXRlIGZzQWp1c3RhclRhbWFuaG86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICBwdWJsaWMgaXNWYWxpZChJRTogc3RyaW5nLCBVRjogQUNCUl9VRnMsIGlnbm9yYXJDaGFyOiBzdHJpbmcgPSAnLi8tJyk6IHsgaWU6IHN0cmluZywgaXNWYWxpZDogYm9vbGVhbjsgZXJyb3I6IHN0cmluZzsgfSB7XG4gICAgICAgIHRoaXMuRG9jdW1lbnRvID0gSUU7XG4gICAgICAgIHRoaXMuQ29tcGxlbWVudG8gPSBVRjtcbiAgICAgICAgdGhpcy5JZ25vcmFyQ2hhciA9IGlnbm9yYXJDaGFyIHx8ICcuLy0nO1xuXG4gICAgICAgIHRoaXMuRG9jdW1lbnRvID0gdGhpcy5mb3JtYXRhcigpO1xuXG4gICAgICAgIGlmICh0aGlzLl92YWxpZGFyKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB7IGllOiB0aGlzLkRvY3VtZW50bywgaXNWYWxpZDogdHJ1ZSwgZXJyb3I6ICcnIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4geyBpZTogdGhpcy5Eb2N1bWVudG8sIGlzVmFsaWQ6IGZhbHNlLCBlcnJvcjogdGhpcy5mc01zZ0Vycm8gfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3ZhbGlkYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJyc7XG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuX0xpbXBhRG9jdG8odGhpcy5fZnNEb2N1bWVudG8pO1xuICAgICAgICB0aGlzLmZzRGlnaXRvQ2FsY3VsYWRvID0gJyc7XG5cbiAgICAgICAgaWYgKHRoaXMuZnNEb2N0byA9PT0gJycpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZzUGVybWl0ZVZhemlvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYEluc2NyacOnw6NvIEVzdGFkdWFsIG7Do28gcG9kZSBzZXIgdmF6aW8uYDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmZzTXNnRXJybyA9PT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuX1ZhbGlkYXJJRSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmZzTXNnRXJybyA9PT0gJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb3JtYXRhcigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkb2M6IHN0cmluZyA9IHRoaXMuX0xpbXBhRG9jdG8odGhpcy5fZnNEb2N1bWVudG8pXG4gICAgICAgIHJldHVybiB0aGlzLl9Gb3JtYXRhcklFKGRvYyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfVmFsaWRhcklFKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjMF85OiBzdHJpbmcgPSAnMC05JztcbiAgICAgICAgY29uc3QgY1Blc29zOiBudW1iZXJbXVtdID0gW1xuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDVdLFxuICAgICAgICAgICAgWzIsIDAsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDIsIDMsIDQsIDUsIDZdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDAsIDAsIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDAsIDAsIDgsIDksIDAsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEsIDIsIDMsIDQsIDVdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDIsIDMsIDQsIDUsIDYsIDcsIDhdLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDMsIDQsIDUsIDYsIDcsIDIsIDMsIDQsIDUsIDYsIDddLFxuICAgICAgICAgICAgWzAsIDAsIDIsIDEsIDIsIDEsIDIsIDEsIDIsIDEsIDEsIDIsIDEsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMiwgMywgMF0sXG4gICAgICAgICAgICBbMCwgMCwgMCwgMCwgMTAsIDgsIDcsIDYsIDUsIDQsIDMsIDEsIDAsIDBdLFxuICAgICAgICAgICAgWzAsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAyLCAzLCAwLCAwXSxcbiAgICAgICAgICAgIFswLCAwLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCAzLCA0LCA1LCA2LCA3XVxuICAgICAgICBdO1xuXG4gICAgICAgIGxldCB2RGlnaXRvczogc3RyaW5nW107XG4gICAgICAgIGxldCB4Uk9UOiBzdHJpbmc7XG4gICAgICAgIGxldCB5Uk9UOiBzdHJpbmc7XG4gICAgICAgIGxldCBUYW1hbmhvOiBudW1iZXI7XG4gICAgICAgIGxldCBGYXRvckY6IG51bWJlcjtcbiAgICAgICAgbGV0IEZhdG9yRzogbnVtYmVyO1xuICAgICAgICBsZXQgeE1EOiBudW1iZXI7XG4gICAgICAgIGxldCB4VFA6IG51bWJlcjtcbiAgICAgICAgbGV0IHlNRDogbnVtYmVyO1xuICAgICAgICBsZXQgeVRQOiBudW1iZXI7XG4gICAgICAgIGxldCBEVjogbnVtYmVyO1xuICAgICAgICBsZXQgRFZYOiBudW1iZXI7XG4gICAgICAgIGxldCBEVlk6IG51bWJlcjtcbiAgICAgICAgbGV0IFNPTUE6IG51bWJlcjtcbiAgICAgICAgbGV0IFNPTUFxOiBudW1iZXI7XG4gICAgICAgIGxldCBuRDogbnVtYmVyO1xuICAgICAgICBsZXQgTTogbnVtYmVyO1xuICAgICAgICBsZXQgT0s6IEJvb2xlYW47XG4gICAgICAgIGxldCBQYXNzbzogc3RyaW5nO1xuICAgICAgICBsZXQgRDogc3RyaW5nO1xuICAgICAgICBsZXQgTFByZWZpeG86IHN0cmluZztcblxuICAgICAgICBpZiAodGhpcy5mc0RvY3RvLnRvVXBwZXJDYXNlKCkudHJpbSgpID09PSAnSVNFTlRPJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmZzTXNnRXJybyA9ICdJbmZvcm1lIGEgVUYgbm8gY2FtcG8gY29tcGxlbWVudG8nO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fVmFsaWRhclVGKHRoaXMuQ29tcGxlbWVudG8pO1xuICAgICAgICBpZiAodGhpcy5mc01zZ0Vycm8gIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU29tZW50ZSBkaWdpdG9zIG91IGxldHJhIFAgbmEgcHJpbWVpcmEgcG9zaWNhb1xuICAgICAgICAgKiBQIMOpIHVzYWRvIHBlbGEgSW5zYy5Fc3RhZHVhbCBkZSBQcm9kdXRvciBSdXJhbCBkZSBTUFxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXRoaXMuX1N0cklzTnVtYmVyKHRoaXMuZnNEb2N0by5zdWJzdHJpbmcoMSkpIHx8XG4gICAgICAgICAgICAoIXRoaXMuX0NoYXJJc051bSh0aGlzLmZzRG9jdG9bMF0pICYmIHRoaXMuZnNEb2N0b1swXSAhPT0gJ1AnKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gJ0NhcmFjdGVyZXMgaW52w6FsaWRvcyBuYSBpbnNjcmnDp8OjbyBlc3RhZHVhbCc7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBUYW1hbmhvID0gMDtcbiAgICAgICAgeFJPVCA9ICdFJztcbiAgICAgICAgeE1EID0gMTE7XG4gICAgICAgIHhUUCA9IDE7XG4gICAgICAgIHlST1QgPSAnJztcbiAgICAgICAgeU1EID0gMDtcbiAgICAgICAgeVRQID0gMDtcbiAgICAgICAgRmF0b3JGID0gMDtcbiAgICAgICAgRmF0b3JHID0gMDtcblxuICAgICAgICB2RGlnaXRvcyA9IEFycmF5KDE0KS5maWxsKCcnKTtcblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FDJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzEnLCAnMCcsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFRhbWFuaG8gPSAxMztcbiAgICAgICAgICAgICAgICB4VFAgPSAyO1xuICAgICAgICAgICAgICAgIHlST1QgPSAnRSc7XG4gICAgICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICAgICAgeVRQID0gMTtcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcxJywgJzAnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FMJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB4Uk9UID0gJ0JEJztcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQVAnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHhST1QgPSAnQ0UnO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICczJywgJzAnLCAnJywgJycsICcnLCAnJywgJyddO1xuXG4gICAgICAgICAgICBpZiAoKHRoaXMuZnNEb2N0byA+PSAnMDMwMTcwMDEwJykgJiYgKHRoaXMuZnNEb2N0byA8PSAnMDMwMTkwMjI5JykpIHtcbiAgICAgICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZzRG9jdG8gPj0gJzAzMDE5MDIzMCcpIHtcbiAgICAgICAgICAgICAgICB4Uk9UID0gJ0UnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdBTScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0JBJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPCA5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc0RvY3RvID0gdGhpcy5fUGFkTGVmdCh0aGlzLmZzRG9jdG8sIDksICcwJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgeFRQID0gMjtcbiAgICAgICAgICAgIHlUUCA9IDM7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsICdEVlknLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuXG4gICAgICAgICAgICBpZiAoJzAxMjM0NTgnLmluY2x1ZGVzKHRoaXMuZnNEb2N0b1sxXSkpIHtcbiAgICAgICAgICAgICAgICB4TUQgPSAxMDtcbiAgICAgICAgICAgICAgICB5TUQgPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgeE1EID0gMTE7XG4gICAgICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0NFJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzAnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdERicpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSAxMztcbiAgICAgICAgICAgIHhUUCA9IDI7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB5VFAgPSAxO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWScsICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNyw4JywgJzAnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0VTJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnR08nKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMSwyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIExQcmVmaXhvID0gdGhpcy5mc0RvY3RvWzBdICsgdGhpcy5mc0RvY3RvWzFdO1xuXG4gICAgICAgICAgICBjb25zdCBwcmVmaXhvVmFsaWRvOiBudW1iZXJbXSA9IFsxMCwgMTEsIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XTtcbiAgICAgICAgICAgIGlmICghcHJlZml4b1ZhbGlkby5pbmNsdWRlcyhwYXJzZUludChMUHJlZml4bykpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSAnUHJlZml4byBJRSBpbnbDoWxpZG8gMTAgb3UgMTEgLyAyMCBhIDI5JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKChwYXJzZUludCh0aGlzLmZzRG9jdG8pID49IDEwMTAzMTA1MCkgJiYgKHBhcnNlSW50KHRoaXMuZnNEb2N0bykgPD0gMTAxMTk5OTc5KSkge1xuICAgICAgICAgICAgICAgIEZhdG9yRyA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01BJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzInLCAnMScsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01UJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZzRG9jdG8gPSB0aGlzLl9QYWRMZWZ0KHRoaXMuZnNEb2N0bywgMTEsICcwJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIFRhbWFuaG8gPSAxMTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnTVMnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnOCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnTUcnKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gMTM7XG4gICAgICAgICAgICB4Uk9UID0gJ0FFJztcbiAgICAgICAgICAgIHhNRCA9IDEwO1xuICAgICAgICAgICAgeFRQID0gMTA7XG4gICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgeU1EID0gMTE7XG4gICAgICAgICAgICB5VFAgPSAxMTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlknLCAnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQQScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICc1JywgJzEsNycsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BCJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZYJywgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgYzBfOSwgJzYnLCAnMScsICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BSJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgeFRQID0gOTtcbiAgICAgICAgICAgIHlST1QgPSAnRSc7XG4gICAgICAgICAgICB5TUQgPSAxMTtcbiAgICAgICAgICAgIHlUUCA9IDg7XG4gICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUEUnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5mc0RvY3RvLmxlbmd0aCA9PT0gMTQpIHtcbiAgICAgICAgICAgICAgICAvL0FudGlnbyBDQUNFUEVcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gMTQ7XG4gICAgICAgICAgICAgICAgeFRQID0gNztcbiAgICAgICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMS05JywgJzgnLCAnMSddO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB4VFAgPSAxNDtcbiAgICAgICAgICAgICAgICB5Uk9UID0gJ0UnO1xuICAgICAgICAgICAgICAgIHlNRCA9IDExO1xuICAgICAgICAgICAgICAgIHlUUCA9IDc7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWScsICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQSScpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA5O1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICc5JywgJzEnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSSicpIHtcbiAgICAgICAgICAgIFRhbWFuaG8gPSA4O1xuICAgICAgICAgICAgeFRQID0gODtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMSw3LDgsOScsICcnLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSTicpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZzRG9jdG8ubGVuZ3RoID09PSA5KSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICAgICAgeFJPVCA9ICdCRCc7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcwJywgJzInLCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gMTA7XG4gICAgICAgICAgICAgICAgeFJPVCA9ICdCRCc7XG4gICAgICAgICAgICAgICAgeFRQID0gMTE7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcwJywgJzInLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JTJykge1xuICAgICAgICAgICAgVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUk8nKSB7XG4gICAgICAgICAgICBGYXRvckYgPSAxO1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDkpIHtcbiAgICAgICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgICAgICB4VFAgPSA0O1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnMS05JywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDE0O1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUlInKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHhST1QgPSAnRCc7XG4gICAgICAgICAgICB4TUQgPSA5O1xuICAgICAgICAgICAgeFRQID0gNTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnNCcsICcyJywgJycsICcnLCAnJywgJycsICcnXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5Db21wbGVtZW50byA9PT0gJ1NDJykgfHwgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdTRScpKSB7XG4gICAgICAgICAgICBUYW1hbmhvID0gOTtcbiAgICAgICAgICAgIHZEaWdpdG9zID0gWydEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnJywgJycsICcnLCAnJywgJyddO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdTUCcpIHtcbiAgICAgICAgICAgIHhST1QgPSAnRCc7XG4gICAgICAgICAgICB4VFAgPSAxMjtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0b1swXSA9PT0gJ1AnKSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDEzO1xuICAgICAgICAgICAgICAgIHZEaWdpdG9zID0gW2MwXzksIGMwXzksIGMwXzksICdEVlgnLCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCBjMF85LCAnUCcsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDEyO1xuICAgICAgICAgICAgICAgIHlST1QgPSAnRCc7IHlNRCA9IDExOyB5VFAgPSAxMztcbiAgICAgICAgICAgICAgICB2RGlnaXRvcyA9IFsnRFZZJywgYzBfOSwgYzBfOSwgJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1RPJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IDExKSB7XG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDExO1xuICAgICAgICAgICAgICAgIHhUUCA9IDY7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcxLDIsMyw5JywgJzAsOScsICc5JywgJzInLCAnJywgJycsICcnXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogVGFtYW5obyA9IDEwO1xuICAgICAgICAgICAgICAgICAqIHZEaWdpdG9zID0gWydEVlgnLGMwXzksYzBfOSxjMF85LGMwXzksYzBfOSxjMF85LGMwXzksYzBfOSwnMC00JywnJywnJywnJywnJ107XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgVGFtYW5obyA9IDk7XG4gICAgICAgICAgICAgICAgdkRpZ2l0b3MgPSBbJ0RWWCcsIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksIGMwXzksICcnLCAnJywgJycsICcnLCAnJ107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVmVyaWZpY2FuZG8gc2UgbyBUYW1hbmhvIFRvdGFsIGVzdMOhIGNvcnJldG8gKi9cbiAgICAgICAgaWYgKHRoaXMuZnNBanVzdGFyVGFtYW5obykge1xuICAgICAgICAgICAgdGhpcy5mc0RvY3RvID0gdGhpcy5fUGFkTGVmdCh0aGlzLmZzRG9jdG8sIFRhbWFuaG8sICcwJyk7XG4gICAgICAgIH1cblxuICAgICAgICBPSyA9IChUYW1hbmhvID4gMCkgJiYgKHRoaXMuZnNEb2N0by5sZW5ndGggPT09IFRhbWFuaG8pO1xuICAgICAgICBpZiAoIU9LKSB7XG4gICAgICAgICAgICB0aGlzLmZzTXNnRXJybyA9IGBUYW1hbmhvIGludsOhbGlkbzogRXNwZXJhZG8gJHtUYW1hbmhvfSBjYXJhY3RlcmVzLCBtYXMgZm9yYW0gZGlnaXRhZG9zIHNvbWVudGUgJHt0aGlzLmZzRG9jdG8ubGVuZ3RofSBjYXJhY3RlcmVzLmA7XG4gICAgICAgIH1cblxuICAgICAgICAvKiogVmVyaWZpY2FuZG8gb3MgZGlnaXRvcyBuYXMgcG9zaWNvZXMgc8OjbyBwZXJtaXRpZG9zICovXG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuX1BhZExlZnQodGhpcy5mc0RvY3RvLCAxNCk7XG4gICAgICAgIERWWCA9IDA7XG4gICAgICAgIERWWSA9IDA7XG4gICAgICAgIGxldCBJOiBudW1iZXIgPSAxMztcblxuICAgICAgICB3aGlsZSAoT0sgJiYgSSA+PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBEOiBzdHJpbmcgPSB0aGlzLmZzRG9jdG9bMTMgLSBJXTtcblxuICAgICAgICAgICAgaWYgKHZEaWdpdG9zW0ldID09PSAnJykge1xuICAgICAgICAgICAgICAgIE9LID0gKEQgPT09ICcgJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldID09PSAnRFZYJyB8fCB2RGlnaXRvc1tJXSA9PT0gJ0RWWScgfHwgdkRpZ2l0b3NbSV0gPT09IGMwXzkpIHtcbiAgICAgICAgICAgICAgICBPSyA9IHRoaXMuX0NoYXJJc051bShEKTtcblxuICAgICAgICAgICAgICAgIGlmICh2RGlnaXRvc1tJXSA9PT0gJ0RWWCcpIHtcbiAgICAgICAgICAgICAgICAgICAgRFZYID0gcGFyc2VJbnQoRCwgMTApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodkRpZ2l0b3NbSV0gPT09ICdEVlknKSB7XG4gICAgICAgICAgICAgICAgICAgIERWWSA9IHBhcnNlSW50KEQsIDEwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldLmluY2x1ZGVzKCcsJykpIHtcbiAgICAgICAgICAgICAgICBPSyA9IHZEaWdpdG9zW0ldLnNwbGl0KCcsJykuaW5jbHVkZXMoRCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZEaWdpdG9zW0ldLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbbWluLCBtYXhdID0gdkRpZ2l0b3NbSV0uc3BsaXQoJy0nKTtcbiAgICAgICAgICAgICAgICBPSyA9IChEID49IG1pbiAmJiBEIDw9IG1heCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIE9LID0gKEQgPT09IHZEaWdpdG9zW0ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFPSykge1xuICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYETDrWdpdG8gJHsxMyAtIEkgLSAoMTMgLSBUYW1hbmhvKX0gZGV2ZXJpYSBzZXIgJHt2RGlnaXRvc1tJXX1gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBJLS07XG4gICAgICAgIH1cblxuICAgICAgICBQYXNzbyA9ICdYJztcbiAgICAgICAgd2hpbGUgKE9LICYmIHhUUCA+IDApIHtcbiAgICAgICAgICAgIFNPTUEgPSAwO1xuICAgICAgICAgICAgU09NQXEgPSAwO1xuICAgICAgICAgICAgSSA9IDE0O1xuXG4gICAgICAgICAgICB3aGlsZSAoT0sgJiYgSSA+IDApIHtcbiAgICAgICAgICAgICAgICBEID0gdGhpcy5mc0RvY3RvWzE0IC0gSV07XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fQ2hhcklzTnVtKEQpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5EID0gcGFyc2VJbnQoRCwgMTApO1xuICAgICAgICAgICAgICAgICAgICBNID0gbkQgKiBjUGVzb3NbeFRQIC0gMV1bSSAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBTT01BICs9IE07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHhST1QuaW5jbHVkZXMoJ0EnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgU09NQXEgKz0gTWF0aC5mbG9vcihNIC8gMTApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSS0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoeFJPVC5pbmNsdWRlcygnQScpKSB7XG4gICAgICAgICAgICAgICAgU09NQSArPSBTT01BcTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeFJPVC5pbmNsdWRlcygnQicpKSB7XG4gICAgICAgICAgICAgICAgU09NQSAqPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoeFJPVC5pbmNsdWRlcygnQycpKSB7XG4gICAgICAgICAgICAgICAgU09NQSArPSAoNSArICg0ICogRmF0b3JGKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8qKiBDYWxjdWxhbmRvIGRpZ2l0byB2ZXJpZmljYWRvciAqL1xuICAgICAgICAgICAgRFYgPSBTT01BICUgeE1EO1xuICAgICAgICAgICAgaWYgKHhST1QuaW5jbHVkZXMoJ0UnKSkge1xuICAgICAgICAgICAgICAgIERWID0geE1EIC0gRFY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChEViA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICBEViA9IEZhdG9yRzsgLyoqIEFwZW5hcyBHTyBtb2RpZmljYSBvIEZhdG9yRyBwYXJhIGRpZmVyZW50ZSBkZSAwICovXG4gICAgICAgICAgICB9IGVsc2UgaWYgKERWID09PSAxMSkge1xuICAgICAgICAgICAgICAgIERWID0gRmF0b3JGO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoUGFzc28gPT09ICdYJykge1xuICAgICAgICAgICAgICAgIE9LID0gKERWWCA9PT0gRFYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPSyA9IChEVlkgPT09IERWKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mc0RpZ2l0b0NhbGN1bGFkbyA9IERWLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoIU9LKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSAnRMOtZ2l0byB2ZXJpZmljYWRvciBpbnbDoWxpZG8uJztcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZzRXhpYmVEaWdpdG9Db3JyZXRvKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvICs9IGAuLiBDYWxjdWxhZG86ICR7dGhpcy5mc0RpZ2l0b0NhbGN1bGFkb31gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFBhc3NvID09PSAnWCcpIHtcbiAgICAgICAgICAgICAgICBQYXNzbyA9ICdZJztcbiAgICAgICAgICAgICAgICB4Uk9UID0geVJPVDtcbiAgICAgICAgICAgICAgICB4TUQgPSB5TUQ7XG4gICAgICAgICAgICAgICAgeFRQID0geVRQO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZnNEb2N0byA9IHRoaXMuZnNEb2N0by50cmltKCk7XG4gICAgICAgIGlmICh0aGlzLmZzTXNnRXJybyAhPT0gJycpIHtcbiAgICAgICAgICAgIHRoaXMuZnNNc2dFcnJvID0gYEluc2NyacOnw6NvIGVzdGFkdWFsIGludsOhbGlkYSBwYXJhICR7dGhpcy5Db21wbGVtZW50b30uICR7dGhpcy5mc01zZ0Vycm99YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX1ZhbGlkYXJVRih1ZjogQUNCUl9VRnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjVUZzVmFsaWRhcy5pbmNsdWRlcyh1Zi50b1VwcGVyQ2FzZSgpKSkge1xuICAgICAgICAgICAgdGhpcy5mc01zZ0Vycm8gPSBgVUYgaW52w6FsaWRvOiAke3VmfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9TdHJJc051bWJlcihzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIC9eXFxkKyQvLnRlc3Qocyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfQ2hhcklzTnVtKGM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gL15cXGQkLy50ZXN0KGMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX1BhZExlZnQodmFsdWU6IHN0cmluZywgbGVuZ3RoOiBudW1iZXIsIHBhZENoYXI/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdmFsdWUucGFkU3RhcnQobGVuZ3RoLCBwYWRDaGFyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF9MaW1wYURvY3RvKGFTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnJztcbiAgICAgICAgZm9yIChsZXQgYSA9IDA7IGEgPCBhU3RyaW5nLmxlbmd0aDsgYSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuSWdub3JhckNoYXIuaW5jbHVkZXMoYVN0cmluZ1thXSkpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gYVN0cmluZ1thXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdC50cmltKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfTWFzY2FyYUlFKEFWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IExlbkRvYzogbnVtYmVyID0gQVZhbHVlLmxlbmd0aDtcbiAgICAgICAgbGV0IE1hc2NhcmE6IHN0cmluZyA9ICcqJy5yZXBlYXQoTGVuRG9jKTtcblxuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0FDJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLyoqKi0qKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQUwnKSBNYXNjYXJhID0gJyoqKioqKioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQVAnKSBNYXNjYXJhID0gJyoqKioqKioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQU0nKSBNYXNjYXJhID0gJyoqLioqKi4qKiotKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnQkEnKSBNYXNjYXJhID0gJyoqKioqKiotKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0NFJykgTWFzY2FyYSA9ICcqKioqKioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdERicpIE1hc2NhcmEgPSAnKioqKioqKioqKiotKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0VTJykgTWFzY2FyYSA9ICcqKioqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ0dPJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01BJykgTWFzY2FyYSA9ICcqKioqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01UJykgTWFzY2FyYSA9ICcqKioqKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01TJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ01HJykgTWFzY2FyYSA9ICcqKiouKioqLioqKi8qKioqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQQScpIE1hc2NhcmEgPSAnKiotKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1BCJykgTWFzY2FyYSA9ICcqKioqKioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQUicpIE1hc2NhcmEgPSAnKioqLioqKioqLSoqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQRScpIE1hc2NhcmEgPSAoTGVuRG9jID4gOSkgPyAnKiouKi4qKiouKioqKioqKi0qJyA6ICcqKioqKioqLSoqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdQSScpIE1hc2NhcmEgPSAnKioqKioqKioqJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSSicpIE1hc2NhcmEgPSAnKiouKioqLioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JOJykgTWFzY2FyYSA9IChMZW5Eb2MgPiA5KSA/ICcqKi4qLioqKi4qKiotKicgOiAnKiouKioqLioqKi0qJztcbiAgICAgICAgaWYgKHRoaXMuQ29tcGxlbWVudG8gPT09ICdSUycpIE1hc2NhcmEgPSAnKioqLyoqKioqKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1JPJykgTWFzY2FyYSA9IChMZW5Eb2MgPiAxMykgPyAnKioqKioqKioqKioqKi0qJyA6ICcqKiouKioqKiotKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnUlInKSBNYXNjYXJhID0gJyoqKioqKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1NDJykgTWFzY2FyYSA9ICcqKiouKioqLioqKic7XG4gICAgICAgIGlmICh0aGlzLkNvbXBsZW1lbnRvID09PSAnU1AnKSBNYXNjYXJhID0gKChMZW5Eb2MgPiAxKSAmJiAoQVZhbHVlWzBdID09PSAnUCcpKSA/ICcqLSoqKioqKioqLiovKioqJyA6ICcqKiouKioqLioqKi4qKionO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1NFJykgTWFzY2FyYSA9ICcqKi4qKiouKioqLSonO1xuICAgICAgICBpZiAodGhpcy5Db21wbGVtZW50byA9PT0gJ1RPJykgTWFzY2FyYSA9IChMZW5Eb2MgPSAxMSkgPyAnKiouKiouKioqKioqLSonIDogJyoqLioqKi4qKiotKic7XG5cbiAgICAgICAgcmV0dXJuIE1hc2NhcmE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfRm9ybWF0YXJJRShBVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmIChBVmFsdWUudHJpbSgpLnRvVXBwZXJDYXNlKCkgPT09ICdJU0VOVE8nKSB7XG4gICAgICAgICAgICByZXR1cm4gQVZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgTWFzY2FyYTogc3RyaW5nID0gdGhpcy5fTWFzY2FyYUlFKEFWYWx1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9Gb3JtYXRhck1hc2NhcmFOdW1lcmljYSh0aGlzLl9Pbmx5QWxwaGFOdW0oQVZhbHVlKSwgTWFzY2FyYSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfT25seUFscGhhTnVtKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgX0Zvcm1hdGFyTWFzY2FyYU51bWVyaWNhKG51bVZhbHVlOiBzdHJpbmcsIG1hc2NhcmE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgICAgICBjb25zdCB3TnVtVmFsdWU6IHN0cmluZyA9IG51bVZhbHVlLnRyaW0oKTtcbiAgICAgICAgY29uc3QgbGVuTWFzOiBudW1iZXIgPSBtYXNjYXJhLmxlbmd0aDtcbiAgICAgICAgY29uc3QgbGVuRG9jOiBudW1iZXIgPSB3TnVtVmFsdWUubGVuZ3RoO1xuXG4gICAgICAgIGxldCBqOiBudW1iZXIgPSBsZW5NYXM7XG4gICAgICAgIGZvciAobGV0IGkgPSBsZW5NYXMgLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGMgPSBtYXNjYXJhW2ldO1xuXG4gICAgICAgICAgICBpZiAoYyA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPD0gKGxlbk1hcyAtIGxlbkRvYykpIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICcwJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjID0gd051bVZhbHVlW2ogLSAobGVuTWFzIC0gbGVuRG9jKSAtIDFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBqLS07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdCA9IGMgKyByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxufVxuIl19