@dsivd/prestations-ng 15.1.2 → 15.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -26,6 +26,23 @@ A change is considered **breaking** if you have to change your code or update yo
26
26
 
27
27
  ---
28
28
 
29
+ ## [15.1.4]
30
+
31
+ ### Updated
32
+
33
+ - [gesdem-error.component.html](projects/prestations-ng/src/gesdem-error/gesdem-error.component.html)
34
+ - display a custom message if the error page is displayed when the action status in `PENDING_PAYMENT`
35
+ - redirect to the last page if the error page is displayed when the action status is final (`TRANSFERRED`, `ABANDONED`)
36
+
37
+ ## [15.1.3]
38
+
39
+ ### Updated
40
+ - [foehn-input-nav13.component.ts](projects/prestations-ng/src/foehn-nav13/foehn-input-nav13.component.ts)
41
+ - pasting an AVS number (witouht the prefix `756`) in the first editable input will now expand it to the other inputs.
42
+
43
+ - [foehn-agenda-timeslot-panel.component.ts](projects/prestations-ng/src/foehn-agenda/foehn-agenda-timeslot-panel/foehn-agenda-timeslot-panel.component.ts)
44
+ - don't allow closing the panel if it would hide the selected slot
45
+
29
46
  ## [15.1.2]
30
47
 
31
48
  - [foehn-agenda.components.ts](projects/prestations-ng/src/foehn-agenda/foehn-agenda.component.ts)
Binary file
@@ -9,6 +9,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
9
9
  super();
10
10
  this.dictionaryService = dictionaryService;
11
11
  this.isClosed = true;
12
+ this.canClose = true;
12
13
  this.DEFAULT_NB_VISISBLE_ELEMENTS = 22;
13
14
  this.keyboardNavigationAllowed = false;
14
15
  this.hasSelectedSlotInPanel = false;
@@ -99,6 +100,7 @@ export class FoehnAgendaTimeslotPanelComponent extends FoehnInputComponent {
99
100
  else {
100
101
  this.hasSelectedSlotInPanel = false;
101
102
  }
103
+ this.canClose = positionValue < this.nbVisibleElements;
102
104
  }
103
105
  onTimeFocusin() {
104
106
  this.keyboardNavigationAllowed = true;
@@ -214,7 +216,7 @@ FoehnAgendaTimeslotPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion
214
216
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
215
217
  multi: true
216
218
  }
