dts-backoffice-util 2.8.2 → 3.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.
Files changed (55) hide show
  1. package/bundles/dts-backoffice-util.umd.js +464 -1125
  2. package/bundles/dts-backoffice-util.umd.js.map +1 -1
  3. package/bundles/dts-backoffice-util.umd.min.js +1 -1
  4. package/bundles/dts-backoffice-util.umd.min.js.map +1 -1
  5. package/esm2015/dts-backoffice-util.js +3 -2
  6. package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +3 -2
  7. package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +3 -2
  8. package/esm2015/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +3 -2
  9. package/esm2015/lib/dts-backoffice-util.module.js +3 -2
  10. package/esm2015/lib/interfaces/filter-range.interface.js +3 -2
  11. package/esm2015/lib/interfaces/totvs-response.interface.js +3 -2
  12. package/esm2015/lib/model/session-info.model.js +3 -2
  13. package/esm2015/lib/pipes/dts-date-format.pipe.js +3 -2
  14. package/esm2015/lib/services/breadcrumb-control.service.js +3 -2
  15. package/esm2015/lib/services/cache-params.service.js +3 -2
  16. package/esm2015/lib/services/menu-datasul.service.js +3 -2
  17. package/esm2015/lib/services/profile.service.js +3 -2
  18. package/esm2015/lib/services/report.service.js +7 -6
  19. package/esm2015/lib/services/session-info.service.js +3 -2
  20. package/esm2015/lib/services/translate.service.js +3 -2
  21. package/esm2015/lib/utils/date.util.js +3 -2
  22. package/esm2015/lib/utils/disclaimer.util.js +3 -2
  23. package/esm2015/lib/utils/field-validation.util.js +3 -2
  24. package/esm2015/lib/utils/file.util.js +3 -2
  25. package/esm2015/lib/utils/filter-range.util.js +3 -2
  26. package/esm2015/lib/utils/generic-functions.utils.js +3 -2
  27. package/esm2015/public-api.js +3 -2
  28. package/fesm2015/dts-backoffice-util.js +48 -26
  29. package/fesm2015/dts-backoffice-util.js.map +1 -1
  30. package/package.json +8 -7
  31. package/esm5/dts-backoffice-util.js +0 -9
  32. package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.component.js +0 -448
  33. package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.model.js +0 -143
  34. package/esm5/lib/components/totvs-schedule-execution/totvs-schedule-execution.service.js +0 -434
  35. package/esm5/lib/dts-backoffice-util.module.js +0 -53
  36. package/esm5/lib/interfaces/filter-range.interface.js +0 -47
  37. package/esm5/lib/interfaces/totvs-response.interface.js +0 -16
  38. package/esm5/lib/model/session-info.model.js +0 -239
  39. package/esm5/lib/pipes/dts-date-format.pipe.js +0 -36
  40. package/esm5/lib/services/breadcrumb-control.service.js +0 -157
  41. package/esm5/lib/services/cache-params.service.js +0 -61
  42. package/esm5/lib/services/menu-datasul.service.js +0 -92
  43. package/esm5/lib/services/profile.service.js +0 -146
  44. package/esm5/lib/services/report.service.js +0 -137
  45. package/esm5/lib/services/session-info.service.js +0 -64
  46. package/esm5/lib/services/translate.service.js +0 -47
  47. package/esm5/lib/utils/date.util.js +0 -135
  48. package/esm5/lib/utils/disclaimer.util.js +0 -930
  49. package/esm5/lib/utils/field-validation.util.js +0 -358
  50. package/esm5/lib/utils/file.util.js +0 -262
  51. package/esm5/lib/utils/filter-range.util.js +0 -69
  52. package/esm5/lib/utils/generic-functions.utils.js +0 -358
  53. package/esm5/public-api.js +0 -37
  54. package/fesm5/dts-backoffice-util.js +0 -3944
  55. package/fesm5/dts-backoffice-util.js.map +0 -1
