dts-backoffice-util 2.8.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/dts-backoffice-util.umd.js +419 -2359
- package/bundles/dts-backoffice-util.umd.js.map +1 -1
- package/esm2015/dts-backoffice-util.js +2 -6
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +15 -131
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +1 -125
- package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +19 -172
- package/esm2015/lib/dts-backoffice-util.module.js +2 -8
- package/esm2015/lib/interfaces/filter-range.interface.js +2 -47
- package/esm2015/lib/interfaces/totvs-response.interface.js +2 -16
- package/esm2015/lib/model/session-info.model.js +1 -116
- package/esm2015/lib/pipes/dts-date-format.pipe.js +2 -11
- package/esm2015/lib/services/breadcrumb-control.service.js +9 -44
- package/esm2015/lib/services/cache-params.service.js +10 -24
- package/esm2015/lib/services/menu-datasul.service.js +9 -18
- package/esm2015/lib/services/profile.service.js +17 -78
- package/esm2015/lib/services/report.service.js +20 -81
- package/esm2015/lib/services/session-info.service.js +12 -27
- package/esm2015/lib/services/translate.service.js +2 -15
- package/esm2015/lib/utils/date.util.js +1 -39
- package/esm2015/lib/utils/disclaimer.util.js +33 -317
- package/esm2015/lib/utils/field-validation.util.js +1 -96
- package/esm2015/lib/utils/file.util.js +7 -102
- package/esm2015/lib/utils/filter-range.util.js +1 -20
- package/esm2015/lib/utils/generic-functions.utils.js +12 -137
- package/esm2015/public-api.js +22 -25
- package/fesm2015/dts-backoffice-util.js +176 -1501
- package/fesm2015/dts-backoffice-util.js.map +1 -1
- package/package.json +9 -8
- package/CHANGELOG.md +0 -159
- package/bundles/dts-backoffice-util.umd.min.js +0 -2
- package/bundles/dts-backoffice-util.umd.min.js.map +0 -1
- package/esm5/dts-backoffice-util.js +0 -9
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +0 -448
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +0 -143
- package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +0 -434
- package/esm5/lib/dts-backoffice-util.module.js +0 -53
- package/esm5/lib/interfaces/filter-range.interface.js +0 -47
- package/esm5/lib/interfaces/totvs-response.interface.js +0 -16
- package/esm5/lib/model/session-info.model.js +0 -239
- package/esm5/lib/pipes/dts-date-format.pipe.js +0 -36
- package/esm5/lib/services/breadcrumb-control.service.js +0 -157
- package/esm5/lib/services/cache-params.service.js +0 -61
- package/esm5/lib/services/menu-datasul.service.js +0 -92
- package/esm5/lib/services/profile.service.js +0 -146
- package/esm5/lib/services/report.service.js +0 -137
- package/esm5/lib/services/session-info.service.js +0 -64
- package/esm5/lib/services/translate.service.js +0 -47
- package/esm5/lib/utils/date.util.js +0 -135
- package/esm5/lib/utils/disclaimer.util.js +0 -930
- package/esm5/lib/utils/field-validation.util.js +0 -358
- package/esm5/lib/utils/file.util.js +0 -262
- package/esm5/lib/utils/filter-range.util.js +0 -69
- package/esm5/lib/utils/generic-functions.utils.js +0 -358
- package/esm5/public-api.js +0 -37
- package/fesm5/dts-backoffice-util.js +0 -3944
- package/fesm5/dts-backoffice-util.js.map +0 -1
|
@@ -1,358 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
/*
|
|
6
|
-
Versão: 1.002
|
|
7
|
-
Data Criação: 19/02/2019
|
|
8
|
-
*/
|
|
9
|
-
import { DisclaimerUtil } from './disclaimer.util';
|
|
10
|
-
var FieldValidationUtil = /** @class */ (function () {
|
|
11
|
-
function FieldValidationUtil(poNotification, poI18nPipe, literals) {
|
|
12
|
-
this.literals = {};
|
|
13
|
-
this.poNotification = poNotification;
|
|
14
|
-
this.poI18nPipe = poI18nPipe;
|
|
15
|
-
this.literals = literals;
|
|
16
|
-
this.disclaimerUtil = new DisclaimerUtil(this.poNotification, this.poI18nPipe, this.literals);
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @param {?} field
|
|
20
|
-
* @param {?} value
|
|
21
|
-
* @return {?}
|
|
22
|
-
*/
|
|
23
|
-
FieldValidationUtil.prototype.vldFieldCharacter = /**
|
|
24
|
-
* @param {?} field
|
|
25
|
-
* @param {?} value
|
|
26
|
-
* @return {?}
|
|
27
|
-
*/
|
|
28
|
-
function (field, value) {
|
|
29
|
-
if (!value || value.trim() === '') {
|
|
30
|
-
this.poNotification.error({
|
|
31
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])
|
|
32
|
-
});
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
return true;
|
|
36
|
-
};
|
|
37
|
-
// Valida uma faixa de caracteres se o inicial é menor que final
|
|
38
|
-
// Valida uma faixa de caracteres se o inicial é menor que final
|
|
39
|
-
/**
|
|
40
|
-
* @param {?} initialField
|
|
41
|
-
* @param {?} finalField
|
|
42
|
-
* @param {?} initialValue
|
|
43
|
-
* @param {?} finalValue
|
|
44
|
-
* @return {?}
|
|
45
|
-
*/
|
|
46
|
-
FieldValidationUtil.prototype.vldRangeCharacter =
|
|
47
|
-
// Valida uma faixa de caracteres se o inicial é menor que final
|
|
48
|
-
/**
|
|
49
|
-
* @param {?} initialField
|
|
50
|
-
* @param {?} finalField
|
|
51
|
-
* @param {?} initialValue
|
|
52
|
-
* @param {?} finalValue
|
|
53
|
-
* @return {?}
|
|
54
|
-
*/
|
|
55
|
-
function (initialField, finalField, initialValue, finalValue) {
|
|
56
|
-
if (!initialValue || !finalValue) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
if (initialValue.trim().toUpperCase() > finalValue.trim().toUpperCase()) {
|
|
60
|
-
this.poNotification.error({
|
|
61
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldRange'], [this.literals[initialField], this.literals[finalField]])
|
|
62
|
-
});
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
return true;
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* @param {?} field
|
|
69
|
-
* @param {?} value
|
|
70
|
-
* @param {?=} vldValue
|
|
71
|
-
* @param {?=} zeroAccept
|
|
72
|
-
* @return {?}
|
|
73
|
-
*/
|
|
74
|
-
FieldValidationUtil.prototype.vldFieldNumber = /**
|
|
75
|
-
* @param {?} field
|
|
76
|
-
* @param {?} value
|
|
77
|
-
* @param {?=} vldValue
|
|
78
|
-
* @param {?=} zeroAccept
|
|
79
|
-
* @return {?}
|
|
80
|
-
*/
|
|
81
|
-
function (field, value, vldValue, zeroAccept) {
|
|
82
|
-
if (vldValue === void 0) { vldValue = false; }
|
|
83
|
-
if (zeroAccept === void 0) { zeroAccept = false; }
|
|
84
|
-
if (vldValue && !this.vldValueOfNumber(field, value)) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
if ((!value) || value <= 0) {
|
|
88
|
-
if (value === 0 && zeroAccept === true) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
this.poNotification.error({
|
|
92
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldRequered'], [this.literals[field]])
|
|
93
|
-
});
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
return true;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* @param {?} field
|
|
100
|
-
* @param {?} value
|
|
101
|
-
* @return {?}
|
|
102
|
-
*/
|
|
103
|
-
FieldValidationUtil.prototype.vldValueOfNumber = /**
|
|
104
|
-
* @param {?} field
|
|
105
|
-
* @param {?} value
|
|
106
|
-
* @return {?}
|
|
107
|
-
*/
|
|
108
|
-
function (field, value) {
|
|
109
|
-
if (value && value < 0) {
|
|
110
|
-
this.poNotification.error({ message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
return true;
|
|
114
|
-
};
|
|
115
|
-
/**
|
|
116
|
-
* @param {?} field
|
|
117
|
-
* @param {?} value
|
|
118
|
-
* @param {?=} vldValue
|
|
119
|
-
* @return {?}
|
|
120
|
-
*/
|
|
121
|
-
FieldValidationUtil.prototype.vldFieldPercent = /**
|
|
122
|
-
* @param {?} field
|
|
123
|
-
* @param {?} value
|
|
124
|
-
* @param {?=} vldValue
|
|
125
|
-
* @return {?}
|
|
126
|
-
*/
|
|
127
|
-
function (field, value, vldValue) {
|
|
128
|
-
if (vldValue === void 0) { vldValue = false; }
|
|
129
|
-
if (vldValue && !this.vldValueOfPercent(field, value)) {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
if (!this.vldFieldNumber(field, value)) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
return true;
|
|
136
|
-
};
|
|
137
|
-
/**
|
|
138
|
-
* @param {?} field
|
|
139
|
-
* @param {?} value
|
|
140
|
-
* @return {?}
|
|
141
|
-
*/
|
|
142
|
-
FieldValidationUtil.prototype.vldValueOfPercent = /**
|
|
143
|
-
* @param {?} field
|
|
144
|
-
* @param {?} value
|
|
145
|
-
* @return {?}
|
|
146
|
-
*/
|
|
147
|
-
function (field, value) {
|
|
148
|
-
if (value && value < 0) {
|
|
149
|
-
this.poNotification.error({ message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
if (value && value > 100) {
|
|
153
|
-
this.poNotification.error({ message: this.poI18nPipe.transform(this.literals['fieldVldNumber'], [value.toString(), this.literals[field]]) });
|
|
154
|
-
return false;
|
|
155
|
-
}
|
|
156
|
-
return true;
|
|
157
|
-
};
|
|
158
|
-
// Valida uma faixa de números se o inicial é menor que final
|
|
159
|
-
// Valida uma faixa de números se o inicial é menor que final
|
|
160
|
-
/**
|
|
161
|
-
* @param {?} initialField
|
|
162
|
-
* @param {?} finalField
|
|
163
|
-
* @param {?} initialValue
|
|
164
|
-
* @param {?} finalValue
|
|
165
|
-
* @return {?}
|
|
166
|
-
*/
|
|
167
|
-
FieldValidationUtil.prototype.vldRangeNumber =
|
|
168
|
-
// Valida uma faixa de números se o inicial é menor que final
|
|
169
|
-
/**
|
|
170
|
-
* @param {?} initialField
|
|
171
|
-
* @param {?} finalField
|
|
172
|
-
* @param {?} initialValue
|
|
173
|
-
* @param {?} finalValue
|
|
174
|
-
* @return {?}
|
|
175
|
-
*/
|
|
176
|
-
function (initialField, finalField, initialValue, finalValue) {
|
|
177
|
-
if (!initialValue) {
|
|
178
|
-
initialValue = 0;
|
|
179
|
-
}
|
|
180
|
-
if (!finalValue) {
|
|
181
|
-
finalValue = 0;
|
|
182
|
-
}
|
|
183
|
-
if (initialValue > finalValue) {
|
|
184
|
-
this.poNotification.error({
|
|
185
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldRange'], [this.literals[initialField], this.literals[finalField]])
|
|
186
|
-
});
|
|
187
|
-
return false;
|
|
188
|
-
}
|
|
189
|
-
return true;
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* @param {?} field
|
|
193
|
-
* @param {?} value
|
|
194
|
-
* @return {?}
|
|
195
|
-
*/
|
|
196
|
-
FieldValidationUtil.prototype.vldFieldDate = /**
|
|
197
|
-
* @param {?} field
|
|
198
|
-
* @param {?} value
|
|
199
|
-
* @return {?}
|
|
200
|
-
*/
|
|
201
|
-
function (field, value) {
|
|
202
|
-
/** @type {?} */
|
|
203
|
-
var valDate = this.disclaimerUtil.ajustDate(value);
|
|
204
|
-
if (!this.disclaimerUtil.isValidDate(valDate)) {
|
|
205
|
-
this.poNotification.error({
|
|
206
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldDate'], [this.literals[field]])
|
|
207
|
-
});
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
return true;
|
|
211
|
-
};
|
|
212
|
-
// Valida uma faixa de datas se o inicial é menor que final
|
|
213
|
-
// Valida uma faixa de datas se o inicial é menor que final
|
|
214
|
-
/**
|
|
215
|
-
* @param {?} initialField
|
|
216
|
-
* @param {?} finalField
|
|
217
|
-
* @param {?} initialValue
|
|
218
|
-
* @param {?} finalValue
|
|
219
|
-
* @return {?}
|
|
220
|
-
*/
|
|
221
|
-
FieldValidationUtil.prototype.vldRangeDate =
|
|
222
|
-
// Valida uma faixa de datas se o inicial é menor que final
|
|
223
|
-
/**
|
|
224
|
-
* @param {?} initialField
|
|
225
|
-
* @param {?} finalField
|
|
226
|
-
* @param {?} initialValue
|
|
227
|
-
* @param {?} finalValue
|
|
228
|
-
* @return {?}
|
|
229
|
-
*/
|
|
230
|
-
function (initialField, finalField, initialValue, finalValue) {
|
|
231
|
-
if (!initialValue || !finalValue) {
|
|
232
|
-
return true;
|
|
233
|
-
}
|
|
234
|
-
/** @type {?} */
|
|
235
|
-
var valInitialDate = this.disclaimerUtil.ajustDate(initialValue).getTime();
|
|
236
|
-
/** @type {?} */
|
|
237
|
-
var valFinalDate = this.disclaimerUtil.ajustDate(finalValue).getTime();
|
|
238
|
-
if (valInitialDate > valFinalDate) {
|
|
239
|
-
this.poNotification.error({
|
|
240
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldRange'], [this.literals[initialField], this.literals[finalField]])
|
|
241
|
-
});
|
|
242
|
-
return false;
|
|
243
|
-
}
|
|
244
|
-
return true;
|
|
245
|
-
};
|
|
246
|
-
/**
|
|
247
|
-
* @param {?} field
|
|
248
|
-
* @param {?} value
|
|
249
|
-
* @return {?}
|
|
250
|
-
*/
|
|
251
|
-
FieldValidationUtil.prototype.vldFieldMultiSelect = /**
|
|
252
|
-
* @param {?} field
|
|
253
|
-
* @param {?} value
|
|
254
|
-
* @return {?}
|
|
255
|
-
*/
|
|
256
|
-
function (field, value) {
|
|
257
|
-
if (!value || value.length === 0) {
|
|
258
|
-
this.poNotification.error({
|
|
259
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])
|
|
260
|
-
});
|
|
261
|
-
return false;
|
|
262
|
-
}
|
|
263
|
-
return true;
|
|
264
|
-
};
|
|
265
|
-
/**
|
|
266
|
-
* @param {?} field
|
|
267
|
-
* @param {?} value
|
|
268
|
-
* @return {?}
|
|
269
|
-
*/
|
|
270
|
-
FieldValidationUtil.prototype.vldFieldCheckbox = /**
|
|
271
|
-
* @param {?} field
|
|
272
|
-
* @param {?} value
|
|
273
|
-
* @return {?}
|
|
274
|
-
*/
|
|
275
|
-
function (field, value) {
|
|
276
|
-
if (!value || value.length === 0) {
|
|
277
|
-
this.poNotification.error({
|
|
278
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldSelected'], [this.literals[field]])
|
|
279
|
-
});
|
|
280
|
-
return false;
|
|
281
|
-
}
|
|
282
|
-
return true;
|
|
283
|
-
};
|
|
284
|
-
// Valida formato conforme regra: "9" apenas números, "X" qualquer caracter, "!" apenas letras maiúsculas
|
|
285
|
-
// Valida formato conforme regra: "9" apenas números, "X" qualquer caracter, "!" apenas letras maiúsculas
|
|
286
|
-
/**
|
|
287
|
-
* @param {?} field
|
|
288
|
-
* @param {?} value
|
|
289
|
-
* @param {?} format
|
|
290
|
-
* @param {?=} replacePoint
|
|
291
|
-
* @return {?}
|
|
292
|
-
*/
|
|
293
|
-
FieldValidationUtil.prototype.vldFieldFormat =
|
|
294
|
-
// Valida formato conforme regra: "9" apenas números, "X" qualquer caracter, "!" apenas letras maiúsculas
|
|
295
|
-
/**
|
|
296
|
-
* @param {?} field
|
|
297
|
-
* @param {?} value
|
|
298
|
-
* @param {?} format
|
|
299
|
-
* @param {?=} replacePoint
|
|
300
|
-
* @return {?}
|
|
301
|
-
*/
|
|
302
|
-
function (field, value, format, replacePoint) {
|
|
303
|
-
if (replacePoint === void 0) { replacePoint = false; }
|
|
304
|
-
/** @type {?} */
|
|
305
|
-
var lOK = true;
|
|
306
|
-
/** @type {?} */
|
|
307
|
-
var oldFormat;
|
|
308
|
-
if (!value) {
|
|
309
|
-
return lOK;
|
|
310
|
-
}
|
|
311
|
-
/*Retira os pontos do formato*/
|
|
312
|
-
if (replacePoint) {
|
|
313
|
-
oldFormat = format;
|
|
314
|
-
format = format.replace(/\./g, '');
|
|
315
|
-
}
|
|
316
|
-
if (value.length !== format.length) {
|
|
317
|
-
lOK = false;
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
for (var idx = 0; idx < format.length; idx++) {
|
|
321
|
-
if (format[idx] === '9') {
|
|
322
|
-
if (value[idx].replace(/[0-9]/, '9') !== '9') {
|
|
323
|
-
lOK = false;
|
|
324
|
-
break;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
if (format[idx] === '!') {
|
|
328
|
-
if (value[idx].replace(/[A-Z]/, 'A') !== 'A') {
|
|
329
|
-
lOK = false;
|
|
330
|
-
break;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
if (replacePoint) {
|
|
336
|
-
format = oldFormat;
|
|
337
|
-
}
|
|
338
|
-
if (!lOK) {
|
|
339
|
-
this.poNotification.error({
|
|
340
|
-
message: this.poI18nPipe.transform(this.literals['fieldVldFormat'], [this.literals[field], format])
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
return lOK;
|
|
344
|
-
};
|
|
345
|
-
return FieldValidationUtil;
|
|
346
|
-
}());
|
|
347
|
-
export { FieldValidationUtil };
|
|
348
|
-
if (false) {
|
|
349
|
-
/** @type {?} */
|
|
350
|
-
FieldValidationUtil.prototype.poNotification;
|
|
351
|
-
/** @type {?} */
|
|
352
|
-
FieldValidationUtil.prototype.poI18nPipe;
|
|
353
|
-
/** @type {?} */
|
|
354
|
-
FieldValidationUtil.prototype.literals;
|
|
355
|
-
/** @type {?} */
|
|
356
|
-
FieldValidationUtil.prototype.disclaimerUtil;
|
|
357
|
-
}
|
|
358
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtdmFsaWRhdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZHRzLWJhY2tvZmZpY2UtdXRpbC8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9maWVsZC12YWxpZGF0aW9uLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFNQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQ7SUFPSSw2QkFDSSxjQUFxQyxFQUNyQyxVQUFzQixFQUN0QixRQUFnQjtRQVBwQixhQUFRLEdBQVEsRUFBRSxDQUFDO1FBU2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xHLENBQUM7Ozs7OztJQUVNLCtDQUFpQjs7Ozs7SUFBeEIsVUFBeUIsS0FBYSxFQUFFLEtBQWE7UUFDakQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO2dCQUN0QixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2hHLENBQUMsQ0FBQztZQUNILE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGdFQUFnRTs7Ozs7Ozs7O0lBQ3pELCtDQUFpQjs7Ozs7Ozs7O0lBQXhC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QUksWUFBWSxFQUFFO1lBQ2QsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUN0QjtRQUVELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQztnQkFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDdEcsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFDTCwwQkFBQztBQUFELENBQUMsQUExTUQsSUEwTUM7Ozs7SUF6TUcsNkNBQXNDOztJQUN0Qyx5Q0FBdUI7O0lBQ3ZCLHVDQUFtQjs7SUFFbkIsNkNBQStCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuVmVyc8OjbzogMS4wMDJcclxuRGF0YSBDcmlhw6fDo286IDE5LzAyLzIwMTlcclxuKi9cclxuXHJcbmltcG9ydCB7IFBvTm90aWZpY2F0aW9uU2VydmljZSwgUG9JMThuUGlwZSB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcclxuaW1wb3J0IHsgRGlzY2xhaW1lclV0aWwgfSBmcm9tICcuL2Rpc2NsYWltZXIudXRpbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmllbGRWYWxpZGF0aW9uVXRpbCB7XHJcbiAgICBwb05vdGlmaWNhdGlvbjogUG9Ob3RpZmljYXRpb25TZXJ2aWNlO1xyXG4gICAgcG9JMThuUGlwZTogUG9JMThuUGlwZTtcclxuICAgIGxpdGVyYWxzOiBhbnkgPSB7fTtcclxuXHJcbiAgICBkaXNjbGFpbWVyVXRpbDogRGlzY2xhaW1lclV0aWw7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcG9Ob3RpZmljYXRpb246IFBvTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgICAgICBwb0kxOG5QaXBlOiBQb0kxOG5QaXBlLFxyXG4gICAgICAgIGxpdGVyYWxzOiBPYmplY3RcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24gPSBwb05vdGlmaWNhdGlvbjtcclxuICAgICAgICB0aGlzLnBvSTE4blBpcGUgPSBwb0kxOG5QaXBlO1xyXG4gICAgICAgIHRoaXMubGl0ZXJhbHMgPSBsaXRlcmFscztcclxuICAgICAgICB0aGlzLmRpc2NsYWltZXJVdGlsID0gbmV3IERpc2NsYWltZXJVdGlsKHRoaXMucG9Ob3RpZmljYXRpb24sIHRoaXMucG9JMThuUGlwZSwgdGhpcy5saXRlcmFscyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHZsZEZpZWxkQ2hhcmFjdGVyKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLnRyaW0oKSA9PT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBvSTE4blBpcGUudHJhbnNmb3JtKHRoaXMubGl0ZXJhbHNbJ2ZpZWxkVmxkUmVxdWVyZWQnXSwgW3RoaXMubGl0ZXJhbHNbZmllbGRdXSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhIHVtYSBmYWl4YSBkZSBjYXJhY3RlcmVzIHNlIG8gaW5pY2lhbCDDqSBtZW5vciBxdWUgZmluYWxcclxuICAgIHB1YmxpYyB2bGRSYW5nZUNoYXJhY3Rlcihpbml0aWFsRmllbGQ6IHN0cmluZywgZmluYWxGaWVsZDogc3RyaW5nLCBpbml0aWFsVmFsdWU6IHN0cmluZywgZmluYWxWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKCFpbml0aWFsVmFsdWUgfHwgIWZpbmFsVmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlLnRyaW0oKS50b1VwcGVyQ2FzZSgpID4gZmluYWxWYWx1ZS50cmltKCkudG9VcHBlckNhc2UoKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGRSYW5nZSddLFxyXG4gICAgICAgICAgICAgICAgICAgIFt0aGlzLmxpdGVyYWxzW2luaXRpYWxGaWVsZF0sIHRoaXMubGl0ZXJhbHNbZmluYWxGaWVsZF1dKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmxkRmllbGROdW1iZXIoZmllbGQ6IHN0cmluZywgdmFsdWU6IG51bWJlciwgdmxkVmFsdWUgPSBmYWxzZSwgemVyb0FjY2VwdCA9IGZhbHNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHZsZFZhbHVlICYmICF0aGlzLnZsZFZhbHVlT2ZOdW1iZXIoZmllbGQsIHZhbHVlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKCF2YWx1ZSkgfHwgdmFsdWUgPD0gMCkge1xyXG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IDAgJiYgemVyb0FjY2VwdCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3Ioe1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wb0kxOG5QaXBlLnRyYW5zZm9ybSh0aGlzLmxpdGVyYWxzWydmaWVsZFZsZFJlcXVlcmVkJ10sIFt0aGlzLmxpdGVyYWxzW2ZpZWxkXV0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB2bGRWYWx1ZU9mTnVtYmVyKGZpZWxkOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUgPCAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7IG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGROdW1iZXInXSwgW3ZhbHVlLnRvU3RyaW5nKCksIHRoaXMubGl0ZXJhbHNbZmllbGRdXSkgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHZsZEZpZWxkUGVyY2VudChmaWVsZDogc3RyaW5nLCB2YWx1ZTogbnVtYmVyLCB2bGRWYWx1ZSA9IGZhbHNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgaWYgKHZsZFZhbHVlICYmICF0aGlzLnZsZFZhbHVlT2ZQZXJjZW50KGZpZWxkLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnZsZEZpZWxkTnVtYmVyKGZpZWxkLCB2YWx1ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmxkVmFsdWVPZlBlcmNlbnQoZmllbGQ6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA8IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcihcclxuICAgICAgICAgICAgICAgIHsgbWVzc2FnZTogdGhpcy5wb0kxOG5QaXBlLnRyYW5zZm9ybSh0aGlzLmxpdGVyYWxzWydmaWVsZFZsZE51bWJlciddLCBbdmFsdWUudG9TdHJpbmcoKSwgdGhpcy5saXRlcmFsc1tmaWVsZF1dKSB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlID4gMTAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgICAgICAgICAgICB7IG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGROdW1iZXInXSwgW3ZhbHVlLnRvU3RyaW5nKCksIHRoaXMubGl0ZXJhbHNbZmllbGRdXSkgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVmFsaWRhIHVtYSBmYWl4YSBkZSBuw7ptZXJvcyBzZSBvIGluaWNpYWwgw6kgbWVub3IgcXVlIGZpbmFsXHJcbiAgICBwdWJsaWMgdmxkUmFuZ2VOdW1iZXIoaW5pdGlhbEZpZWxkOiBzdHJpbmcsIGZpbmFsRmllbGQ6IHN0cmluZywgaW5pdGlhbFZhbHVlOiBudW1iZXIsIGZpbmFsVmFsdWU6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghaW5pdGlhbFZhbHVlKSB7IGluaXRpYWxWYWx1ZSA9IDA7IH1cclxuICAgICAgICBpZiAoIWZpbmFsVmFsdWUpIHsgZmluYWxWYWx1ZSA9IDA7IH1cclxuXHJcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA+IGZpbmFsVmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBvSTE4blBpcGUudHJhbnNmb3JtKHRoaXMubGl0ZXJhbHNbJ2ZpZWxkVmxkUmFuZ2UnXSxcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5saXRlcmFsc1tpbml0aWFsRmllbGRdLCB0aGlzLmxpdGVyYWxzW2ZpbmFsRmllbGRdXSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHZsZEZpZWxkRGF0ZShmaWVsZDogc3RyaW5nLCB2YWx1ZTogRGF0ZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHZhbERhdGUgPSB0aGlzLmRpc2NsYWltZXJVdGlsLmFqdXN0RGF0ZSh2YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5kaXNjbGFpbWVyVXRpbC5pc1ZhbGlkRGF0ZSh2YWxEYXRlKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGREYXRlJ10sIFt0aGlzLmxpdGVyYWxzW2ZpZWxkXV0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYSB1bWEgZmFpeGEgZGUgZGF0YXMgc2UgbyBpbmljaWFsIMOpIG1lbm9yIHF1ZSBmaW5hbFxyXG4gICAgcHVibGljIHZsZFJhbmdlRGF0ZShpbml0aWFsRmllbGQ6IHN0cmluZywgZmluYWxGaWVsZDogc3RyaW5nLCBpbml0aWFsVmFsdWU6IERhdGUsIGZpbmFsVmFsdWU6IERhdGUpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIWluaXRpYWxWYWx1ZSB8fCAhZmluYWxWYWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbEluaXRpYWxEYXRlID0gdGhpcy5kaXNjbGFpbWVyVXRpbC5hanVzdERhdGUoaW5pdGlhbFZhbHVlKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgY29uc3QgdmFsRmluYWxEYXRlID0gdGhpcy5kaXNjbGFpbWVyVXRpbC5hanVzdERhdGUoZmluYWxWYWx1ZSkuZ2V0VGltZSgpO1xyXG5cclxuICAgICAgICBpZiAodmFsSW5pdGlhbERhdGUgPiB2YWxGaW5hbERhdGUpIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcih7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBvSTE4blBpcGUudHJhbnNmb3JtKHRoaXMubGl0ZXJhbHNbJ2ZpZWxkVmxkUmFuZ2UnXSxcclxuICAgICAgICAgICAgICAgICAgICBbdGhpcy5saXRlcmFsc1tpbml0aWFsRmllbGRdLCB0aGlzLmxpdGVyYWxzW2ZpbmFsRmllbGRdXSlcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHZsZEZpZWxkTXVsdGlTZWxlY3QoZmllbGQ6IHN0cmluZywgdmFsdWU6IEFycmF5PGFueT4pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoIXZhbHVlIHx8IHZhbHVlLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGRTZWxlY3RlZCddLCBbdGhpcy5saXRlcmFsc1tmaWVsZF1dKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdmxkRmllbGRDaGVja2JveChmaWVsZDogc3RyaW5nLCB2YWx1ZTogQXJyYXk8c3RyaW5nPik6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICghdmFsdWUgfHwgdmFsdWUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3Ioe1xyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5wb0kxOG5QaXBlLnRyYW5zZm9ybSh0aGlzLmxpdGVyYWxzWydmaWVsZFZsZFNlbGVjdGVkJ10sIFt0aGlzLmxpdGVyYWxzW2ZpZWxkXV0pXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFZhbGlkYSBmb3JtYXRvIGNvbmZvcm1lIHJlZ3JhOiBcIjlcIiBhcGVuYXMgbsO6bWVyb3MsIFwiWFwiIHF1YWxxdWVyIGNhcmFjdGVyLCBcIiFcIiBhcGVuYXMgbGV0cmFzIG1hacO6c2N1bGFzXHJcbiAgICBwdWJsaWMgdmxkRmllbGRGb3JtYXQoZmllbGQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcsIHJlcGxhY2VQb2ludCA9IGZhbHNlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgbGV0IGxPSyA9IHRydWU7XHJcbiAgICAgICAgbGV0IG9sZEZvcm1hdDogc3RyaW5nO1xyXG5cclxuICAgICAgICBpZiAoIXZhbHVlKSB7IHJldHVybiBsT0s7IH1cclxuXHJcbiAgICAgICAgLypSZXRpcmEgb3MgcG9udG9zIGRvIGZvcm1hdG8qL1xyXG4gICAgICAgIGlmIChyZXBsYWNlUG9pbnQpIHtcclxuICAgICAgICAgICAgb2xkRm9ybWF0ID0gZm9ybWF0O1xyXG4gICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgvXFwuL2csICcnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggIT09IGZvcm1hdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgbE9LID0gZmFsc2U7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaWR4ID0gMDsgaWR4IDwgZm9ybWF0Lmxlbmd0aDsgaWR4KyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChmb3JtYXRbaWR4XSA9PT0gJzknKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlW2lkeF0ucmVwbGFjZSgvWzAtOV0vLCAnOScpICE9PSAnOScpIHsgbE9LID0gZmFsc2U7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdFtpZHhdID09PSAnIScpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbaWR4XS5yZXBsYWNlKC9bQS1aXS8sICdBJykgIT09ICdBJykgeyBsT0sgPSBmYWxzZTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlcGxhY2VQb2ludCkge1xyXG4gICAgICAgICAgICBmb3JtYXQgPSBvbGRGb3JtYXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWxPSykge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKHtcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucG9JMThuUGlwZS50cmFuc2Zvcm0odGhpcy5saXRlcmFsc1snZmllbGRWbGRGb3JtYXQnXSwgW3RoaXMubGl0ZXJhbHNbZmllbGRdLCBmb3JtYXRdKVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBsT0s7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview added by tsickle
|
|
3
|
-
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
-
*/
|
|
5
|
-
var FileUtil = /** @class */ (function () {
|
|
6
|
-
function FileUtil() {
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* @param {?} data
|
|
10
|
-
* @param {?} fileName
|
|
11
|
-
* @param {?=} contentType
|
|
12
|
-
* @param {?=} base64
|
|
13
|
-
* @return {?}
|
|
14
|
-
*/
|
|
15
|
-
FileUtil.downloadFile = /**
|
|
16
|
-
* @param {?} data
|
|
17
|
-
* @param {?} fileName
|
|
18
|
-
* @param {?=} contentType
|
|
19
|
-
* @param {?=} base64
|
|
20
|
-
* @return {?}
|
|
21
|
-
*/
|
|
22
|
-
function (data, fileName, contentType, base64) {
|
|
23
|
-
base64 = (base64 === false) ? false : true;
|
|
24
|
-
/** @type {?} */
|
|
25
|
-
var dataBlob = base64 ? this.b64toBlob(data, contentType) : data;
|
|
26
|
-
this.download(dataBlob, fileName);
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* @param {?} data
|
|
30
|
-
* @param {?=} dwldDataParam
|
|
31
|
-
* @return {?}
|
|
32
|
-
*/
|
|
33
|
-
FileUtil.downloadData = /**
|
|
34
|
-
* @param {?} data
|
|
35
|
-
* @param {?=} dwldDataParam
|
|
36
|
-
* @return {?}
|
|
37
|
-
*/
|
|
38
|
-
function (data, dwldDataParam) {
|
|
39
|
-
if (dwldDataParam === void 0) { dwldDataParam = null; }
|
|
40
|
-
if (!data) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
if (!dwldDataParam) {
|
|
44
|
-
dwldDataParam = new DownloadDataParams();
|
|
45
|
-
}
|
|
46
|
-
if (!dwldDataParam.fileName) {
|
|
47
|
-
dwldDataParam.fileName = 'data.csv';
|
|
48
|
-
}
|
|
49
|
-
if (!dwldDataParam.literals) {
|
|
50
|
-
dwldDataParam.literals = {};
|
|
51
|
-
}
|
|
52
|
-
if (!dwldDataParam.columnDelimiter) {
|
|
53
|
-
dwldDataParam.columnDelimiter = ';';
|
|
54
|
-
}
|
|
55
|
-
if (!dwldDataParam.columnList) {
|
|
56
|
-
dwldDataParam.columnList = [];
|
|
57
|
-
}
|
|
58
|
-
if (!dwldDataParam.columnExclude) {
|
|
59
|
-
dwldDataParam.columnExclude = [];
|
|
60
|
-
}
|
|
61
|
-
/** @type {?} */
|
|
62
|
-
var datab64 = btoa(this.jsonToString(data, dwldDataParam));
|
|
63
|
-
this.downloadFile(datab64, dwldDataParam.fileName, 'text/csv');
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* @private
|
|
67
|
-
* @param {?} file
|
|
68
|
-
* @param {?} fileName
|
|
69
|
-
* @return {?}
|
|
70
|
-
*/
|
|
71
|
-
FileUtil.download = /**
|
|
72
|
-
* @private
|
|
73
|
-
* @param {?} file
|
|
74
|
-
* @param {?} fileName
|
|
75
|
-
* @return {?}
|
|
76
|
-
*/
|
|
77
|
-
function (file, fileName) {
|
|
78
|
-
/** @type {?} */
|
|
79
|
-
var binaryData = [file];
|
|
80
|
-
/** @type {?} */
|
|
81
|
-
var downloadLink = document.createElement('a');
|
|
82
|
-
/** @type {?} */
|
|
83
|
-
var urlDownload = window.URL.createObjectURL(new Blob(binaryData, { type: file.type }));
|
|
84
|
-
/**Verifica se é ie ou edge, pois o mesmo tem tratamento próprio para arquivos blob */
|
|
85
|
-
if (navigator.userAgent.toUpperCase().indexOf('.NET') > 0 || navigator.userAgent.toUpperCase().indexOf('EDGE') > 0) {
|
|
86
|
-
window.navigator.msSaveOrOpenBlob(file, fileName);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
downloadLink.href = urlDownload;
|
|
90
|
-
downloadLink.setAttribute('download', fileName);
|
|
91
|
-
document.body.appendChild(downloadLink);
|
|
92
|
-
downloadLink.click();
|
|
93
|
-
window.URL.revokeObjectURL(urlDownload);
|
|
94
|
-
downloadLink.remove();
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* @private
|
|
99
|
-
* @param {?} b64Data
|
|
100
|
-
* @param {?=} contentType
|
|
101
|
-
* @param {?=} sliceSize
|
|
102
|
-
* @return {?}
|
|
103
|
-
*/
|
|
104
|
-
FileUtil.b64toBlob = /**
|
|
105
|
-
* @private
|
|
106
|
-
* @param {?} b64Data
|
|
107
|
-
* @param {?=} contentType
|
|
108
|
-
* @param {?=} sliceSize
|
|
109
|
-
* @return {?}
|
|
110
|
-
*/
|
|
111
|
-
function (b64Data, contentType, sliceSize) {
|
|
112
|
-
contentType = contentType || '';
|
|
113
|
-
sliceSize = sliceSize || 512;
|
|
114
|
-
/** @type {?} */
|
|
115
|
-
var byteCharacters = atob(b64Data);
|
|
116
|
-
/** @type {?} */
|
|
117
|
-
var byteArrays = [];
|
|
118
|
-
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
|
119
|
-
/** @type {?} */
|
|
120
|
-
var slice = byteCharacters.slice(offset, offset + sliceSize);
|
|
121
|
-
/** @type {?} */
|
|
122
|
-
var byteNumbers = new Array(slice.length);
|
|
123
|
-
for (var i = 0; i < slice.length; i++) {
|
|
124
|
-
byteNumbers[i] = slice.charCodeAt(i);
|
|
125
|
-
}
|
|
126
|
-
/** @type {?} */
|
|
127
|
-
var byteArray = new Uint8Array(byteNumbers);
|
|
128
|
-
byteArrays.push(byteArray);
|
|
129
|
-
}
|
|
130
|
-
/** @type {?} */
|
|
131
|
-
var blob = new Blob(byteArrays, { type: contentType });
|
|
132
|
-
return blob;
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* @private
|
|
136
|
-
* @param {?} jsonData
|
|
137
|
-
* @param {?} dwldDataParam
|
|
138
|
-
* @return {?}
|
|
139
|
-
*/
|
|
140
|
-
FileUtil.jsonToString = /**
|
|
141
|
-
* @private
|
|
142
|
-
* @param {?} jsonData
|
|
143
|
-
* @param {?} dwldDataParam
|
|
144
|
-
* @return {?}
|
|
145
|
-
*/
|
|
146
|
-
function (jsonData, dwldDataParam) {
|
|
147
|
-
if (!jsonData || jsonData.length === 0) {
|
|
148
|
-
return '';
|
|
149
|
-
}
|
|
150
|
-
/** @type {?} */
|
|
151
|
-
var lineDelimiter = '\n';
|
|
152
|
-
/** @type {?} */
|
|
153
|
-
var columnOrig = null;
|
|
154
|
-
/** @type {?} */
|
|
155
|
-
var columnHeader = null;
|
|
156
|
-
/** @type {?} */
|
|
157
|
-
var keys = [];
|
|
158
|
-
/** @type {?} */
|
|
159
|
-
var includeKey;
|
|
160
|
-
if (dwldDataParam.columnList &&
|
|
161
|
-
dwldDataParam.columnList.length > 0) {
|
|
162
|
-
columnOrig = dwldDataParam.columnList;
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
columnOrig = Object.keys(jsonData[0]);
|
|
166
|
-
}
|
|
167
|
-
columnOrig.forEach((/**
|
|
168
|
-
* @param {?} key
|
|
169
|
-
* @return {?}
|
|
170
|
-
*/
|
|
171
|
-
function (key) {
|
|
172
|
-
includeKey = true;
|
|
173
|
-
if (dwldDataParam.columnExclude &&
|
|
174
|
-
dwldDataParam.columnExclude.length > 0 &&
|
|
175
|
-
dwldDataParam.columnExclude.indexOf(key) !== -1) {
|
|
176
|
-
includeKey = false;
|
|
177
|
-
}
|
|
178
|
-
if (includeKey) {
|
|
179
|
-
keys.push(key);
|
|
180
|
-
columnHeader = (!columnHeader) ? '' : columnHeader + dwldDataParam.columnDelimiter;
|
|
181
|
-
columnHeader += (dwldDataParam.literals[key]) ? dwldDataParam.literals[key] : key;
|
|
182
|
-
}
|
|
183
|
-
}));
|
|
184
|
-
/** @type {?} */
|
|
185
|
-
var lineStr = jsonData.reduce((/**
|
|
186
|
-
* @param {?} accLineStr
|
|
187
|
-
* @param {?} currentItem
|
|
188
|
-
* @return {?}
|
|
189
|
-
*/
|
|
190
|
-
function (accLineStr, currentItem) {
|
|
191
|
-
/** @type {?} */
|
|
192
|
-
var first = true;
|
|
193
|
-
/** @type {?} */
|
|
194
|
-
var columnValue = null;
|
|
195
|
-
keys.forEach((/**
|
|
196
|
-
* @param {?} key
|
|
197
|
-
* @return {?}
|
|
198
|
-
*/
|
|
199
|
-
function (key) {
|
|
200
|
-
if (!first) {
|
|
201
|
-
accLineStr += dwldDataParam.columnDelimiter;
|
|
202
|
-
}
|
|
203
|
-
columnValue = currentItem[key];
|
|
204
|
-
if (columnValue === null || columnValue === undefined) {
|
|
205
|
-
columnValue = '';
|
|
206
|
-
}
|
|
207
|
-
switch (typeof (columnValue)) {
|
|
208
|
-
case 'number':
|
|
209
|
-
columnValue = columnValue.toLocaleString();
|
|
210
|
-
break;
|
|
211
|
-
case 'boolean':
|
|
212
|
-
columnValue = (dwldDataParam.literals["" + columnValue]) ?
|
|
213
|
-
dwldDataParam.literals["" + columnValue] : columnValue;
|
|
214
|
-
break;
|
|
215
|
-
case 'object':
|
|
216
|
-
columnValue = JSON.stringify(columnValue);
|
|
217
|
-
}
|
|
218
|
-
accLineStr += columnValue;
|
|
219
|
-
first = false;
|
|
220
|
-
}));
|
|
221
|
-
return accLineStr + lineDelimiter;
|
|
222
|
-
}), columnHeader + lineDelimiter);
|
|
223
|
-
return lineStr;
|
|
224
|
-
};
|
|
225
|
-
return FileUtil;
|
|
226
|
-
}());
|
|
227
|
-
export { FileUtil };
|
|
228
|
-
/**
|
|
229
|
-
* @record
|
|
230
|
-
*/
|
|
231
|
-
export function IDownloadDataParams() { }
|
|
232
|
-
if (false) {
|
|
233
|
-
/** @type {?} */
|
|
234
|
-
IDownloadDataParams.prototype.fileName;
|
|
235
|
-
/** @type {?} */
|
|
236
|
-
IDownloadDataParams.prototype.literals;
|
|
237
|
-
/** @type {?} */
|
|
238
|
-
IDownloadDataParams.prototype.columnDelimiter;
|
|
239
|
-
/** @type {?} */
|
|
240
|
-
IDownloadDataParams.prototype.columnList;
|
|
241
|
-
/** @type {?} */
|
|
242
|
-
IDownloadDataParams.prototype.columnExclude;
|
|
243
|
-
}
|
|
244
|
-
var DownloadDataParams = /** @class */ (function () {
|
|
245
|
-
function DownloadDataParams() {
|
|
246
|
-
}
|
|
247
|
-
return DownloadDataParams;
|
|
248
|
-
}());
|
|
249
|
-
export { DownloadDataParams };
|
|
250
|
-
if (false) {
|
|
251
|
-
/** @type {?} */
|
|
252
|
-
DownloadDataParams.prototype.fileName;
|
|
253
|
-
/** @type {?} */
|
|
254
|
-
DownloadDataParams.prototype.literals;
|
|
255
|
-
/** @type {?} */
|
|
256
|
-
DownloadDataParams.prototype.columnDelimiter;
|
|
257
|
-
/** @type {?} */
|
|
258
|
-
DownloadDataParams.prototype.columnList;
|
|
259
|
-
/** @type {?} */
|
|
260
|
-
DownloadDataParams.prototype.columnExclude;
|
|
261
|
-
}
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS51dGlsLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZHRzLWJhY2tvZmZpY2UtdXRpbC8iLCJzb3VyY2VzIjpbImxpYi91dGlscy9maWxlLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0lBRUk7SUFDSSxDQUFDOzs7Ozs7OztJQUVFLHFCQUFZOzs7Ozs7O0lBQW5CLFVBQW9CLElBQVMsRUFBRSxRQUFnQixFQUFFLFdBQW9CLEVBQUUsTUFBZ0I7UUFDbkYsTUFBTSxHQUFHLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7WUFDckMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUk7UUFDbEUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7O0lBRU0scUJBQVk7Ozs7O0lBQW5CLFVBQW9CLElBQWdCLEVBQUUsYUFBeUM7UUFBekMsOEJBQUEsRUFBQSxvQkFBeUM7UUFDM0UsSUFBSSxDQUFDLElBQUksRUFBRTtZQUFFLE9BQU87U0FBRTtRQUV0QixJQUFJLENBQUMsYUFBYSxFQUFFO1lBQUUsYUFBYSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztTQUFFO1FBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQUUsYUFBYSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7U0FBRTtRQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUFFLGFBQWEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1NBQUU7UUFDN0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUU7WUFBRSxhQUFhLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztTQUFFO1FBQzVFLElBQUks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TyxDQUFDO0lBQ25CLENBQUM7SUFDTCxlQUFDO0FBQUQsQ0FBQyxBQWxJRCxJQWtJQzs7Ozs7QUFFRCx5Q0FNQzs7O0lBTEcsdUNBQWlCOztJQUNqQix1Q0FBYzs7SUFDZCw4Q0FBd0I7O0lBQ3hCLHlDQUEwQjs7SUFDMUIsNENBQTZCOztBQUdqQztJQUFBO0lBTUEsQ0FBQztJQUFELHlCQUFDO0FBQUQsQ0FBQyxBQU5ELElBTUM7Ozs7SUFMRyxzQ0FBaUI7O0lBQ2pCLHNDQUFjOztJQUNkLDZDQUF3Qjs7SUFDeEIsd0NBQTBCOztJQUMxQiwyQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRmlsZVV0aWwge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBzdGF0aWMgZG93bmxvYWRGaWxlKGRhdGE6IGFueSwgZmlsZU5hbWU6IHN0cmluZywgY29udGVudFR5cGU/OiBzdHJpbmcsIGJhc2U2ND86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBiYXNlNjQgPSAoYmFzZTY0ID09PSBmYWxzZSkgPyBmYWxzZSA6IHRydWU7XHJcbiAgICAgICAgY29uc3QgZGF0YUJsb2IgPSBiYXNlNjQgPyB0aGlzLmI2NHRvQmxvYihkYXRhLCBjb250ZW50VHlwZSkgOiBkYXRhO1xyXG4gICAgICAgIHRoaXMuZG93bmxvYWQoZGF0YUJsb2IsIGZpbGVOYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgZG93bmxvYWREYXRhKGRhdGE6IEFycmF5PGFueT4sIGR3bGREYXRhUGFyYW06IElEb3dubG9hZERhdGFQYXJhbXMgPSBudWxsKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFkYXRhKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICBpZiAoIWR3bGREYXRhUGFyYW0pIHsgZHdsZERhdGFQYXJhbSA9IG5ldyBEb3dubG9hZERhdGFQYXJhbXMoKTsgfVxyXG4gICAgICAgIGlmICghZHdsZERhdGFQYXJhbS5maWxlTmFtZSkgeyBkd2xkRGF0YVBhcmFtLmZpbGVOYW1lID0gJ2RhdGEuY3N2JzsgfVxyXG4gICAgICAgIGlmICghZHdsZERhdGFQYXJhbS5saXRlcmFscykgeyBkd2xkRGF0YVBhcmFtLmxpdGVyYWxzID0ge307IH1cclxuICAgICAgICBpZiAoIWR3bGREYXRhUGFyYW0uY29sdW1uRGVsaW1pdGVyKSB7IGR3bGREYXRhUGFyYW0uY29sdW1uRGVsaW1pdGVyID0gJzsnOyB9XHJcbiAgICAgICAgaWYgKCFkd2xkRGF0YVBhcmFtLmNvbHVtbkxpc3QpIHsgZHdsZERhdGFQYXJhbS5jb2x1bW5MaXN0ID0gW107IH1cclxuICAgICAgICBpZiAoIWR3bGREYXRhUGFyYW0uY29sdW1uRXhjbHVkZSkgeyBkd2xkRGF0YVBhcmFtLmNvbHVtbkV4Y2x1ZGUgPSBbXTsgfVxyXG5cclxuICAgICAgICBjb25zdCBkYXRhYjY0ID0gYnRvYSh0aGlzLmpzb25Ub1N0cmluZyhkYXRhLCBkd2xkRGF0YVBhcmFtKSk7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZEZpbGUoZGF0YWI2NCwgZHdsZERhdGFQYXJhbS5maWxlTmFtZSwgJ3RleHQvY3N2Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgZG93bmxvYWQoZmlsZTogQmxvYiwgZmlsZU5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJpbmFyeURhdGEgPSBbZmlsZV07XHJcbiAgICAgICAgY29uc3QgZG93bmxvYWRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICAgIGNvbnN0IHVybERvd25sb2FkID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoYmluYXJ5RGF0YSwgeyB0eXBlOiBmaWxlLnR5cGUgfSkpO1xyXG5cclxuICAgICAgICAvKipWZXJpZmljYSBzZSDDqSBpZSBvdSBlZGdlLCBwb2lzIG8gbWVzbW8gdGVtIHRyYXRhbWVudG8gcHLDs3ByaW8gcGFyYSBhcnF1aXZvcyBibG9iICovXHJcbiAgICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQudG9VcHBlckNhc2UoKS5pbmRleE9mKCcuTkVUJykgPiAwIHx8IG5hdmlnYXRvci51c2VyQWdlbnQudG9VcHBlckNhc2UoKS5pbmRleE9mKCdFREdFJykgPiAwKSB7XHJcbiAgICAgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZG93bmxvYWRMaW5rLmhyZWYgPSB1cmxEb3dubG9hZDtcclxuICAgICAgICAgICAgZG93bmxvYWRMaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG93bmxvYWRMaW5rKTtcclxuICAgICAgICAgICAgZG93bmxvYWRMaW5rLmNsaWNrKCk7XHJcbiAgICAgICAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybERvd25sb2FkKTtcclxuICAgICAgICAgICAgZG93bmxvYWRMaW5rLnJlbW92ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBiNjR0b0Jsb2IoYjY0RGF0YTogYW55LCBjb250ZW50VHlwZT86IHN0cmluZywgc2xpY2VTaXplPzogbnVtYmVyKTogQmxvYiB7XHJcbiAgICAgICAgY29udGVudFR5cGUgPSBjb250ZW50VHlwZSB8fCAnJztcclxuICAgICAgICBzbGljZVNpemUgPSBzbGljZVNpemUgfHwgNTEyO1xyXG5cclxuICAgICAgICBjb25zdCBieXRlQ2hhcmFjdGVycyA9IGF0b2IoYjY0RGF0YSk7XHJcbiAgICAgICAgY29uc3QgYnl0ZUFycmF5cyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IG9mZnNldCArPSBzbGljZVNpemUpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2xpY2UgPSBieXRlQ2hhcmFjdGVycy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNsaWNlU2l6ZSk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShzbGljZS5sZW5ndGgpO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNsaWNlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBieXRlTnVtYmVyc1tpXSA9IHNsaWNlLmNoYXJDb2RlQXQoaSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGJ5dGVBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ5dGVOdW1iZXJzKTtcclxuICAgICAgICAgICAgYnl0ZUFycmF5cy5wdXNoKGJ5dGVBcnJheSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoYnl0ZUFycmF5cywgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcclxuICAgICAgICByZXR1cm4gYmxvYjtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBqc29uVG9TdHJpbmcoanNvbkRhdGE6IEFycmF5PGFueT4sIGR3bGREYXRhUGFyYW06IElEb3dubG9hZERhdGFQYXJhbXMpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghanNvbkRhdGEgfHwganNvbkRhdGEubGVuZ3RoID09PSAwKSB7IHJldHVybiAnJzsgfVxyXG5cclxuICAgICAgICBjb25zdCBsaW5lRGVsaW1pdGVyID0gJ1xcbic7XHJcblxyXG4gICAgICAgIGxldCBjb2x1bW5PcmlnID0gbnVsbDtcclxuICAgICAgICBsZXQgY29sdW1uSGVhZGVyID0gbnVsbDtcclxuICAgICAgICBjb25zdCBrZXlzID0gW107XHJcbiAgICAgICAgbGV0IGluY2x1ZGVLZXk6IGJvb2xlYW47XHJcblxyXG4gICAgICAgIGlmIChkd2xkRGF0YVBhcmFtLmNvbHVtbkxpc3QgJiZcclxuICAgICAgICAgICAgZHdsZERhdGFQYXJhbS5jb2x1bW5MaXN0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29sdW1uT3JpZyA9IGR3bGREYXRhUGFyYW0uY29sdW1uTGlzdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb2x1bW5PcmlnID0gT2JqZWN0LmtleXMoanNvbkRhdGFbMF0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29sdW1uT3JpZy5mb3JFYWNoKGtleSA9PiB7XHJcbiAgICAgICAgICAgIGluY2x1ZGVLZXkgPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgaWYgKGR3bGREYXRhUGFyYW0uY29sdW1uRXhjbHVkZSAmJlxyXG4gICAgICAgICAgICAgICAgZHdsZERhdGFQYXJhbS5jb2x1bW5FeGNsdWRlLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgICAgIGR3bGREYXRhUGFyYW0uY29sdW1uRXhjbHVkZS5pbmRleE9mKGtleSkgIT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBpbmNsdWRlS2V5ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmNsdWRlS2V5KSB7XHJcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goa2V5KTtcclxuICAgICAgICAgICAgICAgIGNvbHVtbkhlYWRlciA9ICghY29sdW1uSGVhZGVyKSA/ICcnIDogY29sdW1uSGVhZGVyICsgZHdsZERhdGFQYXJhbS5jb2x1bW5EZWxpbWl0ZXI7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5IZWFkZXIgKz0gKGR3bGREYXRhUGFyYW0ubGl0ZXJhbHNba2V5XSkgPyBkd2xkRGF0YVBhcmFtLmxpdGVyYWxzW2tleV0gOiBrZXk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgbGluZVN0ciA9IGpzb25EYXRhLnJlZHVjZSgoYWNjTGluZVN0ciwgY3VycmVudEl0ZW0pID0+IHtcclxuICAgICAgICAgICAgbGV0IGZpcnN0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgbGV0IGNvbHVtblZhbHVlID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkgeyBhY2NMaW5lU3RyICs9IGR3bGREYXRhUGFyYW0uY29sdW1uRGVsaW1pdGVyOyB9XHJcblxyXG4gICAgICAgICAgICAgICAgY29sdW1uVmFsdWUgPSBjdXJyZW50SXRlbVtrZXldO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbHVtblZhbHVlID09PSBudWxsIHx8IGNvbHVtblZhbHVlID09PSB1bmRlZmluZWQpIHsgY29sdW1uVmFsdWUgPSAnJzsgfVxyXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlb2YgKGNvbHVtblZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblZhbHVlID0gY29sdW1uVmFsdWUudG9Mb2NhbGVTdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtblZhbHVlID0gKGR3bGREYXRhUGFyYW0ubGl0ZXJhbHNbYCR7Y29sdW1uVmFsdWV9YF0pID9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3bGREYXRhUGFyYW0ubGl0ZXJhbHNbYCR7Y29sdW1uVmFsdWV9YF0gOiBjb2x1bW5WYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uVmFsdWUgPSBKU09OLnN0cmluZ2lmeShjb2x1bW5WYWx1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBhY2NMaW5lU3RyICs9IGNvbHVtblZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGFjY0xpbmVTdHIgKyBsaW5lRGVsaW1pdGVyO1xyXG5cclxuICAgICAgICB9LCBjb2x1bW5IZWFkZXIgKyBsaW5lRGVsaW1pdGVyKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGxpbmVTdHI7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSURvd25sb2FkRGF0YVBhcmFtcyB7XHJcbiAgICBmaWxlTmFtZTogc3RyaW5nO1xyXG4gICAgbGl0ZXJhbHM6IGFueTtcclxuICAgIGNvbHVtbkRlbGltaXRlcjogc3RyaW5nO1xyXG4gICAgY29sdW1uTGlzdDogQXJyYXk8c3RyaW5nPjtcclxuICAgIGNvbHVtbkV4Y2x1ZGU6IEFycmF5PHN0cmluZz47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBEb3dubG9hZERhdGFQYXJhbXMgaW1wbGVtZW50cyBJRG93bmxvYWREYXRhUGFyYW1zIHtcclxuICAgIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgICBsaXRlcmFsczogYW55O1xyXG4gICAgY29sdW1uRGVsaW1pdGVyOiBzdHJpbmc7XHJcbiAgICBjb2x1bW5MaXN0OiBBcnJheTxzdHJpbmc+O1xyXG4gICAgY29sdW1uRXhjbHVkZTogQXJyYXk8c3RyaW5nPjtcclxufVxyXG4iXX0=
|