217
- ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
219
+ ], viewQueries: [{ propertyName: "timeSlotButtonsElemRef", predicate: ["timeSlotButtonsElemRef"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe, "fromDictionary": i3.SdkDictionaryPipe } });
218
220
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: FoehnAgendaTimeslotPanelComponent, decorators: [{
219
221
  type: Component,
220
222
  args: [{ selector: 'foehn-agenda-timeslot-panel', providers: [
@@ -223,7 +225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
223
225
  useExisting: forwardRef(() => FoehnAgendaTimeslotPanelComponent),
224
226
  multi: true
225
227
  }
226
- ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
228
+ ], template: "<section\n *ngIf=\"calendar | async as loadedCalendar\"\n class=\"panel panel-default mb-3\"\n>\n <div class=\"panel-heading mt-2 mb-2 py-2 d-flex align-items-baseline\">\n <h3 class=\"h5 ml-3 mt-0 mb-0\">\n {{ capitalCaseFirstLetter(currentWeek.day) }}\n <span class=\"sr-only\" *ngIf=\"!!isSelected(timeInputValue)\">\n &nbsp;{{\n 'foehn-agenda-timeslot-panel.selected-time'\n | fromDictionary: { timeSelectedValue: timeInputValue }\n }}\n </span>\n </h3>\n <small *ngIf=\"!!currentWeek.timeSlots.length\" class=\"sr-only\">\n {{\n 'foehn-agenda-timeslot-panel.nbr-dispo'\n | fromDictionary\n : {\n nbElements: currentWeek.timeSlots.length.toString()\n }\n }}\n </small>\n <small\n *ngIf=\"!currentWeek.timeSlots.length\"\n class=\"font-italic align-self-end ml-2\"\n >\n {{ 'foehn-agenda-timeslot-panel.no-dispo' | fromDictionary }}\n </small>\n </div>\n\n <div\n *ngIf=\"!!currentWeek.timeSlots.length\"\n class=\"panel-body row d-flex flex-wrap ml-auto mr-auto pl-3\"\n (focusin)=\"onTimeFocusin()\"\n (focusout)=\"onTimeFocusout()\"\n role=\"application\"\n >\n <button\n *ngFor=\"let timeSlot of timeSlots; let index = index\"\n class=\"btn btn-info mr-2 mb-2\"\n #timeSlotButtonsElemRef\n [attr.id]=\"\n cleanIdForQuerySelector(currentWeek.day + '-' + timeSlot)\n \"\n [tabindex]=\"getTimeSlotTabIndex(timeSlot, index)\"\n [class.btn-danger]=\"isSelected(timeSlot)\"\n (click)=\"\n handleUserInput(\n currentWeek.day,\n currentWeek.date,\n timeSlot,\n loadedCalendar\n )\n \"\n [attr.aria-label]=\"\n getButtonTimeSlotAriaLabel(currentWeek.day, timeSlot)\n \"\n >\n {{ timeSlot }}\n </button>\n <div\n class=\"col-12 d-flex justify-content-end mb-1\"\n *ngIf=\"currentWeek.timeSlots.length > nbVisibleElements && canClose\"\n >\n <button\n class=\"btn btn-link show-more\"\n #timeSlotButtonsElemRef\n (click)=\"togglePanel()\"\n [attr.aria-label]=\"\n (isClosed\n ? 'foehn-agenda-timeslot-panel.show-more-sr-only'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n \"\n >\n {{\n (isClosed\n ? 'foehn.agenda-timeslot-panel.show-more'\n : 'foehn-agenda-timeslot-panel.show-less'\n )\n | fromDictionary\n : {\n nbrElementsHidden: timeslotRemaining.toString()\n }\n }}\n </button>\n </div>\n </div>\n</section>\n", styles: [".panel-default{border:1px solid #dfdfdf}.panel-heading{position:sticky;background-color:#fff;width:100%;top:0}.panel-heading small{font-size:.9rem}.panel-heading:focus{outline:0;box-shadow:inset 0 1px 1px #00000013,0 0 0 .2rem var(--vd-focus)}.panel-body .btn-info{padding-right:.4rem;padding-left:.4rem}.panel-body .btn-link{padding:0}.show-more{cursor:pointer;font-size:.9rem}\n"] }]
227
229
  }], ctorParameters: function () { return [{ type: i1.SdkDictionaryService }]; }, propDecorators: { timeSlotButtonsElemRef: [{
228
230
  type: ViewChildren,
229
231
  args: ['timeSlotButtonsElemRef']
@@ -237,4 +239,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
237
239
  type: HostListener,
238
240
  args: ['keydown', ['$event']]
239
241
  }] } });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUF5QnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFaM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUlQLGlDQUE0QixHQUFHLEVBQUUsQ0FBQztRQUluQyw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFFbEMsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBSW5DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUM7SUFDL0QsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFDSSxXQUFXLENBQUMsS0FBZTtRQUMzQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJ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V0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMkxDN0JMLGs4R0E4RkE7MkZEL0RhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBMkJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcblxuICAgIHJlYWRvbmx5IERFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFMgPSAyMjtcblxuICAgIHByaXZhdGUgY3VycmVudFdlZWtfOiBEYXlTbG90cztcbiAgICBwcml2YXRlIGRheUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIGtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIGN1cnJlbnRBY3RpdmVFbGVtZW50OiBFbGVtZW50O1xuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudFdlZWsoKTogRGF5U2xvdHMge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50V2Vla187XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgY3VycmVudFdlZWsodmFsdWU6IERheVNsb3RzKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFdlZWtfID0gdmFsdWU7XG4gICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZUtleWJvYXJkRG93bkV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25LZXlEb3duSW5uZXIoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheSA9IFtcbiAgICAgICAgICAgIC4uLnRoaXMudGltZVNsb3RCdXR0b25zRWxlbVJlZi50b0FycmF5KClcbiAgICAgICAgXTtcbiAgICAgICAgaWYgKCEhdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGltZVNsb3RCdXR0b25zRWxlbVJlZkFycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbk5iVmlzaWJsZUVsZW1lbnRzQ2hhbmdlKGNoYW5nZXMubmJWaXNpYmxlRWxlbWVudHMpO1xuICAgIH1cblxuICAgIGNhcGl0YWxDYXNlRmlyc3RMZXR0ZXIoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFzKSB7XG4gICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBzLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke3MuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtzLnNsaWNlKDEpfWA7XG4gICAgfVxuXG4gICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICBkYXk6IHN0cmluZyxcbiAgICAgICAgZGF0ZTogbnVtYmVyW10sXG4gICAgICAgIHRpbWU6IHN0cmluZyxcbiAgICAgICAgY2FsZW5kYXI6IENhbGVuZGFyXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoZGF5LCBkYXRlLCB0aW1lLCBjYWxlbmRhcik7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHRoaXMudXNlcklucHV0Lm5leHQodmFsaWRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGVQYW5lbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9ICF0aGlzLmlzQ2xvc2VkO1xuICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBOZWVkIHNldFRpbWVvdXQgYmVjYXVzZSB3ZSBhcmUgb3V0c2lkZSBhbmd1bGFyIGN5Y2xlIHdoZW4gcmVsb2FkaW5nIHBhZ2VcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudGltZVNsb3RzID0gdGhpcy5jdXJyZW50V2Vlay50aW1lU2xvdHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTW9kZWxDaGFuZ2UodmFsdWU6IFNlbGVjdGVkU2xvdCk6IHZvaWQge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IGAke3ZhbHVlLmRheX0tJHt2YWx1ZS50aW1lfWA7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gdmFsdWUudGltZTtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IHZhbHVlLmRheTtcbiAgICAgICAgfSBlbHNlIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUaW1lU2xvdCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLnRpbWVJbnB1dFZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZGF5SW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hUaW1lVmFsdWVJblRpbWVTbG90KCk7XG4gICAgfVxuXG4gICAgZ2V0VGltZUlucHV0VmFsdWUoczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCEhcykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTcGxpdCA9IHMuc3BsaXQoJy0nKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZVNwbGl0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlU3BsaXRbMV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLmZpbmRJbmRleChcbiAgICAgICAgICAgIHggPT5cbiAgICAgICAgICAgICAgICB4ID09PSB0aGlzLnRpbWVJbnB1dFZhbHVlICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50V2Vlay5kYXkgPT09IHRoaXMuZGF5SW5wdXRWYWx1ZVxuICAgICAgICApO1xuICAgICAgICBpZiAocG9zaXRpb25WYWx1ZSAhPT0gLTEgJiYgISF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGFzU2VsZWN0ZWRTbG90SW5QYW5lbCA9IHRydWU7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0Nsb3NlZCAmJiBwb3NpdGlvblZhbHVlID49IHRoaXMubmJWaXNpYmxlRWxlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZVBhbmVsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtbC0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cIiEhaXNTZWxlY3RlZCh0aW1lSW5wdXRWYWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAmbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNlbGVjdGVkLXRpbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRpbWVTZWxlY3RlZFZhbHVlOiB0aW1lSW5wdXRWYWx1ZSB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubmJyLWRpc3BvJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iRWxlbWVudHM6IGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWl0YWxpYyBhbGlnbi1zZWxmLWVuZCBtbC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5uby1kaXNwbycgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicGFuZWwtYm9keSByb3cgZC1mbGV4IGZsZXgtd3JhcCBtbC1hdXRvIG1yLWF1dG8gcGwtM1wiXG4gICAgICAgIChmb2N1c2luKT1cIm9uVGltZUZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvblRpbWVGb2N1c291dCgpXCJcbiAgICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aW1lU2xvdCBvZiB0aW1lU2xvdHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIG1yLTIgbWItMlwiXG4gICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiXG4gICAgICAgICAgICAgICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoY3VycmVudFdlZWsuZGF5ICsgJy0nICsgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldFRpbWVTbG90VGFiSW5kZXgodGltZVNsb3QsIGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWRDYWxlbmRhclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGdldEJ1dHRvblRpbWVTbG90QXJpYUxhYmVsKGN1cnJlbnRXZWVrLmRheSwgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aW1lU2xvdCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItMVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggPiBuYlZpc2libGVFbGVtZW50c1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBzaG93LW1vcmVcIlxuICAgICAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZS1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLmFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46IHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1hZ2VuZGEvZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tYWdlbmRhL2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFLTCxZQUFZLEVBQ2YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7O0FBbUI5RSxNQUFNLE9BQU8saUNBQ1QsU0FBUSxtQkFBaUM7SUEwQnpDLFlBQW9CLGlCQUF1QztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURRLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFiM0QsYUFBUSxHQUFHLElBQUksQ0FBQztRQUdoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBRVAsaUNBQTRCLEdBQUcsRUFBRSxDQUFDO1FBSW5DLDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQUVsQywyQkFBc0IsR0FBRyxLQUFLLENBQUM7UUFJbkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUNJLFdBQVcsQ0FBQyxLQUFlO1FBQzNCLElBQUksQ0FBQyxZ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QUNoRDtJQUNMLENBQUM7OzhIQTNRUSxpQ0FBaUM7a0hBQWpDLGlDQUFpQyxtT0FSL0I7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUNoRSxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osMkxDN0JMLDg4R0E4RkE7MkZEL0RhLGlDQUFpQztrQkFaN0MsU0FBUzsrQkFDSSw2QkFBNkIsYUFHNUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLG1CQUFtQjs0QkFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0NBQWtDLENBQUM7NEJBQ2hFLEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzJHQU1ELHNCQUFzQjtzQkFEckIsWUFBWTt1QkFBQyx3QkFBd0I7Z0JBSXRDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLEtBQUs7Z0JBNEJGLFdBQVc7c0JBRGQsS0FBSztnQkFPTix1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgUXVlcnlMaXN0LFxuICAgIFNpbXBsZUNoYW5nZSxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZGstZGljdGlvbmFyeS9zZGstZGljdGlvbmFyeS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGVkU2xvdCB9IGZyb20gJy4uL3NlbGVjdGVkLXNsb3QudHlwZSc7XG5pbXBvcnQgeyBEYXlTbG90cyB9IGZyb20gJy4uL2RheS1zbG90cy50eXBlJztcbmltcG9ydCB7IENhbGVuZGFyIH0gZnJvbSAnLi4vY2FsZW5kYXIudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuY29tcG9uZW50LmNzcyddLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5BZ2VuZGFUaW1lc2xvdFBhbmVsQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuQWdlbmRhVGltZXNsb3RQYW5lbENvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dENvbXBvbmVudDxTZWxlY3RlZFNsb3Q+XG4gICAgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBWaWV3Q2hpbGRyZW4oJ3RpbWVTbG90QnV0dG9uc0VsZW1SZWYnKVxuICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWY6IFF1ZXJ5TGlzdDxFbGVtZW50UmVmPjtcblxuICAgIEBJbnB1dCgpXG4gICAgY2FsZW5kYXI6IE9ic2VydmFibGU8Q2FsZW5kYXI+O1xuXG4gICAgQElucHV0KClcbiAgICBuYlZpc2libGVFbGVtZW50czogbnVtYmVyO1xuXG4gICAgc2VsZWN0ZWRUaW1lU2xvdDogc3RyaW5nO1xuICAgIHRpbWVTbG90czogc3RyaW5nW107XG4gICAgaXNDbG9zZWQgPSB0cnVlO1xuICAgIHRpbWVzbG90UmVtYWluaW5nOiBudW1iZXI7XG4gICAgdGltZUlucHV0VmFsdWU6IHN0cmluZztcbiAgICBjYW5DbG9zZSA9IHRydWU7XG5cbiAgICByZWFkb25seSBERUZBVUxUX05CX1ZJU0lTQkxFX0VMRU1FTlRTID0gMjI7XG5cbiAgICBwcml2YXRlIGN1cnJlbnRXZWVrXzogRGF5U2xvdHM7XG4gICAgcHJpdmF0ZSBkYXlJbnB1dFZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBrZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjdXJyZW50QWN0aXZlRWxlbWVudDogRWxlbWVudDtcbiAgICBwcml2YXRlIGhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHMgPSB0aGlzLkRFRkFVTFRfTkJfVklTSVNCTEVfRUxFTUVOVFM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRXZWVrKCk6IERheVNsb3RzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFdlZWtfO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGN1cnJlbnRXZWVrKHZhbHVlOiBEYXlTbG90cykge1xuICAgICAgICB0aGlzLmN1cnJlbnRXZWVrXyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVLZXlib2FyZERvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5rZXlib2FyZE5hdmlnYXRpb25BbGxvd2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bklubmVyKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZvY3VzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmQXJyYXkgPSBbXG4gICAgICAgICAgICAuLi50aGlzLnRpbWVTbG90QnV0dG9uc0VsZW1SZWYudG9BcnJheSgpXG4gICAgICAgIF07XG4gICAgICAgIGlmICghIXRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRpbWVTbG90QnV0dG9uc0VsZW1SZWZBcnJheVswXS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25OYlZpc2libGVFbGVtZW50c0NoYW5nZShjaGFuZ2VzLm5iVmlzaWJsZUVsZW1lbnRzKTtcbiAgICB9XG5cbiAgICBjYXBpdGFsQ2FzZUZpcnN0TGV0dGVyKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghcykge1xuICAgICAgICAgICAgcmV0dXJuIHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gcy50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7cy5zbGljZSgxKX1gO1xuICAgIH1cblxuICAgIGhhbmRsZVVzZXJJbnB1dChcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWxpZFZhbHVlID0gdGhpcy5nZXRWYWxpZFZhbHVlKGRheSwgZGF0ZSwgdGltZSwgY2FsZW5kYXIpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVzZXJJbnB1dC5uZXh0KHZhbGlkVmFsdWUpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVOZ01vZGVsKHZhbGlkVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9nZ2xlUGFuZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSAhdGhpcy5pc0Nsb3NlZDtcbiAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2xpY2VOYlZpc2libGVFbGVtZW50cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gTmVlZCBzZXRUaW1lb3V0IGJlY2F1c2Ugd2UgYXJlIG91dHNpZGUgYW5ndWxhciBjeWNsZSB3aGVuIHJlbG9hZGluZyBwYWdlXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBTZWxlY3RlZFNsb3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBgJHt2YWx1ZS5kYXl9LSR7dmFsdWUudGltZX1gO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IHZhbHVlLnRpbWU7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSB2YWx1ZS5kYXk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGltZVNsb3QgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy50aW1lSW5wdXRWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLmRheUlucHV0VmFsdWUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGltZVZhbHVlSW5UaW1lU2xvdCgpO1xuICAgIH1cblxuICAgIGdldFRpbWVJbnB1dFZhbHVlKHM6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghIXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlU3BsaXQgPSBzLnNwbGl0KCctJyk7XG4gICAgICAgICAgICBpZiAodmFsdWVTcGxpdC5sZW5ndGggPj0gMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVNwbGl0WzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHNlYXJjaFRpbWVWYWx1ZUluVGltZVNsb3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5maW5kSW5kZXgoXG4gICAgICAgICAgICB4ID0+XG4gICAgICAgICAgICAgICAgeCA9PT0gdGhpcy50aW1lSW5wdXRWYWx1ZSAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IC0xICYmICEhdGhpcy5zZWxlY3RlZFRpbWVTbG90KSB7XG4gICAgICAgICAgICB0aGlzLmhhc1NlbGVjdGVkU2xvdEluUGFuZWwgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9zZWQgJiYgcG9zaXRpb25WYWx1ZSA+PSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2dnbGVQYW5lbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYW5DbG9zZSA9IHBvc2l0aW9uVmFsdWUgPCB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIG9uVGltZUZvY3VzaW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMua2V5Ym9hcmROYXZpZ2F0aW9uQWxsb3dlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY3VycmVudEFjdGl2ZUVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG9uVGltZUZvY3Vzb3V0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmtleWJvYXJkTmF2aWdhdGlvbkFsbG93ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKHRpbWVTbG90OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVGltZVNsb3QpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGltZVNsb3QgPT09IHRoaXMudGltZUlucHV0VmFsdWUgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFdlZWsuZGF5ID09PSB0aGlzLmRheUlucHV0VmFsdWVcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRCdXR0b25UaW1lU2xvdEFyaWFMYWJlbChkYXk6IHN0cmluZywgdGltZVNsb3Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXN1bHQgPSBgJHtkYXl9ICR7dGltZVNsb3R9YDtcbiAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh0aW1lU2xvdCkpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2ZvZWhuLWFnZW5kYS50aW1lc2xvdC5zZWxlY3RlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRUaW1lU2xvdFRhYkluZGV4KHRpbWVTbG90OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHRpbWVTbG90KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpbmRleCAmJiAhdGhpcy5oYXNTZWxlY3RlZFNsb3RJblBhbmVsKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3Ioczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcyA9IHMucmVwbGFjZShuZXcgUmVnRXhwKCcgJywgJ2cnKSwgJ18nKTtcbiAgICAgICAgcmV0dXJuIHMucmVwbGFjZShuZXcgUmVnRXhwKCc6JywgJ2cnKSwgJ18nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNsaWNlTmJWaXNpYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5uYlZpc2libGVFbGVtZW50cykge1xuICAgICAgICAgICAgdGhpcy5uYlZpc2libGVFbGVtZW50cyA9IHRoaXMuREVGQVVMVF9OQl9WSVNJU0JMRV9FTEVNRU5UUztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRpbWVTbG90cyA9IHRoaXMuY3VycmVudFdlZWsudGltZVNsb3RzLnNsaWNlKFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHRoaXMubmJWaXNpYmxlRWxlbWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy50aW1lc2xvdFJlbWFpbmluZyA9XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggLSB0aGlzLm5iVmlzaWJsZUVsZW1lbnRzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmFsaWRWYWx1ZShcbiAgICAgICAgZGF5OiBzdHJpbmcsXG4gICAgICAgIGRhdGU6IG51bWJlcltdLFxuICAgICAgICB0aW1lOiBzdHJpbmcsXG4gICAgICAgIGNhbGVuZGFyOiBDYWxlbmRhclxuICAgICk6IFNlbGVjdGVkU2xvdCB8IG51bGwgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIWRheSB8fCAhdGltZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRheSxcbiAgICAgICAgICAgIHRpbWUsXG4gICAgICAgICAgICB5ZWFyOiBjYWxlbmRhci5jdXJyZW50V2Vlay55ZWFyLFxuICAgICAgICAgICAgd2Vla051bWJlcjogY2FsZW5kYXIuY3VycmVudFdlZWsud2Vla051bWJlcixcbiAgICAgICAgICAgIGRhdGVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uTmJWaXNpYmxlRWxlbWVudHNDaGFuZ2UoY2hhbmdlOiBTaW1wbGVDaGFuZ2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zbGljZU5iVmlzaWJsZUVsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uS2V5RG93bklubmVyKGtleUV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElFIGRvZXNuJ3Qgc3VwcG9ydCBrZXlFdmVudC5jb2RlLCBhbmQgaGFzIGRpZmZlcmVudCB2YWx1ZXNcbiAgICAgICAgLy8gaW4ga2V5RXZlbnQua2V5IChEb3duIGluc3RlYWQgb2YgQXJyb3dEb3duIGZvciBpbnN0YW5jZSksIGhlbmNlIHRoZSBtdWx0aS1zdXBwb3J0LlxuICAgICAgICBjb25zdCBpZTExQ29tcGF0aWJsZUNvZGUgPSBrZXlFdmVudC5jb2RlIHx8IGtleUV2ZW50LmtleTtcbiAgICAgICAgc3dpdGNoIChpZTExQ29tcGF0aWJsZUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIGNhc2UgJ1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VwJzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNUaW1lU2xvdCgtMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTcGFjZSc6XG4gICAgICAgICAgICBjYXNlICdTcGFjZWJhcic6XG4gICAgICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2xpY2snKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAga2V5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAga2V5RXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNUaW1lU2xvdChpbmM6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBidXR0b25zQXJyYXkgPSBbLi4udGhpcy50aW1lU2xvdEJ1dHRvbnNFbGVtUmVmLnRvQXJyYXkoKV07XG4gICAgICAgIGNvbnN0IGluZGV4c2VsZWN0ZWQgPSBidXR0b25zQXJyYXkuZmluZEluZGV4KFxuICAgICAgICAgICAgaXRlbSA9PlxuICAgICAgICAgICAgICAgIGl0ZW0ubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykgPT09XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QWN0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSBpbmRleHNlbGVjdGVkICsgaW5jO1xuICAgICAgICBpZiAobmV3SW5kZXggPj0gYnV0dG9uc0FycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5WzBdLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIGlmIChuZXdJbmRleCA8IDApIHtcbiAgICAgICAgICAgIGJ1dHRvbnNBcnJheVtidXR0b25zQXJyYXkubGVuZ3RoIC0gMV0ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnV0dG9uc0FycmF5W25ld0luZGV4XS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8c2VjdGlvblxuICAgICpuZ0lmPVwiY2FsZW5kYXIgfCBhc3luYyBhcyBsb2FkZWRDYWxlbmRhclwiXG4gICAgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0IG1iLTNcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nIG10LTIgbWItMiBweS0yIGQtZmxleCBhbGlnbi1pdGVtcy1iYXNlbGluZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJoNSBtbC0zIG10LTAgbWItMFwiPlxuICAgICAgICAgICAge3sgY2FwaXRhbENhc2VGaXJzdExldHRlcihjdXJyZW50V2Vlay5kYXkpIH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiAqbmdJZj1cIiEhaXNTZWxlY3RlZCh0aW1lSW5wdXRWYWx1ZSlcIj5cbiAgICAgICAgICAgICAgICAmbmJzcDt7e1xuICAgICAgICAgICAgICAgICAgICAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNlbGVjdGVkLXRpbWUnXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5OiB7IHRpbWVTZWxlY3RlZFZhbHVlOiB0aW1lSW5wdXRWYWx1ZSB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMz5cbiAgICAgICAgPHNtYWxsICpuZ0lmPVwiISFjdXJyZW50V2Vlay50aW1lU2xvdHMubGVuZ3RoXCIgY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwubmJyLWRpc3BvJ1xuICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iRWxlbWVudHM6IGN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGgudG9TdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICpuZ0lmPVwiIWN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGhcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb250LWl0YWxpYyBhbGlnbi1zZWxmLWVuZCBtbC0yXCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLWFnZW5kYS10aW1lc2xvdC1wYW5lbC5uby1kaXNwbycgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICA8L3NtYWxsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIiEhY3VycmVudFdlZWsudGltZVNsb3RzLmxlbmd0aFwiXG4gICAgICAgIGNsYXNzPVwicGFuZWwtYm9keSByb3cgZC1mbGV4IGZsZXgtd3JhcCBtbC1hdXRvIG1yLWF1dG8gcGwtM1wiXG4gICAgICAgIChmb2N1c2luKT1cIm9uVGltZUZvY3VzaW4oKVwiXG4gICAgICAgIChmb2N1c291dCk9XCJvblRpbWVGb2N1c291dCgpXCJcbiAgICAgICAgcm9sZT1cImFwcGxpY2F0aW9uXCJcbiAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0aW1lU2xvdCBvZiB0aW1lU2xvdHM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIG1yLTIgbWItMlwiXG4gICAgICAgICAgICAjdGltZVNsb3RCdXR0b25zRWxlbVJlZlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwiXG4gICAgICAgICAgICAgICAgY2xlYW5JZEZvclF1ZXJ5U2VsZWN0b3IoY3VycmVudFdlZWsuZGF5ICsgJy0nICsgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RhYmluZGV4XT1cImdldFRpbWVTbG90VGFiSW5kZXgodGltZVNsb3QsIGluZGV4KVwiXG4gICAgICAgICAgICBbY2xhc3MuYnRuLWRhbmdlcl09XCJpc1NlbGVjdGVkKHRpbWVTbG90KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgaGFuZGxlVXNlcklucHV0KFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50V2Vlay5kYXksXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRXZWVrLmRhdGUsXG4gICAgICAgICAgICAgICAgICAgIHRpbWVTbG90LFxuICAgICAgICAgICAgICAgICAgICBsb2FkZWRDYWxlbmRhclxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgICAgIGdldEJ1dHRvblRpbWVTbG90QXJpYUxhYmVsKGN1cnJlbnRXZWVrLmRheSwgdGltZVNsb3QpXG4gICAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyB0aW1lU2xvdCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb2wtMTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgbWItMVwiXG4gICAgICAgICAgICAqbmdJZj1cImN1cnJlbnRXZWVrLnRpbWVTbG90cy5sZW5ndGggPiBuYlZpc2libGVFbGVtZW50cyAmJiBjYW5DbG9zZVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tbGluayBzaG93LW1vcmVcIlxuICAgICAgICAgICAgICAgICN0aW1lU2xvdEJ1dHRvbnNFbGVtUmVmXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBhbmVsKClcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiXG4gICAgICAgICAgICAgICAgICAgIChpc0Nsb3NlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbW9yZS1zci1vbmx5J1xuICAgICAgICAgICAgICAgICAgICAgICAgOiAnZm9laG4tYWdlbmRhLXRpbWVzbG90LXBhbmVsLnNob3ctbGVzcydcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ickVsZW1lbnRzSGlkZGVuOiB0aW1lc2xvdFJlbWFpbmluZy50b1N0cmluZygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAoaXNDbG9zZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2ZvZWhuLmFnZW5kYS10aW1lc2xvdC1wYW5lbC5zaG93LW1vcmUnXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdmb2Vobi1hZ2VuZGEtdGltZXNsb3QtcGFuZWwuc2hvdy1sZXNzJ1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmJyRWxlbWVudHNIaWRkZW46IHRpbWVzbG90UmVtYWluaW5nLnRvU3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9zZWN0aW9uPlxuIl19
