@reusa/ngx-reusa-app-lib 0.0.1322 → 0.0.1324

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 (87) hide show
  1. package/esm2022/lib/components/add-employer/add-employer.component.mjs +196 -132
  2. package/esm2022/lib/components/add-participant/add-participant.component.mjs +29 -24
  3. package/esm2022/lib/components/add-payment/add-payment.component.mjs +45 -31
  4. package/esm2022/lib/components/address/address.component.mjs +97 -46
  5. package/esm2022/lib/components/bank-details/bank-details.component.mjs +139 -75
  6. package/esm2022/lib/components/contact-us/contact-us.component.mjs +42 -28
  7. package/esm2022/lib/components/email-update/email-update.component.mjs +119 -62
  8. package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +165 -84
  9. package/esm2022/lib/components/footer/footer.component.mjs +23 -11
  10. package/esm2022/lib/components/header/header.component.mjs +163 -109
  11. package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +29 -18
  12. package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +22 -16
  13. package/esm2022/lib/components/job-title/job-title.component.mjs +20 -16
  14. package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +389 -208
  15. package/esm2022/lib/components/lexis-nexis/lexis-nexis.component.mjs +83 -21
  16. package/esm2022/lib/components/menu/menu.component.mjs +63 -25
  17. package/esm2022/lib/components/mfa/mfa.component.mjs +155 -98
  18. package/esm2022/lib/components/mfa2/mfa2.component.mjs +54 -30
  19. package/esm2022/lib/components/money-expect/money-expect.component.mjs +31 -23
  20. package/esm2022/lib/components/profile/profile.component.mjs +34 -14
  21. package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +17 -10
  22. package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +80 -27
  23. package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +29 -8
  24. package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +172 -119
  25. package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +122 -41
  26. package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +7 -7
  27. package/esm2022/lib/components/search-employer/search-employer.component.mjs +10 -7
  28. package/esm2022/lib/components/security-question/security-question.component.mjs +19 -9
  29. package/esm2022/lib/components/select/select.component.mjs +10 -5
  30. package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +72 -52
  31. package/esm2022/lib/components/user-login/user-login.component.mjs +116 -82
  32. package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +69 -47
  33. package/esm2022/lib/models/questionnaire/ComboModel.mjs +480 -1
  34. package/esm2022/lib/pages/common/login/login.component.mjs +7 -2
  35. package/esm2022/lib/pages/popovers/language/language.page.mjs +2 -1
  36. package/esm2022/lib/pipes/translate/dynamic-translate.pipe.mjs +2 -2
  37. package/esm2022/lib/validations/AppValidators.mjs +9 -9
  38. package/fesm2022/reusa-ngx-reusa-app-lib.mjs +3103 -1492
  39. package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
  40. package/lib/components/add-employer/add-employer.component.d.ts +22 -73
  41. package/lib/components/add-employer/add-employer.component.d.ts.map +1 -1
  42. package/lib/components/add-participant/add-participant.component.d.ts +4 -1
  43. package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
  44. package/lib/components/add-payment/add-payment.component.d.ts +1 -2
  45. package/lib/components/add-payment/add-payment.component.d.ts.map +1 -1
  46. package/lib/components/address/address.component.d.ts +10 -1
  47. package/lib/components/address/address.component.d.ts.map +1 -1
  48. package/lib/components/bank-details/bank-details.component.d.ts +17 -1
  49. package/lib/components/bank-details/bank-details.component.d.ts.map +1 -1
  50. package/lib/components/contact-us/contact-us.component.d.ts +4 -1
  51. package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
  52. package/lib/components/email-update/email-update.component.d.ts +6 -1
  53. package/lib/components/email-update/email-update.component.d.ts.map +1 -1
  54. package/lib/components/employer-grid/employer-grid.component.d.ts +6 -24
  55. package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
  56. package/lib/components/footer/footer.component.d.ts.map +1 -1
  57. package/lib/components/header/header.component.d.ts +3 -0
  58. package/lib/components/header/header.component.d.ts.map +1 -1
  59. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +3 -1
  60. package/lib/components/job-search-result-page/job-search-result-page.component.d.ts.map +1 -1
  61. package/lib/components/job-title/job-title.component.d.ts +3 -1
  62. package/lib/components/job-title/job-title.component.d.ts.map +1 -1
  63. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +5 -1
  64. package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts.map +1 -1
  65. package/lib/components/lexis-nexis/lexis-nexis.component.d.ts.map +1 -1
  66. package/lib/components/menu/menu.component.d.ts +11 -1
  67. package/lib/components/menu/menu.component.d.ts.map +1 -1
  68. package/lib/components/mfa/mfa.component.d.ts +6 -1
  69. package/lib/components/mfa/mfa.component.d.ts.map +1 -1
  70. package/lib/components/profile/profile.component.d.ts.map +1 -1
  71. package/lib/components/questionnaire/common-success/common-success.page.d.ts +1 -0
  72. package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
  73. package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
  74. package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
  75. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +5 -1
  76. package/lib/components/ssn-reverify/ssn-reverify.component.d.ts.map +1 -1
  77. package/lib/components/user-login/user-login.component.d.ts +7 -1
  78. package/lib/components/user-login/user-login.component.d.ts.map +1 -1
  79. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +7 -1
  80. package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts.map +1 -1
  81. package/lib/models/questionnaire/ComboModel.d.ts +80 -0
  82. package/lib/models/questionnaire/ComboModel.d.ts.map +1 -1
  83. package/lib/pages/common/login/login.component.d.ts.map +1 -1
  84. package/lib/pages/popovers/language/language.page.d.ts.map +1 -1
  85. package/lib/validations/AppValidators.d.ts +8 -8
  86. package/lib/validations/AppValidators.d.ts.map +1 -1
  87. package/package.json +1 -1
@@ -10,6 +10,7 @@ import * as i6 from "@angular/material/form-field";
10
10
  import * as i7 from "@angular/forms";
11
11
  import * as i8 from "primeng/dialog";
12
12
  import * as i9 from "primeng/divider";
13
+ import * as i10 from "@ngx-translate/core";
13
14
  const _c0 = a0 => ({ Choice: a0 });
14
15
  const _c1 = a0 => [a0];
15
16
  const _c2 = (a0, a1) => ({ Choices: a0, QuestionId: a1 });
@@ -59,12 +60,16 @@ function LexisNexisComponent_div_3_div_1_Template(rf, ctx) { if (rf & 1) {
59
60
  } }
60
61
  function LexisNexisComponent_div_3_mat_error_2_Template(rf, ctx) { if (rf & 1) {
61
62
  i0.ɵɵelementStart(0, "mat-error", 14);
62
- i0.ɵɵtext(1, " All fields are required. ");
63
+ i0.ɵɵtext(1);
64
+ i0.ɵɵpipe(2, "translate");
63
65
  i0.ɵɵelementEnd();
66
+ } if (rf & 2) {
67
+ i0.ɵɵadvance(1);
68
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "common.all.fields.required"), " ");
64
69
  } }
65
70
  function LexisNexisComponent_div_3_Template(rf, ctx) { if (rf & 1) {
66
71
  i0.ɵɵelementStart(0, "div");
67
- i0.ɵɵtemplate(1, LexisNexisComponent_div_3_div_1_Template, 7, 4, "div", 5)(2, LexisNexisComponent_div_3_mat_error_2_Template, 2, 0, "mat-error", 6);
72
+ i0.ɵɵtemplate(1, LexisNexisComponent_div_3_div_1_Template, 7, 4, "div", 5)(2, LexisNexisComponent_div_3_mat_error_2_Template, 3, 3, "mat-error", 6);
68
73
  i0.ɵɵelementEnd();
69
74
  } if (rf & 2) {
70
75
  const d_r1 = ctx.$implicit;
@@ -146,7 +151,12 @@ export class LexisNexisComponent {
146
151
  else {
147
152
  console.log("LN failed for other reasons");
148
153
  }
149
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
154
+ if (localStorage.getItem("language") === "es") {
155
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
156
+ }
157
+ else {
158
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
159
+ }
150
160
  setTimeout(() => this.usps.emit(), 1000);
151
161
  return throwError(() => new Error(error));
152
162
  }))