package/package.json CHANGED
@@ -1,17 +1,18 @@
1
1
  {
2
2
  "name": "dts-backoffice-util",
3
- "version": "2.8.2",
3
+ "version": "3.0.0",
4
+ "dependencies": {
5
+ "tslib": "^2.0.0"
6
+ },
4
7
  "peerDependencies": {
5
- "@angular/common": "~9.1.1",
6
- "@angular/core": "~9.1.1",
7
- "@angular/forms": "~9.1.1"
8
+ "@angular/common": "~10.2.5",
9
+ "@angular/core": "~10.2.5",
10
+ "@angular/forms": "~10.2.5"
8
11
  },
9
12
  "main": "bundles/dts-backoffice-util.umd.js",
10
- "module": "fesm5/dts-backoffice-util.js",
13
+ "module": "fesm2015/dts-backoffice-util.js",
11
14
  "es2015": "fesm2015/dts-backoffice-util.js",
12
- "esm5": "esm5/dts-backoffice-util.js",
13
15
  "esm2015": "esm2015/dts-backoffice-util.js",
14
- "fesm5": "fesm5/dts-backoffice-util.js",
15
16
  "fesm2015": "fesm2015/dts-backoffice-util.js",
16
17
  "typings": "dts-backoffice-util.d.ts",
17
18
  "metadata": "dts-backoffice-util.metadata.json",
@@ -1,9 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- /**
6
- * Generated bundle index. Do not edit.
7
- */
8
- export { UserLoginService, ProfileService, ReportFormats, ReportService, BreadcrumbControlService, MenuDatasulService, CacheParamsService, TranslateService, DateUtil, DisclaimerUtil, FieldValidationUtil, FilterRangeUtil, GenericFunctionsUtils, FileUtil, DownloadDataParams, TotvsScheduleExecutionComponent, ScheduleParameters, ExecutionStatus, ExecutionParameters, TotvsScheduleExecutionService, DtsBackofficeUtilsModule, DtsDateFormatPipe } from './public-api';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHRzLWJhY2tvZmZpY2UtdXRpbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2R0cy1iYWNrb2ZmaWNlLXV0aWwvIiwic291cmNlcyI6WyJkdHMtYmFja29mZmljZS11dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSwrYkFBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -1,448 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
4
- */
5
- import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
6
- import { PoI18nService, PoNotificationService } from '@po-ui/ng-components';
7
- import { ScheduleParameters } from './totvs-schedule-execution.model';
8
- import { NgForm } from '@angular/forms';
9
- import { TotvsScheduleExecutionService } from './totvs-schedule-execution.service';
10
- var TotvsScheduleExecutionComponent = /** @class */ (function () {
11
- function TotvsScheduleExecutionComponent(poI18nService, rpwService, poNotification) {
12
- this.poI18nService = poI18nService;
13
- this.rpwService = rpwService;
14
- this.poNotification = poNotification;
15
- this.programEMS5 = false;
16
- this.programVersion = '';
17
- this.disabledParams = false;
18
- this.loading = false;
19
- this.endExecution = new EventEmitter();
20
- this.jsonObject = {};
21
- this.literals = {};
22
- }
23
- /**
24
- * @return {?}
25
- */
26
- TotvsScheduleExecutionComponent.prototype.ngOnInit = /**
27
- * @return {?}
28
- */
29
- function () {
30
- /* VERIFICAR COMO FICARÁ A TRADUÇÃO
31
- forkJoin(
32
- this.poI18nService.getLiterals(),
33
- this.poI18nService.getLiterals({ context: 'generalRpw' })
34
- ).subscribe(literals => {
35
- literals.map(item => Object.assign(this.literals, item) );
36
- this.setupComponents();
37
- });*/
38
- this.setupComponents();
39
- };
40
- /**
41
- * @return {?}
42
- */
43
- TotvsScheduleExecutionComponent.prototype.setupComponents = /**
44
- * @return {?}
45
- */
46
- function () {
47
- this.executionTypeOptions = [
48
- { label: 'Executar Hoje', value: 1 },
49
- { label: 'Agendar Execução', value: 2 }
50
- ];
51
- this.frequencyOptions = [
52
- { label: 'Uma vez no dia', value: 'no' },
53
- { label: 'Várias vezes no dia', value: 'yes' }
54
- ];
55
- this.frequencyTypeOptions = [
56
- { label: 'Hora(s)', value: 'hour' },
57
- { label: 'Minuto(s)', value: 'minute' }
58
- ];
59
- this.weeklyOptions = [
60
- { label: 'Domingo', value: 'Sunday' },
61
- { label: 'Segunda', value: 'Monday' },
62
- { label: 'Terça', value: 'Tuesday' },
63
- { label: 'Quarta', value: 'Wednesday' },
64
- { label: 'Quinta', value: 'Thursday' },
65
- { label: 'Sexta', value: 'Friday' },
66
- { label: 'Sábado', value: 'Saturday' }
67
- ];
68
- this.zoomRpwServiceColumns = [
69
- { property: 'code', label: 'Servidor', type: 'string', width: '20%' },
70
- { property: 'name', label: 'Descrição', type: 'string', width: '80%' }
71
- ];
72
- this.model = new ScheduleParameters();
73
- this.model.executionType = 1;
74
- this.model.repeatType = 1;
75
- this.model.repeatExecution = false;
76
- };
77
- /**
78
- * @param {?} schParam
79
- * @return {?}
80
- */
81
- TotvsScheduleExecutionComponent.prototype.setScheduleParameters = /**
82
- * @param {?} schParam
83
- * @return {?}
84
- */
85
- function (schParam) {
86
- if (!schParam) {
87
- return;
88
- }
89
- this.model = schParam;
90
- };
91
- /**
92
- * @param {?} value
93
- * @return {?}
94
- */
95
- TotvsScheduleExecutionComponent.prototype.fieldRpwServiceFormat = /**
96
- * @param {?} value
97
- * @return {?}
98
- */
99
- function (value) {
100
- return value.code + " - " + value.name;
101
- };
102
- /**
103
- * @return {?}
104
- */
105
- TotvsScheduleExecutionComponent.prototype.isExecutionSchedule = /**
106
- * @return {?}
107
- */
108
- function () {
109
- return (this.model.executionType === 2);
110
- };
111
- /**
112
- * @return {?}
113
- */
114
- TotvsScheduleExecutionComponent.prototype.isRepeatExecution = /**
115
- * @return {?}
116
- */
117
- function () {
118
- return this.model.repeatExecution;
119
- };
120
- /**
121
- * @return {?}
122
- */
123
- TotvsScheduleExecutionComponent.prototype.isFrenquency = /**
124
- * @return {?}
125
- */
126
- function () {
127
- return (this.model.frequency === 'yes');
128
- };
129
- /**
130
- * @return {?}
131
- */
132
- TotvsScheduleExecutionComponent.prototype.changeRepeatExecution = /**
133
- * @return {?}
134
- */
135
- function () {
136
- /** @type {?} */
137
- var date = new Date();
138
- if (!this.model.execAppointHourInit) {
139
- this.model.execAppointHourInit = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
140
- }
141
- if (!this.model.execAppointHourFinal) {
142
- this.model.execAppointHourFinal = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
143
- }
144
- this.model.selectWeeklys = [];
145
- this.model.dayOfMonth = 0;
146
- this.model.frequency = 'no';
147
- this.model.frequencyType = 'hour';
148
- this.model.frequencyValue = 0;
149
- };
150
- /**
151
- * @return {?}
152
- */
153
- TotvsScheduleExecutionComponent.prototype.changeExecutionType = /**
154
- * @return {?}
155
- */
156
- function () {
157
- /** @type {?} */
158
- var date = new Date();
159
- this.model.execAppointDate = date;
160
- this.model.execAppointHour = this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes());
161
- };
162
- /**
163
- * @return {?}
164
- */
165
- TotvsScheduleExecutionComponent.prototype.changeTypeFrequency = /**
166
- * @return {?}
167
- */
168
- function () {
169
- };
170
- /**
171
- * @param {?} codTab
172
- * @return {?}
173
- */
174
- TotvsScheduleExecutionComponent.prototype.getActiveTab = /**
175
- * @param {?} codTab
176
- * @return {?}
177
- */
178
- function (codTab) {
179
- return (this.model.repeatType === codTab);
180
- };
181
- /**
182
- * @param {?} codTab
183
- * @return {?}
184
- */
185
- TotvsScheduleExecutionComponent.prototype.setActiveTab = /**
186
- * @param {?} codTab
187
- * @return {?}
188
- */
189
- function (codTab) {
190
- this.model.repeatType = codTab;
191
- };
192
- /**
193
- * @param {?} num
194
- * @return {?}
195
- */
196
- TotvsScheduleExecutionComponent.prototype.addZero = /**
197
- * @param {?} num
198
- * @return {?}
199
- */
200
- function (num) {
201
- /** @type {?} */
202
- var str = "" + num;
203
- if (num < 10) {
204
- str = "0" + num;
205
- }
206
- return str;
207
- };
208
- /**
209
- * @return {?}
210
- */
211
- TotvsScheduleExecutionComponent.prototype.executeSchedule = /**
212
- * @return {?}
213
- */
214
- function () {
215
- var _this = this;
216
- if (this.disabledParams) {
217
- return;
218
- }
219
- if (!this.validate()) {
220
- return;
221
- }
222
- this.jsonObject = {};
223
- this.jsonObject.status = 'active';
224
- this.jsonObject.processID = this.programName;
225
- this.jsonObject.recurrent = this.model.repeatExecution;
226
- this.jsonObject.executionParameter = {};
227
- if (this.model.executionType === 1) {
228
- /** @type {?} */
229
- var date = new Date();
230
- this.jsonObject.firstExecution = date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + "T" + this.addZero(date.getHours()) + ":" + this.addZero(date.getMinutes()) + ":00.000Z";
231
- }
232
- if (this.model.executionType === 2) {
233
- this.jsonObject.firstExecution = this.model.execAppointDate + "T" + this.model.execAppointHour + ":00.000Z";
234
- }
235
- this.jsonObject.executionParameter.parametros = [];
236
- this.jsonObject.executionParameter.parametros[0] = { chave: 'rpwServer', valor: this.model.executionServer };
237
- this.jsonObject.executionParameter.parametros[1] = { chave: 'RPW_PROGRAM', valor: this.externalName };
238
- this.jsonObject.executionParameter.parametros[2] = { chave: 'RPW_PRG_EMS5', valor: this.programEMS5 ? 'yes' : 'no' };
239
- this.jsonObject.executionParameter.parametros[3] = { chave: 'RPW_PRG_VERS', valor: this.programVersion };
240
- this.jsonObject.executionParameter.parametros[4] = {};
241
- this.jsonObject.executionParameter.parametros[4].parametros_negocio = this.parameters;
242
- // Executa hoje ou agendada
243
- this.rpwService.createExecution(this.jsonObject, this.loading).subscribe((/**
244
- * @return {?}
245
- */
246
- function () {
247
- _this.poNotification.success('Agendamento realizado com sucesso !');
248
- }));
249
- if (this.model.repeatExecution) {
250
- if (this.model.repeatType === 1) {
251
- this.jsonObject.daily = {
252
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
253
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm')
254
- };
255
- }
256
- if (this.model.repeatType === 2) {
257
- this.jsonObject.weekly = {
258
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
259
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
260
- daysOfWeek: this.model.selectWeeklys
261
- };
262
- }
263
- if (this.model.repeatType === 3) {
264
- this.jsonObject.monthly = {
265
- hour: this.getHourOrMinute(this.model.execAppointHourInit, 'h'),
266
- minute: this.getHourOrMinute(this.model.execAppointHourInit, 'm'),
267
- day: this.model.dayOfMonth
268
- };
269
- }
270
- if (this.isFrenquency()) {
271
- this.jsonObject.rangeExecutions = {
272
- frequency: {
273
- type: this.model.frequencyType,
274
- value: this.model.frequencyValue
275
- },
276
- rangeLimit: {
277
- hour: this.getHourOrMinute(this.model.execAppointHourFinal, 'h'),
278
- minute: this.getHourOrMinute(this.model.execAppointHourFinal, 'm')
279
- }
280
- };
281
- }
282
- // Executa a diária, semanal ou mensal
283
- this.rpwService.createExecution(this.jsonObject, this.loading).subscribe((/**
284
- * @return {?}
285
- */
286
- function () {
287
- }));
288
- }
289
- this.endExecution.emit(this.model);
290
- };
291
- /**
292
- * @param {?} value
293
- * @param {?} type
294
- * @return {?}
295
- */
296
- TotvsScheduleExecutionComponent.prototype.getHourOrMinute = /**
297
- * @param {?} value
298
- * @param {?} type
299
- * @return {?}
300
- */
301
- function (value, type) {
302
- if (type === 'h') {
303
- return +value.substring(0, 2);
304
- }
305
- if (type === 'm') {
306
- return +value.substring(3, 6);
307
- }
308
- };
309
- /**
310
- * @param {?} hourInit
311
- * @param {?} hourFinal
312
- * @return {?}
313
- */
314
- TotvsScheduleExecutionComponent.prototype.compareHour = /**
315
- * @param {?} hourInit
316
- * @param {?} hourFinal
317
- * @return {?}
318
- */
319
- function (hourInit, hourFinal) {
320
- if (hourInit === hourFinal) {
321
- return false;
322
- }
323
- if (this.getHourOrMinute(hourInit, 'h') < this.getHourOrMinute(hourFinal, 'h')) {
324
- return true;
325
- }
326
- if (this.getHourOrMinute(hourInit, 'm') > this.getHourOrMinute(hourFinal, 'm')) {
327
- return false;
328
- }
329
- return true;
330
- };
331
- /**
332
- * @return {?}
333
- */
334
- TotvsScheduleExecutionComponent.prototype.validate = /**
335
- * @return {?}
336
- */
337
- function () {
338
- if (!this.scheduleExecutionForm.valid) {
339
- this.poNotification.error('Verifique as inconsistências em tela.');
340
- return false;
341
- }
342
- if (!this.model.executionServer) {
343
- this.poNotification.error('Servidor de Execução não foi informado.');
344
- return false;
345
- }
346
- if (this.isExecutionSchedule() && (!this.model.execAppointDate || !this.model.execAppointHour)) {
347
- this.poNotification.error('Informar a data e a hora para agendamento da execução.');
348
- return false;
349
- }
350
- if (this.model.repeatExecution) {
351
- if (!this.model.execAppointHourInit) {
352
- this.poNotification.error('Informar a hora de início para a execução.');
353
- return false;
354
- }
355
- if (this.model.repeatType === 2 && (this.model.selectWeeklys.length === 0)) {
356
- this.poNotification.error('Informar os dias da semana para a execução.');
357
- return false;
358
- }
359
- if (this.model.repeatType === 3 && (!this.model.dayOfMonth)) {
360
- this.poNotification.error('Informar o dia para a execução.');
361
- return false;
362
- }
363
- if (this.isFrenquency()) {
364
- if (!this.compareHour(this.model.execAppointHourInit, this.model.execAppointHourFinal)) {
365
- this.poNotification.error('Hora Fim deve ser maior que Hora Início.');
366
- return false;
367
- }
368
- if (this.model.frequencyValue === 0) {
369
- this.poNotification.error('Informar a frequência de execução (A cada hora/minuto).');
370
- return false;
371
- }
372
- }
373
- }
374
- return true;
375
- };
376
- TotvsScheduleExecutionComponent.decorators = [
377
- { type: Component, args: [{
378
- selector: 'app-totvs-schedule-execution',
379
- template: "<form #scheduleExecutionForm=\"ngForm\">\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionType\"\r\n p-label=\"Data de Execu\u00E7\u00E3o\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionType\"\r\n [p-options]=\"executionTypeOptions\"\r\n (p-change)=\"changeExecutionType()\">\r\n </po-radio-group>\r\n\r\n <po-datepicker *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"model.execAppointDate\"\r\n p-label=\"Agendar para\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointDate\">\r\n </po-datepicker>\r\n\r\n <po-input *ngIf=isExecutionSchedule()\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHour\"\r\n p-label=\"Hora\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHour\">\r\n </po-input>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-lookup\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"executionServer\"\r\n p-label=\"Servidor de Execu\u00E7\u00E3o\"\r\n p-placeholder=\"Servidor de Execu\u00E7\u00E3o\"\r\n [p-columns]=\"zoomRpwServiceColumns\"\r\n [p-field-format]=\"fieldRpwServiceFormat\"\r\n [p-filter-service]=\"rpwService\"\r\n p-field-label=\"name\"\r\n p-field-value=\"code\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.executionServer\">\r\n </po-lookup>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-switch\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"repeatExecution\"\r\n p-label=\"Repetir ocorr\u00EAncia ?\"\r\n p-label-off=\"N\u00E3o\"\r\n p-label-on=\"Sim\"\r\n [(ngModel)]=\"model.repeatExecution\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"changeRepeatExecution()\">\r\n </po-switch>\r\n </div>\r\n\r\n <div class=\"po-row\" *ngIf=\"isRepeatExecution()\">\r\n \r\n <po-tabs>\r\n\r\n <po-tab \r\n p-label=\"Di\u00E1ria\" \r\n [p-active]=\"getActiveTab(1)\" \r\n (p-click)=\"setActiveTab(1)\">\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyDaily\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n \r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"> \r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitDaily\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n \r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalDaily\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n \r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueDaily\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n \r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeDaily\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Semanal\"\r\n [p-active]=\"getActiveTab(2)\"\r\n (p-click)=\"setActiveTab(2)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-multiselect\r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"selectWeeklys\"\r\n p-label=\"Dias da Semana\"\r\n p-placeholder=\"Escolha os dias da semana\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.selectWeeklys\"\r\n [p-options]=\"weeklyOptions\">\r\n </po-multiselect>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyWeekly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitWeekly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n\r\n <po-tab \r\n p-label=\"Mensal\" \r\n [p-active]=\"getActiveTab(3)\" \r\n (p-click)=\"setActiveTab(3)\">\r\n\r\n <div class=\"po-row po-sm-12 po-md-12 po-lg-12 po-xl-12\">\r\n <po-number\r\n class=\"po-sm-3 po-md-3 po-lg-3 po-xl-3\"\r\n name=\"dayOfMonth\"\r\n p-label=\"Dia do m\u00EAs\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"2\"\r\n p-min=\"0\"\r\n p-max=\"31\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.dayOfMonth\">\r\n </po-number>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-radio-group \r\n class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\"\r\n name=\"frequencyMonthly\"\r\n p-label=\"Frequ\u00EAncia\"\r\n p-columns=1\r\n [(ngModel)]=\"model.frequency\"\r\n [p-disabled]=\"disabledParams\"\r\n [p-options]=\"frequencyOptions\"\r\n (p-change)=\"changeTypeFrequency()\">\r\n </po-radio-group>\r\n </div>\r\n\r\n <div class=\"po-row po-sm-6 po-md-6 po-lg-6 po-xl-6\">\r\n <po-input\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourInitMonthly\"\r\n p-label=\"Hora In\u00EDcio\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourInit\">\r\n </po-input>\r\n\r\n <po-input *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-6 po-md-6 po-lg-6 po-xl-6\"\r\n name=\"execAppointHourFinalWeekly\"\r\n p-label=\"Hora Fim\"\r\n p-mask=\"99:99\"\r\n p-mask-format-model=\"true\"\r\n p-pattern=\"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$\"\r\n p-error-pattern=\"Hora inv\u00E1lida\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.execAppointHourFinal\">\r\n </po-input>\r\n\r\n <po-number *ngIf=\"isFrenquency()\"\r\n class=\"po-sm-5 po-md-5 po-lg-5 po-xl-5\"\r\n name=\"frequencyValueWeekly\"\r\n p-label=\"A cada\"\r\n p-minlength=\"1\"\r\n p-maxlength=\"3\"\r\n p-min=\"0\"\r\n p-max=\"999\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyValue\">\r\n </po-number>\r\n\r\n <po-select *ngIf=\"isFrenquency()\"\r\n class=\"po-mt-3 po-sm-7 po-md-7 po-lg-7 po-xl-7\"\r\n name=\"frequencyTypeWeekly\"\r\n p-label=\"\"\r\n [p-options]=\"frequencyTypeOptions\"\r\n [p-disabled]=\"disabledParams\"\r\n [(ngModel)]=\"model.frequencyType\">\r\n </po-select>\r\n </div>\r\n </po-tab>\r\n </po-tabs>\r\n </div>\r\n\r\n <div class=\"po-sm-12 po-md-12 po-lg-12 po-xl-12\" style=\"padding-top: 15px;\">\r\n <po-button\r\n style=\"float: right;\"\r\n p-label=\"Gerar Agendamento RPW\"\r\n [p-disabled]=\"disabledParams\"\r\n (click)=\"executeSchedule()\">\r\n </po-button>\r\n </div>\r\n</form>\r\n",
380
- styles: [""]
381
- }] }
382
- ];
383
- /** @nocollapse */
384
- TotvsScheduleExecutionComponent.ctorParameters = function () { return [
385
- { type: PoI18nService },
386
- { type: TotvsScheduleExecutionService },
387
- { type: PoNotificationService }
388
- ]; };
389
- TotvsScheduleExecutionComponent.propDecorators = {
390
- scheduleExecutionForm: [{ type: ViewChild, args: ['scheduleExecutionForm', { static: true },] }],
391
- programName: [{ type: Input }],
392
- externalName: [{ type: Input }],
393
- programEMS5: [{ type: Input }],
394
- programVersion: [{ type: Input }],
395
- parameters: [{ type: Input }],
396
- disabledParams: [{ type: Input }],
397
- loading: [{ type: Input }],
398
- endExecution: [{ type: Output }]
399
- };
400
- return TotvsScheduleExecutionComponent;
401
- }());
402
- export { TotvsScheduleExecutionComponent };
403
- if (false) {
404
- /** @type {?} */
405
- TotvsScheduleExecutionComponent.prototype.scheduleExecutionForm;
406
- /** @type {?} */
407
- TotvsScheduleExecutionComponent.prototype.programName;
408
- /** @type {?} */
409
- TotvsScheduleExecutionComponent.prototype.externalName;
410
- /** @type {?} */
411
- TotvsScheduleExecutionComponent.prototype.programEMS5;
412
- /** @type {?} */
413
- TotvsScheduleExecutionComponent.prototype.programVersion;
414
- /** @type {?} */
415
- TotvsScheduleExecutionComponent.prototype.parameters;
416
- /** @type {?} */
417
- TotvsScheduleExecutionComponent.prototype.disabledParams;
418
- /** @type {?} */
419
- TotvsScheduleExecutionComponent.prototype.loading;
420
- /** @type {?} */
421
- TotvsScheduleExecutionComponent.prototype.endExecution;
422
- /** @type {?} */
423
- TotvsScheduleExecutionComponent.prototype.executionTypeOptions;
424
- /** @type {?} */
425
- TotvsScheduleExecutionComponent.prototype.frequencyOptions;
426
- /** @type {?} */
427
- TotvsScheduleExecutionComponent.prototype.frequencyTypeOptions;
428
- /** @type {?} */
429
- TotvsScheduleExecutionComponent.prototype.weeklyOptions;
430
- /** @type {?} */
431
- TotvsScheduleExecutionComponent.prototype.zoomRpwServiceColumns;
432
- /** @type {?} */
433
- TotvsScheduleExecutionComponent.prototype.model;
434
- /**
435
- * @type {?}
436
- * @private
437
- */
438
- TotvsScheduleExecutionComponent.prototype.jsonObject;
439
- /** @type {?} */
440
- TotvsScheduleExecutionComponent.prototype.literals;
441
- /** @type {?} */
442
- TotvsScheduleExecutionComponent.prototype.poI18nService;
443
- /** @type {?} */
444
- TotvsScheduleExecutionComponent.prototype.rpwService;
445
- /** @type {?} */
446
- TotvsScheduleExecutionComponent.prototype.poNotification;
447
- }
448
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2R0cy1iYWNrb2ZmaWNlLXV0aWwvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFzQixhQUFhLEVBQUUscUJBQXFCLEVBQWtCLE1BQU0sc0JBQXNCLENBQUM7QUFDaEgsT0FBTyxFQUF1QixrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUVuRjtJQWtCSSx5Q0FDVyxhQUE0QixFQUM1QixVQUF5QyxFQUN6QyxjQUFxQztRQUZyQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixlQUFVLEdBQVYsVUFBVSxDQUErQjtRQUN6QyxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFWdkMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFFcEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQWNwQyxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBRTdCLGFBQVEsR0FBUSxFQUFFLENBQUM7SUFWbkIsQ0FBQzs7OztJQVlELGtEQUFROzs7SUFBUjtRQUNJOzs7Ozs7O2VBT087UUFFUCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0Is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cnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUG9SYWRpb0dyb3VwT3B0aW9uLCBQb0kxOG5TZXJ2aWNlLCBQb05vdGlmaWNhdGlvblNlcnZpY2UsIFBvTG9va3VwQ29sdW1uIH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xyXG5pbXBvcnQgeyBJU2NoZWR1bGVQYXJhbWV0ZXJzLCBTY2hlZHVsZVBhcmFtZXRlcnMgfSBmcm9tICcuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgVG90dnNTY2hlZHVsZUV4ZWN1dGlvblNlcnZpY2UgfSBmcm9tICcuL3RvdHZzLXNjaGVkdWxlLWV4ZWN1dGlvbi5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90b3R2cy1zY2hlZHVsZS1leGVjdXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdG90dnMtc2NoZWR1bGUtZXhlY3V0aW9uLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRvdHZzU2NoZWR1bGVFeGVjdXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQFZpZXdDaGlsZCgnc2NoZWR1bGVFeGVjdXRpb25Gb3JtJywgeyBzdGF0aWM6IHRydWUgfSkgc2NoZWR1bGVFeGVjdXRpb25Gb3JtOiBOZ0Zvcm07XHJcblxyXG4gICAgQElucHV0KCkgcHJvZ3JhbU5hbWU6IHN0cmluZztcclxuICAgIEBJbnB1dCgpIGV4dGVybmFsTmFtZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHJvZ3JhbUVNUzUgPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHByb2dyYW1WZXJzaW9uID0gJyc7XHJcbiAgICBASW5wdXQoKSBwYXJhbWV0ZXJzOiBbXTtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkUGFyYW1zID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgZW5kRXhlY3V0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBwb0kxOG5TZXJ2aWNlOiBQb0kxOG5TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBycHdTZXJ2aWNlOiBUb3R2c1NjaGVkdWxlRXhlY3V0aW9uU2VydmljZSxcclxuICAgICAgICBwdWJsaWMgcG9Ob3RpZmljYXRpb246IFBvTm90aWZpY2F0aW9uU2VydmljZSkge1xyXG4gICAgfVxyXG5cclxuICAgIGV4ZWN1dGlvblR5cGVPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgZnJlcXVlbmN5T3B0aW9uczogQXJyYXk8UG9SYWRpb0dyb3VwT3B0aW9uPjtcclxuICAgIGZyZXF1ZW5jeVR5cGVPcHRpb25zOiBBcnJheTxQb1JhZGlvR3JvdXBPcHRpb24+O1xyXG4gICAgd2Vla2x5T3B0aW9uczogQXJyYXk8UG9SYWRpb0dyb3VwT3B0aW9uPjtcclxuICAgIHpvb21ScHdTZXJ2aWNlQ29sdW1uczogQXJyYXk8UG9Mb29rdXBDb2x1bW4+O1xyXG4gICAgbW9kZWw6IFNjaGVkdWxlUGFyYW1ldGVycztcclxuICAgIHByaXZhdGUganNvbk9iamVjdDogYW55ID0ge307XHJcblxyXG4gICAgbGl0ZXJhbHM6IGFueSA9IHt9O1xyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIC8qIFZFUklGSUNBUiBDT01PIEZJQ0FSw4EgQSBUUkFEVcOHw4NPXHJcbiAgICAgICAgZm9ya0pvaW4oXHJcbiAgICAgICAgICAgICAgdGhpcy5wb0kxOG5TZXJ2aWNlLmdldExpdGVyYWxzKCksXHJcbiAgICAgICAgICAgICAgdGhpcy5wb0kxOG5TZXJ2aWNlLmdldExpdGVyYWxzKHsgY29udGV4dDogJ2dlbmVyYWxScHcnIH0pXHJcbiAgICAgICAgICApLnN1YnNjcmliZShsaXRlcmFscyA9PiB7XHJcbiAgICAgICAgICAgICAgbGl0ZXJhbHMubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih0aGlzLmxpdGVyYWxzLCBpdGVtKSApO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0dXBDb21wb25lbnRzKCk7XHJcbiAgICAgICAgICB9KTsqL1xyXG5cclxuICAgICAgICB0aGlzLnNldHVwQ29tcG9uZW50cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldHVwQ29tcG9uZW50cygpIHtcclxuICAgICAgICB0aGlzLmV4ZWN1dGlvblR5cGVPcHRpb25zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnRXhlY3V0YXIgSG9qZScsIHZhbHVlOiAxIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBZ2VuZGFyIEV4ZWN1w6fDo28nLCB2YWx1ZTogMiB9XHJcbiAgICAgICAgXTtcclxuXHJcbiAgICAgICAgdGhpcy5mcmVxdWVuY3lPcHRpb25zID0gW1xyXG4gICAgICAgICAgICB7IGxhYmVsOiAnVW1hIHZleiBubyBkaWEnLCB2YWx1ZTogJ25vJyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnVsOhcmlhcyB2ZXplcyBubyBkaWEnLCB2YWx1ZTogJ3llcycgfVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIHRoaXMuZnJlcXVlbmN5VHlwZU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdIb3JhKHMpJywgdmFsdWU6ICdob3VyJyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnTWludXRvKHMpJywgdmFsdWU6ICdtaW51dGUnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLndlZWtseU9wdGlvbnMgPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdEb21pbmdvJywgdmFsdWU6ICdTdW5kYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTZWd1bmRhJywgdmFsdWU6ICdNb25kYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdUZXLDp2EnLCB2YWx1ZTogJ1R1ZXNkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdRdWFydGEnLCB2YWx1ZTogJ1dlZG5lc2RheScgfSxcclxuICAgICAgICAgICAgeyBsYWJlbDogJ1F1aW50YScsIHZhbHVlOiAnVGh1cnNkYXknIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdTZXh0YScsIHZhbHVlOiAnRnJpZGF5JyB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnU8OhYmFkbycsIHZhbHVlOiAnU2F0dXJkYXknIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLnpvb21ScHdTZXJ2aWNlQ29sdW1ucyA9IFtcclxuICAgICAgICAgICAgeyBwcm9wZXJ0eTogJ2NvZGUnLCBsYWJlbDogJ1NlcnZpZG9yJywgdHlwZTogJ3N0cmluZycsIHdpZHRoOiAnMjAlJyB9LFxyXG4gICAgICAgICAgICB7IHByb3BlcnR5OiAnbmFtZScsIGxhYmVsOiAnRGVzY3Jpw6fDo28nLCB0eXBlOiAnc3RyaW5nJywgd2lkdGg6ICc4MCUnIH1cclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICB0aGlzLm1vZGVsID0gbmV3IFNjaGVkdWxlUGFyYW1ldGVycygpO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9IDE7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5yZXBlYXRUeXBlID0gMTtcclxuICAgICAgICB0aGlzLm1vZGVsLnJlcGVhdEV4ZWN1dGlvbiA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRTY2hlZHVsZVBhcmFtZXRlcnMoc2NoUGFyYW06IElTY2hlZHVsZVBhcmFtZXRlcnMpIHtcclxuICAgICAgICBpZiAoIXNjaFBhcmFtKSB7IHJldHVybjsgfVxyXG4gICAgICAgIHRoaXMubW9kZWwgPSBzY2hQYXJhbTtcclxuICAgIH1cclxuXHJcbiAgICBmaWVsZFJwd1NlcnZpY2VGb3JtYXQodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWUuY29kZX0gLSAke3ZhbHVlLm5hbWV9YDtcclxuICAgIH1cclxuXHJcbiAgICBpc0V4ZWN1dGlvblNjaGVkdWxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5leGVjdXRpb25UeXBlID09PSAyKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlcGVhdEV4ZWN1dGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgaXNGcmVucXVlbmN5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5mcmVxdWVuY3kgPT09ICd5ZXMnKTtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VSZXBlYXRFeGVjdXRpb24oKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0KSB7IHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VySW5pdCA9IGAke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9YDsgfVxyXG4gICAgICAgIGlmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJGaW5hbCkgeyB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsID0gYCR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0SG91cnMoKSl9OiR7dGhpcy5hZGRaZXJvKGRhdGUuZ2V0TWludXRlcygpKX1gOyB9XHJcbiAgICAgICAgdGhpcy5tb2RlbC5zZWxlY3RXZWVrbHlzID0gW107XHJcbiAgICAgICAgdGhpcy5tb2RlbC5kYXlPZk1vbnRoID0gMDtcclxuICAgICAgICB0aGlzLm1vZGVsLmZyZXF1ZW5jeSA9ICdubyc7XHJcbiAgICAgICAgdGhpcy5tb2RlbC5mcmVxdWVuY3lUeXBlID0gJ2hvdXInO1xyXG4gICAgICAgIHRoaXMubW9kZWwuZnJlcXVlbmN5VmFsdWUgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZUV4ZWN1dGlvblR5cGUoKSB7XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgIHRoaXMubW9kZWwuZXhlY0FwcG9pbnREYXRlID0gZGF0ZTtcclxuICAgICAgICB0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ciA9IGAke3RoaXMuYWRkWmVybyhkYXRlLmdldEhvdXJzKCkpfToke3RoaXMuYWRkWmVybyhkYXRlLmdldE1pbnV0ZXMoKSl9YDtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VUeXBlRnJlcXVlbmN5KCkge1xyXG4gICAgfVxyXG5cclxuICAgIGdldEFjdGl2ZVRhYihjb2RUYWI6IG51bWJlcikge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSBjb2RUYWIpO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEFjdGl2ZVRhYihjb2RUYWI6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMubW9kZWwucmVwZWF0VHlwZSA9IGNvZFRhYjtcclxuICAgIH1cclxuXHJcbiAgICBhZGRaZXJvKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBsZXQgc3RyID0gYCR7bnVtfWA7XHJcbiAgICAgICAgaWYgKG51bSA8IDEwKSB7IHN0ciA9IGAwJHtudW19YDsgfVxyXG4gICAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhlY3V0ZVNjaGVkdWxlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkUGFyYW1zKSB7IHJldHVybjsgfVxyXG4gICAgICAgIGlmICghdGhpcy52YWxpZGF0ZSgpKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICB0aGlzLmpzb25PYmplY3QgPSB7fTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3Quc3RhdHVzID0gJ2FjdGl2ZSc7XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LnByb2Nlc3NJRCA9IHRoaXMucHJvZ3JhbU5hbWU7XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LnJlY3VycmVudCA9IHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uO1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9PT0gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LmZpcnN0RXhlY3V0aW9uID0gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0keyhkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtkYXRlLmdldERhdGUoKX1UJHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRIb3VycygpKX06JHt0aGlzLmFkZFplcm8oZGF0ZS5nZXRNaW51dGVzKCkpfTowMC4wMDBaYDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZXhlY3V0aW9uVHlwZSA9PT0gMikge1xyXG4gICAgICAgICAgICB0aGlzLmpzb25PYmplY3QuZmlyc3RFeGVjdXRpb24gPSBgJHt0aGlzLm1vZGVsLmV4ZWNBcHBvaW50RGF0ZX1UJHt0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91cn06MDAuMDAwWmA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3MgPSBbXTtcclxuICAgICAgICB0aGlzLmpzb25PYmplY3QuZXhlY3V0aW9uUGFyYW1ldGVyLnBhcmFtZXRyb3NbMF0gPSB7IGNoYXZlOiAncnB3U2VydmVyJywgdmFsb3I6IHRoaXMubW9kZWwuZXhlY3V0aW9uU2VydmVyIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzFdID0geyBjaGF2ZTogJ1JQV19QUk9HUkFNJywgdmFsb3I6IHRoaXMuZXh0ZXJuYWxOYW1lIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzJdID0geyBjaGF2ZTogJ1JQV19QUkdfRU1TNScsIHZhbG9yOiB0aGlzLnByb2dyYW1FTVM1ID8gJ3llcycgOiAnbm8nIH07XHJcbiAgICAgICAgdGhpcy5qc29uT2JqZWN0LmV4ZWN1dGlvblBhcmFtZXRlci5wYXJhbWV0cm9zWzNdID0geyBjaGF2ZTogJ1JQV19QUkdfVkVSUycsIHZhbG9yOiB0aGlzLnByb2dyYW1WZXJzaW9uIH07XHJcblxyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1s0XSA9IHt9O1xyXG4gICAgICAgIHRoaXMuanNvbk9iamVjdC5leGVjdXRpb25QYXJhbWV0ZXIucGFyYW1ldHJvc1s0XS5wYXJhbWV0cm9zX25lZ29jaW8gPSB0aGlzLnBhcmFtZXRlcnM7XHJcblxyXG4gICAgICAgIC8vIEV4ZWN1dGEgaG9qZSBvdSBhZ2VuZGFkYVxyXG4gICAgICAgIHRoaXMucnB3U2VydmljZS5jcmVhdGVFeGVjdXRpb24odGhpcy5qc29uT2JqZWN0LCB0aGlzLmxvYWRpbmcpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uc3VjY2VzcygnQWdlbmRhbWVudG8gcmVhbGl6YWRvIGNvbSBzdWNlc3NvICEnKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0RXhlY3V0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC5kYWlseSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdoJyksXHJcbiAgICAgICAgICAgICAgICAgICAgbWludXRlOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsICdtJylcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuanNvbk9iamVjdC53ZWVrbHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG91cjogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnbScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheXNPZldlZWs6IHRoaXMubW9kZWwuc2VsZWN0V2Vla2x5c1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwucmVwZWF0VHlwZSA9PT0gMykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0Lm1vbnRobHkgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaG91cjogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgIG1pbnV0ZTogdGhpcy5nZXRIb3VyT3JNaW51dGUodGhpcy5tb2RlbC5leGVjQXBwb2ludEhvdXJJbml0LCAnbScpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheTogdGhpcy5tb2RlbC5kYXlPZk1vbnRoXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZyZW5xdWVuY3koKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5qc29uT2JqZWN0LnJhbmdlRXhlY3V0aW9ucyA9IHtcclxuICAgICAgICAgICAgICAgICAgICBmcmVxdWVuY3k6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdGhpcy5tb2RlbC5mcmVxdWVuY3lUeXBlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5tb2RlbC5mcmVxdWVuY3lWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2VMaW1pdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBob3VyOiB0aGlzLmdldEhvdXJPck1pbnV0ZSh0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckZpbmFsLCAnaCcpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW51dGU6IHRoaXMuZ2V0SG91ck9yTWludXRlKHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwsICdtJylcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBFeGVjdXRhIGEgZGnDoXJpYSwgc2VtYW5hbCBvdSBtZW5zYWxcclxuICAgICAgICAgICAgdGhpcy5ycHdTZXJ2aWNlLmNyZWF0ZUV4ZWN1dGlvbih0aGlzLmpzb25PYmplY3QsIHRoaXMubG9hZGluZykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVuZEV4ZWN1dGlvbi5lbWl0KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEhvdXJPck1pbnV0ZSh2YWx1ZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0eXBlID09PSAnaCcpIHsgcmV0dXJuICt2YWx1ZS5zdWJzdHJpbmcoMCwgMik7IH1cclxuICAgICAgICBpZiAodHlwZSA9PT0gJ20nKSB7IHJldHVybiArdmFsdWUuc3Vic3RyaW5nKDMsIDYpOyB9XHJcbiAgICB9XHJcblxyXG4gICAgY29tcGFyZUhvdXIoaG91ckluaXQ6IHN0cmluZywgaG91ckZpbmFsOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBpZiAoaG91ckluaXQgPT09IGhvdXJGaW5hbCkgeyByZXR1cm4gZmFsc2U7IH1cclxuICAgICAgICBpZiAodGhpcy5nZXRIb3VyT3JNaW51dGUoaG91ckluaXQsICdoJykgPCB0aGlzLmdldEhvdXJPck1pbnV0ZShob3VyRmluYWwsICdoJykpIHsgcmV0dXJuIHRydWU7IH1cclxuICAgICAgICBpZiAodGhpcy5nZXRIb3VyT3JNaW51dGUoaG91ckluaXQsICdtJykgPiB0aGlzLmdldEhvdXJPck1pbnV0ZShob3VyRmluYWwsICdtJykpIHsgcmV0dXJuIGZhbHNlOyB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY2hlZHVsZUV4ZWN1dGlvbkZvcm0udmFsaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignVmVyaWZpcXVlIGFzIGluY29uc2lzdMOqbmNpYXMgZW0gdGVsYS4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWN1dGlvblNlcnZlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdTZXJ2aWRvciBkZSBFeGVjdcOnw6NvIG7Do28gZm9pIGluZm9ybWFkby4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNFeGVjdXRpb25TY2hlZHVsZSgpICYmICghdGhpcy5tb2RlbC5leGVjQXBwb2ludERhdGUgfHwgIXRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyKSkge1xyXG4gICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBhIGRhdGEgZSBhIGhvcmEgcGFyYSBhZ2VuZGFtZW50byBkYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9Ob3RpZmljYXRpb24uZXJyb3IoJ0luZm9ybWFyIGEgaG9yYSBkZSBpbsOtY2lvIHBhcmEgYSBleGVjdcOnw6NvLicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tb2RlbC5yZXBlYXRUeXBlID09PSAyICYmICh0aGlzLm1vZGVsLnNlbGVjdFdlZWtseXMubGVuZ3RoID09PSAwKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSW5mb3JtYXIgb3MgZGlhcyBkYSBzZW1hbmEgcGFyYSBhIGV4ZWN1w6fDo28uJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLnJlcGVhdFR5cGUgPT09IDMgJiYgKCF0aGlzLm1vZGVsLmRheU9mTW9udGgpKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBvIGRpYSBwYXJhIGEgZXhlY3XDp8Ojby4nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGcmVucXVlbmN5KCkpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb21wYXJlSG91cih0aGlzLm1vZGVsLmV4ZWNBcHBvaW50SG91ckluaXQsIHRoaXMubW9kZWwuZXhlY0FwcG9pbnRIb3VyRmluYWwpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb05vdGlmaWNhdGlvbi5lcnJvcignSG9yYSBGaW0gZGV2ZSBzZXIgbWFpb3IgcXVlIEhvcmEgSW7DrWNpby4nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubW9kZWwuZnJlcXVlbmN5VmFsdWUgPT09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvTm90aWZpY2F0aW9uLmVycm9yKCdJbmZvcm1hciBhIGZyZXF1w6puY2lhIGRlIGV4ZWN1w6fDo28gKEEgY2FkYSBob3JhL21pbnV0bykuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=