@@ -56,7 +56,13 @@ export class FoehnInputNav13Component extends FoehnInputStringComponent {
56
56
  ?.replace(/ /g, '');
57
57
  const isPastedValueMoreThanOneAvsBlock = pastedValue?.length > 4;
58
58
  if (isPastedValueMoreThanOneAvsBlock) {
59
- this.onModelChange(pastedValue);
59
+ let valueToPaste = pastedValue;
60
+ if (!pastedValue.startsWith(this.PREFIX_NAVS)) {
61
+ valueToPaste = pastedValue.includes('.')
62
+ ? `${this.PREFIX_NAVS}.${pastedValue}`
63
+ : this.PREFIX_NAVS + pastedValue;
64
+ }
65
+ this.onModelChange(valueToPaste);
60
66
  this.handleUserInput();
61
67
  event.preventDefault();
62
68
  }
@@ -105,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
105
111
  }
106
112
  ], template: "<div\n class=\"form-group\"\n [class.has-danger]=\"hasErrorsToDisplay()\"\n [class.vd-form-group-danger]=\"hasErrorsToDisplay()\"\n [attr.id]=\"buildId('Container')\"\n tabindex=\"-1\"\n>\n <fieldset\n class=\"mb-3\"\n [attr.aria-describedby]=\"getDescribedBy()\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n >\n <legend\n [attr.for]=\"buildChildId()\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : 'vd-p'\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </legend>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <ng-content></ng-content>\n\n <div class=\"vd-form-flex\">\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--4-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--3-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item\"\n >\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part1Child'\"\n class=\"sr-only\"\n >\n Code du pays\n </label>\n <small\n [id]=\"buildId() + '_part1ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Etant obligatoirement un num\u00E9ro AVS suisse, ce\n champs est pr\u00E9rempli\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part1'\"\n [id]=\"buildId() + '_part1'\"\n [model]=\"PREFIX_NAVS\"\n [maxlength]=\"3\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n [disabled]=\"true\"\n ></foehn-input-number>\n </div>\n </div>\n\n <div class=\"vd-form-flex__item vd-form-flex__item--4-char-width\">\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part2Child'\"\n class=\"sr-only\"\n >\n Premiers chiffres al\u00E9atoires et anonymes\n </label>\n <small\n [id]=\"buildId() + '_part2ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir quatres chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 1234\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part2'\"\n [id]=\"buildId() + '_part2'\"\n [(model)]=\"part2\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"4\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n (paste)=\"onPaste($event)\"\n ></foehn-input-number>\n </div>\n </div>\n\n <div class=\"vd-form-flex__item vd-form-flex__item--4-char-width\">\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part3Child'\"\n class=\"sr-only\"\n >\n Deuxi\u00E8mes chiffres al\u00E9atoires et anonymes\n </label>\n <small\n [id]=\"buildId() + '_part3ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir quatres chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 5678\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part3'\"\n [id]=\"buildId() + '_part3'\"\n [(model)]=\"part3\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"4\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-number>\n </div>\n </div>\n\n <div\n [ngClass]=\"{\n 'vd-form-flex__item--3-char-width':\n displayClearButton() | async,\n 'vd-form-flex__item--2-char-width': !(\n displayClearButton() | async\n )\n }\"\n class=\"vd-form-flex__item vd-form-flex__item--3-char-width\"\n >\n <div class=\"form-group\">\n <label\n [attr.for]=\"buildId() + '_part4Child'\"\n class=\"sr-only\"\n >\n Chiffre al\u00E9atoire et anonyme et num\u00E9ro de contr\u00F4le\n </label>\n <small\n [id]=\"buildId() + '_part4ChildHelp'\"\n class=\"form-text text-secondary\"\n >\n <span class=\"sr-only\">\n Saisir deux chiffres :\n <abbr title=\"Exemple\">Ex.</abbr>\n : 97\n </span>\n </small>\n\n <foehn-input-number\n [name]=\"name + '_part4'\"\n [id]=\"buildId() + '_part4'\"\n [(model)]=\"part4\"\n (modelChange)=\"updateNavs()\"\n [maxlength]=\"2\"\n [autocomplete]=\"'off'\"\n [clearButton]=\"displayClearButton() | async\"\n (userInput)=\"handleUserInput()\"\n [isErrorInherited]=\"hasErrorsToDisplay()\"\n [disabled]=\"disabled\"\n ></foehn-input-number>\n </div>\n </div>\n </div>\n </fieldset>\n</div>\n" }]