@@ -161,15 +171,24 @@ export class LexisNexisComponent {
161
171
  this.lnAuthenticationQA(this.authSelectionRequest);
162
172
  }
163
173
  else {
164
- console.log("auth selection id is missing");
165
- this.util.info('We were not able to verify your identity. Please follow the instructions.');
174
+ if (localStorage.getItem("language") === "es") {
175
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
176
+ }
177
+ else {
178
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
179
+ }
166
180
  setTimeout(() => this.usps.emit(), 1000);
167
181
  }
168
182
  }
169
183
  }
170
184
  else {
171
185
  console.log("Empty response received");
172
- this.util.info('We were not able to verify your identity. Please follow the instructions.');
186
+ if (localStorage.getItem("language") === "es") {
187
+ this.util.info('No pudimos verificar su identidad. Siga las instrucciones.');
188
+ }
189
+ else {
190
+ this.util.info('We were not able to verify your identity. Please follow the instructions.');
191
+ }
173
192
  setTimeout(() => this.usps.emit(), 1000);
174
193
  }
175
194
  });
@@ -193,7 +212,12 @@ export class LexisNexisComponent {
193
212
  else {
194
213
  console.log("LN failed for other reason");
195
214
  }
196
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
215
+ if (localStorage.getItem("language") === "es") {
216
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
217
+ }
218
+ else {
219
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
220
+ }
197
221
  setTimeout(() => this.usps.emit(), 1000);
198
222
  return of(null);
199
223
  }))
@@ -210,14 +234,24 @@ export class LexisNexisComponent {
210
234
  }
211
235
  else {
212
236
  console.log("auth selection id is missing");
213
- this.util.info('We were not able to verify your identity. Please follow the instructions.');
237
+ if (localStorage.getItem("language") === "es") {
238
+ this.util.info('No pudimos verificar su identidad. Siga las instrucciones.');
239
+ }
240
+ else {
241
+ this.util.info('We were not able to verify your identity. Please follow the instructions.');
242
+ }
214
243
  setTimeout(() => this.usps.emit(), 1000);
215
244
  }
216
245
  }
217
246
  }
218
247
  else {
219
248
  console.log("Empty response received");
220
- this.util.info('We were not able to verify your identity. Please follow the instructions.');
249
+ if (localStorage.getItem("language") === "es") {
250
+ this.util.info('No pudimos verificar su identidad. Siga las instrucciones.');
251
+ }
252
+ else {
253
+ this.util.info('We were not able to verify your identity. Please follow the instructions.');
254
+ }
221
255
  }
222
256
  });
223
257
  }
@@ -235,28 +269,53 @@ export class LexisNexisComponent {
235
269
  }
236
270
  else if (error.msg.includes("Lexis Nexis Verification Failed. Status:Reject")) {
237
271
  this.display = false;
238
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
272
+ if (localStorage.getItem("language") === "es") {
273
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
274
+ }
275
+ else {
276
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
277
+ }
239
278
  setTimeout(() => this.usps.emit(), 1000);
240
279
  }
241
280
  else if (error.msg.includes("fail_invalid_parameter")) {
242
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
281
+ if (localStorage.getItem("language") === "es") {
282
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
283
+ }
284
+ else {
285
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
286
+ }
243
287
  setTimeout(() => this.usps.emit(), 1000);
244
288
  }
245
289
  else if (error.msg[0].includes('Claimant Account is Locked')) {
246
290
  this.display = false;
247
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
291
+ if (localStorage.getItem("language") === "es") {
292
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
293
+ }
294
+ else {
295
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
296
+ }
248
297
  setTimeout(() => this.usps.emit(), 1000);
249
298
  }
250
299
  else {
251
300
  this.display = false;
252
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
301
+ if (localStorage.getItem("language") === "es") {
302
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
303
+ }
304
+ else {
305
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
306
+ }
253
307
  setTimeout(() => this.usps.emit(), 1000);
254
308
  }
255
309
  return of(null);
256
310
  }), tap(x => {
257
311
  if (!x) {
258
312
  this.display = false;
259
- this.util.showError('We were not able to verify your identity. Please follow the instructions.');
313
+ if (localStorage.getItem("language") === "es") {
314
+ this.util.showError('No pudimos verificar su identidad. Siga las instrucciones.');
315
+ }
316
+ else {
317
+ this.util.showError('We were not able to verify your identity. Please follow the instructions.');
318
+ }
260
319
  setTimeout(() => this.usps.emit(), 1000);
261
320
  return;
262
321
  }
@@ -294,7 +353,7 @@ export class LexisNexisComponent {
294
353
  return this.answers['iidqa.answers'].Questions.map(x => !!x).reduce((x, y) => x && y);
295
354
  }
296
355
  static { this.ɵfac = function LexisNexisComponent_Factory(t) { return new (t || LexisNexisComponent)(i0.ɵɵdirectiveInject(i1.UtilService), i0.ɵɵdirectiveInject(i2.LexisNexisService)); }; }
297
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LexisNexisComponent, selectors: [["app-lexis-nexis"]], inputs: { display: "display", userDetails: "userDetails", page: "page", userModel: "userModel", userName: "userName", customerEventType: "customerEventType" }, outputs: { success: "success", close: "close", error: "error", usps: "usps" }, features: [i0.ɵɵNgOnChangesFeature], decls: 8, vars: 6, consts: [["modal", "true", "appendTo", "body", "position", "top", 3, "visible", "breakpoints", "visibleChange"], [1, "dialog-content"], ["name", "help-outline"], [4, "ngIf"], ["shape", "round", "type", "submit", 1, "ionButton", 3, "click"], ["class", "question-field", 4, "ngFor", "ngForOf"], ["class", "validator", 4, "ngIf"], [1, "question-field"], [1, "question", 3, "for"], ["class", "answer", 4, "ngFor", "ngForOf"], [1, "hint"], [1, "answer"], ["type", "radio", 3, "name", "id", "ngModel", "value", "ngModelChange"], [3, "for"], [1, "validator"]], template: function LexisNexisComponent_Template(rf, ctx) { if (rf & 1) {
356
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LexisNexisComponent, selectors: [["app-lexis-nexis"]], inputs: { display: "display", userDetails: "userDetails", page: "page", userModel: "userModel", userName: "userName", customerEventType: "customerEventType" }, outputs: { success: "success", close: "close", error: "error", usps: "usps" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 9, consts: [["modal", "true", "appendTo", "body", "position", "top", 3, "visible", "breakpoints", "visibleChange"], [1, "dialog-content"], ["name", "help-outline"], [4, "ngIf"], ["shape", "round", "type", "submit", 1, "ionButton", 3, "click"], ["class", "question-field", 4, "ngFor", "ngForOf"], ["class", "validator", 4, "ngIf"], [1, "question-field"], [1, "question", 3, "for"], ["class", "answer", 4, "ngFor", "ngForOf"], [1, "hint"], [1, "answer"], ["type", "radio", 3, "name", "id", "ngModel", "value", "ngModelChange"], [3, "for"], [1, "validator"]], template: function LexisNexisComponent_Template(rf, ctx) { if (rf & 1) {
298
357
  i0.ɵɵelementStart(0, "p-dialog", 0);
299
358
  i0.ɵɵlistener("visibleChange", function LexisNexisComponent_Template_p_dialog_visibleChange_0_listener($event) { return ctx.display = $event; });
300
359
  i0.ɵɵelementStart(1, "form", 1);
@@ -304,17 +363,20 @@ export class LexisNexisComponent {
304
363
  i0.ɵɵelementEnd();
305
364
  i0.ɵɵelementStart(5, "p-footer")(6, "ion-button", 4);
306
365
  i0.ɵɵlistener("click", function LexisNexisComponent_Template_ion_button_click_6_listener() { return ctx.submit(); });
307
- i0.ɵɵtext(7, "Submit");
366
+ i0.ɵɵtext(7);
367
+ i0.ɵɵpipe(8, "translate");
308
368
  i0.ɵɵelementEnd()()();
309
369
  } if (rf & 2) {
310
- i0.ɵɵproperty("visible", ctx.display)("breakpoints", i0.ɵɵpureFunction0(5, _c3));
370
+ i0.ɵɵproperty("visible", ctx.display)("breakpoints", i0.ɵɵpureFunction0(8, _c3));
311
371
  i0.ɵɵadvance(3);
312
- i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 3, ctx.data));
313
- } }, dependencies: [i3.IonButton, i3.IonIcon, i4.NgForOf, i4.NgIf, i5.Footer, i6.MatError, i7.ɵNgNoValidate, i7.DefaultValueAccessor, i7.RadioControlValueAccessor, i7.NgControlStatus, i7.NgControlStatusGroup, i7.NgModel, i7.NgForm, i8.Dialog, i9.Divider, i4.AsyncPipe], styles: [".dialog-content[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{display:inline-block}ion-icon[_ngcontent-%COMP%]{font-size:90px;vertical-align:top}.question-field[_ngcontent-%COMP%]{margin:10px 0}.question-field[_ngcontent-%COMP%] .question[_ngcontent-%COMP%]{font-size:20px}.question-field[_ngcontent-%COMP%] .answer[_ngcontent-%COMP%]{margin-left:8px}.hint[_ngcontent-%COMP%]{font-weight:600}"] }); }
372
+ i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(4, 4, ctx.data));
373
+ i0.ɵɵadvance(4);
374
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(8, 6, "common.submit"));
375
+ } }, dependencies: [i3.IonButton, i3.IonIcon, i4.NgForOf, i4.NgIf, i5.Footer, i6.MatError, i7.ɵNgNoValidate, i7.DefaultValueAccessor, i7.RadioControlValueAccessor, i7.NgControlStatus, i7.NgControlStatusGroup, i7.NgModel, i7.NgForm, i8.Dialog, i9.Divider, i4.AsyncPipe, i10.TranslatePipe], styles: [".dialog-content[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{display:inline-block}ion-icon[_ngcontent-%COMP%]{font-size:90px;vertical-align:top}.question-field[_ngcontent-%COMP%]{margin:10px 0}.question-field[_ngcontent-%COMP%] .question[_ngcontent-%COMP%]{font-size:20px}.question-field[_ngcontent-%COMP%] .answer[_ngcontent-%COMP%]{margin-left:8px}.hint[_ngcontent-%COMP%]{font-weight:600}"] }); }
314
376
  }
