mis-crystal-design-system 18.1.15 → 18.1.17

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.
@@ -296,7 +296,7 @@ export class FilterPanelComponent {
296
296
  ngOnInit() {
297
297
  // subscribe form changes so computed/filterCount update
298
298
  this.subscribeFormChanges();
299
- this.clearAllFilters().subscribe(() => {
299
+ this.clearAllFilters()?.subscribe(() => {
300
300
  this.resetFilters();
301
301
  });
302
302
  }
@@ -519,4 +519,4 @@ export class FilterPanelComponent {
519
519
  args: [{ selector: 'mis-filter-panel', animations: [slideFromRight], template: "<div class=\"filter-panel-container\" *ngIf=\"show()\" @slideFromRight>\n <div class=\"panel-header\">\n <span>Filters</span>\n <svg class=\"close-icon\" (click)=\"closePanel()\" width=\"25\" height=\"25\" viewBox=\"0 0 25 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"ic-navigation-cancel-24\">\n <path id=\"Union\" fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8.60468 6.64355C8.09036 6.12923 7.25649 6.12923 6.74218 6.64355C6.22787 7.15786 6.22787 7.99173 6.74218 8.50604L10.4938 12.2576L6.7431 16.0083C6.22879 16.5226 6.22879 17.3564 6.7431 17.8708C7.25742 18.3851 8.09129 18.3851 8.60560 17.8708L12.3562 14.1201L16.1068 17.8707C16.6211 18.3850 17.4550 18.3850 17.9693 17.8707C18.4836 17.3564 18.4836 16.5225 17.9693 16.0082L14.2187 12.2576L17.9702 8.50613C18.4845 7.99181 18.4845 7.15794 17.9702 6.64363C17.4559 6.12932 16.6220 6.12932 16.1077 6.64363L12.3562 10.3951L8.60468 6.64355Z\" fill=\"#181F33\" />\n </g>\n </svg>\n </div>\n \n <div class=\"horizontal-divider first\"></div>\n \n <div class=\"filters\" [formGroup]=\"filterForm\">\n <ng-container *ngFor=\"let filter of config(); let last = last\">\n <div class=\"filter\" *ngIf=\"!filter.hidden\">\n <span class=\"filter-title\">{{filter.title}}</span>\n <ng-container *ngIf=\"filter.type === 'multiSelect'\">\n <div class=\"multiselect-filter\">\n <mis-multi-select-dropdown class=\"no-padding\" [label]=\"filter.placeholder || 'Select'\" [selectedItems]=\"filterForm.get(filter.key)?.value || []\" (onChange)=\"handleSelect($event, filter.key, filter)\" [data]=\"filter.options\" [searchEnabled]=\"true\"\n [showSelectedCount]=\"true\" [enableSelectAll]=\"true\"\n [hideApplyButton]=\"false\" width=\"100%\" height=\"44px\"></mis-multi-select-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'select'\">\n <div class=\"multiselect-filter\">\n <mis-dropdown [data]=\"filter.options\" [searchEnabled]=\"true\" width=\"100%\" height=\"44px\"\n (onChange)=\"handleSelect($event, filter.key, filter)\" [selectedItem]=\"filterForm.get(filter.key)?.value\">\n </mis-dropdown>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'checkbox'\">\n <div class=\"checkbox-row\">\n <div *ngFor=\"let option of filter.options\" class=\"checkbox-container\">\n <mis-checkbox [type]=\"'Default'\" [checked]=\"filterForm.get(filter.key)?.value?.includes(option.value)\" (valueChange)=\"handleCheckbox($event, filter.key, option.value, filter)\"></mis-checkbox>\n <span class=\"checkbox-label\">{{option.label}}</span>\n </div>\n </div>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'datePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDp misInput type=\"text\" readonly class=\"mis-input\" [dpConfig]=\"filter.datePickerConfig\" [placeholder]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" [value]=\"filterForm.get(filter.key)?.value || filter.placeholder || 'Select'\" (dateChange)=\"onDateChange($event, filter.key, filter)\" [selectedDate]=\"filterForm.get(filter.key)?.value\" [positionX]=\"'end'\" [offsetX]=\"-10\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'dateRangePicker'\">\n <mis-input type=\"rounded\">\n <input misTzDrp misInput type=\"text\" class=\"mis-input\" readonly\n [placeholder]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\"\n [value]=\"(!dateRangeSelectedDates().startDate && !dateRangeSelectedDates().endDate) ? (filter.placeholder || 'Select') : dateRangeSelectedDates().startDate + ' - ' + dateRangeSelectedDates().endDate\" [positionX]=\"'start'\"\n [positionY]=\"'top'\" [selectedDates]=\"dateRangeSelectedDates()\" (dateChange)=\"onDateChange($event, filter.key, filter)\"\n [dpConfig]=\"filter.dateRangePickerConfig\" />\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'text'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"text\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'number'\">\n <mis-input type=\"rounded\">\n <input misInput type=\"number\" class=\"input\" [placeholder]=\"filter.placeholder || 'Type here'\" [formControlName]=\"filter.key\">\n </mis-input>\n </ng-container>\n <ng-container *ngIf=\"filter.type === 'range'\">\n <div class=\"range-container\" [formGroup]=\"filterForm.get(filter.key)\">\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[0]?.label || 'Min' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"min\"\n />\n </div>\n <div class=\"range-inner-container\">\n <span>{{ filter?.options?.[1]?.label || 'Max' }}</span>\n <input\n misInput\n type=\"number\"\n class=\"input\"\n [placeholder]=\"filter.placeholder || 'Type here'\"\n formControlName=\"max\"\n [min]=\"filterForm.get(filter.key)?.get('min')?.value || 0\"\n />\n </div>\n </div>\n </ng-container>\n <div class=\"horizontal-divider\" *ngIf=\"!last\"></div>\n </div>\n </ng-container>\n </div>\n \n <div class=\"actions\">\n <mis-button [name]=\"'Reset'\" [size]=\"'Small'\" [type]=\"'Text'\" (click)=\"resetFilters()\"></mis-button>\n <mis-button [name]=\"'Apply'\" [size]=\"'Small'\" [type]=\"'Solid'\" (click)=\"applyFilters()\" [disabled]=\"filterForm.invalid\"></mis-button>\n </div>\n </div>", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-muted-secondary: #E5E5E5;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.filter-panel-container{display:flex;flex-direction:column;height:100%;max-width:100%;min-width:20rem;position:absolute;right:0;background:var(--bg-primary, #FFFFFF);top:0;z-index:999;box-shadow:0 0 5px #000000a6;transition:all .3s ease}.filter-panel-container .panel-header{display:flex;flex-direction:row;justify-content:space-between;align-items:center;font-weight:700;margin:0 1rem;flex-basis:5%}.filter-panel-container .panel-header span{font-size:1.25rem}.filter-panel-container .panel-header .close-icon{cursor:pointer;border-radius:50%;transform:scale(1.4);padding:.3rem;transition:all .3s ease}.filter-panel-container .panel-header .close-icon:hover{background:var(--bg-tertiary, #F5F5F5)}.filter-panel-container .panel-header .close-icon:active{background:var(--border-primary, #E0E0E0)}.filter-panel-container .mat-divider.horizontal{margin:1rem}.filters{display:flex;flex-direction:column;flex:1;row-gap:.5rem;overflow:auto;padding:0 1rem}.filters .filter{display:flex;flex-direction:column}.filters .filter .filter-title{color:var(--text-secondary, #6A737D);font-size:.875rem;font-weight:700;line-height:20px;letter-spacing:.25px}.filters .filter .checkbox-row{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:.8rem 0}.filters .filter .checkbox-row .checkbox-container{display:flex;flex-direction:row;align-items:center;gap:.5rem}.filters .filter .checkbox-row .checkbox-label{display:block;width:8rem}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-inner-container{width:20px;height:20px}.filters .filter .checkbox-row ::ng-deep .mat-checkbox-frame{border-radius:5px}.filters .filter .multiselect-filter,.filters .filter mis-input{padding:.7rem 0}.horizontal-divider{display:block;width:100%;height:1px;margin:.5rem 0;background:var(--border-primary, #E0E0E0)}.first{margin-top:0}.actions{display:flex;flex-direction:row;justify-content:end;align-items:center;gap:1rem;border-top:1px solid var(--border-primary, #E0E0E0);flex-basis:4%;padding:.5rem}.actions button{font-weight:700;border-radius:.5rem;width:6rem}.no-padding ::ng-deep .container{padding:0!important}.range-container{display:flex;justify-content:space-between;padding:.8rem 0}.range-container .range-inner-container{display:flex;flex-direction:column}.range-container .range-inner-container input{height:2.2rem;outline:none;border-radius:.375rem;border:1px solid var(--border-primary, #E0E0E0);width:8rem;padding:0 .5rem}.range-container .range-inner-container span{margin-bottom:.2rem}input.ng-invalid.ng-touched{border:1px solid var(--brand-error, #B00020);background-color:var(--brand-error-lightest, #FDF2F2)}\n"] }]
520
520
  }], () => [{ type: i1.HasValuePipe }], null); })();
521
521
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FilterPanelComponent, { className: "FilterPanelComponent" }); })();
522
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ0c5Qyw2QkFBb0Q7SUFFNUMsQUFESiwrQkFBZ0Msb0NBRzZCO0lBRndGLHFTQUFZLHFEQUF3QyxLQUFDO0lBRzFNLEFBRDZELGlCQUE0QixFQUNuRjs7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRDJOLEFBQXhCLEFBQWhILEFBQXpDLHlEQUF3QyxrSUFBMEQsMkJBQThFLHVCQUF1QiwyQkFDdk4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRXFGO0lBQXpHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7O0lBSFksZUFBdUI7SUFDeUIsQUFEeEIsQUFBeEIsd0NBQXVCLHVCQUF1QixpR0FDb0Q7Ozs7SUFPNUcsQUFESiwrQkFBc0UsdUJBQzhHO0lBQXpFLGdVQUFlLHdFQUF3RCxLQUFDO0lBQUMsaUJBQWU7SUFDL0wsZ0NBQTZCO0lBQUEsWUFBZ0I7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b0I7b0VBQXBCLG9CQUFvQjtZQ3hEakMsdUVBQW1FOztZQUE5QixpQ0FBWTsrM1BEc0RuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjInO1xuaW1wb3J0IHsgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9zcGVjaWZpY2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgYXMgSURhdGVSYW5nZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyJztcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPVxuICB8ICdtdWx0aVNlbGVjdCdcbiAgfCAnc2VsZWN0J1xuICB8ICdkYXRlUGlja2VyJ1xuICB8ICdkYXRlUmFuZ2VQaWNrZXInXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAndGV4dCdcbiAgfCAnbnVtYmVyJ1xuICB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUGFuZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAgb3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYXNWYWx1ZTogSGFzVmFsdWVQaXBlKSB7XG4gICAgLy8gRWZmZWN0IHRvIHJlYWN0IHRvIGNvbmZpZyBjaGFuZ2VzIC0gbXVzdCBhbGxvdyBzaWduYWwgd3JpdGVzIHNpbmNlIHdlIHVwZGF0ZSBpbnRlcm5hbCBzaWduYWxzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmIChjZmcgJiYgQXJyYXkuaXNBcnJheShjZmcpICYmIGNmZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gT25seSBpbml0aWFsaXplIGZvcm0gaWYgbm90IGFscmVhZHkgZG9uZSwgb3IgaWYgY29uZmlnIHN0cnVjdHVyZSBjaGFuZ2VkXG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgdGhpcy5oYXNDb25maWdDaGFuZ2VkKGNmZykpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1Db250cm9scyhjZmcpO1xuICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQWx3YXlzIGNoZWNrIGZvciBzZWxlY3RlZFZhbHVlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnNldEZpbHRlclZhbHVlKGNmZyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmlsdGVyUGFuZWw6IEVycm9yIGluIGNvbmZpZyBlZmZlY3QnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qIC0tLSBzaWduYWwtYmFzZWQgSW5wdXRzIC8gT3V0cHV0cyAtLS0gKi9cbiAgcHVibGljIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxGaWx0ZXJQYW5lbENvbmZpZ1tdPigpO1xuICBwdWJsaWMgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIG9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIG9uQXBwbHkgPSBvdXRwdXQ8eyBmaWx0ZXJEYXRhOiBhbnk7IGZpbHRlckNvdW50OiBudW1iZXIgfT4oKTtcblxuICAvKiAtLS0gZm9ybSArIGludGVybmFsIHN0YXRlIC0tLSAqL1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHJpdmF0ZSBmb3JtU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIGtlZXAgYSBzaWduYWwgc25hcHNob3Qgb2YgZm9ybSB2YWx1ZSBzbyBjb21wdXRlZCBjYW4gcmVhY3RcbiAgcHJpdmF0ZSBfZm9ybVZhbHVlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHNpZ25hbCh7fSk7XG5cbiAgLy8gbGFzdCBhcHBsaWVkIHNuYXBzaG90IChzaWduYWwgc28gdGVtcGxhdGUvbG9naWMgY2FuIHJlYWQgcmVsaWFibHkpXG4gIHB1YmxpYyBsYXN0QXBwbGllZERhdGE6IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICAvLyBkYXRlIHJhbmdlIHJlYWRhYmxlIGZvciB0ZW1wbGF0ZVxuICBwdWJsaWMgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogV3JpdGFibGVTaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPiA9IHNpZ25hbCh7XG4gICAgc3RhcnREYXRlOiAnJyxcbiAgICBlbmREYXRlOiAnJ1xuICB9KTtcblxuICBwdWJsaWMgY2xlYXJBbGxGaWx0ZXJzID0gaW5wdXQ8U3ViamVjdDxib29sZWFuPj4oKTtcblxuICAvKiBjb21wdXRlZCBmaWx0ZXJDb3VudCAqL1xuICBwdWJsaWMgZmlsdGVyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY2ZnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZVtmaWx0ZXIua2V5XTtcblxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkpIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0odmFsdWUpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICAvKiAtLS0gTGlmZWN5Y2xlIC0tLSAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdWJzY3JpYmUgZm9ybSBjaGFuZ2VzIHNvIGNvbXB1dGVkL2ZpbHRlckNvdW50IHVwZGF0ZVxuICAgIHRoaXMuc3Vic2NyaWJlRm9ybUNoYW5nZXMoKTtcbiAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0RmlsdGVycygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLyogLS0tIEZvcm0gaW5pdCAmIGhlbHBlcnMgLS0tICovXG4gIGluaXRpYWxpemVGb3JtQ29udHJvbHMoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKTogdm9pZCB7XG4gICAgLy8gYnVpbGQgYSBmcmVzaCBmb3JtIHRvIG1hdGNoIGNvbmZpZ1xuICAgIGNvbnN0IG5ld0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICAgIGNvbnN0IHJhbmdlVmFsaWRhdG9yOiBWYWxpZGF0b3JGbiA9IChncm91cDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgICAgY29uc3QgbWluID0gKGdyb3VwLmdldCgnbWluJykgYXMgRm9ybUNvbnRyb2wpPy52YWx1ZTtcbiAgICAgIGNvbnN0IG1heCA9IChncm91cC5nZXQoJ21heCcpIGFzIEZvcm1Db250cm9sKT8udmFsdWU7XG4gICAgICBpZiAobWluICE9PSBudWxsICYmIG1heCAhPT0gbnVsbCAmJiBtaW4gPiBtYXgpIHtcbiAgICAgICAgcmV0dXJuIHsgcmFuZ2VFcnJvcjogJ01pbiB2YWx1ZSBzaG91bGQgYmUgbGVzcyB0aGFuIG1heCB2YWx1ZScgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGxldCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cbiAgICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUpIHtcbiAgICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUdyb3VwKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBtaW46IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICAgICAgICAgICAgbWF4OiBuZXcgRm9ybUNvbnRyb2wobnVsbClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7IHZhbGlkYXRvcnM6IHJhbmdlVmFsaWRhdG9yIH1cbiAgICAgICAgICApO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ211bHRpU2VsZWN0JzpcbiAgICAgICAgY2FzZSAnY2hlY2tib3gnOlxuICAgICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woQXJyYXkuaXNBcnJheShmaWx0ZXIuZGVmYXVsdFZhbHVlKSA/IGZpbHRlci5kZWZhdWx0VmFsdWUgOiBbXSk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKGZpbHRlci5kZWZhdWx0VmFsdWUgPz8gJycpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWx0ZXIuZGVmYXVsdFZhbHVlID8/IG51bGwpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0oZmlsdGVyLmRlZmF1bHRWYWx1ZSkpIHtcbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShmaWx0ZXIuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgbmV3Rm9ybS5hZGRDb250cm9sKGZpbHRlci5rZXksIGNvbnRyb2wpO1xuICAgIH1cblxuICAgIC8vIHJlcGxhY2UgZm9ybSBzYWZlbHlcbiAgICAvLyBwcmVzZXJ2ZSBzdWJzY3JpcHRpb24gc28gdmFsdWVDaGFuZ2VzIGNvbnRpbnVlcyB0byB1cGRhdGUgX2Zvcm1WYWx1ZVNpZ25hbFxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IG5ld0Zvcm07XG4gICAgLy8gdXBkYXRlIHNpZ25hbCBzbmFwc2hvdCBpbW1lZGlhdGVseVxuICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfSk7XG5cbiAgICAvLyByZS1zdWJzY3JpYmUgdG8gbmV3IGZvcm0ncyB2YWx1ZUNoYW5nZXNcbiAgICB0aGlzLnN1YnNjcmliZUZvcm1DaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIHN1YnNjcmliZUZvcm1DaGFuZ2VzKCk6IHZvaWQge1xuICAgIC8vIHVuc3Vic2NyaWJlIHByZXZpb3VzIHN1YnNjcmlwdGlvbiBpZiBhbnlcbiAgICB0aGlzLmZvcm1TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAvLyBzdWJzY3JpYmUgdG8gdmFsdWVDaGFuZ2VzOyBzZXQgc25hcHNob3Qgc2lnbmFsXG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJGb3JtLnZhbHVlQ2hhbmdlcz8uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnZhbHVlIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gYWxzbyBzZXQgaW5pdGlhbCBzbmFwc2hvdCBpbiBjYXNlIHZhbHVlQ2hhbmdlcyBkb2Vzbid0IGVtaXQgaW1tZWRpYXRlbHlcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyRm9ybS5nZXQoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBjb25maWcgc3RydWN0dXJlIGhhcyBjaGFuZ2VkIChuZXcga2V5cyBvciByZW1vdmVkIGtleXMpXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIGZvcm0gbmVlZHMgdG8gYmUgcmVidWlsdFxuICAgKi9cbiAgcHJpdmF0ZSBoYXNDb25maWdDaGFuZ2VkKG5ld0NvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnRLZXlzID0gT2JqZWN0LmtleXModGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzKS5zb3J0KCk7XG4gICAgY29uc3QgbmV3S2V5cyA9IG5ld0NvbmZpZy5tYXAoZiA9PiBmLmtleSkuc29ydCgpO1xuICAgIFxuICAgIGlmIChjdXJyZW50S2V5cy5sZW5ndGggIT09IG5ld0tleXMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIGN1cnJlbnRLZXlzLnNvbWUoKGtleSwgaW5kZXgpID0+IGtleSAhPT0gbmV3S2V5c1tpbmRleF0pO1xuICB9XG5cbiAgLyogLS0tIEFjdGlvbnMgLyBVSSBoYW5kbGVycyAtLS0gKi9cbiAgY2xvc2VQYW5lbCgpOiB2b2lkIHtcbiAgICBjb25zdCBsYXN0ID0gdGhpcy5sYXN0QXBwbGllZERhdGEoKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gcHJlZmVyIHNldFZhbHVlIChlbnN1cmVzIHNoYXBlIG1hdGNoZXMpOyBmYWxsYmFjayB0byBwYXRjaFZhbHVlXG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybS5zZXRWYWx1ZShsYXN0KTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShsYXN0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbGVhckZvcm1WYWx1ZXMoKTtcbiAgICB9XG5cbiAgICAvLyBlbWl0IGNsb3NlIGV2ZW50XG4gICAgdGhpcy5vbkNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5maWx0ZXJGb3JtLmludmFsaWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyRm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICBcbiAgICAvLyBDcmVhdGUgYSBjb3B5IG9mIHRoZSBmb3JtIHZhbHVlXG4gICAgY29uc3Qgc25hcHNob3QgPSB7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9O1xuICBcbiAgICAvLyBPUFRJT05BTDogTWFwIG9iamVjdHMgYmFjayB0byB2YWx1ZXMgZm9yIHRoZSBPdXRwdXQgZW1pc3Npb24gXG4gICAgLy8gc28gdGhlIHBhcmVudCByZWNlaXZlcyBjbGVhbiBkYXRhIChbJ0xPR0lOJ10gaW5zdGVhZCBvZiBbe2xhYmVsOi4uLiwgdmFsdWU6ICdMT0dJTid9XSlcbiAgICBjb25zdCBjbGVhblNuYXBzaG90ID0gdGhpcy5tYXBWYWx1ZXNGb3JFbWlzc2lvbihzbmFwc2hvdCk7XG4gIFxuICAgIHRoaXMubGFzdEFwcGxpZWREYXRhLnNldChzbmFwc2hvdCk7IC8vIEtlZXAgb2JqZWN0cyBmb3IgVUkgc3RhdGVcbiAgXG4gICAgdGhpcy5vbkFwcGx5LmVtaXQoe1xuICAgICAgZmlsdGVyRGF0YTogY2xlYW5TbmFwc2hvdCwgLy8gRW1pdCB2YWx1ZXNcbiAgICAgIGZpbHRlckNvdW50OiB0aGlzLmZpbHRlckNvdW50KClcbiAgICB9KTtcbiAgXG4gICAgdGhpcy5jbG9zZVBhbmVsKCk7XG4gIH1cbiAgXG4gIC8vIEhlbHBlciB0byBjbGVhbiB1cCBkYXRhIGJlZm9yZSBlbWl0dGluZ1xuICBwcml2YXRlIG1hcFZhbHVlc0ZvckVtaXNzaW9uKGZvcm1WYWx1ZTogYW55KTogYW55IHtcbiAgICBjb25zdCBjbGVhbkRhdGEgPSB7IC4uLmZvcm1WYWx1ZSB9O1xuICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gIFxuICAgIGNmZy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNsZWFuRGF0YVtmaWx0ZXIua2V5XTtcbiAgXG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgY2xlYW5EYXRhW2ZpbHRlci5rZXldID0gdmFsdWU7IFxuICAgICAgfVxuICAgIH0pO1xuICBcbiAgICByZXR1cm4gY2xlYW5EYXRhO1xuICB9XG4gIFxuICBcbiAgXG5cbiAgcmVzZXRGaWx0ZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgLy8gY2FsbCBhcHBseUZpbHRlcnMgdG8gbWFpbnRhaW4gcHJldmlvdXMgYmVoYXZpb3IgKHZhbGlkYXRpb24gKyBlbWl0KVxuICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gIH1cblxuICAvKiAtLS0gVmFsdWUgc2V0dGVycyAtLS0gKi9cbi8vIGZpbHRlci1wYW5lbC5jb21wb25lbnQudHNcblxuaGFuZGxlU2VsZWN0KGV2ZW50OiBhbnksIGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKTogdm9pZCB7XG4gIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyS2V5KTtcbiAgXG4gIC8vIEZJWDogRG8gbm90IHN0cmlwIHRoZSB2YWx1ZSBoZXJlLiBTdG9yZSB0aGUgZnVsbCBvYmplY3Qgc28gdGhlIFVJIFxuICAvLyBjYW4gbWF0Y2ggaXQgYWdhaW5zdCB0aGUgZGF0YSBsaXN0IHdoZW4gcmUtcmVuZGVyaW5nLlxuICBsZXQgdmFsdWVUb1NldCA9IGV2ZW50O1xuXG4gIC8qIC8vIENPTU1FTlRFRCBPVVQgT1IgUkVNT1ZFRCBUSElTIEJMT0NLXG4gIGlmIChmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0JyAmJiBBcnJheS5pc0FycmF5KGV2ZW50KSkge1xuICAgIGlmIChldmVudC5sZW5ndGggPiAwICYmIHR5cGVvZiBldmVudFswXSA9PT0gJ29iamVjdCcgJiYgJ3ZhbHVlJyBpbiBldmVudFswXSkge1xuICAgICAgdmFsdWVUb1NldCA9IGV2ZW50Lm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLnZhbHVlIHx8IGl0ZW0pO1xuICAgIH1cbiAgfVxuICAqL1xuICBcbiAgY3RybD8uc2V0VmFsdWUodmFsdWVUb1NldCk7XG5cbiAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcoKSwgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgfVxufVxuXG5cblxuICBoYW5kbGVDaGVja2JveChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgY2hlY2tib3hWYWx1ZTogc3RyaW5nLCBmaWx0ZXI6IEZpbHRlclBhbmVsQ29uZmlnKTogdm9pZCB7XG4gICAgY29uc3QgY3RybCA9IHRoaXMuZ2V0Q29udHJvbChmaWx0ZXJLZXkpO1xuICAgIGNvbnN0IGN1cnJlbnQgPSBBcnJheS5pc0FycmF5KGN0cmw/LnZhbHVlKSA/IFsuLi5jdHJsLnZhbHVlXSA6IFtdO1xuICAgIGlmIChldmVudD8udmFsdWUpIHtcbiAgICAgIGN0cmw/LnNldFZhbHVlKFsuLi5jdXJyZW50LCBjaGVja2JveFZhbHVlXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN0cmw/LnNldFZhbHVlKGN1cnJlbnQuZmlsdGVyKCh2KSA9PiB2ICE9PSBjaGVja2JveFZhbHVlKSk7XG4gICAgfVxuXG4gICAgaWYgKGZpbHRlci5vbkNoYW5nZSkge1xuICAgICAgZmlsdGVyLm9uQ2hhbmdlKGV2ZW50LCB0aGlzLmNvbmZpZygpLCB0aGlzLmZpbHRlckZvcm0udmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0ZUNoYW5nZShldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyS2V5KTtcbiAgICBjdHJsPy5zZXRWYWx1ZShldmVudCk7XG5cbiAgICBpZiAoZXZlbnQgJiYgdHlwZW9mIGV2ZW50ID09PSAnb2JqZWN0JyAmJiAnc3RhcnREYXRlJyBpbiBldmVudCAmJiAnZW5kRGF0ZScgaW4gZXZlbnQpIHtcbiAgICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcy5zZXQoe1xuICAgICAgICBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSxcbiAgICAgICAgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyogLS0tIENsZWFyIC8gU2V0IHZhbHVlcyBoZWxwZXJzIC0tLSAqL1xuICBjbGVhckZvcm1WYWx1ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzZXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiB0aGlzLmNvbmZpZygpKSB7XG4gICAgICBsZXQgZGVmYXVsdFZhbHVlOiBhbnkgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlID8/IG51bGw7XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJykge1xuICAgICAgICBkZWZhdWx0VmFsdWUgPSBmaWx0ZXIuZGVmYXVsdFZhbHVlID8/IHsgbWluOiBudWxsLCBtYXg6IG51bGwgfTtcbiAgICAgIH1cbiAgICAgIHJlc2V0c1tmaWx0ZXIua2V5XSA9IGRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBwYXRjaCB0byBhdm9pZCBzaGFwZSBtaXNtYXRjaCBlcnJvcnNcbiAgICB0aGlzLmZpbHRlckZvcm0ucGF0Y2hWYWx1ZShyZXNldHMpO1xuICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSB3aGVuIHBhcmVudCBwcm92aWRlcyBzZWxlY3RlZFZhbHVlLlxuICAgKiBDYWxsZWQgYnkgdGhlIGNvbmZpZyBlZmZlY3QgKHNvIHJ1bnMgb24gaW5pdGlhbCBsb2FkIGFuZCBvbiBjb25maWcgY2hhbmdlcykuXG4gICAqL1xuICBzZXRGaWx0ZXJWYWx1ZShjb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pOiB2b2lkIHtcbiAgICBsZXQgYW55VmFsdWVTZXQgPSBmYWxzZTtcblxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGNvbmZpZykge1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKGZpbHRlcj8uc2VsZWN0ZWRWYWx1ZSkpIHtcbiAgICAgICAgY29uc3QgY3RybCA9IHRoaXMuZ2V0Q29udHJvbChmaWx0ZXIua2V5KTtcbiAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICBjdHJsLnNldFZhbHVlKGZpbHRlci5zZWxlY3RlZFZhbHVlKTtcbiAgICAgICAgICBhbnlWYWx1ZVNldCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYW55VmFsdWVTZXQgJiYgdGhpcy5lbWl0RmlsdGVyc0FmdGVyU2V0dGluZ05ld1ZhbHVlcygpKSB7XG4gICAgICAvLyByZXNwZWN0IHRoZSBwYXJlbnQgZmxhZyDigJQgYXBwbHkgYW5kIGVtaXRcbiAgICAgIHRoaXMuYXBwbHlGaWx0ZXJzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1ha2Ugc3VyZSBvdXIgc25hcHNob3Qgc2lnbmFsIGlzIGZyZXNoXG4gICAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJmaWx0ZXItcGFuZWwtY29udGFpbmVyXCIgKm5nSWY9XCJzaG93KClcIiBAc2xpZGVGcm9tUmlnaHQ+XG4gICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRlclwiPlxuICAgICAgICA8c3Bhbj5GaWx0ZXJzPC9zcGFuPlxuICAgICAgICA8c3ZnIGNsYXNzPVwiY2xvc2UtaWNvblwiIChjbGljayk9XCJjbG9zZVBhbmVsKClcIiB3aWR0aD1cIjI1XCIgaGVpZ2h0PVwiMjVcIiB2aWV3Qm94PVwiMCAwIDI1IDI1XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8ZyBpZD1cImljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+XG4gICAgICAgICAgICAgICAgPHBhdGggaWQ9XCJVbmlvblwiIGZpbGwtcnVsZT1cImV2ZW5vZGRcIiBjbGlwLXJ1bGU9XCJldmVub2RkXCIgZD1cIk04LjYwNDY4IDYuNjQzNTVDOC4wOTAzNiA2LjEyOTIzIDcuMjU2NDkgNi4xMjkyMyA2Ljc0MjE4IDYuNjQzNTVDNi4yMjc4NyA3LjE1Nzg2IDYuMjI3ODcgNy45OTE3MyA2Ljc0MjE4IDguNTA2MDRMMTAuNDkzOCAxMi4yNTc2TDYuNzQzMSAxNi4wMDgzQzYuMjI4NzkgMTYuNTIyNiA2LjIyODc5IDE3LjM1NjQgNi43NDMxIDE3Ljg3MDhDNy4yNTc0MiAxOC4zODUxIDguMDkxMjkgMTguMzg1MSA4LjYwNTYwIDE3Ljg3MDhMMTIuMzU2MiAxNC4xMjAxTDE2LjEwNjggMTcuODcwN0MxNi42MjExIDE4LjM4NTAgMTcuNDU1MCAxOC4zODUwIDE3Ljk2OTMgMTcuODcwN0MxOC40ODM2IDE3LjM1NjQgMTguNDgzNiAxNi41MjI1IDE3Ljk2OTMgMTYuMDA4MkwxNC4yMTg3IDEyLjI1NzZMMTcuOTcwMiA4LjUwNjEzQzE4LjQ4NDUgNy45OTE4MSAxOC40ODQ1IDcuMTU3OTQgMTcuOTcwMiA2LjY0MzYzQzE3LjQ1NTkgNi4xMjkzMiAxNi42MjIwIDYuMTI5MzIgMTYuMTA3NyA2LjY0MzYzTDEyLjM1NjIgMTAuMzk1MUw4LjYwNDY4IDYuNjQzNTVaXCIgZmlsbD1cIiMxODFGMzNcIiAvPlxuICAgICAgICAgICAgPC9nPlxuICAgICAgICA8L3N2Zz5cbiAgICA8L2Rpdj5cbiAgXG4gICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlciBmaXJzdFwiPjwvZGl2PlxuICBcbiAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyc1wiIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgY29uZmlnKCk7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbHRlclwiICpuZ0lmPVwiIWZpbHRlci5oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbHRlci10aXRsZVwiPnt7ZmlsdGVyLnRpdGxlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duIGNsYXNzPVwibm8tcGFkZGluZ1wiIFtsYWJlbF09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbc2VsZWN0ZWRJdGVtc109XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWUgfHwgW11cIiAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dTZWxlY3RlZENvdW50XT1cInRydWVcIiBbZW5hYmxlU2VsZWN0QWxsXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRlQXBwbHlCdXR0b25dPVwiZmFsc2VcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCI0NHB4XCI+PC9taXMtbXVsdGktc2VsZWN0LWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdzZWxlY3QnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1maWx0ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtaXMtZHJvcGRvd24gW2RhdGFdPVwiZmlsdGVyLm9wdGlvbnNcIiBbc2VhcmNoRW5hYmxlZF09XCJ0cnVlXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNDRweFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJoYW5kbGVTZWxlY3QoJGV2ZW50LCBmaWx0ZXIua2V5LCBmaWx0ZXIpXCIgW3NlbGVjdGVkSXRlbV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWlzLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpbHRlci5vcHRpb25zXCIgY2xhc3M9XCJjaGVja2JveC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWNoZWNrYm94IFt0eXBlXT1cIidEZWZhdWx0J1wiIFtjaGVja2VkXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZT8uaW5jbHVkZXMob3B0aW9uLnZhbHVlKVwiICh2YWx1ZUNoYW5nZSk9XCJoYW5kbGVDaGVja2JveCgkZXZlbnQsIGZpbHRlci5rZXksIG9wdGlvbi52YWx1ZSwgZmlsdGVyKVwiPjwvbWlzLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hlY2tib3gtbGFiZWxcIj57e29wdGlvbi5sYWJlbH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ2RhdGVQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRwIG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgY2xhc3M9XCJtaXMtaW5wdXRcIiBbZHBDb25maWddPVwiZmlsdGVyLmRhdGVQaWNrZXJDb25maWdcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlIHx8IGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIFt2YWx1ZV09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWUgfHwgZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZERhdGVdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlXCIgW3Bvc2l0aW9uWF09XCInZW5kJ1wiIFtvZmZzZXRYXT1cIi0xMFwiPlxuICAgICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUmFuZ2VQaWNrZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNUekRycCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibWlzLWlucHV0XCIgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiKCFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICYmICFkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZSkgPyAoZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnKSA6IGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5zdGFydERhdGUgKyAnIC0gJyArIGRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKS5lbmREYXRlXCIgW3Bvc2l0aW9uWF09XCInc3RhcnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcG9zaXRpb25ZXT1cIid0b3AnXCIgW3NlbGVjdGVkRGF0ZXNdPVwiZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpXCIgKGRhdGVDaGFuZ2UpPVwib25EYXRlQ2hhbmdlKCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUmFuZ2VQaWNrZXJDb25maWdcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImlucHV0XCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmlsdGVyLmtleVwiPlxuICAgICAgICAgICAgICAgICAgICA8L21pcy1pbnB1dD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdudW1iZXInXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtaXMtaW5wdXQgdHlwZT1cInJvdW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtaXNJbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAncmFuZ2UnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1jb250YWluZXJcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyPy5vcHRpb25zPy5bMF0/LmxhYmVsIHx8ICdNaW4nIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYW5nZS1pbm5lci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXI/Lm9wdGlvbnM/LlsxXT8ubGFiZWwgfHwgJ01heCcgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc0lucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpbHRlci5wbGFjZWhvbGRlciB8fCAnVHlwZSBoZXJlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1heFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LmdldCgnbWluJyk/LnZhbHVlIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhvcml6b250YWwtZGl2aWRlclwiICpuZ0lmPVwiIWxhc3RcIj48L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPG1pcy1idXR0b24gW25hbWVdPVwiJ1Jlc2V0J1wiIFtzaXplXT1cIidTbWFsbCdcIiBbdHlwZV09XCInVGV4dCdcIiAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIj48L21pcy1idXR0b24+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidBcHBseSdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1NvbGlkJ1wiIChjbGljayk9XCJhcHBseUZpbHRlcnMoKVwiIFtkaXNhYmxlZF09XCJmaWx0ZXJGb3JtLmludmFsaWRcIj48L21pcy1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiJdfQ==
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2ZpbHRlci9maWx0ZXItcGFuZWwvZmlsdGVyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBa0QsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ0c5Qyw2QkFBb0Q7SUFFNUMsQUFESiwrQkFBZ0Msb0NBRzZCO0lBRndGLHFTQUFZLHFEQUF3QyxLQUFDO0lBRzFNLEFBRDZELGlCQUE0QixFQUNuRjs7Ozs7O0lBSDRDLGVBQXdDO0lBRWxGLEFBRDJCLEFBQTNCLEFBRDJOLEFBQXhCLEFBQWhILEFBQXpDLHlEQUF3QyxrSUFBMEQsMkJBQThFLHVCQUF1QiwyQkFDdk4seUJBQXlCLDBCQUMxQjs7OztJQUdyQyw2QkFBK0M7SUFFdkMsQUFESiwrQkFBZ0MsdUJBRXFGO0lBQXpHLHdSQUFZLHFEQUF3QyxLQUFDO0lBRWpFLEFBREksaUJBQWUsRUFDYjs7Ozs7O0lBSFksZUFBdUI7SUFDeUIsQUFEeEIsQUFBeEIsd0NBQXVCLHVCQUF1QixpR0FDb0Q7Ozs7SUFPNUcsQUFESiwrQkFBc0UsdUJBQzhHO0lBQXpFLGdVQUFlLHdFQUF3RCxLQUFDO0lBQUMsaUJBQWU7SUFDL0wsZ0NBQTZCO0lBQUEsWUFBZ0I7SUFDakQsQUFEaUQsaUJBQU8sRUFDbEQ7Ozs7OztJQUZZLGNBQWtCO0lBQUMsQUFBbkIsZ0NBQWtCLHFKQUFzRTtJQUN6RSxlQUFnQjtJQUFoQixxQ0FBZ0I7OztJQUp6RCw2QkFBaUQ7SUFDN0MsK0JBQTBCO0lBQ3RCLGdIQUFzRTtJQUkxRSxpQkFBTTs7OztJQUpzQixlQUFpQjtJQUFqQiwyQ0FBaUI7Ozs7SUFNakQsNkJBQW1EO0lBRTNDLEFBREoscUNBQTBCLGdCQUMrWDtJQUEvSSxxUkFBYyxxREFBd0MsS0FBQztJQUNqVSxBQURJLGlCQUFxWixFQUM3WTs7Ozs7Ozs7SUFEdUQsZUFBb0M7SUFBa1MsQUFBcEIsQUFBbkQsQUFBdEksQUFBcEYsQUFBckMscURBQW9DLHVJQUFvRixpSUFBOEUsaUdBQTJHLG9CQUFvQixnQkFBZ0I7Ozs7SUFHNVosNkJBQXdEO0lBRWhELEFBREoscUNBQTBCLGdCQUswQjtJQURtQixxUkFBYyxxREFBd0MsS0FBQztJQUU5SCxBQUxJLGlCQUlnRCxFQUN4Qzs7Ozs7SUFKSixlQUE2TTtJQUc3TSxBQURvQixBQUFwQixBQUR3TSxBQUF4TSxBQURBLHNQQUE2TSxtT0FDTixzQkFBc0Isb0JBQzFNLGtEQUEyQyw2Q0FDckI7OztJQUdyRCw2QkFBNkM7SUFDekMscUNBQTBCO0lBQ3RCLDRCQUEySDtJQUMvSCxpQkFBWTs7OztJQURrQyxlQUFpRDtJQUFDLEFBQWxELGtFQUFpRCxrQ0FBK0I7OztJQUdsSSw2QkFBK0M7SUFDM0MscUNBQTBCO0lBQ3RCLDRCQUE2SDtJQUNqSSxpQkFBWTs7OztJQURvQyxlQUFpRDtJQUFDLEFBQWxELGtFQUFpRCxrQ0FBK0I7OztJQUdwSSw2QkFBOEM7SUFHbEMsQUFESixBQURKLCtCQUFzRSxjQUMvQixXQUN6QjtJQUFBLFlBQTBDO0lBQUEsaUJBQU87SUFDdkQsNEJBTUU7SUFDTixpQkFBTTtJQUVGLEFBREosK0JBQW1DLFdBQ3pCO0lBQUEsWUFBMEM7SUFBQSxpQkFBTztJQUN2RCw0QkFPRTtJQUVWLEFBREksaUJBQU0sRUFDSjs7Ozs7O0lBdEJ1QixjQUF3QztJQUF4QyxnRUFBd0M7SUFFdkQsZUFBMEM7SUFBMUMsK0pBQTBDO0lBSzVDLGNBQWlEO0lBQWpELGtFQUFpRDtJQUsvQyxlQUEwQztJQUExQywrSkFBMEM7SUFLNUMsY0FBaUQ7SUFFakQsQUFGQSxrRUFBaUQsbUpBRVM7OztJQUsxRSwwQkFBb0Q7OztJQXhFcEQsQUFESiwrQkFBMkMsZUFDWjtJQUFBLFlBQWdCO0lBQUEsaUJBQU87SUF3RWxELEFBekJBLEFBTEEsQUFMQSxBQVRBLEFBTEEsQUFSQSxBQVBBLEFBUEEsbUhBQW9ELHNHQU9MLHNHQU9FLHNHQVFFLHNHQUtLLHNHQVNYLHNHQUtFLHlHQUtELHNGQXlCQTtJQUNsRCxpQkFBTTs7Ozs7SUF6RXlCLGVBQWdCO0lBQWhCLHFDQUFnQjtJQUM1QixjQUFtQztJQUFuQyx1REFBbUM7SUFPbkMsY0FBOEI7SUFBOUIsa0RBQThCO0lBTzlCLGNBQWdDO0lBQWhDLG9EQUFnQztJQVFoQyxjQUFrQztJQUFsQyxzREFBa0M7SUFLbEMsY0FBdUM7SUFBdkMsMkRBQXVDO0lBU3ZDLGNBQTRCO0lBQTVCLGdEQUE0QjtJQUs1QixjQUE4QjtJQUE5QixrREFBOEI7SUFLOUIsY0FBNkI7SUFBN0IsaURBQTZCO0lBeUJYLGNBQVc7SUFBWCxnQ0FBVzs7O0lBMUVwRCw2QkFBK0Q7SUFDM0QsNkZBQTJDOzs7O0lBQXRCLGNBQW9CO0lBQXBCLHdDQUFvQjs7OztJQVo3QyxBQURKLEFBREosOEJBQW1FLGFBQ3JDLFdBQ2hCO0lBQUEsdUJBQU87SUFBQSxpQkFBTzs7SUFDcEIsOEJBQXlJO0lBQWpILDZLQUFTLG1CQUFZLEtBQUM7SUFDMUMsNEJBQWdDO0lBQzVCLDBCQUE4bEI7SUFHMW1CLEFBREksQUFESSxpQkFBSSxFQUNGLEVBQ0o7O0lBRU4seUJBQTRDO0lBRTVDLDhCQUE4QztJQUMxQyw2RkFBK0Q7SUE2RW5FLGlCQUFNO0lBR0YsQUFESiwrQkFBcUIsc0JBQ3NFO0lBQXpCLHFMQUFTLHFCQUFjLEtBQUM7SUFBQyxpQkFBYTtJQUNwRyx1Q0FBd0g7SUFBekQscUxBQVMscUJBQWMsS0FBQztJQUU3RixBQURFLEFBRDRILGlCQUFhLEVBQ25JLEVBQ0Y7OztJQWhHMkMsMkNBQWU7SUFZekMsZUFBd0I7SUFBeEIsNkNBQXdCO0lBQ1IsY0FBYTtJQUFiLHlDQUFhO0lBZ0ZsQyxlQUFnQjtJQUFrQixBQUFqQixBQUFqQiw4QkFBZ0IsaUJBQWlCLGdCQUFnQjtJQUNqRCxjQUFnQjtJQUE0RCxBQUExQyxBQUFqQixBQUFqQiw4QkFBZ0IsaUJBQWlCLGlCQUFpQix1Q0FBeUQ7O0FEdEMvSCxNQUFNLE9BQU8sb0JBQW9CO0lBRy9CLFlBQW9CLFFBQXNCO1FBQXRCLGFBQVEsR0FBUixRQUFRLENBQWM7UUFGbEMsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFzQjlCLDJDQUEyQztRQUNwQyxTQUFJLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzdCLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUF1QixDQUFDO1FBQy9DLHFDQUFnQyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUV6RCxZQUFPLEdBQUcsTUFBTSxFQUFRLENBQUM7UUFDekIsWUFBTyxHQUFHLE1BQU0sRUFBNEMsQ0FBQztRQUVwRSxtQ0FBbUM7UUFDbkMsZUFBVSxHQUFjLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRzFDLDZEQUE2RDtRQUNyRCxxQkFBZ0IsR0FBd0MsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLHFFQUFxRTtRQUM5RCxvQkFBZSxHQUErQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEYsbUNBQW1DO1FBQzVCLDJCQUFzQixHQUEwQyxNQUFNLENBQUM7WUFDNUUsU0FBUyxFQUFFLEVBQUU7WUFDYixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUMsQ0FBQztRQUVJLG9CQUFlLEdBQUcsS0FBSyxFQUFvQixDQUFDO1FBRW5ELDBCQUEwQjtRQUNuQixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztZQUVkLEtBQUssTUFBTSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXBDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ3hELEtBQUssRUFBRSxDQUFDO29CQUNWLENBQUM7b0JBQ0QsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztvQkFDaEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLEtBQUssRUFBRSxDQUFDO29CQUNWLENBQUM7b0JBQ0QsU0FBUztnQkFDWCxDQUFDO2dCQUVELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsS0FBSyxFQUFFLENBQUM7Z0JBQ1YsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBMUVELGdHQUFnRztRQUNoRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDO2dCQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNoRCwyRUFBMkU7b0JBQzNFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO3dCQUN0RCxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ2pDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO29CQUM1QixDQUFDO29CQUNELHlDQUF5QztvQkFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsQ0FBQztZQUNILENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMscUNBQXFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0QsQ0FBQztRQUNILENBQUMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQTJERCx1QkFBdUI7SUFDdkIsUUFBUTtRQUNOLHdEQUF3RDtRQUN4RCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLHNCQUFzQixDQUFDLE1BQTJCO1FBQ2hELHFDQUFxQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVsQyxNQUFNLGNBQWMsR0FBZ0IsQ0FBQyxLQUFzQixFQUEyQixFQUFFO1lBQ3RGLE1BQU0sR0FBRyxHQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFpQixFQUFFLEtBQUssQ0FBQztZQUNyRCxNQUFNLEdBQUcsR0FBSSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBaUIsRUFBRSxLQUFLLENBQUM7WUFDckQsSUFBSSxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLHlDQUF5QyxFQUFFLENBQUM7WUFDbkUsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO1FBRUYsS0FBSyxNQUFNLE1BQU0sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUM1QixJQUFJLE9BQXdCLENBQUM7WUFFN0IsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3BCLEtBQUssT0FBTztvQkFDVixPQUFPLEdBQUcsSUFBSSxTQUFTLENBQ3JCO3dCQUNFLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7d0JBQzFCLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUM7cUJBQzNCLEVBQ0QsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLENBQy9CLENBQUM7b0JBQ0YsTUFBTTtnQkFFUixLQUFLLGFBQWEsQ0FBQztnQkFDbkIsS0FBSyxVQUFVO29CQUNiLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3pGLE1BQU07Z0JBRVIsS0FBSyxRQUFRO29CQUNYLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNyRCxNQUFNO2dCQUVSO29CQUNFLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO2dCQUNqRCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxzQkFBc0I7UUFDdEIsNkVBQTZFO1FBQzdFLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO1FBQzFCLHFDQUFxQztRQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFFeEQsMENBQTBDO1FBQzFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVyQyxpREFBaUQ7UUFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCwwRUFBMEU7UUFDMUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxVQUFVLENBQUMsR0FBVztRQUM1QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxnQkFBZ0IsQ0FBQyxTQUE4QjtRQUNyRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVqRCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVU7UUFDUixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQztnQkFDSCxrRUFBa0U7Z0JBQ2xFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3pCLENBQUM7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxrQ0FBa0M7UUFDbEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFOUMsZ0VBQWdFO1FBQ2hFLHlGQUF5RjtRQUN6RixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7UUFFaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsVUFBVSxFQUFFLGFBQWEsRUFBRSxjQUFjO1lBQ3pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsMENBQTBDO0lBQ2xDLG9CQUFvQixDQUFDLFNBQWM7UUFDekMsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUUxQixHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ25CLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFcEMsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFELFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFLRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDJCQUEyQjtJQUM3Qiw0QkFBNEI7SUFFNUIsWUFBWSxDQUFDLEtBQVUsRUFBRSxTQUFpQixFQUFFLE1BQXlCO1FBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFeEMscUVBQXFFO1FBQ3JFLHdEQUF3RDtRQUN4RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkI7Ozs7OztVQU1FO1FBRUYsSUFBSSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQixJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvRCxDQUFDO0lBQ0gsQ0FBQztJQUlDLGNBQWMsQ0FBQyxLQUFVLEVBQUUsU0FBaUIsRUFBRSxhQUFxQixFQUFFLE1BQXlCO1FBQzVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNsRSxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztZQUNqQixJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVUsRUFBRSxTQUFpQixFQUFFLE1BQXlCO1FBQ25FLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0QixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksV0FBVyxJQUFJLEtBQUssSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7WUFDckYsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQztnQkFDOUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCx3Q0FBd0M7SUFDeEMsZUFBZTtRQUNiLE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUM7UUFFdkMsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFlBQVksR0FBUSxNQUFNLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQztZQUNwRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ2hFLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ2pFLENBQUM7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUNwQyxDQUFDO1FBRUQsdUNBQXVDO1FBQ3ZDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLE1BQTJCO1FBQ3hDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUV4QixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLElBQUksRUFBRSxDQUFDO29CQUNULElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUNwQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsRUFBRSxDQUFDO1lBQzNELDJDQUEyQztZQUMzQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTix5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO3FIQTFWVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQ3hEakMsdUVBQW1FOztZQUE5QixpQ0FBWTsrM1BEc0RuQyxDQUFDLGNBQWMsQ0FBQzs7aUZBRWpCLG9CQUFvQjtjQU5oQyxTQUFTOzJCQUNFLGtCQUFrQixjQUdoQixDQUFDLGNBQWMsQ0FBQzs7a0ZBRWpCLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxuICBjb21wdXRlZCxcbiAgaW5wdXQsXG4gIG91dHB1dCxcbiAgV3JpdGFibGVTaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvckZuLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzbGlkZUZyb21SaWdodCB9IGZyb20gJy4uL2FuaW1hdGlvbnMvc2xpZGVGcm9tUmlnaHQnO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgfSBmcm9tICdtaXMtY3J5c3RhbC1kZXNpZ24tc3lzdGVtL2RhdGVwaWNrZXJfdjInO1xuaW1wb3J0IHsgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSAnbWlzLWNyeXN0YWwtZGVzaWduLXN5c3RlbS9zcGVjaWZpY2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgSURhdGVQaWNrZXJDb25maWcgYXMgSURhdGVSYW5nZVBpY2tlckNvbmZpZyB9IGZyb20gJ21pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXJhbmdlcGlja2VyX3YyJztcbmltcG9ydCB7IEhhc1ZhbHVlUGlwZSB9IGZyb20gJy4uL2hhcy12YWx1ZS5waXBlJztcblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBkYXRhPzogYW55W107XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlclR5cGUgPVxuICB8ICdtdWx0aVNlbGVjdCdcbiAgfCAnc2VsZWN0J1xuICB8ICdkYXRlUGlja2VyJ1xuICB8ICdkYXRlUmFuZ2VQaWNrZXInXG4gIHwgJ2NoZWNrYm94J1xuICB8ICdyYWRpbydcbiAgfCAndGV4dCdcbiAgfCAnbnVtYmVyJ1xuICB8ICdyYW5nZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyUGFuZWxDb25maWcge1xuICBrZXk6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgdHlwZTogRmlsdGVyVHlwZTtcbiAgb3B0aW9ucz86IEZpbHRlck9wdGlvbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgaGlkZGVuPzogYm9vbGVhbjtcbiAgZGF0ZVBpY2tlckNvbmZpZz86IElEYXRlUGlja2VyQ29uZmlnO1xuICBkYXRlUmFuZ2VQaWNrZXJDb25maWc/OiBJRGF0ZVJhbmdlUGlja2VyQ29uZmlnO1xuICBvbkNoYW5nZT86IChldmVudDogYW55LCBjb25maWc/OiBGaWx0ZXJQYW5lbENvbmZpZ1tdLCBmb3JtVmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIGRlZmF1bHRWYWx1ZT86IGFueTtcbiAgc2VsZWN0ZWRWYWx1ZT86IGFueTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWZpbHRlci1wYW5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXItcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW3NsaWRlRnJvbVJpZ2h0XVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYXNWYWx1ZTogSGFzVmFsdWVQaXBlKSB7XG4gICAgLy8gRWZmZWN0IHRvIHJlYWN0IHRvIGNvbmZpZyBjaGFuZ2VzIC0gbXVzdCBhbGxvdyBzaWduYWwgd3JpdGVzIHNpbmNlIHdlIHVwZGF0ZSBpbnRlcm5hbCBzaWduYWxzXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgICAgIGlmIChjZmcgJiYgQXJyYXkuaXNBcnJheShjZmcpICYmIGNmZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gT25seSBpbml0aWFsaXplIGZvcm0gaWYgbm90IGFscmVhZHkgZG9uZSwgb3IgaWYgY29uZmlnIHN0cnVjdHVyZSBjaGFuZ2VkXG4gICAgICAgICAgaWYgKCF0aGlzLmlzSW5pdGlhbGl6ZWQgfHwgdGhpcy5oYXNDb25maWdDaGFuZ2VkKGNmZykpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1Db250cm9scyhjZmcpO1xuICAgICAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQWx3YXlzIGNoZWNrIGZvciBzZWxlY3RlZFZhbHVlIGNoYW5nZXNcbiAgICAgICAgICB0aGlzLnNldEZpbHRlclZhbHVlKGNmZyk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignRmlsdGVyUGFuZWw6IEVycm9yIGluIGNvbmZpZyBlZmZlY3QnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qIC0tLSBzaWduYWwtYmFzZWQgSW5wdXRzIC8gT3V0cHV0cyAtLS0gKi9cbiAgcHVibGljIHNob3cgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBjb25maWcgPSBpbnB1dC5yZXF1aXJlZDxGaWx0ZXJQYW5lbENvbmZpZ1tdPigpO1xuICBwdWJsaWMgZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIG9uQ2xvc2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcHVibGljIG9uQXBwbHkgPSBvdXRwdXQ8eyBmaWx0ZXJEYXRhOiBhbnk7IGZpbHRlckNvdW50OiBudW1iZXIgfT4oKTtcblxuICAvKiAtLS0gZm9ybSArIGludGVybmFsIHN0YXRlIC0tLSAqL1xuICBmaWx0ZXJGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHJpdmF0ZSBmb3JtU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vIGtlZXAgYSBzaWduYWwgc25hcHNob3Qgb2YgZm9ybSB2YWx1ZSBzbyBjb21wdXRlZCBjYW4gcmVhY3RcbiAgcHJpdmF0ZSBfZm9ybVZhbHVlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBhbnk+PiA9IHNpZ25hbCh7fSk7XG5cbiAgLy8gbGFzdCBhcHBsaWVkIHNuYXBzaG90IChzaWduYWwgc28gdGVtcGxhdGUvbG9naWMgY2FuIHJlYWQgcmVsaWFibHkpXG4gIHB1YmxpYyBsYXN0QXBwbGllZERhdGE6IFdyaXRhYmxlU2lnbmFsPFJlY29yZDxzdHJpbmcsIGFueT4gfCBudWxsPiA9IHNpZ25hbChudWxsKTtcblxuICAvLyBkYXRlIHJhbmdlIHJlYWRhYmxlIGZvciB0ZW1wbGF0ZVxuICBwdWJsaWMgZGF0ZVJhbmdlU2VsZWN0ZWREYXRlczogV3JpdGFibGVTaWduYWw8SVJTZWxlY3RlZERhdGVzQ29uZmlnPiA9IHNpZ25hbCh7XG4gICAgc3RhcnREYXRlOiAnJyxcbiAgICBlbmREYXRlOiAnJ1xuICB9KTtcblxuICBwdWJsaWMgY2xlYXJBbGxGaWx0ZXJzID0gaW5wdXQ8U3ViamVjdDxib29sZWFuPj4oKTtcblxuICAvKiBjb21wdXRlZCBmaWx0ZXJDb3VudCAqL1xuICBwdWJsaWMgZmlsdGVyQ291bnQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5fZm9ybVZhbHVlU2lnbmFsKCk7XG4gICAgY29uc3QgY2ZnID0gdGhpcy5jb25maWcoKTtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY2ZnKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGZvcm1WYWx1ZVtmaWx0ZXIua2V5XTtcblxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAncmFuZ2UnKSB7XG4gICAgICAgIGlmICh2YWx1ZSAmJiAodmFsdWUubWluICE9PSBudWxsIHx8IHZhbHVlLm1heCAhPT0gbnVsbCkpIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgfHwgZmlsdGVyLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb3VudCsrO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZS50cmFuc2Zvcm0odmFsdWUpKSB7XG4gICAgICAgIGNvdW50Kys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9KTtcblxuICAvKiAtLS0gTGlmZWN5Y2xlIC0tLSAqL1xuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdWJzY3JpYmUgZm9ybSBjaGFuZ2VzIHNvIGNvbXB1dGVkL2ZpbHRlckNvdW50IHVwZGF0ZVxuICAgIHRoaXMuc3Vic2NyaWJlRm9ybUNoYW5nZXMoKTtcbiAgICB0aGlzLmNsZWFyQWxsRmlsdGVycygpPy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldEZpbHRlcnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIC8qIC0tLSBGb3JtIGluaXQgJiBoZWxwZXJzIC0tLSAqL1xuICBpbml0aWFsaXplRm9ybUNvbnRyb2xzKGNvbmZpZzogRmlsdGVyUGFuZWxDb25maWdbXSk6IHZvaWQge1xuICAgIC8vIGJ1aWxkIGEgZnJlc2ggZm9ybSB0byBtYXRjaCBjb25maWdcbiAgICBjb25zdCBuZXdGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBjb25zdCByYW5nZVZhbGlkYXRvcjogVmFsaWRhdG9yRm4gPSAoZ3JvdXA6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IG1pbiA9IChncm91cC5nZXQoJ21pbicpIGFzIEZvcm1Db250cm9sKT8udmFsdWU7XG4gICAgICBjb25zdCBtYXggPSAoZ3JvdXAuZ2V0KCdtYXgnKSBhcyBGb3JtQ29udHJvbCk/LnZhbHVlO1xuICAgICAgaWYgKG1pbiAhPT0gbnVsbCAmJiBtYXggIT09IG51bGwgJiYgbWluID4gbWF4KSB7XG4gICAgICAgIHJldHVybiB7IHJhbmdlRXJyb3I6ICdNaW4gdmFsdWUgc2hvdWxkIGJlIGxlc3MgdGhhbiBtYXggdmFsdWUnIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgY29uZmlnKSB7XG4gICAgICBsZXQgY29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG4gICAgICBzd2l0Y2ggKGZpbHRlci50eXBlKSB7XG4gICAgICAgIGNhc2UgJ3JhbmdlJzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Hcm91cChcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbWluOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICAgIG1heDogbmV3IEZvcm1Db250cm9sKG51bGwpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiByYW5nZVZhbGlkYXRvciB9XG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdtdWx0aVNlbGVjdCc6XG4gICAgICAgIGNhc2UgJ2NoZWNrYm94JzpcbiAgICAgICAgICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKEFycmF5LmlzQXJyYXkoZmlsdGVyLmRlZmF1bHRWYWx1ZSkgPyBmaWx0ZXIuZGVmYXVsdFZhbHVlIDogW10pO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgICAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbChmaWx0ZXIuZGVmYXVsdFZhbHVlID8/ICcnKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBudWxsKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuaGFzVmFsdWUudHJhbnNmb3JtKGZpbHRlci5kZWZhdWx0VmFsdWUpKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmlsdGVyLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIG5ld0Zvcm0uYWRkQ29udHJvbChmaWx0ZXIua2V5LCBjb250cm9sKTtcbiAgICB9XG5cbiAgICAvLyByZXBsYWNlIGZvcm0gc2FmZWx5XG4gICAgLy8gcHJlc2VydmUgc3Vic2NyaXB0aW9uIHNvIHZhbHVlQ2hhbmdlcyBjb250aW51ZXMgdG8gdXBkYXRlIF9mb3JtVmFsdWVTaWduYWxcbiAgICB0aGlzLmZpbHRlckZvcm0gPSBuZXdGb3JtO1xuICAgIC8vIHVwZGF0ZSBzaWduYWwgc25hcHNob3QgaW1tZWRpYXRlbHlcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuXG4gICAgLy8gcmUtc3Vic2NyaWJlIHRvIG5ldyBmb3JtJ3MgdmFsdWVDaGFuZ2VzXG4gICAgdGhpcy5zdWJzY3JpYmVGb3JtQ2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JtQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAvLyB1bnN1YnNjcmliZSBwcmV2aW91cyBzdWJzY3JpcHRpb24gaWYgYW55XG4gICAgdGhpcy5mb3JtU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgLy8gc3Vic2NyaWJlIHRvIHZhbHVlQ2hhbmdlczsgc2V0IHNuYXBzaG90IHNpZ25hbFxuICAgIHRoaXMuZm9ybVN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuX2Zvcm1WYWx1ZVNpZ25hbC5zZXQoeyAuLi52YWx1ZSB9KTtcbiAgICB9KTtcblxuICAgIC8vIGFsc28gc2V0IGluaXRpYWwgc25hcHNob3QgaW4gY2FzZSB2YWx1ZUNoYW5nZXMgZG9lc24ndCBlbWl0IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29udHJvbChrZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZpbHRlckZvcm0uZ2V0KGtleSk7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgY29uZmlnIHN0cnVjdHVyZSBoYXMgY2hhbmdlZCAobmV3IGtleXMgb3IgcmVtb3ZlZCBrZXlzKVxuICAgKiBVc2VkIHRvIGRldGVybWluZSBpZiBmb3JtIG5lZWRzIHRvIGJlIHJlYnVpbHRcbiAgICovXG4gIHByaXZhdGUgaGFzQ29uZmlnQ2hhbmdlZChuZXdDb25maWc6IEZpbHRlclBhbmVsQ29uZmlnW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBjdXJyZW50S2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZmlsdGVyRm9ybS5jb250cm9scykuc29ydCgpO1xuICAgIGNvbnN0IG5ld0tleXMgPSBuZXdDb25maWcubWFwKGYgPT4gZi5rZXkpLnNvcnQoKTtcbiAgICBcbiAgICBpZiAoY3VycmVudEtleXMubGVuZ3RoICE9PSBuZXdLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBjdXJyZW50S2V5cy5zb21lKChrZXksIGluZGV4KSA9PiBrZXkgIT09IG5ld0tleXNbaW5kZXhdKTtcbiAgfVxuXG4gIC8qIC0tLSBBY3Rpb25zIC8gVUkgaGFuZGxlcnMgLS0tICovXG4gIGNsb3NlUGFuZWwoKTogdm9pZCB7XG4gICAgY29uc3QgbGFzdCA9IHRoaXMubGFzdEFwcGxpZWREYXRhKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHByZWZlciBzZXRWYWx1ZSAoZW5zdXJlcyBzaGFwZSBtYXRjaGVzKTsgZmFsbGJhY2sgdG8gcGF0Y2hWYWx1ZVxuICAgICAgICB0aGlzLmZpbHRlckZvcm0uc2V0VmFsdWUobGFzdCk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUobGFzdCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJGb3JtVmFsdWVzKCk7XG4gICAgfVxuXG4gICAgLy8gZW1pdCBjbG9zZSBldmVudFxuICAgIHRoaXMub25DbG9zZS5lbWl0KCk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmlsdGVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmZpbHRlckZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgZm9ybSB2YWx1ZVxuICAgIGNvbnN0IHNuYXBzaG90ID0geyAuLi50aGlzLmZpbHRlckZvcm0udmFsdWUgfTtcbiAgXG4gICAgLy8gT1BUSU9OQUw6IE1hcCBvYmplY3RzIGJhY2sgdG8gdmFsdWVzIGZvciB0aGUgT3V0cHV0IGVtaXNzaW9uIFxuICAgIC8vIHNvIHRoZSBwYXJlbnQgcmVjZWl2ZXMgY2xlYW4gZGF0YSAoWydMT0dJTiddIGluc3RlYWQgb2YgW3tsYWJlbDouLi4sIHZhbHVlOiAnTE9HSU4nfV0pXG4gICAgY29uc3QgY2xlYW5TbmFwc2hvdCA9IHRoaXMubWFwVmFsdWVzRm9yRW1pc3Npb24oc25hcHNob3QpO1xuICBcbiAgICB0aGlzLmxhc3RBcHBsaWVkRGF0YS5zZXQoc25hcHNob3QpOyAvLyBLZWVwIG9iamVjdHMgZm9yIFVJIHN0YXRlXG4gIFxuICAgIHRoaXMub25BcHBseS5lbWl0KHtcbiAgICAgIGZpbHRlckRhdGE6IGNsZWFuU25hcHNob3QsIC8vIEVtaXQgdmFsdWVzXG4gICAgICBmaWx0ZXJDb3VudDogdGhpcy5maWx0ZXJDb3VudCgpXG4gICAgfSk7XG4gIFxuICAgIHRoaXMuY2xvc2VQYW5lbCgpO1xuICB9XG4gIFxuICAvLyBIZWxwZXIgdG8gY2xlYW4gdXAgZGF0YSBiZWZvcmUgZW1pdHRpbmdcbiAgcHJpdmF0ZSBtYXBWYWx1ZXNGb3JFbWlzc2lvbihmb3JtVmFsdWU6IGFueSk6IGFueSB7XG4gICAgY29uc3QgY2xlYW5EYXRhID0geyAuLi5mb3JtVmFsdWUgfTtcbiAgICBjb25zdCBjZmcgPSB0aGlzLmNvbmZpZygpO1xuICBcbiAgICBjZmcuZm9yRWFjaChmaWx0ZXIgPT4ge1xuICAgICAgY29uc3QgdmFsdWUgPSBjbGVhbkRhdGFbZmlsdGVyLmtleV07XG4gIFxuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNsZWFuRGF0YVtmaWx0ZXIua2V5XSA9IHZhbHVlOyBcbiAgICAgIH1cbiAgICB9KTtcbiAgXG4gICAgcmV0dXJuIGNsZWFuRGF0YTtcbiAgfVxuICBcbiAgXG4gIFxuXG4gIHJlc2V0RmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyRm9ybVZhbHVlcygpO1xuICAgIC8vIGNhbGwgYXBwbHlGaWx0ZXJzIHRvIG1haW50YWluIHByZXZpb3VzIGJlaGF2aW9yICh2YWxpZGF0aW9uICsgZW1pdClcbiAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICB9XG5cbiAgLyogLS0tIFZhbHVlIHNldHRlcnMgLS0tICovXG4vLyBmaWx0ZXItcGFuZWwuY29tcG9uZW50LnRzXG5cbmhhbmRsZVNlbGVjdChldmVudDogYW55LCBmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlcktleSk7XG4gIFxuICAvLyBGSVg6IERvIG5vdCBzdHJpcCB0aGUgdmFsdWUgaGVyZS4gU3RvcmUgdGhlIGZ1bGwgb2JqZWN0IHNvIHRoZSBVSSBcbiAgLy8gY2FuIG1hdGNoIGl0IGFnYWluc3QgdGhlIGRhdGEgbGlzdCB3aGVuIHJlLXJlbmRlcmluZy5cbiAgbGV0IHZhbHVlVG9TZXQgPSBldmVudDtcblxuICAvKiAvLyBDT01NRU5URUQgT1VUIE9SIFJFTU9WRUQgVEhJUyBCTE9DS1xuICBpZiAoZmlsdGVyLnR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgQXJyYXkuaXNBcnJheShldmVudCkpIHtcbiAgICBpZiAoZXZlbnQubGVuZ3RoID4gMCAmJiB0eXBlb2YgZXZlbnRbMF0gPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gZXZlbnRbMF0pIHtcbiAgICAgIHZhbHVlVG9TZXQgPSBldmVudC5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS52YWx1ZSB8fCBpdGVtKTtcbiAgICB9XG4gIH1cbiAgKi9cbiAgXG4gIGN0cmw/LnNldFZhbHVlKHZhbHVlVG9TZXQpO1xuXG4gIGlmIChmaWx0ZXIub25DaGFuZ2UpIHtcbiAgICBmaWx0ZXIub25DaGFuZ2UoZXZlbnQsIHRoaXMuY29uZmlnKCksIHRoaXMuZmlsdGVyRm9ybS52YWx1ZSk7XG4gIH1cbn1cblxuXG5cbiAgaGFuZGxlQ2hlY2tib3goZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGNoZWNrYm94VmFsdWU6IHN0cmluZywgZmlsdGVyOiBGaWx0ZXJQYW5lbENvbmZpZyk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyS2V5KTtcbiAgICBjb25zdCBjdXJyZW50ID0gQXJyYXkuaXNBcnJheShjdHJsPy52YWx1ZSkgPyBbLi4uY3RybC52YWx1ZV0gOiBbXTtcbiAgICBpZiAoZXZlbnQ/LnZhbHVlKSB7XG4gICAgICBjdHJsPy5zZXRWYWx1ZShbLi4uY3VycmVudCwgY2hlY2tib3hWYWx1ZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdHJsPy5zZXRWYWx1ZShjdXJyZW50LmZpbHRlcigodikgPT4gdiAhPT0gY2hlY2tib3hWYWx1ZSkpO1xuICAgIH1cblxuICAgIGlmIChmaWx0ZXIub25DaGFuZ2UpIHtcbiAgICAgIGZpbHRlci5vbkNoYW5nZShldmVudCwgdGhpcy5jb25maWcoKSwgdGhpcy5maWx0ZXJGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGVDaGFuZ2UoZXZlbnQ6IGFueSwgZmlsdGVyS2V5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyUGFuZWxDb25maWcpOiB2b2lkIHtcbiAgICBjb25zdCBjdHJsID0gdGhpcy5nZXRDb250cm9sKGZpbHRlcktleSk7XG4gICAgY3RybD8uc2V0VmFsdWUoZXZlbnQpO1xuXG4gICAgaWYgKGV2ZW50ICYmIHR5cGVvZiBldmVudCA9PT0gJ29iamVjdCcgJiYgJ3N0YXJ0RGF0ZScgaW4gZXZlbnQgJiYgJ2VuZERhdGUnIGluIGV2ZW50KSB7XG4gICAgICB0aGlzLmRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMuc2V0KHtcbiAgICAgICAgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGV2ZW50LmVuZERhdGVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qIC0tLSBDbGVhciAvIFNldCB2YWx1ZXMgaGVscGVycyAtLS0gKi9cbiAgY2xlYXJGb3JtVmFsdWVzKCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc2V0czogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgdGhpcy5jb25maWcoKSkge1xuICAgICAgbGV0IGRlZmF1bHRWYWx1ZTogYW55ID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyBudWxsO1xuICAgICAgaWYgKGZpbHRlci50eXBlID09PSAnbXVsdGlTZWxlY3QnIHx8IGZpbHRlci50eXBlID09PSAnY2hlY2tib3gnKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IGZpbHRlci5kZWZhdWx0VmFsdWUgPz8gW107XG4gICAgICB9XG4gICAgICBpZiAoZmlsdGVyLnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gZmlsdGVyLmRlZmF1bHRWYWx1ZSA/PyB7IG1pbjogbnVsbCwgbWF4OiBudWxsIH07XG4gICAgICB9XG4gICAgICByZXNldHNbZmlsdGVyLmtleV0gPSBkZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgLy8gcGF0Y2ggdG8gYXZvaWQgc2hhcGUgbWlzbWF0Y2ggZXJyb3JzXG4gICAgdGhpcy5maWx0ZXJGb3JtLnBhdGNoVmFsdWUocmVzZXRzKTtcbiAgICB0aGlzLl9mb3JtVmFsdWVTaWduYWwuc2V0KHsgLi4udGhpcy5maWx0ZXJGb3JtLnZhbHVlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZmlsdGVyLnNlbGVjdGVkVmFsdWUgd2hlbiBwYXJlbnQgcHJvdmlkZXMgc2VsZWN0ZWRWYWx1ZS5cbiAgICogQ2FsbGVkIGJ5IHRoZSBjb25maWcgZWZmZWN0IChzbyBydW5zIG9uIGluaXRpYWwgbG9hZCBhbmQgb24gY29uZmlnIGNoYW5nZXMpLlxuICAgKi9cbiAgc2V0RmlsdGVyVmFsdWUoY29uZmlnOiBGaWx0ZXJQYW5lbENvbmZpZ1tdKTogdm9pZCB7XG4gICAgbGV0IGFueVZhbHVlU2V0ID0gZmFsc2U7XG5cbiAgICBmb3IgKGNvbnN0IGZpbHRlciBvZiBjb25maWcpIHtcbiAgICAgIGlmICh0aGlzLmhhc1ZhbHVlLnRyYW5zZm9ybShmaWx0ZXI/LnNlbGVjdGVkVmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmdldENvbnRyb2woZmlsdGVyLmtleSk7XG4gICAgICAgIGlmIChjdHJsKSB7XG4gICAgICAgICAgY3RybC5zZXRWYWx1ZShmaWx0ZXIuc2VsZWN0ZWRWYWx1ZSk7XG4gICAgICAgICAgYW55VmFsdWVTZXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFueVZhbHVlU2V0ICYmIHRoaXMuZW1pdEZpbHRlcnNBZnRlclNldHRpbmdOZXdWYWx1ZXMoKSkge1xuICAgICAgLy8gcmVzcGVjdCB0aGUgcGFyZW50IGZsYWcg4oCUIGFwcGx5IGFuZCBlbWl0XG4gICAgICB0aGlzLmFwcGx5RmlsdGVycygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBtYWtlIHN1cmUgb3VyIHNuYXBzaG90IHNpZ25hbCBpcyBmcmVzaFxuICAgICAgdGhpcy5fZm9ybVZhbHVlU2lnbmFsLnNldCh7IC4uLnRoaXMuZmlsdGVyRm9ybS52YWx1ZSB9KTtcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwiZmlsdGVyLXBhbmVsLWNvbnRhaW5lclwiICpuZ0lmPVwic2hvdygpXCIgQHNsaWRlRnJvbVJpZ2h0PlxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIj5cbiAgICAgICAgPHNwYW4+RmlsdGVyczwvc3Bhbj5cbiAgICAgICAgPHN2ZyBjbGFzcz1cImNsb3NlLWljb25cIiAoY2xpY2spPVwiY2xvc2VQYW5lbCgpXCIgd2lkdGg9XCIyNVwiIGhlaWdodD1cIjI1XCIgdmlld0JveD1cIjAgMCAyNSAyNVwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgPGcgaWQ9XCJpYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGlkPVwiVW5pb25cIiBmaWxsLXJ1bGU9XCJldmVub2RkXCIgY2xpcC1ydWxlPVwiZXZlbm9kZFwiIGQ9XCJNOC42MDQ2OCA2LjY0MzU1QzguMDkwMzYgNi4xMjkyMyA3LjI1NjQ5IDYuMTI5MjMgNi43NDIxOCA2LjY0MzU1QzYuMjI3ODcgNy4xNTc4NiA2LjIyNzg3IDcuOTkxNzMgNi43NDIxOCA4LjUwNjA0TDEwLjQ5MzggMTIuMjU3Nkw2Ljc0MzEgMTYuMDA4M0M2LjIyODc5IDE2LjUyMjYgNi4yMjg3OSAxNy4zNTY0IDYuNzQzMSAxNy44NzA4QzcuMjU3NDIgMTguMzg1MSA4LjA5MTI5IDE4LjM4NTEgOC42MDU2MCAxNy44NzA4TDEyLjM1NjIgMTQuMTIwMUwxNi4xMDY4IDE3Ljg3MDdDMTYuNjIxMSAxOC4zODUwIDE3LjQ1NTAgMTguMzg1MCAxNy45NjkzIDE3Ljg3MDdDMTguNDgzNiAxNy4zNTY0IDE4LjQ4MzYgMTYuNTIyNSAxNy45NjkzIDE2LjAwODJMMTQuMjE4NyAxMi4yNTc2TDE3Ljk3MDIgOC41MDYxM0MxOC40ODQ1IDcuOTkxODEgMTguNDg0NSA3LjE1Nzk0IDE3Ljk3MDIgNi42NDM2M0MxNy40NTU5IDYuMTI5MzIgMTYuNjIyMCA2LjEyOTMyIDE2LjEwNzcgNi42NDM2M0wxMi4zNTYyIDEwLjM5NTFMOC42MDQ2OCA2LjY0MzU1WlwiIGZpbGw9XCIjMTgxRjMzXCIgLz5cbiAgICAgICAgICAgIDwvZz5cbiAgICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXIgZmlyc3RcIj48L2Rpdj5cbiAgXG4gICAgPGRpdiBjbGFzcz1cImZpbHRlcnNcIiBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGNvbmZpZygpOyBsZXQgbGFzdCA9IGxhc3RcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXJcIiAqbmdJZj1cIiFmaWx0ZXIuaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWx0ZXItdGl0bGVcIj57e2ZpbHRlci50aXRsZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ211bHRpU2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLW11bHRpLXNlbGVjdC1kcm9wZG93biBjbGFzcz1cIm5vLXBhZGRpbmdcIiBbbGFiZWxdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdTZWxlY3QnXCIgW3NlbGVjdGVkSXRlbXNdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlIHx8IFtdXCIgKG9uQ2hhbmdlKT1cImhhbmRsZVNlbGVjdCgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbZGF0YV09XCJmaWx0ZXIub3B0aW9uc1wiIFtzZWFyY2hFbmFibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93U2VsZWN0ZWRDb3VudF09XCJ0cnVlXCIgW2VuYWJsZVNlbGVjdEFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZUFwcGx5QnV0dG9uXT1cImZhbHNlXCIgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiNDRweFwiPjwvbWlzLW11bHRpLXNlbGVjdC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnc2VsZWN0J1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtZmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtkYXRhXT1cImZpbHRlci5vcHRpb25zXCIgW3NlYXJjaEVuYWJsZWRdPVwidHJ1ZVwiIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjQ0cHhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiaGFuZGxlU2VsZWN0KCRldmVudCwgZmlsdGVyLmtleSwgZmlsdGVyKVwiIFtzZWxlY3RlZEl0ZW1dPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21pcy1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnY2hlY2tib3gnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXIub3B0aW9uc1wiIGNsYXNzPVwiY2hlY2tib3gtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1pcy1jaGVja2JveCBbdHlwZV09XCInRGVmYXVsdCdcIiBbY2hlY2tlZF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KT8udmFsdWU/LmluY2x1ZGVzKG9wdGlvbi52YWx1ZSlcIiAodmFsdWVDaGFuZ2UpPVwiaGFuZGxlQ2hlY2tib3goJGV2ZW50LCBmaWx0ZXIua2V5LCBvcHRpb24udmFsdWUsIGZpbHRlcilcIj48L21pcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoZWNrYm94LWxhYmVsXCI+e3tvcHRpb24ubGFiZWx9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyLnR5cGUgPT09ICdkYXRlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcCBtaXNJbnB1dCB0eXBlPVwidGV4dFwiIHJlYWRvbmx5IGNsYXNzPVwibWlzLWlucHV0XCIgW2RwQ29uZmlnXT1cImZpbHRlci5kYXRlUGlja2VyQ29uZmlnXCIgW3BsYWNlaG9sZGVyXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZSB8fCBmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1NlbGVjdCdcIiBbdmFsdWVdPVwiZmlsdGVyRm9ybS5nZXQoZmlsdGVyLmtleSk/LnZhbHVlIHx8IGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0J1wiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIiBbc2VsZWN0ZWREYXRlXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy52YWx1ZVwiIFtwb3NpdGlvblhdPVwiJ2VuZCdcIiBbb2Zmc2V0WF09XCItMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnZGF0ZVJhbmdlUGlja2VyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzVHpEcnAgbWlzSW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm1pcy1pbnB1dFwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIighZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLnN0YXJ0RGF0ZSAmJiAhZGF0ZVJhbmdlU2VsZWN0ZWREYXRlcygpLmVuZERhdGUpID8gKGZpbHRlci5wbGFjZWhvbGRlciB8fCAnU2VsZWN0JykgOiBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuc3RhcnREYXRlICsgJyAtICcgKyBkYXRlUmFuZ2VTZWxlY3RlZERhdGVzKCkuZW5kRGF0ZVwiIFtwb3NpdGlvblhdPVwiJ3N0YXJ0J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Bvc2l0aW9uWV09XCIndG9wJ1wiIFtzZWxlY3RlZERhdGVzXT1cImRhdGVSYW5nZVNlbGVjdGVkRGF0ZXMoKVwiIChkYXRlQ2hhbmdlKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQsIGZpbHRlci5rZXksIGZpbHRlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcENvbmZpZ109XCJmaWx0ZXIuZGF0ZVJhbmdlUGlja2VyQ29uZmlnXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAndGV4dCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1pcy1pbnB1dCB0eXBlPVwicm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1pc0lucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJpbnB1dFwiIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImZpbHRlci5rZXlcIj5cbiAgICAgICAgICAgICAgICAgICAgPC9taXMtaW5wdXQ+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpbHRlci50eXBlID09PSAnbnVtYmVyJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bWlzLWlucHV0IHR5cGU9XCJyb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWlzSW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiaW5wdXRcIiBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCIgW2Zvcm1Db250cm9sTmFtZV09XCJmaWx0ZXIua2V5XCI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWlzLWlucHV0PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWx0ZXIudHlwZSA9PT0gJ3JhbmdlJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtY29udGFpbmVyXCIgW2Zvcm1Hcm91cF09XCJmaWx0ZXJGb3JtLmdldChmaWx0ZXIua2V5KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhbmdlLWlubmVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlcj8ub3B0aW9ucz8uWzBdPy5sYWJlbCB8fCAnTWluJyB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlzSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmlsdGVyLnBsYWNlaG9sZGVyIHx8ICdUeXBlIGhlcmUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWluXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFuZ2UtaW5uZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyPy5vcHRpb25zPy5bMV0/LmxhYmVsIHx8ICdNYXgnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWx0ZXIucGxhY2Vob2xkZXIgfHwgJ1R5cGUgaGVyZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cImZpbHRlckZvcm0uZ2V0KGZpbHRlci5rZXkpPy5nZXQoJ21pbicpPy52YWx1ZSB8fCAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWRpdmlkZXJcIiAqbmdJZj1cIiFsYXN0XCI+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIFxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICAgIDxtaXMtYnV0dG9uIFtuYW1lXT1cIidSZXNldCdcIiBbc2l6ZV09XCInU21hbGwnXCIgW3R5cGVdPVwiJ1RleHQnXCIgKGNsaWNrKT1cInJlc2V0RmlsdGVycygpXCI+PC9taXMtYnV0dG9uPlxuICAgICAgICA8bWlzLWJ1dHRvbiBbbmFtZV09XCInQXBwbHknXCIgW3NpemVdPVwiJ1NtYWxsJ1wiIFt0eXBlXT1cIidTb2xpZCdcIiAoY2xpY2spPVwiYXBwbHlGaWx0ZXJzKClcIiBbZGlzYWJsZWRdPVwiZmlsdGVyRm9ybS5pbnZhbGlkXCI+PC9taXMtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj4iXX0=
@@ -40,13 +40,13 @@ export class TimepickerDirective {
40
40
  this.overlayRef.backdropClick().subscribe(resp => {
41
41
  this.openStatus = false;
42
42
  this.statusEmitter.emit(false);
43
- if (this.overlay) {
43
+ if (this.overlayRef) {
44
44
  this.overlayRef.detach();
45
45
  }
46
46
  });
47
47
  }
48
48
  destroyOverlay() {
49
- if (this.overlay) {
49
+ if (this.overlayRef) {
50
50
  this.overlayRef.detach();
51
51
  }
52
52
  }
@@ -67,4 +67,4 @@ export class TimepickerDirective {
67
67
  type: Input,
68
68
  args: ['openStatus']
69
69
  }] }); })();
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixJQUEwQixvQkFBb0IsQ0FBQyxVQUFVO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFBQSxDQUFDO0lBRUYsWUFBb0IsV0FBaUMsRUFBVSxPQUFnQixFQUFVLGdCQUFrQztRQUF2RyxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVhuSCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVN3RSxDQUFDO0lBRS9ILGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakgsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM5RyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGtDQUFrQztZQUNqRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDM0IsUUFBUSxFQUFFO2dCQUNYLHNEQUFzRDtpQkFDckQsbUJBQW1CLENBQUMsTUFBTSxDQUFDO2lCQUMzQixhQUFhLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFHLElBQUksQ0FBQyxPQUFPLEVBQUMsQ0FBQztnQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFDLENBQUM7WUFDZixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO29IQS9DVSxtQkFBbUI7b0VBQW5CLG1CQUFtQjs7aUZBQW5CLG1CQUFtQjtjQUgvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjthQUM1QjtpR0FHb0IsUUFBUTtrQkFBMUIsS0FBSzttQkFBQyxVQUFVO1lBQ1AsYUFBYTtrQkFBdEIsTUFBTTtZQUVtQixvQkFBb0I7a0JBQTdDLEtBQUs7bUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgT3V0cHV0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5LCBPdmVybGF5Q29uZmlnLCBPdmVybGF5UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9vdmVybGF5XCI7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gXCJAYW5ndWxhci9jZGsvcG9ydGFsXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tsaWJUaW1lcGlja2VyXSdcbn0pXG5leHBvcnQgY2xhc3MgVGltZXBpY2tlckRpcmVjdGl2ZSB7XG4gIHByaXZhdGUgb3BlblN0YXR1czogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoJ29yaWdpbkVsJykgb3JpZ2luRWwgOiBhbnk7XG4gIEBPdXRwdXQoKSBzdGF0dXNFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOyBcblxuICBASW5wdXQoJ29wZW5TdGF0dXMnKSAgc2V0IGNyZWF0ZU92ZXJsYXlPbklucHV0KG9wZW5TdGF0dXMpe1xuICAgIHRoaXMub3BlblN0YXR1cyA9IG9wZW5TdGF0dXM7XG4gICAgaWYodGhpcy5vcmlnaW5FbCAmJiB0aGlzLm9wZW5TdGF0dXMpIHtcbiAgICAgIHRoaXMuY3JlYXRlT3ZlcmxheSh0aGlzLm9yaWdpbkVsKTtcbiAgICB9XG4gIH07IFxuICBwcml2YXRlIG92ZXJsYXlSZWYhOiBPdmVybGF5UmVmO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxFbGVtZW50PiwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgY3JlYXRlT3ZlcmxheShvcmlnaW46IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJzdGFydFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwic3RhcnRcIiwgb3ZlcmxheVk6IFwidG9wXCIgfSwgMCwgNCksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwiZW5kXCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSwgeyBvdmVybGF5WDogXCJlbmRcIiwgb3ZlcmxheVk6IFwidG9wXCIgfSwgMCwgNClcbiAgICBdO1xuXG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogXCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiLFxuICAgICAgcG9zaXRpb25TdHJhdGVneTogdGhpcy5vdmVybGF5XG4gICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgIC8vY29ubmVjdGluZyB0aGUgZHJvcGRvd24gb3ZlcmxheSB0byB0aGUgaW5wdXQgZWxlbWVudFxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAgIC53aXRoUG9zaXRpb25zKFsuLi5wb3NpdGlvbnNdKVxuICAgICAgICAud2l0aFB1c2godHJ1ZSlcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gICAgY29uc3QgZHJvcGRvd25Qb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKGRyb3Bkb3duUG9ydGFsKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZShyZXNwID0+IHtcbiAgICAgIHRoaXMub3BlblN0YXR1cyA9IGZhbHNlO1xuICAgICAgdGhpcy5zdGF0dXNFbWl0dGVyLmVtaXQoZmFsc2UpO1xuICAgICAgaWYodGhpcy5vdmVybGF5KXtcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZGVzdHJveU92ZXJsYXkoKXtcbiAgICBpZih0aGlzLm92ZXJsYXkpe1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgIH1cbiAgfVxuICBcbn1cbiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy90aW1lcGlja2VyL3RpbWVwaWNrZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7QUFLckQsTUFBTSxPQUFPLG1CQUFtQjtJQUs5QixJQUEwQixvQkFBb0IsQ0FBQyxVQUFVO1FBQ3ZELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFBQSxDQUFDO0lBRUYsWUFBb0IsV0FBaUMsRUFBVSxPQUFnQixFQUFVLGdCQUFrQztRQUF2RyxnQkFBVyxHQUFYLFdBQVcsQ0FBc0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVhuSCxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQVN3RSxDQUFDO0lBRS9ILGFBQWEsQ0FBQyxNQUFXO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHO1lBQ2hCLElBQUksc0JBQXNCLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakgsSUFBSSxzQkFBc0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUM5RyxDQUFDO1FBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxhQUFhLENBQUM7WUFDdEMsV0FBVyxFQUFFLElBQUk7WUFDakIsYUFBYSxFQUFFLGtDQUFrQztZQUNqRCxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDM0IsUUFBUSxFQUFFO2dCQUNYLHNEQUFzRDtpQkFDckQsbUJBQW1CLENBQUMsTUFBTSxDQUFDO2lCQUMzQixhQUFhLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO2lCQUM3QixRQUFRLENBQUMsSUFBSSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFHLElBQUksQ0FBQyxVQUFVLEVBQUMsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUcsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDO1lBQ2xCLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7b0hBL0NVLG1CQUFtQjtvRUFBbkIsbUJBQW1COztpRkFBbkIsbUJBQW1CO2NBSC9CLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2FBQzVCO2lHQUdvQixRQUFRO2tCQUExQixLQUFLO21CQUFDLFVBQVU7WUFDUCxhQUFhO2tCQUF0QixNQUFNO1lBRW1CLG9CQUFvQjtrQkFBN0MsS0FBSzttQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2xpYlRpbWVwaWNrZXJdJ1xufSlcbmV4cG9ydCBjbGFzcyBUaW1lcGlja2VyRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSBvcGVuU3RhdHVzOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgnb3JpZ2luRWwnKSBvcmlnaW5FbCA6IGFueTtcbiAgQE91dHB1dCgpIHN0YXR1c0VtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7IFxuXG4gIEBJbnB1dCgnb3BlblN0YXR1cycpICBzZXQgY3JlYXRlT3ZlcmxheU9uSW5wdXQob3BlblN0YXR1cyl7XG4gICAgdGhpcy5vcGVuU3RhdHVzID0gb3BlblN0YXR1cztcbiAgICBpZih0aGlzLm9yaWdpbkVsICYmIHRoaXMub3BlblN0YXR1cykge1xuICAgICAgdGhpcy5jcmVhdGVPdmVybGF5KHRoaXMub3JpZ2luRWwpO1xuICAgIH1cbiAgfTsgXG4gIHByaXZhdGUgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+LCBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBjcmVhdGVPdmVybGF5KG9yaWdpbjogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcG9zaXRpb25zID0gW1xuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcInN0YXJ0XCIsIG9yaWdpblk6IFwiYm90dG9tXCIgfSwgeyBvdmVybGF5WDogXCJzdGFydFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJ0b3BcIiB9LCAwLCA0KVxuICAgIF07XG5cbiAgICBjb25zdCBvdmVybGF5Q29uZmlnID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiBcImNkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wXCIsXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgLy9jb25uZWN0aW5nIHRoZSBkcm9wZG93biBvdmVybGF5IHRvIHRoZSBpbnB1dCBlbGVtZW50XG4gICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgICAgLndpdGhQb3NpdGlvbnMoWy4uLnBvc2l0aW9uc10pXG4gICAgICAgIC53aXRoUHVzaCh0cnVlKVxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShvdmVybGF5Q29uZmlnKTtcbiAgICBjb25zdCBkcm9wZG93blBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnRlbXBsYXRlUmVmLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2goZHJvcGRvd25Qb3J0YWwpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKHJlc3AgPT4ge1xuICAgICAgdGhpcy5vcGVuU3RhdHVzID0gZmFsc2U7XG4gICAgICB0aGlzLnN0YXR1c0VtaXR0ZXIuZW1pdChmYWxzZSk7XG4gICAgICBpZih0aGlzLm92ZXJsYXlSZWYpe1xuICAgICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBkZXN0cm95T3ZlcmxheSgpe1xuICAgIGlmKHRoaXMub3ZlcmxheVJlZil7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgfVxuICB9XG4gIFxufVxuIl19
@@ -329,9 +329,6 @@ class TzDpContainerComponent {
329
329
  }