107
113
  }] });
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtbmF2MTMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLW5hdjEzL2ZvZWhuLWlucHV0LW5hdjEzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1uYXYxMy9mb2Vobi1pbnB1dC1uYXYxMy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFhM0UsTUFBTSxPQUFPLHdCQUNULFNBQVEseUJBQXlCO0lBWnJDOztRQWNJLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBdUZ2QjtJQWxGRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsa0RBQWtELENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELGVB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S0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNFLENBQUM7O3FIQXpGUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0Q0FSdEI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDZEwsOGhQQThMQTsyRkQ5S2Esd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNJLG1CQUFtQixhQUVsQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LW5hdjEzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtbmF2MTMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dE5hdjEzQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXROYXYxM0NvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBQUkVGSVhfTkFWUyA9ICc3NTYnO1xuICAgIHBhcnQyOiBzdHJpbmc7XG4gICAgcGFydDM6IHN0cmluZztcbiAgICBwYXJ0NDogc3RyaW5nO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICghdGhpcy5oZWxwVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9ICdQYXIgZXhlbXBsZSwgNzU2IDEyMzQgNTY3OCA5Nyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsID0gJ1ZvdHJlIG51bcOpcm8gPGFiYnIgdGl0bGU9XCJOdW3DqXJvIEFWU1wiPkFWUzwvYWJicj4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTmF2cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcnQyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGFydDMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5wYXJ0NCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIC8vIE92ZXJyaWRlIHRoZSBjbGVhciBidXR0b24gZm9uY3Rpb24gbm90IHdvcnJ5IGFib3V0IHRoZSBtb2RlbCBhdCB0aGlzIHN0YWdlLlxuICAgICAgICByZXR1cm4gb2YodGhpcy5jbGVhckJ1dHRvbik7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmVudFBhc3RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFzdGVkVmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhXG4gICAgICAgICAgICAuZ2V0RGF0YSgndGV4dCcpXG4gICAgICAgICAgICA/LnJlcGxhY2UoLyAvZywgJycpO1xuICAgICAgICBjb25zdCBpc1Bhc3RlZFZhbHVlTW9yZVRoYW5PbmVBdnNCbG9jayA9IHBhc3RlZFZhbHVlPy5sZW5ndGggPiA0O1xuXG4gICAgICAgIGlmIChpc1Bhc3RlZFZhbHVlTW9yZVRoYW5PbmVBdnNCbG9jaykge1xuICAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHBhc3RlZFZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGxpdFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMTMgJiYgIXZhbHVlLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgIHRoaXMucGFydDIgPSB2YWx1ZS5zdWJzdHIoMywgNCk7XG4gICAgICAgICAgICB0aGlzLnBhcnQzID0gdmFsdWUuc3Vic3RyKDcsIDQpO1xuICAgICAgICAgICAgdGhpcy5wYXJ0NCA9IHZhbHVlLnN1YnN0cigxMSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZCA9IHZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICB0aGlzLnBhcnQyID0gc3BsaXR0ZWRbMV07XG4gICAgICAgICAgICB0aGlzLnBhcnQzID0gc3BsaXR0ZWRbMl07XG4gICAgICAgICAgICB0aGlzLnBhcnQ0ID0gc3BsaXR0ZWRbM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5wYXJ0MiAmJiAhdGhpcy5wYXJ0MyAmJiAhdGhpcy5wYXJ0NCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcnQyID0gdGhpcy5wYXJ0MiB8fCAnJztcbiAgICAgICAgdGhpcy5wYXJ0MyA9IHRoaXMucGFydDMgfHwgJyc7XG4gICAgICAgIHRoaXMucGFydDQgPSB0aGlzLnBhcnQ0IHx8ICcnO1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5QUkVGSVhfTkFWU30uJHt0aGlzLnBhcnQyfS4ke3RoaXMucGFydDN9LiR7dGhpcy5wYXJ0NH1gO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJtYi0zXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgID5cbiAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiAndmQtcCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sZWdlbmQ+XG5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICd2ZC1mb3JtLWZsZXhfX2l0ZW0tLTQtY2hhci13aWR0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAndmQtZm9ybS1mbGV4X19pdGVtLS0zLWNoYXItd2lkdGgnOiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhfX2l0ZW1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDFDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ29kZSBkdSBwYXlzXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDFDaGlsZEhlbHAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXRhbnQgb2JsaWdhdG9pcmVtZW50IHVuIG51bcOpcm8gQVZTIHN1aXNzZSwgY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFtcHMgZXN0IHByw6lyZW1wbGlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cblxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19wYXJ0MSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJQUkVGSVhfTkFWU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LW51bWJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmQtZm9ybS1mbGV4X19pdGVtIHZkLWZvcm0tZmxleF9faXRlbS0tNC1jaGFyLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRJZCgpICsgJ19wYXJ0MkNoaWxkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVtaWVycyBjaGlmZnJlcyBhbMOpYXRvaXJlcyBldCBhbm9ueW1lc1xuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQyQ2hpbGRIZWxwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhaXNpciBxdWF0cmVzIGNoaWZmcmVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWJiciB0aXRsZT1cIkV4ZW1wbGVcIj5FeC48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxMjM0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfcGFydDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJwYXJ0MlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlTmF2cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZkLWZvcm0tZmxleF9faXRlbSB2ZC1mb3JtLWZsZXhfX2l0ZW0tLTQtY2hhci13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDNDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGV1eGnDqG1lcyBjaGlmZnJlcyBhbMOpYXRvaXJlcyBldCBhbm9ueW1lc1xuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQzQ2hpbGRIZWxwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhaXNpciBxdWF0cmVzIGNoaWZmcmVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWJiciB0aXRsZT1cIkV4ZW1wbGVcIj5FeC48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA1Njc4XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfcGFydDMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJwYXJ0M1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlTmF2cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtbnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICd2ZC1mb3JtLWZsZXhfX2l0ZW0tLTMtY2hhci13aWR0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAndmQtZm9ybS1mbGV4X19pdGVtLS0yLWNoYXItd2lkdGgnOiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhfX2l0ZW0gdmQtZm9ybS1mbGV4X19pdGVtLS0zLWNoYXItd2lkdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDRDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ2hpZmZyZSBhbMOpYXRvaXJlIGV0IGFub255bWUgZXQgbnVtw6lybyBkZSBjb250csO0bGVcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ19wYXJ0NENoaWxkSGVscCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYWlzaXIgZGV1eCBjaGlmZnJlcyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFiYnIgdGl0bGU9XCJFeGVtcGxlXCI+RXguPC9hYmJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogOTdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cblxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19wYXJ0NCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInBhcnQ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVOYXZzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ29mZidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4taW5wdXQtbmF2MTMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLW5hdjEzL2ZvZWhuLWlucHV0LW5hdjEzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1uYXYxMy9mb2Vobi1pbnB1dC1uYXYxMy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7QUFhM0UsTUFBTSxPQUFPLHdCQUNULFNBQVEseUJBQXlCO0lBWnJDOztRQWNJLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0tBK0Z2QjtJQTFGRyxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsK0JBQStCLENBQUM7U0FDbkQ7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsa0RBQWtELENBQUM7U0FDbkU7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN4QyxJQUFJLE9BQU8sVUFBVSxLQUFLLFdBQVcsRUFBRTtZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0wsQ0FBQztJQUVELGVB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QUNmO1lBRUQsT0FBTyxTQUFTLENBQUM7U0FDcEI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNFLENBQUM7O3FIQWpHUSx3QkFBd0I7eUdBQXhCLHdCQUF3Qiw0Q0FSdEI7UUFDUDtZQUNJLE9BQU8sRUFBRSxtQkFBbUI7WUFDNUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztZQUN2RCxLQUFLLEVBQUUsSUFBSTtTQUNkO0tBQ0osaURDZEwsOGhQQThMQTsyRkQ5S2Esd0JBQXdCO2tCQVhwQyxTQUFTOytCQUNJLG1CQUFtQixhQUVsQjt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsbUJBQW1COzRCQUM1QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQzs0QkFDdkQsS0FBSyxFQUFFLElBQUk7eUJBQ2Q7cUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvZWhuSW5wdXRTdHJpbmdDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IEZvZWhuSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9mb2Vobi1pbnB1dC9mb2Vobi1pbnB1dC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZvZWhuLWlucHV0LW5hdjEzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4taW5wdXQtbmF2MTMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBGb2VobklucHV0Q29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm9laG5JbnB1dE5hdjEzQ29tcG9uZW50KSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuSW5wdXROYXYxM0NvbXBvbmVudFxuICAgIGV4dGVuZHMgRm9laG5JbnB1dFN0cmluZ0NvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBQUkVGSVhfTkFWUyA9ICc3NTYnO1xuICAgIHBhcnQyOiBzdHJpbmc7XG4gICAgcGFydDM6IHN0cmluZztcbiAgICBwYXJ0NDogc3RyaW5nO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgICAgIGlmICghdGhpcy5oZWxwVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5oZWxwVGV4dCA9ICdQYXIgZXhlbXBsZSwgNzU2IDEyMzQgNTY3OCA5Nyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLmxhYmVsID0gJ1ZvdHJlIG51bcOpcm8gPGFiYnIgdGl0bGU9XCJOdW3DqXJvIEFWU1wiPkFWUzwvYWJicj4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTmF2cygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdmFsaWRWYWx1ZSA9IHRoaXMuZ2V0VmFsaWRWYWx1ZSgpO1xuICAgICAgICBpZiAodHlwZW9mIHZhbGlkVmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU5nTW9kZWwodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVVc2VySW5wdXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbGlkVmFsdWUgPSB0aGlzLmdldFZhbGlkVmFsdWUoKTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsaWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEhdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc3BsaXRWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcnQyID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMucGFydDMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5wYXJ0NCA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIC8vIE92ZXJyaWRlIHRoZSBjbGVhciBidXR0b24gZm9uY3Rpb24gbm90IHdvcnJ5IGFib3V0IHRoZSBtb2RlbCBhdCB0aGlzIHN0YWdlLlxuICAgICAgICByZXR1cm4gb2YodGhpcy5jbGVhckJ1dHRvbik7XG4gICAgfVxuXG4gICAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucHJldmVudFBhc3RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFzdGVkVmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhXG4gICAgICAgICAgICAuZ2V0RGF0YSgndGV4dCcpXG4gICAgICAgICAgICA/LnJlcGxhY2UoLyAvZywgJycpO1xuXG4gICAgICAgIGNvbnN0IGlzUGFzdGVkVmFsdWVNb3JlVGhhbk9uZUF2c0Jsb2NrID0gcGFzdGVkVmFsdWU/Lmxlbmd0aCA+IDQ7XG5cbiAgICAgICAgaWYgKGlzUGFzdGVkVmFsdWVNb3JlVGhhbk9uZUF2c0Jsb2NrKSB7XG4gICAgICAgICAgICBsZXQgdmFsdWVUb1Bhc3RlID0gcGFzdGVkVmFsdWU7XG4gICAgICAgICAgICBpZiAoIXBhc3RlZFZhbHVlLnN0YXJ0c1dpdGgodGhpcy5QUkVGSVhfTkFWUykpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZVRvUGFzdGUgPSBwYXN0ZWRWYWx1ZS5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgICAgID8gYCR7dGhpcy5QUkVGSVhfTkFWU30uJHtwYXN0ZWRWYWx1ZX1gXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5QUkVGSVhfTkFWUyArIHBhc3RlZFZhbHVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodmFsdWVUb1Bhc3RlKTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVXNlcklucHV0KCk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzcGxpdFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMTMgJiYgIXZhbHVlLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgICAgIHRoaXMucGFydDIgPSB2YWx1ZS5zdWJzdHIoMywgNCk7XG4gICAgICAgICAgICB0aGlzLnBhcnQzID0gdmFsdWUuc3Vic3RyKDcsIDQpO1xuICAgICAgICAgICAgdGhpcy5wYXJ0NCA9IHZhbHVlLnN1YnN0cigxMSwgMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzcGxpdHRlZCA9IHZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICB0aGlzLnBhcnQyID0gc3BsaXR0ZWRbMV07XG4gICAgICAgICAgICB0aGlzLnBhcnQzID0gc3BsaXR0ZWRbMl07XG4gICAgICAgICAgICB0aGlzLnBhcnQ0ID0gc3BsaXR0ZWRbM107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhbGlkVmFsdWUoKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmICghdGhpcy5wYXJ0MiAmJiAhdGhpcy5wYXJ0MyAmJiAhdGhpcy5wYXJ0NCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kZWxfICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhcnQyID0gdGhpcy5wYXJ0MiB8fCAnJztcbiAgICAgICAgdGhpcy5wYXJ0MyA9IHRoaXMucGFydDMgfHwgJyc7XG4gICAgICAgIHRoaXMucGFydDQgPSB0aGlzLnBhcnQ0IHx8ICcnO1xuICAgICAgICByZXR1cm4gYCR7dGhpcy5QUkVGSVhfTkFWU30uJHt0aGlzLnBhcnQyfS4ke3RoaXMucGFydDN9LiR7dGhpcy5wYXJ0NH1gO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgIFtjbGFzcy5oYXMtZGFuZ2VyXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpXCJcbiAgICBbY2xhc3MudmQtZm9ybS1ncm91cC1kYW5nZXJdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoJ0NvbnRhaW5lcicpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbj5cbiAgICA8ZmllbGRzZXRcbiAgICAgICAgY2xhc3M9XCJtYi0zXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJnZXREZXNjcmliZWRCeSgpXCJcbiAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImhhc0Vycm9yc1RvRGlzcGxheSgpIHx8IG51bGxcIlxuICAgID5cbiAgICAgICAgPGxlZ2VuZFxuICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkQ2hpbGRJZCgpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImlzTGFiZWxTck9ubHkgPyAnc3Itb25seScgOiAndmQtcCdcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIiFyZXF1aXJlZCAmJiAhaGlkZU5vdFJlcXVpcmVkRXh0cmFMYWJlbFwiXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4taW5wdXQub3B0aW9uYWwnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sZWdlbmQ+XG5cbiAgICAgICAgPGZvZWhuLXZhbGlkYXRpb24tYWxlcnRzIFtjb21wb25lbnRdPVwidGhpc1wiPjwvZm9laG4tdmFsaWRhdGlvbi1hbGVydHM+XG5cbiAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAqbmdJZj1cImhlbHBUZXh0XCJcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImJ1aWxkSWQoKSArICdIZWxwJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImhlbHBUZXh0XCJcbiAgICAgICAgPjwvc21hbGw+XG5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICd2ZC1mb3JtLWZsZXhfX2l0ZW0tLTQtY2hhci13aWR0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAndmQtZm9ybS1mbGV4X19pdGVtLS0zLWNoYXItd2lkdGgnOiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhfX2l0ZW1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDFDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ29kZSBkdSBwYXlzXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDFDaGlsZEhlbHAnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS10ZXh0IHRleHQtc2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRXRhbnQgb2JsaWdhdG9pcmVtZW50IHVuIG51bcOpcm8gQVZTIHN1aXNzZSwgY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFtcHMgZXN0IHByw6lyZW1wbGlcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cblxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19wYXJ0MSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDEnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlbF09XCJQUkVGSVhfTkFWU1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbWF4bGVuZ3RoXT1cIjNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xlYXJCdXR0b25dPVwiZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2ZvZWhuLWlucHV0LW51bWJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmQtZm9ybS1mbGV4X19pdGVtIHZkLWZvcm0tZmxleF9faXRlbS0tNC1jaGFyLXdpZHRoXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5mb3JdPVwiYnVpbGRJZCgpICsgJ19wYXJ0MkNoaWxkJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW9ubHlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBQcmVtaWVycyBjaGlmZnJlcyBhbMOpYXRvaXJlcyBldCBhbm9ueW1lc1xuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQyQ2hpbGRIZWxwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhaXNpciBxdWF0cmVzIGNoaWZmcmVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWJiciB0aXRsZT1cIkV4ZW1wbGVcIj5FeC48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAxMjM0XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfcGFydDInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQyJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJwYXJ0MlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlTmF2cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZkLWZvcm0tZmxleF9faXRlbSB2ZC1mb3JtLWZsZXhfX2l0ZW0tLTQtY2hhci13aWR0aFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDNDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgRGV1eGnDqG1lcyBjaGlmZnJlcyBhbMOpYXRvaXJlcyBldCBhbm9ueW1lc1xuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c21hbGxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQzQ2hpbGRIZWxwJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tdGV4dCB0ZXh0LXNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNhaXNpciBxdWF0cmVzIGNoaWZmcmVzIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YWJiciB0aXRsZT1cIkV4ZW1wbGVcIj5FeC48L2FiYnI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA1Njc4XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWlucHV0LW51bWJlclxuICAgICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZSArICdfcGFydDMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJidWlsZElkKCkgKyAnX3BhcnQzJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJwYXJ0M1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwidXBkYXRlTmF2cygpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXhsZW5ndGhdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhckJ1dHRvbl09XCJkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh1c2VySW5wdXQpPVwiaGFuZGxlVXNlcklucHV0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lzRXJyb3JJbmhlcml0ZWRdPVwiaGFzRXJyb3JzVG9EaXNwbGF5KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZm9laG4taW5wdXQtbnVtYmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICd2ZC1mb3JtLWZsZXhfX2l0ZW0tLTMtY2hhci13aWR0aCc6XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Q2xlYXJCdXR0b24oKSB8IGFzeW5jLFxuICAgICAgICAgICAgICAgICAgICAndmQtZm9ybS1mbGV4X19pdGVtLS0yLWNoYXItd2lkdGgnOiAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUNsZWFyQnV0dG9uKCkgfCBhc3luY1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2ZC1mb3JtLWZsZXhfX2l0ZW0gdmQtZm9ybS1mbGV4X19pdGVtLS0zLWNoYXItd2lkdGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZm9yXT1cImJ1aWxkSWQoKSArICdfcGFydDRDaGlsZCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJzci1vbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQ2hpZmZyZSBhbMOpYXRvaXJlIGV0IGFub255bWUgZXQgbnVtw6lybyBkZSBjb250csO0bGVcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiYnVpbGRJZCgpICsgJ19wYXJ0NENoaWxkSGVscCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXRleHQgdGV4dC1zZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTYWlzaXIgZGV1eCBjaGlmZnJlcyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFiYnIgdGl0bGU9XCJFeGVtcGxlXCI+RXguPC9hYmJyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogOTdcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cblxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4taW5wdXQtbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lICsgJ19wYXJ0NCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImJ1aWxkSWQoKSArICdfcGFydDQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInBhcnQ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJ1cGRhdGVOYXZzKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heGxlbmd0aF09XCIyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvY29tcGxldGVdPVwiJ29mZidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyQnV0dG9uXT1cImRpc3BsYXlDbGVhckJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXJJbnB1dCk9XCJoYW5kbGVVc2VySW5wdXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNFcnJvckluaGVyaXRlZF09XCJoYXNFcnJvcnNUb0Rpc3BsYXkoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mb2Vobi1pbnB1dC1udW1iZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9maWVsZHNldD5cbjwvZGl2PlxuIl19
@@ -1,30 +1,52 @@
1
1
  import { Component, Input } from '@angular/core';