315
377
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LexisNexisComponent, [{
316
378
  type: Component,
317
- args: [{ selector: 'app-lexis-nexis', template: "<p-dialog [(visible)]=\"display\" modal=\"true\" appendTo=\"body\" [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" position=\"top\">\r\n <form class=\"dialog-content\">\r\n <ion-icon name=\"help-outline\"></ion-icon>\r\n <div *ngIf=\"data | async; let d\">\r\n <div *ngFor=\"let q of d['iidqa.question_set']?.Questions; let i = index\" class=\"question-field\">\r\n <label class=\"question\" [for]=\"'question-' + i\">{{q.Text.Statement}}</label>\r\n <div class=\"answer\" *ngFor=\"let choices of q.Choices; let j = index\">\r\n <input [name]=\"'question-' + i\" type=\"radio\" [id]=\"'question-'+i+'-'+j\" [(ngModel)]=\"answers['iidqa.answers'].Questions[i]\" [value]=\"{Choices: [{Choice: choices.ChoiceId}], QuestionId: q.QuestionId}\">\r\n <label [for]=\"'question-'+i+'-'+j\">\r\n {{choices.Text.Statement}}\r\n </label>\r\n </div>\r\n <div class=\"hint\">\r\n {{q.HelpText.Statement}}\r\n </div>\r\n <p-divider></p-divider>\r\n </div>\r\n <mat-error class=\"validator\" *ngIf=\"submitted && !checkForm()\">\r\n All fields are required.\r\n </mat-error>\r\n </div>\r\n </form>\r\n <p-footer>\r\n <ion-button shape=\"round\" type=\"submit\" class=\"ionButton\" (click)=\"submit()\">Submit</ion-button>\r\n </p-footer>\r\n</p-dialog>", styles: [".dialog-content>*{display:inline-block}ion-icon{font-size:90px;vertical-align:top}.question-field{margin:10px 0}.question-field .question{font-size:20px}.question-field .answer{margin-left:8px}.hint{font-weight:600}\n"] }]
379
+ args: [{ selector: 'app-lexis-nexis', template: "<p-dialog [(visible)]=\"display\" modal=\"true\" appendTo=\"body\" [breakpoints]=\"{'1024px': '75vw', '768px': '85vw', '640px': '100vw'}\" position=\"top\">\r\n <form class=\"dialog-content\">\r\n <ion-icon name=\"help-outline\"></ion-icon>\r\n <div *ngIf=\"data | async; let d\">\r\n <div *ngFor=\"let q of d['iidqa.question_set']?.Questions; let i = index\" class=\"question-field\">\r\n <label class=\"question\" [for]=\"'question-' + i\">{{q.Text.Statement}}</label>\r\n <div class=\"answer\" *ngFor=\"let choices of q.Choices; let j = index\">\r\n <input [name]=\"'question-' + i\" type=\"radio\" [id]=\"'question-'+i+'-'+j\" [(ngModel)]=\"answers['iidqa.answers'].Questions[i]\" [value]=\"{Choices: [{Choice: choices.ChoiceId}], QuestionId: q.QuestionId}\">\r\n <label [for]=\"'question-'+i+'-'+j\">\r\n {{choices.Text.Statement}}\r\n </label>\r\n </div>\r\n <div class=\"hint\">\r\n {{q.HelpText.Statement}}\r\n </div>\r\n <p-divider></p-divider>\r\n </div>\r\n <mat-error class=\"validator\" *ngIf=\"submitted && !checkForm()\">\r\n {{'common.all.fields.required'| translate}}\r\n </mat-error>\r\n </div>\r\n </form>\r\n <p-footer>\r\n <ion-button shape=\"round\" type=\"submit\" class=\"ionButton\" (click)=\"submit()\">{{'common.submit'| translate}}</ion-button>\r\n </p-footer>\r\n</p-dialog>", styles: [".dialog-content>*{display:inline-block}ion-icon{font-size:90px;vertical-align:top}.question-field{margin:10px 0}.question-field .question{font-size:20px}.question-field .answer{margin-left:8px}.hint{font-weight:600}\n"] }]
318
380
  }], () => [{ type: i1.UtilService }, { type: i2.LexisNexisService }], { display: [{
319
381
  type: Input
320
382
  }], userDetails: [{
@@ -337,4 +399,4 @@ export class LexisNexisComponent {
337
399
  type: Output
338
400
  }] }); })();