330
330
  constructor(data, toast) {
331
331
  this.toast = toast;
332
- this.parseZoneInstance = (...args) => {
333
- return dayjs(...args);
334
- };
335
332
  this.rawWeekDays = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
336
333
  // Signal-based state management
337
334
  this.weekDaysSignal = signal([]);
@@ -380,18 +377,19 @@ class TzDpContainerComponent {
380
377
  this.selectedYear = computed(() => this.selectedYearSignal());
381
378
  this.isYearSelectionFlow = computed(() => this.isYearSelectionFlowSignal());
382
379
  this.data = data;
383
- // Initialize parseZoneInstance with better error handling
380
+ const timezone = this.data?.dpConfig?.timezone;
384
381
  this.parseZoneInstance = (...args) => {
385
382
  try {
386
- if (this.data?.dpConfig?.timezone) {
387
- return dayjs.tz(args[0], args[1] || 'DD/MM/YYYY', this.data.dpConfig.timezone);
388
- }
389
- else {
390
- return dayjs(...args);
383
+ if (timezone) {
384
+ if (args.length === 0 || args[0] == null) {
385
+ return dayjs().tz(timezone);
386
+ }
387
+ const format = args[1] || this.data?.dpConfig?.format || 'DD/MM/YYYY';
388
+ return dayjs.tz(args[0], format, timezone);
391
389
  }
390
+ return dayjs(...args);
392
391
  }
393
- catch (error) {
394
- // Silently handle timezone parsing error, fallback to local time
392
+ catch {
395
393
  return dayjs(...args);
396
394
  }
397
395
  };