2
2
  import { FoehnNavigationService } from '../foehn-navigation/foehn-navigation.service';
3
3
  import { SESSION_EXPIRED } from '../gesdem/gesdem-error-handler.service';
4
+ import { ActionStatut, GesdemStatutUtils } from '../gesdem/gesdem-statut-utils';
5
+ import { of } from 'rxjs';
6
+ import { catchError, map, tap } from 'rxjs/operators';
4
7
  import * as i0 from "@angular/core";
5
8
  import * as i1 from "@angular/router";
6
9
  import * as i2 from "../foehn-navigation/foehn-navigation.service";
7
10
  import * as i3 from "../gesdem/gesdem-handler.service";
8
- import * as i4 from "../foehn-page/foehn-page.service";
9
- import * as i5 from "../sdk-support-alert/support-alert.service";
10
- import * as i6 from "../foehn-debug-summary/foehn-debug-summary.component";
11
- import * as i7 from "../gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component";
12
- import * as i8 from "@angular/common";
11
+ import * as i4 from "../gesdem/gesdem-event.service";
12
+ import * as i5 from "../foehn-page/foehn-page.service";
13
+ import * as i6 from "../sdk-support-alert/support-alert.service";
14
+ import * as i7 from "../sdk-appinfo/application-info.service";
15
+ import * as i8 from "../foehn-debug-summary/foehn-debug-summary.component";
16
+ import * as i9 from "../gesdem-action-recovery/gesdem-action-recovery-login/gesdem-action-recovery-login.component";
17
+ import * as i10 from "@angular/common";
18
+ import * as i11 from "../sdk-dictionary/sdk-dictionary.pipe";
13
19
  export class GesdemErrorComponent {
14
- constructor(activatedRoute, navigation, gesdemService, foehnPageService, supportAlertService) {
20
+ constructor(activatedRoute, navigation, gesdemService, gesdemEventService, foehnPageService, supportAlertService, applicationInfoService) {
15
21
  this.activatedRoute = activatedRoute;
16
22
  this.navigation = navigation;
17
23
  this.gesdemService = gesdemService;
24
+ this.gesdemEventService = gesdemEventService;
18
25
  this.foehnPageService = foehnPageService;
19
26
  this.supportAlertService = supportAlertService;
27
+ this.applicationInfoService = applicationInfoService;
20
28
  this.setPageTitle = true;
21
29
  this.hasSessionExpired = false;
22
30
  const route = FoehnNavigationService.getRootRouteRecursive(activatedRoute.snapshot);
23
31
  navigation.initRoute(route);
24
32
  this.link = this.getBasePath();
33
+ this.reference = this.activatedRoute.snapshot.params.reference;
34
+ this.supportLink = this.applicationInfoService.getSafeSupportFormUrl(this.reference);
35
+ if (!this.reference?.length) {
36
+ this.isPendingPayment = of(false);
37
+ }
38
+ else {
39
+ this.isPendingPayment = this.gesdemService
40
+ .retrieve(this.reference)
41
+ .pipe(map(() => ActionStatut[this.gesdemService.lastResponse.meta
42
+ .statut]), tap(statut => {
43
+ if (GesdemStatutUtils.isFinal(statut)) {
44
+ this.navigation.last();
45
+ }
46
+ }), map(statut => statut === ActionStatut.PENDING_PAYMENT), catchError(() => of(false)));
47
+ }
25
48
  }
26
49
  ngOnInit() {
27
- this.reference = this.activatedRoute.snapshot.params.reference;
28
50
  if (this.reference) {
29
51
  const firstPage = this.getFirstPage();
30
52
  if (this.gesdemService.prefix) {
@@ -55,12 +77,12 @@ export class GesdemErrorComponent {
55
77
  return '/';
56
78
  }
57
79
  }
58
- GesdemErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FoehnNavigationService }, { token: i3.GesdemHandlerService }, { token: i4.FoehnPageService }, { token: i5.SupportAlertService }], target: i0.ɵɵFactoryTarget.Component });
59
- GesdemErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <p class=\"card-text vd-card-text\">\n {{\n !!reference\n ? 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous'\n : 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous'\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n !!reference\n ? 'Reprendre ma demande'\n : 'Recommencer'\n }}\n </a>\n </li>\n </ul>\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n", components: [{ type: i6.FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { type: i7.GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }], directives: [{ type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
80
+ GesdemErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.FoehnNavigationService }, { token: i3.GesdemHandlerService }, { token: i4.GesdemEventService }, { token: i5.FoehnPageService }, { token: i6.SupportAlertService }, { token: i7.ApplicationInfoService }], target: i0.ɵɵFactoryTarget.Component });
81
+ GesdemErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: GesdemErrorComponent, selector: "gesdem-error", inputs: { setPageTitle: "setPageTitle" }, ngImport: i0, template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n", components: [{ type: i8.FoehnDebugSummaryComponent, selector: "foehn-debug-summary" }, { type: i9.GesdemActionRecoveryLoginComponent, selector: "gesdem-action-recovery-login", inputs: ["reference", "redirectTarget"] }], directives: [{ type: i10.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i10.AsyncPipe, "fromDictionary": i11.SdkDictionaryPipe } });
60
82
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorComponent, decorators: [{
61
83
  type: Component,
62
- args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <p class=\"card-text vd-card-text\">\n {{\n !!reference\n ? 'Vous pouvez essayer de reprendre votre demande en cliquant sur le lien ci-dessous'\n : 'Vous pouvez recommencer une demande en cliquant sur le lien ci-dessous'\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n !!reference\n ? 'Reprendre ma demande'\n : 'Recommencer'\n }}\n </a>\n </li>\n </ul>\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n" }]
63
- }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FoehnNavigationService }, { type: i3.GesdemHandlerService }, { type: i4.FoehnPageService }, { type: i5.SupportAlertService }]; }, propDecorators: { setPageTitle: [{
84
+ args: [{ selector: 'gesdem-error', template: "<div class=\"vd-card mb-3\" *ngIf=\"!hasSessionExpired\">\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-xs-8\">\n <div class=\"card-body\">\n <ng-container *ngIf=\"(isPendingPayment | async) === true\">\n <p\n class=\"card-text vd-card-text alert alert-danger\"\n [innerHTML]=\"\n 'gesdem-error.text.pending-payment'\n | fromDictionary\n : {\n supportLink: (supportLink | async)\n }\n \"\n ></p>\n </ng-container>\n <ng-container *ngIf=\"(isPendingPayment | async) === false\">\n <p class=\"card-text vd-card-text\">\n {{\n (!!reference\n ? 'gesdem-error.text.has-reference'\n : 'gesdem-error.text.has-no-reference'\n ) | fromDictionary\n }}\n </p>\n <ul class=\"vd-list-links\">\n <li>\n <a [href]=\"link\">\n {{\n (!!reference\n ? 'gesdem-error.link.has-reference'\n : 'gesdem-error.link.has-no-reference'\n ) | fromDictionary\n }}\n </a>\n </li>\n </ul>\n </ng-container>\n\n <foehn-debug-summary></foehn-debug-summary>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<gesdem-action-recovery-login\n *ngIf=\"hasSessionExpired\"\n [reference]=\"reference\"\n [redirectTarget]=\"link\"\n></gesdem-action-recovery-login>\n" }]
85
+ }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.FoehnNavigationService }, { type: i3.GesdemHandlerService }, { type: i4.GesdemEventService }, { type: i5.FoehnPageService }, { type: i6.SupportAlertService }, { type: i7.ApplicationInfoService }]; }, propDecorators: { setPageTitle: [{
64
86
  type: Input
65
87
  }] } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBSXRGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7Ozs7OztBQU96RSxNQUFNLE9BQU8sb0JBQW9CO0lBUTdCLFlBQ1ksY0FBOEIsRUFDOUIsVUFBa0MsRUFDbEMsYUFBbUMsRUFDbkMsZ0JBQWtDLEVBQ2xDLG1CQUF3QztRQUp4QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsZUFBVSxHQUFWLFVBQVUsQ0FBd0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVhwRCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQUlwQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFTdEIsTUFBTSxLQUFLLEdBQUcsc0JBQXNCLENBQUMscUJBQXFCLENBQ3RELGNBQWMsQ0FBQyxRQUFRLENBQzFCLENBQUM7UUFDRixVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUM7YUFDaEQ7WUFFRCxJQUFJLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFbkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDNUQsV0FBVyxDQUNkLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsU0FBUyxLQUFLLGVBQWUsQ0FBQztTQUMxRDtRQUVELDRGQUE0RjtRQUM1RiwwRkFBMEY7UUFDMUYsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FDOUIsSUFBSSxDQUFDLGlCQUFpQjtnQkFDbEIsQ0FBQyxDQUFDLHVCQUF1QjtnQkFDekIsQ0FBQyxDQUFDLG1CQUFtQixDQUM1QixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVPLFdBQVc7UUFDZixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDdkI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7O2lIQTlEUSxvQkFBb0I7cUdBQXBCLG9CQUFvQiw4RkNiakMsczJDQW1DQTsyRkR0QmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUVJLGNBQWM7OE9BS3hCLFlBQVk7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1uYXZpZ2F0aW9uL2ZvZWhuLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuUGFnZVNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IFNFU1NJT05fRVhQSVJFRCB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0tZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1lcnJvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlc2RlbS1lcnJvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2VzZGVtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0UGFnZVRpdGxlID0gdHJ1ZTtcblxuICAgIGxpbms6IHN0cmluZztcbiAgICByZWZlcmVuY2U6IHN0cmluZztcbiAgICBoYXNTZXNzaW9uRXhwaXJlZCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICBwcml2YXRlIG5hdmlnYXRpb246IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtU2VydmljZTogR2VzZGVtSGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZm9laG5QYWdlU2VydmljZTogRm9laG5QYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdXBwb3J0QWxlcnRTZXJ2aWNlOiBTdXBwb3J0QWxlcnRTZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gRm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRSb290Um91dGVSZWN1cnNpdmUoXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxuICAgICAgICApO1xuICAgICAgICBuYXZpZ2F0aW9uLmluaXRSb3V0ZShyb3V0ZSk7XG4gICAgICAgIHRoaXMubGluayA9IHRoaXMuZ2V0QmFzZVBhdGgoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcy5yZWZlcmVuY2U7XG4gICAgICAgIGlmICh0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYWdlID0gdGhpcy5nZXRGaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rICs9IGAke3RoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXh9L2A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubGluayArPSBgJHt0aGlzLnJlZmVyZW5jZX0vJHtmaXJzdFBhZ2UucGF0aH1gO1xuXG4gICAgICAgICAgICBjb25zdCBlcnJvckNvZGUgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KFxuICAgICAgICAgICAgICAgICdlcnJvckNvZGUnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5oYXNTZXNzaW9uRXhwaXJlZCA9IGVycm9yQ29kZSA9PT0gU0VTU0lPTl9FWFBJUkVEO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGVycm9yIG1pZ2h0IGhhdmUgYmVlbiBjYXVzZWQgYnkgYW4gaXNzdWUgd2l0aCB0aGUgcHJlc3RhdGlvbiB0aGF0IGhhcyBiZWVuIGlkZW50aWZpZWRcbiAgICAgICAgLy8gd2hpbHN0IHRoZSB1c2VyIGlzIHVzaW5nIHRoZSBwcmVzdGF0aW9uLiBUaGlzIGVuc3VyZXMgdGhhdCBpZiBhbnkgYWxlcnQgaXMgYWRkZWQgYnkgdGhlXG4gICAgICAgIC8vIGFkbWluaXN0cmF0b3IsIHRoZSB1c2VyIHdpbGwgYXQgbGVhc3Qgc2VlIHRoZW0gaWYgYW4gZXJyb3IgaXMgc2hvd24uXG4gICAgICAgIHRoaXMuc3VwcG9ydEFsZXJ0U2VydmljZS5yZWZyZXNoQWxlcnRzKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2V0UGFnZVRpdGxlKSB7XG4gICAgICAgICAgICB0aGlzLmZvZWhuUGFnZVNlcnZpY2Uuc2V0UGFnZVRpdGxlKFxuICAgICAgICAgICAgICAgIHRoaXMuaGFzU2Vzc2lvbkV4cGlyZWRcbiAgICAgICAgICAgICAgICAgICAgPyAnUmVwcmlzZSBkZSBsYSBkZW1hbmRlJ1xuICAgICAgICAgICAgICAgICAgICA6ICdFcnJldXIgcmVuY29udHLDqWUnXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaXJzdFBhZ2UoKTogUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmdldEZpcnN0Um91dGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEJhc2VQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYmFzZScpO1xuICAgICAgICBpZiAoYmFzZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBiYXNlWzBdLmhyZWY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcvJztcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidmQtY2FyZCBtYi0zXCIgKm5nSWY9XCIhaGFzU2Vzc2lvbkV4cGlyZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYXJkLXRleHQgdmQtY2FyZC10ZXh0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ1ZvdXMgcG91dmV6IGVzc2F5ZXIgZGUgcmVwcmVuZHJlIHZvdHJlIGRlbWFuZGUgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnVm91cyBwb3V2ZXogcmVjb21tZW5jZXIgdW5lIGRlbWFuZGUgZW4gY2xpcXVhbnQgc3VyIGxlIGxpZW4gY2ktZGVzc291cydcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmQtbGlzdC1saW5rc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImxpbmtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhcmVmZXJlbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnUmVwcmVuZHJlIG1hIGRlbWFuZGUnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnUmVjb21tZW5jZXInXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWRlYnVnLXN1bW1hcnk+PC9mb2Vobi1kZWJ1Zy1zdW1tYXJ5PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxnZXNkZW0tYWN0aW9uLXJlY292ZXJ5LWxvZ2luXG4gICAgKm5nSWY9XCJoYXNTZXNzaW9uRXhwaXJlZFwiXG4gICAgW3JlZmVyZW5jZV09XCJyZWZlcmVuY2VcIlxuICAgIFtyZWRpcmVjdFRhcmdldF09XCJsaW5rXCJcbj48L2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW4+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBSXRGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDaEYsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVF0RCxNQUFNLE9BQU8sb0JBQW9CO0lBVTdCLFlBQ1ksY0FBOEIsRUFDOUIsVUFBa0MsRUFDbEMsYUFBbUMsRUFDbkMsa0JBQXNDLEVBQ3RDLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsc0JBQThDO1FBTjlDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUF3QjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtR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WUFDbkIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDOztpSEExRlEsb0JBQW9CO3FHQUFwQixvQkFBb0IsOEZDbEJqQyw0dEVBb0RBOzJGRGxDYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBRUksY0FBYztvVEFLeEIsWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9laG5OYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLW5hdmlnYXRpb24vZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1cHBvcnRBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZGstc3VwcG9ydC1hbGVydC9zdXBwb3J0LWFsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgU0VTU0lPTl9FWFBJUkVEIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aW9uU3RhdHV0LCBHZXNkZW1TdGF0dXRVdGlscyB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0tc3RhdHV0LXV0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBHZXNkZW1FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ2dlc2RlbS1lcnJvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlc2RlbS1lcnJvci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgR2VzZGVtRXJyb3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgc2V0UGFnZVRpdGxlID0gdHJ1ZTtcblxuICAgIGxpbms6IHN0cmluZztcbiAgICByZWZlcmVuY2U6IHN0cmluZztcbiAgICBzdXBwb3J0TGluazogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICAgIGhhc1Nlc3Npb25FeHBpcmVkID0gZmFsc2U7XG4gICAgaXNQZW5kaW5nUGF5bWVudDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUV2ZW50U2VydmljZTogR2VzZGVtRXZlbnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gRm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRSb290Um91dGVSZWN1cnNpdmUoXG4gICAgICAgICAgICBhY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxuICAgICAgICApO1xuICAgICAgICBuYXZpZ2F0aW9uLmluaXRSb3V0ZShyb3V0ZSk7XG4gICAgICAgIHRoaXMubGluayA9IHRoaXMuZ2V0QmFzZVBhdGgoKTtcbiAgICAgICAgdGhpcy5yZWZlcmVuY2UgPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmFtcy5yZWZlcmVuY2U7XG4gICAgICAgIHRoaXMuc3VwcG9ydExpbmsgPSB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZ2V0U2FmZVN1cHBvcnRGb3JtVXJsKFxuICAgICAgICAgICAgdGhpcy5yZWZlcmVuY2VcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCF0aGlzLnJlZmVyZW5jZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGVuZGluZ1BheW1lbnQgPSBvZihmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzUGVuZGluZ1BheW1lbnQgPSB0aGlzLmdlc2RlbVNlcnZpY2VcbiAgICAgICAgICAgICAgICAucmV0cmlldmUodGhpcy5yZWZlcmVuY2UpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uU3RhdHV0W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdGF0dXQgYXMgQWN0aW9uU3RhdHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICB0YXAoc3RhdHV0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChHZXNkZW1TdGF0dXRVdGlscy5pc0ZpbmFsKHN0YXR1dCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24ubGFzdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgbWFwKHN0YXR1dCA9PiBzdGF0dXQgPT09IEFjdGlvblN0YXR1dC5QRU5ESU5HX1BBWU1FTlQpLFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKCgpID0+IG9mKGZhbHNlKSlcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29uc3QgZmlyc3RQYWdlID0gdGhpcy5nZXRGaXJzdFBhZ2UoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5saW5rICs9IGAke3RoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXh9L2A7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubGluayArPSBgJHt0aGlzLnJlZmVyZW5jZX0vJHtmaXJzdFBhZ2UucGF0aH1gO1xuICAgICAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtTWFwLmdldChcbiAgICAgICAgICAgICAgICAnZXJyb3JDb2RlJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaGFzU2Vzc2lvbkV4cGlyZWQgPSBlcnJvckNvZGUgPT09IFNFU1NJT05fRVhQSVJFRDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBlcnJvciBtaWdodCBoYXZlIGJlZW4gY2F1c2VkIGJ5IGFuIGlzc3VlIHdpdGggdGhlIHByZXN0YXRpb24gdGhhdCBoYXMgYmVlbiBpZGVudGlmaWVkXG4gICAgICAgIC8vIHdoaWxzdCB0aGUgdXNlciBpcyB1c2luZyB0aGUgcHJlc3RhdGlvbi4gVGhpcyBlbnN1cmVzIHRoYXQgaWYgYW55IGFsZXJ0IGlzIGFkZGVkIGJ5IHRoZVxuICAgICAgICAvLyBhZG1pbmlzdHJhdG9yLCB0aGUgdXNlciB3aWxsIGF0IGxlYXN0IHNlZSB0aGVtIGlmIGFuIGVycm9yIGlzIHNob3duLlxuICAgICAgICB0aGlzLnN1cHBvcnRBbGVydFNlcnZpY2UucmVmcmVzaEFsZXJ0cygpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldFBhZ2VUaXRsZSkge1xuICAgICAgICAgICAgdGhpcy5mb2VoblBhZ2VTZXJ2aWNlLnNldFBhZ2VUaXRsZShcbiAgICAgICAgICAgICAgICB0aGlzLmhhc1Nlc3Npb25FeHBpcmVkXG4gICAgICAgICAgICAgICAgICAgID8gJ1JlcHJpc2UgZGUgbGEgZGVtYW5kZSdcbiAgICAgICAgICAgICAgICAgICAgOiAnRXJyZXVyIHJlbmNvbnRyw6llJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Rmlyc3RQYWdlKCk6IFJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF2aWdhdGlvbi5nZXRGaXJzdFJvdXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRCYXNlUGF0aCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBiYXNlID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Jhc2UnKTtcbiAgICAgICAgaWYgKGJhc2UubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gYmFzZVswXS5ocmVmO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnLyc7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZkLWNhcmQgbWItM1wiICpuZ0lmPVwiIWhhc1Nlc3Npb25FeHBpcmVkXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLThcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNQZW5kaW5nUGF5bWVudCB8IGFzeW5jKSA9PT0gdHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtdGV4dCB2ZC1jYXJkLXRleHQgYWxlcnQgYWxlcnQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2VzZGVtLWVycm9yLnRleHQucGVuZGluZy1wYXltZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRMaW5rOiAoc3VwcG9ydExpbmsgfCBhc3luYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvcD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXNQZW5kaW5nUGF5bWVudCB8IGFzeW5jKSA9PT0gZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiY2FyZC10ZXh0IHZkLWNhcmQtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIXJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnZ2VzZGVtLWVycm9yLnRleHQuaGFzLXJlZmVyZW5jZSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ2dlc2RlbS1lcnJvci50ZXh0Lmhhcy1uby1yZWZlcmVuY2UnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2ZC1saXN0LWxpbmtzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJsaW5rXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICghIXJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICdnZXNkZW0tZXJyb3IubGluay5oYXMtcmVmZXJlbmNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdnZXNkZW0tZXJyb3IubGluay5oYXMtbm8tcmVmZXJlbmNlJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICA8Zm9laG4tZGVidWctc3VtbWFyeT48L2ZvZWhuLWRlYnVnLXN1bW1hcnk+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGdlc2RlbS1hY3Rpb24tcmVjb3ZlcnktbG9naW5cbiAgICAqbmdJZj1cImhhc1Nlc3Npb25FeHBpcmVkXCJcbiAgICBbcmVmZXJlbmNlXT1cInJlZmVyZW5jZVwiXG4gICAgW3JlZGlyZWN0VGFyZ2V0XT1cImxpbmtcIlxuPjwvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS1sb2dpbj5cbiJdfQ==