339
401
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LexisNexisComponent, { className: "LexisNexisComponent", filePath: "lib\\components\\lexis-nexis\\lexis-nexis.component.ts", lineNumber: 18 }); })();
340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4aXMtbmV4aXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xleGlzLW5leGlzL2xleGlzLW5leGlzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9sZXhpcy1uZXhpcy9sZXhpcy1uZXhpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdqRyxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDR25ELCtCQUFxRSxnQkFBQTtJQUNNLHlRQUFxQixlQUFlLGdDQUFlO0lBQTNILGlCQUF3TTtJQUN4TSxpQ0FBbUM7SUFDL0IsWUFDSDtJQUFBLGlCQUFRLEVBQUE7Ozs7Ozs7O0lBSEYsZUFBd0I7SUFBeEIseUNBQXdCLHVDQUFBLDREQUFBLG9JQUFBO0lBQ3hCLGVBQTJCO0lBQTNCLHFEQUEyQjtJQUM5QixlQUNIO0lBREcsMERBQ0g7OztJQU5SLDhCQUFnRyxlQUFBO0lBQzVDLFlBQW9CO0lBQUEsaUJBQVE7SUFDNUUsaUZBS007SUFDTiwrQkFBa0I7SUFDZCxZQUNKO0lBQUEsaUJBQU07SUFDTiw0QkFBdUI7SUFDM0IsaUJBQU07Ozs7SUFYc0IsZUFBdUI7SUFBdkIsd0NBQXVCO0lBQUMsZUFBb0I7SUFBcEIseUNBQW9CO0lBQzVCLGVBQWM7SUFBZCxzQ0FBYztJQU9sRCxlQUNKO0lBREksd0RBQ0o7OztJQUdKLHFDQUErRDtJQUMzRCwwQ0FDSjtJQUFBLGlCQUFZOzs7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aUJBQU87WUFDUCxnQ0FBVSxvQkFBQTtZQUNvRCxvR0FBUyxZQUFRLElBQUM7WUFBQyxzQkFBTTtZQUFBLGlCQUFhLEVBQUEsRUFBQTs7WUF2QjlGLHFDQUFxQiwyQ0FBQTtZQUdsQixlQUFvQjtZQUFwQixxREFBb0I7OztpRkRjcEIsbUJBQW1CO2NBTC9CLFNBQVM7MkJBQ0UsaUJBQWlCOzRFQU1YLE9BQU87a0JBQXRCLEtBQUs7WUFHVSxXQUFXO2tCQUExQixLQUFLO1lBR1UsSUFBSTtrQkFBbkIsS0FBSztZQUVVLFNBQVM7a0JBQXhCLEtBQUs7WUFFVSxRQUFRO2tCQUF2QixLQUFLO1lBRVUsaUJBQWlCO2tCQUFoQyxLQUFLO1lBRUksT0FBTztrQkFBaEIsTUFBTTtZQUVHLEtBQUs7a0JBQWQsTUFBTTtZQUVHLEtBQUs7a0JBQWQsTUFBTTtZQUVHLElBQUk7a0JBQWIsTUFBTTs7a0ZBdEJJLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExleGlzTmV4aXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGV4aXMtbmV4aXMvbGV4aXMubmV4aXMuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIE9ic2VydmFibGUsIG9mLCB0YXAsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWwnO1xyXG5pbXBvcnQgeyBMZXhpc05leGlzQWNjb3VudENyZWF0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGV4aXNOZXhpc0FjY291bnRDcmVhdGlvbk1vZGVsJztcclxuaW1wb3J0IHsgTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXNwb25zZU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVzcG9uc2VNb2RlbCc7XHJcbmltcG9ydCB7IFVzZXJNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9Vc2VyTW9kZWwnO1xyXG5cclxuLyoqXHJcbiAqIFRvIEFjdGl2YXRlIHRoaXMgbW9kYWwgYXNzaWduIGRpc3BsYXk9dHJ1ZSwgdGhpcyB3aWxsIHdvcmsgYXMgbWFueSB0aW1lcyBhcyBuZWVkZWRcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWxleGlzLW5leGlzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGV4aXMtbmV4aXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2xleGlzLW5leGlzLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMZXhpc05leGlzQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXkgPSBmYWxzZTtcclxuXHJcbiAgLyp1c2VyRGV0YWlscyA9IG51bGwgZm9yIG5vcm1hbCBmbG93LCAhPSBmb3IgU2lnblVwIGZsb3cgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdXNlckRldGFpbHMgOiBMZXhpc05leGlzQWNjb3VudENyZWF0aW9uTW9kZWwgPSBudWxsO1xyXG5cclxuICAvKnBhZ2UgPSBcIjM0NVwiIGZvciBTaWduVXAgZmxvdywgbnVsbCBmb3Igb3RoZXJzKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcGFnZSA6IG51bWJlciA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VyTW9kZWwgOiBVc2VyTW9kZWw7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VyTmFtZSA6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbWVyRXZlbnRUeXBlIDogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KCkgc3VjY2VzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSBlcnJvcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoKSB1c3BzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcXVlc3Rpb25MZW5ndGg6IG51bWJlcjtcclxuICBwdWJsaWMgc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgcHVibGljIGF1dGhTZWxlY3Rpb25SZXF1ZXN0IDogTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWw7XHJcblxyXG4gIGdldCBibGFua0Fuc3dlcnMoKTogTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWx7cmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgYXV0aF9zZWxlY3Rpb25faWQ6IG51bGwsIFxyXG4gICAgXCJpaWRxYS5hbnN3ZXJzXCI6IHtcclxuICAgICAgUXVlc3Rpb25TZXRJZDogbnVsbCxcclxuICAgICAgUXVlc3Rpb25zOiBbXVxyXG4gIH19KSl9O1xyXG5cclxuICBwdWJsaWMgYW5zd2VyczogTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWwgPSB0aGlzLmJsYW5rQW5zd2VycztcclxuXHJcbiAgcHVibGljIGRhdGEgOiBPYnNlcnZhYmxlPExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVzcG9uc2VNb2RlbD47XHJcbiAgcHVibGljIGFuc3dlckFycmF5OiBzdHJpbmdbXSA9ICBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgbG46IExleGlzTmV4aXNTZXJ2aWNlXHJcbiAgKSB7fVxyXG4gIC8qKlxyXG4gICAqIHdpbGwgY2FsbCBhcGkgd2hlbiBkaXNwbGF5IGlzIHNldCB0byB0cnVlXHJcbiAgICogQHBhcmFtIGNoYW5nZXMgXHJcbiAgICogQHJldHVybnMgXHJcbiAgICovXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKCFjaGFuZ2VzLmRpc3BsYXkuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMucGFnZSA9PT0gMzQ1KSB7XHJcbiAgICAgIHRoaXMubG5RdWVyeUFwaVBJKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxuUXVlcnlBcGkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxuUXVlcnlBcGkoKXtcclxuICAgIHZhciB1TmFtZSA9IHRoaXMudXNlck5hbWU7XHJcbiAgICB2YXIgY3VzdG9tZXJFdmVudFR5cGUgPSB0aGlzLmN1c3RvbWVyRXZlbnRUeXBlO1xyXG4gICAgaWYodGhpcy51c2VyTW9kZWwpe1xyXG4gICAgICB1TmFtZSA9IHRoaXMudXNlck1vZGVsLnVzZXJuYW1lO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sbi5nZXRMblF1ZXJ5QXBpUmVzcG9uc2UodU5hbWUsIGN1c3RvbWVyRXZlbnRUeXBlKVxyXG4gICAgLnBpcGUoXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgICAgaWYgKGVycm9yLm1zZy5pbmNsdWRlcyhcIkxleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZWplY3RcIikpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdMZXhpcyBOZXhpcyBWZXJpZmljYXRpb24gRmFpbGVkLiBTdGF0dXM6UmVqZWN0Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tc2cuaW5jbHVkZXMoXCJMZXhpcyBOZXhpcyBWZXJpZmljYXRpb24gRmFpbGVkLiBTdGF0dXM6UmV2aWV3XCIpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnTGV4aXMgTmV4aXMgVmVyaWZpY2F0aW9uIEZhaWxlZC4gU3RhdHVzOlJldmlldycpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiZmFpbF9pbnZhbGlkX3BhcmFtZXRlclwiKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJmYWlsIGludmFsaWQgcGFyYW1ldGVyXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubXNnWzBdLmluY2x1ZGVzKCdDbGFpbWFudCBBY2NvdW50IGlzIExvY2tlZCcpKXsgICAgXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkNsYWltYW50IEFjY291bnQgaXMgTG9ja2VkXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcIkxOIGZhaWxlZCBmb3Igb3RoZXIgcmVhc29uc1wiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGVycm9yKSk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55IHwgbnVsbCkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UgIT09IG51bGwpIHtcclxuICAgICAgICBpZihyZXNwb25zZT8ucmVxdWVzdF9yZXN1bHQgPT09IFwic3VjY2Vzc1wiICYmIChyZXNwb25zZT8ucmV2aWV3X3N0YXR1cyA9PT0gXCJjaGFsbGVuZ2VcIikpe1xyXG4gICAgICAgICAgaWYocmVzcG9uc2U/LmF1dGhfc2VsZWN0aW9uX21ldGhvZHNbMF0/LmF1dGhfc2VsZWN0aW9uX2lkKXtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VsZWN0aW9uUmVxdWVzdCA9IHtcclxuICAgICAgICAgICAgICBhdXRoX3NlbGVjdGlvbl9pZCA6IHJlc3BvbnNlPy5hdXRoX3NlbGVjdGlvbl9tZXRob2RzWzBdPy5hdXRoX3NlbGVjdGlvbl9pZCxcclxuICAgICAgICAgICAgICAnaWlkcWEuYW5zd2Vycyc6IG51bGxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5sbkF1dGhlbnRpY2F0aW9uUUEodGhpcy5hdXRoU2VsZWN0aW9uUmVxdWVzdCk7XHJcbiAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXV0aCBzZWxlY3Rpb24gaWQgaXMgbWlzc2luZ1wiKTtcclxuICAgICAgICAgICAgdGhpcy51dGlsLmluZm8oJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJFbXB0eSByZXNwb25zZSByZWNlaXZlZFwiKTtcclxuICAgICAgICB0aGlzLnV0aWwuaW5mbygnV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG5RdWVyeUFwaVBJKCl7XHJcbiAgICB0aGlzLmxuLmdldExuUXVlcnlBcGlQSVJlc3BvbnNlKHRoaXMudXNlckRldGFpbHMpXHJcbiAgICAucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiTGV4aXMgTmV4aXMgVmVyaWZpY2F0aW9uIEZhaWxlZC4gU3RhdHVzOlJlamVjdFwiKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0xleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZWplY3QnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZy5pbmNsdWRlcyhcIkxleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZXZpZXdcIikpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdMZXhpcyBOZXhpcyBWZXJpZmljYXRpb24gRmFpbGVkLiBTdGF0dXM6UmV2aWV3Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tc2cuaW5jbHVkZXMoXCJmYWlsX2ludmFsaWRfcGFyYW1ldGVyXCIpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZhaWwgaW52YWxpZCBwYXJhbWV0ZXJcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tc2dbMF0uaW5jbHVkZXMoJ0NsYWltYW50IEFjY291bnQgaXMgTG9ja2VkJykpeyAgICBcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2xhaW1hbnQgQWNjb3VudCBpcyBMb2NrZWRcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiTE4gZmFpbGVkIGZvciBvdGhlciByZWFzb25cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXNwcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkgfCBudWxsKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmKHJlc3BvbnNlPy5yZXF1ZXN0X3Jlc3VsdCA9PT0gXCJzdWNjZXNzXCIgJiYgKHJlc3BvbnNlPy5yZXZpZXdfc3RhdHVzID09PSBcImNoYWxsZW5nZVwiKSl7XHJcbiAgICAgICAgICBpZihyZXNwb25zZT8uYXV0aF9zZWxlY3Rpb25fbWV0aG9kc1swXT8uYXV0aF9zZWxlY3Rpb25faWQpe1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZWxlY3Rpb25SZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICAgIGF1dGhfc2VsZWN0aW9uX2lkIDogcmVzcG9uc2U/LmF1dGhfc2VsZWN0aW9uX21ldGhvZHNbMF0/LmF1dGhfc2VsZWN0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICdpaWRxYS5hbnN3ZXJzJzogbnVsbFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxuQXV0aGVudGljYXRpb25RQSh0aGlzLmF1dGhTZWxlY3Rpb25SZXF1ZXN0KTtcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJhdXRoIHNlbGVjdGlvbiBpZCBpcyBtaXNzaW5nXCIpO1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuaW5mbygnV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXNwcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkVtcHR5IHJlc3BvbnNlIHJlY2VpdmVkXCIpO1xyXG4gICAgICAgIHRoaXMudXRpbC5pbmZvKCdXZSB3ZXJlIG5vdCBhYmxlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMuJyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBzdWJtaXQgYnV0dG9uIGFuZCBnZXQgbmV3IHF1ZXN0aW9uIGluIHRoZSBiZWdpbm5pbmdcclxuICAgKiBAcGFyYW0gYXV0aFNlbGVjdGlvblJlcXVlc3QgXHJcbiAgICovXHJcbiAgbG5BdXRoZW50aWNhdGlvblFBKGF1dGhTZWxlY3Rpb25SZXF1ZXN0IDogTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWwpe1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5sbi5sbkF1dGhlbnRpY2F0aW9uUUEoYXV0aFNlbGVjdGlvblJlcXVlc3QpXHJcbiAgICAucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBpZihlcnJvci5tc2cuaW5jbHVkZXMoXCJMZXhpcyBOZXhpcyBWZXJpZmllZFwiKSl7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdWNjZXNzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmKGVycm9yLm1zZy5pbmNsdWRlcyhcIkxleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZWplY3RcIikpe1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdXZSB3ZXJlIG5vdCBhYmxlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMuJyk7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXNwcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiZmFpbF9pbnZhbGlkX3BhcmFtZXRlclwiKSkge1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZ1swXS5pbmNsdWRlcygnQ2xhaW1hbnQgQWNjb3VudCBpcyBMb2NrZWQnKSl7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKHggPT4geyBcclxuICAgICAgICBpZiAoIXgpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IFxyXG4gICAgICAgIGlmKHg/LnJldmlld19zdGF0dXMgPT0gXCJwYXNzXCIpe1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3VjY2Vzcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hbnN3ZXJzID0gdGhpcy5ibGFua0Fuc3dlcnM7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkxlbmd0aCA9IHhbJ2lpZHFhLnF1ZXN0aW9uX3NldCddLlF1ZXN0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5hbnN3ZXJzLmF1dGhfc2VsZWN0aW9uX2lkID0geC5hdXRoX3NlbGVjdGlvbl9pZDtcclxuICAgICAgICB0aGlzLmFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvblNldElkID0geFsnaWlkcWEucXVlc3Rpb25fc2V0J10uUXVlc3Rpb25TZXRJZDtcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhlIHN1Ym1pdCBidXR0b24gcHJlc3NcclxuICAgKi9cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgaWYoIXRoaXMuY2hlY2tGb3JtKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sbkF1dGhlbnRpY2F0aW9uUUEodGhpcy5hbnN3ZXJzKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgaXMgZm9ybSB2YWxpZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvbnMubGVuZ3RoICE9PSB0aGlzLnF1ZXN0aW9uTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5hbnN3ZXJzWydpaWRxYS5hbnN3ZXJzJ10uUXVlc3Rpb25zLm1hcCh4ID0+ICEheCkucmVkdWNlKCh4LHkpID0+IHgmJnkpO1xyXG4gIH1cclxuICBcclxufSIsIjxwLWRpYWxvZyBbKHZpc2libGUpXT1cImRpc3BsYXlcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBwb3NpdGlvbj1cInRvcFwiPlxyXG4gICA8Zm9ybSBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwiaGVscC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhIHwgYXN5bmM7IGxldCBkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHEgb2YgZFsnaWlkcWEucXVlc3Rpb25fc2V0J10/LlF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicXVlc3Rpb24tZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInF1ZXN0aW9uXCIgW2Zvcl09XCIncXVlc3Rpb24tJyArIGlcIj57e3EuVGV4dC5TdGF0ZW1lbnR9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyXCIgKm5nRm9yPVwibGV0IGNob2ljZXMgb2YgcS5DaG9pY2VzOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25hbWVdPVwiJ3F1ZXN0aW9uLScgKyBpXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidxdWVzdGlvbi0nK2krJy0nK2pcIiBbKG5nTW9kZWwpXT1cImFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvbnNbaV1cIiBbdmFsdWVdPVwie0Nob2ljZXM6IFt7Q2hvaWNlOiBjaG9pY2VzLkNob2ljZUlkfV0sIFF1ZXN0aW9uSWQ6IHEuUXVlc3Rpb25JZH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidxdWVzdGlvbi0nK2krJy0nK2pcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICB7e2Nob2ljZXMuVGV4dC5TdGF0ZW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3txLkhlbHBUZXh0LlN0YXRlbWVudH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidmFsaWRhdG9yXCIgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgIWNoZWNrRm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgICBBbGwgZmllbGRzIGFyZSByZXF1aXJlZC5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Zvcm0+XHJcbiAgICA8cC1mb290ZXI+XHJcbiAgICAgICAgPGlvbi1idXR0b24gc2hhcGU9XCJyb3VuZFwiIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImlvbkJ1dHRvblwiIChjbGljayk9XCJzdWJtaXQoKVwiPlN1Ym1pdDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvcC1mb290ZXI+XHJcbjwvcC1kaWFsb2c+Il19
402
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4aXMtbmV4aXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJldXNhLWFwcC1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xleGlzLW5leGlzL2xleGlzLW5leGlzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9sZXhpcy1uZXhpcy9sZXhpcy1uZXhpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUdqRyxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7OztJQ0duRCwrQkFBcUUsZ0JBQUE7SUFDTSx5UUFBcUIsZUFBZSxnQ0FBZTtJQUEzSCxpQkFBd007SUFDeE0saUNBQW1DO0lBQy9CLFlBQ0g7SUFBQSxpQkFBUSxFQUFBOzs7Ozs7OztJQUhGLGVBQXdCO0lBQXhCLHlDQUF3Qix1Q0FBQSw0REFBQSxvSUFBQTtJQUN4QixlQUEyQjtJQUEzQixxREFBMkI7SUFDOUIsZUFDSDtJQURHLDBEQUNIOzs7SUFOUiw4QkFBZ0csZUFBQTtJQUM1QyxZQUFvQjtJQUFBLGlCQUFRO0lBQzVFLGlGQUtNO0lBQ04sK0JBQWtCO0lBQ2QsWUFDSjtJQUFBLGlCQUFNO0lBQ04sNEJBQXVCO0lBQzNCLGlCQUFNOzs7O0lBWHNCLGVBQXVCO0lBQXZCLHdDQUF1QjtJQUFDLGVBQW9CO0lBQXBCLHlDQUFvQjtJQUM1QixlQUFjO0lBQWQsc0NBQWM7SUFPbEQsZUFDSjtJQURJLHdEQUNKOzs7SUFHSixxQ0FBK0Q7SUFDM0QsWUFDSjs7SUFBQSxpQkFBWTs7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QU07O2tGQXRCSSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMZXhpc05leGlzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xleGlzLW5leGlzL2xleGlzLm5leGlzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBPYnNlcnZhYmxlLCBvZiwgdGFwLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVxdWVzdE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVxdWVzdE1vZGVsJztcclxuaW1wb3J0IHsgTGV4aXNOZXhpc0FjY291bnRDcmVhdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0xleGlzTmV4aXNBY2NvdW50Q3JlYXRpb25Nb2RlbCc7XHJcbmltcG9ydCB7IExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVzcG9uc2VNb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9MZXhpc05leGlzQXV0aFNlbGVjdGlvblJlc3BvbnNlTW9kZWwnO1xyXG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvVXNlck1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBUbyBBY3RpdmF0ZSB0aGlzIG1vZGFsIGFzc2lnbiBkaXNwbGF5PXRydWUsIHRoaXMgd2lsbCB3b3JrIGFzIG1hbnkgdGltZXMgYXMgbmVlZGVkXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1sZXhpcy1uZXhpcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2xleGlzLW5leGlzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9sZXhpcy1uZXhpcy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTGV4aXNOZXhpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5ID0gZmFsc2U7XHJcblxyXG4gIC8qdXNlckRldGFpbHMgPSBudWxsIGZvciBub3JtYWwgZmxvdywgIT0gZm9yIFNpZ25VcCBmbG93ICovXHJcbiAgQElucHV0KCkgcHVibGljIHVzZXJEZXRhaWxzIDogTGV4aXNOZXhpc0FjY291bnRDcmVhdGlvbk1vZGVsID0gbnVsbDtcclxuXHJcbiAgLypwYWdlID0gXCIzNDVcIiBmb3IgU2lnblVwIGZsb3csIG51bGwgZm9yIG90aGVycyovXHJcbiAgQElucHV0KCkgcHVibGljIHBhZ2UgOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdXNlck1vZGVsIDogVXNlck1vZGVsO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdXNlck5hbWUgOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjdXN0b21lckV2ZW50VHlwZSA6IHN0cmluZztcclxuXHJcbiAgQE91dHB1dCgpIHN1Y2Nlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgY2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgZXJyb3I6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgdXNwczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHF1ZXN0aW9uTGVuZ3RoOiBudW1iZXI7XHJcbiAgcHVibGljIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhdXRoU2VsZWN0aW9uUmVxdWVzdCA6IExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVxdWVzdE1vZGVsO1xyXG5cclxuICBnZXQgYmxhbmtBbnN3ZXJzKCk6IExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVxdWVzdE1vZGVse3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHtcclxuICAgIGF1dGhfc2VsZWN0aW9uX2lkOiBudWxsLCBcclxuICAgIFwiaWlkcWEuYW5zd2Vyc1wiOiB7XHJcbiAgICAgIFF1ZXN0aW9uU2V0SWQ6IG51bGwsXHJcbiAgICAgIFF1ZXN0aW9uczogW11cclxuICB9fSkpfTtcclxuXHJcbiAgcHVibGljIGFuc3dlcnM6IExleGlzTmV4aXNBdXRoU2VsZWN0aW9uUmVxdWVzdE1vZGVsID0gdGhpcy5ibGFua0Fuc3dlcnM7XHJcblxyXG4gIHB1YmxpYyBkYXRhIDogT2JzZXJ2YWJsZTxMZXhpc05leGlzQXV0aFNlbGVjdGlvblJlc3BvbnNlTW9kZWw+O1xyXG4gIHB1YmxpYyBhbnN3ZXJBcnJheTogc3RyaW5nW10gPSAgW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxuOiBMZXhpc05leGlzU2VydmljZVxyXG4gICkge31cclxuICAvKipcclxuICAgKiB3aWxsIGNhbGwgYXBpIHdoZW4gZGlzcGxheSBpcyBzZXQgdG8gdHJ1ZVxyXG4gICAqIEBwYXJhbSBjaGFuZ2VzIFxyXG4gICAqIEByZXR1cm5zIFxyXG4gICAqL1xyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmICghY2hhbmdlcy5kaXNwbGF5LmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgIGlmICh0aGlzLnBhZ2UgPT09IDM0NSkge1xyXG4gICAgICB0aGlzLmxuUXVlcnlBcGlQSSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5sblF1ZXJ5QXBpKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsblF1ZXJ5QXBpKCl7XHJcbiAgICB2YXIgdU5hbWUgPSB0aGlzLnVzZXJOYW1lO1xyXG4gICAgdmFyIGN1c3RvbWVyRXZlbnRUeXBlID0gdGhpcy5jdXN0b21lckV2ZW50VHlwZTtcclxuICAgIGlmKHRoaXMudXNlck1vZGVsKXtcclxuICAgICAgdU5hbWUgPSB0aGlzLnVzZXJNb2RlbC51c2VybmFtZTtcclxuICAgIH1cclxuICAgIHRoaXMubG4uZ2V0TG5RdWVyeUFwaVJlc3BvbnNlKHVOYW1lLCBjdXN0b21lckV2ZW50VHlwZSlcclxuICAgIC5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChlcnJvci5tc2cuaW5jbHVkZXMoXCJMZXhpcyBOZXhpcyBWZXJpZmljYXRpb24gRmFpbGVkLiBTdGF0dXM6UmVqZWN0XCIpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnTGV4aXMgTmV4aXMgVmVyaWZpY2F0aW9uIEZhaWxlZC4gU3RhdHVzOlJlamVjdCcpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiTGV4aXMgTmV4aXMgVmVyaWZpY2F0aW9uIEZhaWxlZC4gU3RhdHVzOlJldmlld1wiKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0xleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZXZpZXcnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZy5pbmNsdWRlcyhcImZhaWxfaW52YWxpZF9wYXJhbWV0ZXJcIikpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiZmFpbCBpbnZhbGlkIHBhcmFtZXRlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZ1swXS5pbmNsdWRlcygnQ2xhaW1hbnQgQWNjb3VudCBpcyBMb2NrZWQnKSl7ICAgIFxyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJDbGFpbWFudCBBY2NvdW50IGlzIExvY2tlZFwiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coXCJMTiBmYWlsZWQgZm9yIG90aGVyIHJlYXNvbnNcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdObyBwdWRpbW9zIHZlcmlmaWNhciBzdSBpZGVudGlkYWQuIFNpZ2EgbGFzIGluc3RydWNjaW9uZXMuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoZXJyb3IpKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkgfCBudWxsKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCkge1xyXG4gICAgICAgIGlmKHJlc3BvbnNlPy5yZXF1ZXN0X3Jlc3VsdCA9PT0gXCJzdWNjZXNzXCIgJiYgKHJlc3BvbnNlPy5yZXZpZXdfc3RhdHVzID09PSBcImNoYWxsZW5nZVwiKSl7XHJcbiAgICAgICAgICBpZihyZXNwb25zZT8uYXV0aF9zZWxlY3Rpb25fbWV0aG9kc1swXT8uYXV0aF9zZWxlY3Rpb25faWQpe1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhTZWxlY3Rpb25SZXF1ZXN0ID0ge1xyXG4gICAgICAgICAgICAgIGF1dGhfc2VsZWN0aW9uX2lkIDogcmVzcG9uc2U/LmF1dGhfc2VsZWN0aW9uX21ldGhvZHNbMF0/LmF1dGhfc2VsZWN0aW9uX2lkLFxyXG4gICAgICAgICAgICAgICdpaWRxYS5hbnN3ZXJzJzogbnVsbFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLmxuQXV0aGVudGljYXRpb25RQSh0aGlzLmF1dGhTZWxlY3Rpb25SZXF1ZXN0KTtcclxuICAgICAgICAgIH0gZWxzZXtcclxuICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdObyBwdWRpbW9zIHZlcmlmaWNhciBzdSBpZGVudGlkYWQuIFNpZ2EgbGFzIGluc3RydWNjaW9uZXMuJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiRW1wdHkgcmVzcG9uc2UgcmVjZWl2ZWRcIik7XHJcbiAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgIHRoaXMudXRpbC5pbmZvKCdObyBwdWRpbW9zIHZlcmlmaWNhciBzdSBpZGVudGlkYWQuIFNpZ2EgbGFzIGluc3RydWNjaW9uZXMuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5pbmZvKCdXZSB3ZXJlIG5vdCBhYmxlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG5RdWVyeUFwaVBJKCl7XHJcbiAgICB0aGlzLmxuLmdldExuUXVlcnlBcGlQSVJlc3BvbnNlKHRoaXMudXNlckRldGFpbHMpXHJcbiAgICAucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiTGV4aXMgTmV4aXMgVmVyaWZpY2F0aW9uIEZhaWxlZC4gU3RhdHVzOlJlamVjdFwiKSkge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ0xleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZWplY3QnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZy5pbmNsdWRlcyhcIkxleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZXZpZXdcIikpIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdMZXhpcyBOZXhpcyBWZXJpZmljYXRpb24gRmFpbGVkLiBTdGF0dXM6UmV2aWV3Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tc2cuaW5jbHVkZXMoXCJmYWlsX2ludmFsaWRfcGFyYW1ldGVyXCIpKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhcImZhaWwgaW52YWxpZCBwYXJhbWV0ZXJcIik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnJvci5tc2dbMF0uaW5jbHVkZXMoJ0NsYWltYW50IEFjY291bnQgaXMgTG9ja2VkJykpeyAgICBcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2xhaW1hbnQgQWNjb3VudCBpcyBMb2NrZWRcIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwiTE4gZmFpbGVkIGZvciBvdGhlciByZWFzb25cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdObyBwdWRpbW9zIHZlcmlmaWNhciBzdSBpZGVudGlkYWQuIFNpZ2EgbGFzIGluc3RydWNjaW9uZXMuJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55IHwgbnVsbCkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UgIT09IG51bGwpIHtcclxuICAgICAgICBpZihyZXNwb25zZT8ucmVxdWVzdF9yZXN1bHQgPT09IFwic3VjY2Vzc1wiICYmIChyZXNwb25zZT8ucmV2aWV3X3N0YXR1cyA9PT0gXCJjaGFsbGVuZ2VcIikpe1xyXG4gICAgICAgICAgaWYocmVzcG9uc2U/LmF1dGhfc2VsZWN0aW9uX21ldGhvZHNbMF0/LmF1dGhfc2VsZWN0aW9uX2lkKXtcclxuICAgICAgICAgICAgdGhpcy5hdXRoU2VsZWN0aW9uUmVxdWVzdCA9IHtcclxuICAgICAgICAgICAgICBhdXRoX3NlbGVjdGlvbl9pZCA6IHJlc3BvbnNlPy5hdXRoX3NlbGVjdGlvbl9tZXRob2RzWzBdPy5hdXRoX3NlbGVjdGlvbl9pZCxcclxuICAgICAgICAgICAgICAnaWlkcWEuYW5zd2Vycyc6IG51bGxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sbkF1dGhlbnRpY2F0aW9uUUEodGhpcy5hdXRoU2VsZWN0aW9uUmVxdWVzdCk7XHJcbiAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXV0aCBzZWxlY3Rpb24gaWQgaXMgbWlzc2luZ1wiKTtcclxuICAgICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgICB0aGlzLnV0aWwuaW5mbygnTm8gcHVkaW1vcyB2ZXJpZmljYXIgc3UgaWRlbnRpZGFkLiBTaWdhIGxhcyBpbnN0cnVjY2lvbmVzLicpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMudXRpbC5pbmZvKCdXZSB3ZXJlIG5vdCBhYmxlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMuJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJFbXB0eSByZXNwb25zZSByZWNlaXZlZFwiKTtcclxuICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgdGhpcy51dGlsLmluZm8oJ05vIHB1ZGltb3MgdmVyaWZpY2FyIHN1IGlkZW50aWRhZC4gU2lnYSBsYXMgaW5zdHJ1Y2Npb25lcy4nKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy51dGlsLmluZm8oJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBzdWJtaXQgYnV0dG9uIGFuZCBnZXQgbmV3IHF1ZXN0aW9uIGluIHRoZSBiZWdpbm5pbmdcclxuICAgKiBAcGFyYW0gYXV0aFNlbGVjdGlvblJlcXVlc3QgXHJcbiAgICovXHJcbiAgbG5BdXRoZW50aWNhdGlvblFBKGF1dGhTZWxlY3Rpb25SZXF1ZXN0IDogTGV4aXNOZXhpc0F1dGhTZWxlY3Rpb25SZXF1ZXN0TW9kZWwpe1xyXG4gICAgdGhpcy5kYXRhID0gdGhpcy5sbi5sbkF1dGhlbnRpY2F0aW9uUUEoYXV0aFNlbGVjdGlvblJlcXVlc3QpXHJcbiAgICAucGlwZShcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICBpZihlcnJvci5tc2cuaW5jbHVkZXMoXCJMZXhpcyBOZXhpcyBWZXJpZmllZFwiKSl7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdWNjZXNzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmKGVycm9yLm1zZy5pbmNsdWRlcyhcIkxleGlzIE5leGlzIFZlcmlmaWNhdGlvbiBGYWlsZWQuIFN0YXR1czpSZWplY3RcIikpe1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImxhbmd1YWdlXCIpID09PSBcImVzXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdObyBwdWRpbW9zIHZlcmlmaWNhciBzdSBpZGVudGlkYWQuIFNpZ2EgbGFzIGluc3RydWNjaW9uZXMuJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWwuc2hvd0Vycm9yKCdXZSB3ZXJlIG5vdCBhYmxlIHRvIHZlcmlmeSB5b3VyIGlkZW50aXR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXNwcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3IubXNnLmluY2x1ZGVzKFwiZmFpbF9pbnZhbGlkX3BhcmFtZXRlclwiKSkge1xyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignTm8gcHVkaW1vcyB2ZXJpZmljYXIgc3UgaWRlbnRpZGFkLiBTaWdhIGxhcyBpbnN0cnVjY2lvbmVzLicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLm1zZ1swXS5pbmNsdWRlcygnQ2xhaW1hbnQgQWNjb3VudCBpcyBMb2NrZWQnKSl7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibGFuZ3VhZ2VcIikgPT09IFwiZXNcIil7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ05vIHB1ZGltb3MgdmVyaWZpY2FyIHN1IGlkZW50aWRhZC4gU2lnYSBsYXMgaW5zdHJ1Y2Npb25lcy4nKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXRpbC5zaG93RXJyb3IoJ1dlIHdlcmUgbm90IGFibGUgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucy4nKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51c3BzLmVtaXQoKSwgMTAwMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignTm8gcHVkaW1vcyB2ZXJpZmljYXIgc3UgaWRlbnRpZGFkLiBTaWdhIGxhcyBpbnN0cnVjY2lvbmVzLicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKHggPT4geyBcclxuICAgICAgICBpZiAoIXgpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheSA9IGZhbHNlO1xyXG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA9PT0gXCJlc1wiKXtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignTm8gcHVkaW1vcyB2ZXJpZmljYXIgc3UgaWRlbnRpZGFkLiBTaWdhIGxhcyBpbnN0cnVjY2lvbmVzLicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51dGlsLnNob3dFcnJvcignV2Ugd2VyZSBub3QgYWJsZSB0byB2ZXJpZnkgeW91ciBpZGVudGl0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zLicpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVzcHMuZW1pdCgpLCAxMDAwKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IFxyXG4gICAgICAgIGlmKHg/LnJldmlld19zdGF0dXMgPT0gXCJwYXNzXCIpe1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5ID0gZmFsc2U7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3VjY2Vzcy5lbWl0KCksIDEwMDApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpc3BsYXkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc3VibWl0dGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5hbnN3ZXJzID0gdGhpcy5ibGFua0Fuc3dlcnM7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbkxlbmd0aCA9IHhbJ2lpZHFhLnF1ZXN0aW9uX3NldCddLlF1ZXN0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgdGhpcy5hbnN3ZXJzLmF1dGhfc2VsZWN0aW9uX2lkID0geC5hdXRoX3NlbGVjdGlvbl9pZDtcclxuICAgICAgICB0aGlzLmFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvblNldElkID0geFsnaWlkcWEucXVlc3Rpb25fc2V0J10uUXVlc3Rpb25TZXRJZDtcclxuICAgICAgfSlcclxuICAgIClcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGhlIHN1Ym1pdCBidXR0b24gcHJlc3NcclxuICAgKi9cclxuICBzdWJtaXQoKSB7XHJcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XHJcblxyXG4gICAgaWYoIXRoaXMuY2hlY2tGb3JtKCkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sbkF1dGhlbnRpY2F0aW9uUUEodGhpcy5hbnN3ZXJzKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogXHJcbiAgICogQHJldHVybnMgaXMgZm9ybSB2YWxpZFxyXG4gICAqL1xyXG4gIGNoZWNrRm9ybSgpOiBib29sZWFuIHtcclxuICAgIGlmICh0aGlzLmFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvbnMubGVuZ3RoICE9PSB0aGlzLnF1ZXN0aW9uTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5hbnN3ZXJzWydpaWRxYS5hbnN3ZXJzJ10uUXVlc3Rpb25zLm1hcCh4ID0+ICEheCkucmVkdWNlKCh4LHkpID0+IHgmJnkpO1xyXG4gIH1cclxuICBcclxufSIsIjxwLWRpYWxvZyBbKHZpc2libGUpXT1cImRpc3BsYXlcIiBtb2RhbD1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIiBbYnJlYWtwb2ludHNdPVwieycxMDI0cHgnOiAnNzV2dycsICc3NjhweCc6ICc4NXZ3JywgJzY0MHB4JzogJzEwMHZ3J31cIiBwb3NpdGlvbj1cInRvcFwiPlxyXG4gICA8Zm9ybSBjbGFzcz1cImRpYWxvZy1jb250ZW50XCI+XHJcbiAgICAgIDxpb24taWNvbiBuYW1lPVwiaGVscC1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgICAgIDxkaXYgKm5nSWY9XCJkYXRhIHwgYXN5bmM7IGxldCBkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHEgb2YgZFsnaWlkcWEucXVlc3Rpb25fc2V0J10/LlF1ZXN0aW9uczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwicXVlc3Rpb24tZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInF1ZXN0aW9uXCIgW2Zvcl09XCIncXVlc3Rpb24tJyArIGlcIj57e3EuVGV4dC5TdGF0ZW1lbnR9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYW5zd2VyXCIgKm5nRm9yPVwibGV0IGNob2ljZXMgb2YgcS5DaG9pY2VzOyBsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICA8aW5wdXQgW25hbWVdPVwiJ3F1ZXN0aW9uLScgKyBpXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidxdWVzdGlvbi0nK2krJy0nK2pcIiBbKG5nTW9kZWwpXT1cImFuc3dlcnNbJ2lpZHFhLmFuc3dlcnMnXS5RdWVzdGlvbnNbaV1cIiBbdmFsdWVdPVwie0Nob2ljZXM6IFt7Q2hvaWNlOiBjaG9pY2VzLkNob2ljZUlkfV0sIFF1ZXN0aW9uSWQ6IHEuUXVlc3Rpb25JZH1cIj5cclxuICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidxdWVzdGlvbi0nK2krJy0nK2pcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICB7e2Nob2ljZXMuVGV4dC5TdGF0ZW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3txLkhlbHBUZXh0LlN0YXRlbWVudH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxwLWRpdmlkZXI+PC9wLWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwidmFsaWRhdG9yXCIgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgIWNoZWNrRm9ybSgpXCI+XHJcbiAgICAgICAgICAgICAgICB7eydjb21tb24uYWxsLmZpZWxkcy5yZXF1aXJlZCd8IHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9mb3JtPlxyXG4gICAgPHAtZm9vdGVyPlxyXG4gICAgICAgIDxpb24tYnV0dG9uIHNoYXBlPVwicm91bmRcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpb25CdXR0b25cIiAoY2xpY2spPVwic3VibWl0KClcIj57eydjb21tb24uc3VibWl0J3wgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XHJcbiAgICA8L3AtZm9vdGVyPlxyXG48L3AtZGlhbG9nPiJdfQ==