@@ -4,6 +4,7 @@ import { GesdemErrorComponent } from './gesdem-error.component';
4
4
  import { RouterModule } from '@angular/router';
5
5
  import { GesdemActionRecoveryModule } from '../gesdem-action-recovery/gesdem-action-recovery.module';
6
6
  import { FoehnDebugSummaryComponentModule } from '../foehn-debug-summary/foehn-debug-summary.component.module';
7
+ import { SdkDictionaryModule } from '../sdk-dictionary/sdk-dictionary.module';
7
8
  import * as i0 from "@angular/core";
8
9
  export class GesdemErrorModule {
9
10
  }
@@ -11,12 +12,14 @@ GesdemErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", versio
11
12
  GesdemErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, declarations: [GesdemErrorComponent], imports: [CommonModule,
12
13
  RouterModule,
13
14
  GesdemActionRecoveryModule,
14
- FoehnDebugSummaryComponentModule], exports: [GesdemErrorComponent] });
15
+ FoehnDebugSummaryComponentModule,
16
+ SdkDictionaryModule], exports: [GesdemErrorComponent] });
15
17
  GesdemErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, imports: [[
16
18
  CommonModule,
17
19
  RouterModule,
18
20
  GesdemActionRecoveryModule,
19
- FoehnDebugSummaryComponentModule
21
+ FoehnDebugSummaryComponentModule,
22
+ SdkDictionaryModule
20
23
  ]] });
21
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: GesdemErrorModule, decorators: [{
22
25
  type: NgModule,
@@ -25,10 +28,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
25
28
  CommonModule,
26
29
  RouterModule,
27
30
  GesdemActionRecoveryModule,
28
- FoehnDebugSummaryComponentModule
31
+ FoehnDebugSummaryComponentModule,
32
+ SdkDictionaryModule
29
33
  ],
30
34
  declarations: [GesdemErrorComponent],
31
35
  exports: [GesdemErrorComponent]
32
36
  }]
33
37
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkRBQTZELENBQUM7O0FBWS9HLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFIWCxvQkFBb0IsYUFML0IsWUFBWTtRQUNaLFlBQVk7UUFDWiwwQkFBMEI7UUFDMUIsZ0NBQWdDLGFBRzFCLG9CQUFvQjsrR0FFckIsaUJBQWlCLFlBVGpCO1lBQ0wsWUFBWTtZQUNaLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIsZ0NBQWdDO1NBQ25DOzJGQUlRLGlCQUFpQjtrQkFWN0IsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixZQUFZO3dCQUNaLDBCQUEwQjt3QkFDMUIsZ0NBQWdDO3FCQUNuQztvQkFDRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZXNkZW1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vZ2VzZGVtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgR2VzZGVtQWN0aW9uUmVjb3ZlcnlNb2R1bGUgfSBmcm9tICcuLi9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5L2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkubW9kdWxlJztcbmltcG9ydCB7IEZvZWhuRGVidWdTdW1tYXJ5Q29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tZGVidWctc3VtbWFyeS9mb2Vobi1kZWJ1Zy1zdW1tYXJ5LmNvbXBvbmVudC5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIEdlc2RlbUFjdGlvblJlY292ZXJ5TW9kdWxlLFxuICAgICAgICBGb2VobkRlYnVnU3VtbWFyeUNvbXBvbmVudE1vZHVsZVxuICAgIF0sXG4gICAgZGVjbGFyYXRpb25zOiBbR2VzZGVtRXJyb3JDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtHZXNkZW1FcnJvckNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgR2VzZGVtRXJyb3JNb2R1bGUge31cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VzZGVtLWVycm9yLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9nZXNkZW0tZXJyb3IvZ2VzZGVtLWVycm9yLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDckcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7O0FBYTlFLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFIWCxvQkFBb0IsYUFOL0IsWUFBWTtRQUNaLFlBQVk7UUFDWiwwQkFBMEI7UUFDMUIsZ0NBQWdDO1FBQ2hDLG1CQUFtQixhQUdiLG9CQUFvQjsrR0FFckIsaUJBQWlCLFlBVmpCO1lBQ0wsWUFBWTtZQUNaLFlBQVk7WUFDWiwwQkFBMEI7WUFDMUIsZ0NBQWdDO1lBQ2hDLG1CQUFtQjtTQUN0QjsyRkFJUSxpQkFBaUI7a0JBWDdCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLFlBQVk7d0JBQ1osWUFBWTt3QkFDWiwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsbUJBQW1CO3FCQUN0QjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZXNkZW1FcnJvckNvbXBvbmVudCB9IGZyb20gJy4vZ2VzZGVtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgR2VzZGVtQWN0aW9uUmVjb3ZlcnlNb2R1bGUgfSBmcm9tICcuLi9nZXNkZW0tYWN0aW9uLXJlY292ZXJ5L2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkubW9kdWxlJztcbmltcG9ydCB7IEZvZWhuRGVidWdTdW1tYXJ5Q29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vZm9laG4tZGVidWctc3VtbWFyeS9mb2Vobi1kZWJ1Zy1zdW1tYXJ5LmNvbXBvbmVudC5tb2R1bGUnO1xuaW1wb3J0IHsgU2RrRGljdGlvbmFyeU1vZHVsZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5Lm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFJvdXRlck1vZHVsZSxcbiAgICAgICAgR2VzZGVtQWN0aW9uUmVjb3ZlcnlNb2R1bGUsXG4gICAgICAgIEZvZWhuRGVidWdTdW1tYXJ5Q29tcG9uZW50TW9kdWxlLFxuICAgICAgICBTZGtEaWN0aW9uYXJ5TW9kdWxlXG4gICAgXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtHZXNkZW1FcnJvckNvbXBvbmVudF0sXG4gICAgZXhwb3J0czogW0dlc2RlbUVycm9yQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBHZXNkZW1FcnJvck1vZHVsZSB7fVxuIl19