mis-crystal-design-system 18.2.10 → 18.2.12-test
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/async-search-dropdown/async-dropdown.component.d.ts +2 -1
- package/datepicker_v2/tz-datepicker.directive.d.ts +1 -1
- package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -0
- package/dropdown/dropdown.component.d.ts +2 -1
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +10 -5
- package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +49 -33
- package/esm2022/dropdown/dropdown.component.mjs +5 -4
- package/esm2022/slider/slider.component.mjs +2 -2
- package/esm2022/table/table.component.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +9 -4
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +48 -32
- package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-dropdown.mjs +4 -3
- package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +2 -2
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/package.json +12 -12
- package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
|
@@ -27,6 +27,7 @@ export declare class AsyncDropdownComponent implements OnInit, OnDestroy {
|
|
|
27
27
|
customPlaceholderIcon: import("@angular/core").InputSignal<string>;
|
|
28
28
|
selections: import("@angular/core").InputSignal<Map<string, any>>;
|
|
29
29
|
searchValue: import("@angular/core").InputSignal<any>;
|
|
30
|
+
noResultsText: import("@angular/core").InputSignal<string>;
|
|
30
31
|
onSelect: import("@angular/core").OutputEmitterRef<any>;
|
|
31
32
|
searchQueryChange: import("@angular/core").OutputEmitterRef<string>;
|
|
32
33
|
clear: import("@angular/core").OutputEmitterRef<boolean>;
|
|
@@ -90,6 +91,6 @@ export declare class AsyncDropdownComponent implements OnInit, OnDestroy {
|
|
|
90
91
|
*/
|
|
91
92
|
defaultCall(): void;
|
|
92
93
|
static ɵfac: i0.ɵɵFactoryDeclaration<AsyncDropdownComponent, never>;
|
|
93
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<AsyncDropdownComponent, "mis-async-search-dropdown", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "httpStream": { "alias": "httpStream"; "required": true; "isSignal": true; }; "displayKey": { "alias": "displayKey"; "required": false; "isSignal": true; }; "secondaryDisplayKey": { "alias": "secondaryDisplayKey"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "minInputLength": { "alias": "minInputLength"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "uniqueKey": { "alias": "uniqueKey"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disableCopyPaste": { "alias": "disableCopyPaste"; "required": false; "isSignal": true; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; "isSignal": true; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; "isSignal": true; }; "customPlaceholderIcon": { "alias": "customPlaceholderIcon"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "searchQueryChange": "searchQueryChange"; "clear": "clear"; "itemSelected": "itemSelected"; "itemRemoved": "itemRemoved"; }, ["customItem", "customLoader"], never, false, never>;
|
|
94
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AsyncDropdownComponent, "mis-async-search-dropdown", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "httpStream": { "alias": "httpStream"; "required": true; "isSignal": true; }; "displayKey": { "alias": "displayKey"; "required": false; "isSignal": true; }; "secondaryDisplayKey": { "alias": "secondaryDisplayKey"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "minInputLength": { "alias": "minInputLength"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "uniqueKey": { "alias": "uniqueKey"; "required": false; "isSignal": true; }; "control": { "alias": "control"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disableCopyPaste": { "alias": "disableCopyPaste"; "required": false; "isSignal": true; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; "isSignal": true; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; "isSignal": true; }; "customPlaceholderIcon": { "alias": "customPlaceholderIcon"; "required": false; "isSignal": true; }; "selections": { "alias": "selections"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "searchQueryChange": "searchQueryChange"; "clear": "clear"; "itemSelected": "itemSelected"; "itemRemoved": "itemRemoved"; }, ["customItem", "customLoader"], never, false, never>;
|
|
94
95
|
}
|
|
95
96
|
export {};
|
|
@@ -12,7 +12,7 @@ export declare class TzDatepickerDirective implements OnInit {
|
|
|
12
12
|
selectedDate: import("@angular/core").InputSignal<string>;
|
|
13
13
|
datesDisabled: import("@angular/core").InputSignal<string[]>;
|
|
14
14
|
dateMessages: import("@angular/core").InputSignal<IDatePickerToastText[]>;
|
|
15
|
-
positionX: import("@angular/core").InputSignal<"
|
|
15
|
+
positionX: import("@angular/core").InputSignal<"start" | "center" | "end">;
|
|
16
16
|
positionY: import("@angular/core").InputSignal<"center" | "top" | "bottom">;
|
|
17
17
|
offsetX: import("@angular/core").InputSignal<number>;
|
|
18
18
|
offsetY: import("@angular/core").InputSignal<number>;
|
|
@@ -49,6 +49,7 @@ export declare class TzDpContainerComponent implements OnInit {
|
|
|
49
49
|
currentMonth: import("@angular/core").Signal<ICurrentMonth>;
|
|
50
50
|
currentYearNumber: import("@angular/core").Signal<number>;
|
|
51
51
|
currentMonthDates: import("@angular/core").Signal<ICurrentMonthDates[]>;
|
|
52
|
+
currentMonthWeeks: import("@angular/core").Signal<ICurrentMonthDates[][]>;
|
|
52
53
|
isPreviousMonthDisabled: import("@angular/core").Signal<boolean>;
|
|
53
54
|
isNextMonthDisabled: import("@angular/core").Signal<boolean>;
|
|
54
55
|
localSelectedDate: import("@angular/core").Signal<ICurrentMonthDates>;
|
|
@@ -31,6 +31,7 @@ export declare class DropdownComponent {
|
|
|
31
31
|
readonly searchEnabled: import("@angular/core").InputSignal<boolean>;
|
|
32
32
|
readonly selectedItem: import("@angular/core").InputSignal<DropdownItem>;
|
|
33
33
|
readonly noDataMessage: import("@angular/core").InputSignal<string>;
|
|
34
|
+
readonly noResultsText: import("@angular/core").InputSignal<string>;
|
|
34
35
|
readonly multiLine: import("@angular/core").InputSignal<boolean>;
|
|
35
36
|
readonly additionalInfoMessage: import("@angular/core").InputSignal<string>;
|
|
36
37
|
readonly scrollIntoView: import("@angular/core").InputSignal<boolean>;
|
|
@@ -65,7 +66,7 @@ export declare class DropdownComponent {
|
|
|
65
66
|
onCancel(): void;
|
|
66
67
|
closeOnEsc(event: KeyboardEvent): void;
|
|
67
68
|
static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
|
|
68
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "mis-dropdown", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "itemSizeForCdk": { "alias": "itemSizeForCdk"; "required": false; "isSignal": true; }; "showOnlyIcon": { "alias": "showOnlyIcon"; "required": false; "isSignal": true; }; "higlightSelectedValue": { "alias": "higlightSelectedValue"; "required": false; "isSignal": true; }; "dropdownListHeight": { "alias": "dropdownListHeight"; "required": false; "isSignal": true; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; "isSignal": true; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "selectedItem": { "alias": "selectedItem"; "required": false; "isSignal": true; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; "isSignal": true; }; "multiLine": { "alias": "multiLine"; "required": false; "isSignal": true; }; "additionalInfoMessage": { "alias": "additionalInfoMessage"; "required": false; "isSignal": true; }; "scrollIntoView": { "alias": "scrollIntoView"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; }, ["customItem"], never, false, never>;
|
|
69
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "mis-dropdown", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "itemSizeForCdk": { "alias": "itemSizeForCdk"; "required": false; "isSignal": true; }; "showOnlyIcon": { "alias": "showOnlyIcon"; "required": false; "isSignal": true; }; "higlightSelectedValue": { "alias": "higlightSelectedValue"; "required": false; "isSignal": true; }; "dropdownListHeight": { "alias": "dropdownListHeight"; "required": false; "isSignal": true; }; "dropdownListWidth": { "alias": "dropdownListWidth"; "required": false; "isSignal": true; }; "dropdownListPosition": { "alias": "dropdownListPosition"; "required": false; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "searchEnabled": { "alias": "searchEnabled"; "required": false; "isSignal": true; }; "selectedItem": { "alias": "selectedItem"; "required": false; "isSignal": true; }; "noDataMessage": { "alias": "noDataMessage"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "multiLine": { "alias": "multiLine"; "required": false; "isSignal": true; }; "additionalInfoMessage": { "alias": "additionalInfoMessage"; "required": false; "isSignal": true; }; "scrollIntoView": { "alias": "scrollIntoView"; "required": false; "isSignal": true; }; "searchLabel": { "alias": "searchLabel"; "required": false; "isSignal": true; }; "customStyles": { "alias": "customStyles"; "required": false; "isSignal": true; }; "activeItem": { "alias": "activeItem"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; }, ["customItem"], never, false, never>;
|
|
69
70
|
}
|
|
70
71
|
export interface DropdownItem {
|
|
71
72
|
label: any;
|
|
@@ -166,12 +166,16 @@ function AsyncDropdownComponent_ng_template_10_div_3_Template(rf, ctx) { if (rf
|
|
|
166
166
|
} }
|
|
167
167
|
function AsyncDropdownComponent_ng_template_10_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
168
168
|
i0.ɵɵelementStart(0, "div")(1, "div", 37);
|
|
169
|
-
i0.ɵɵtext(2
|
|
169
|
+
i0.ɵɵtext(2);
|
|
170
170
|
i0.ɵɵelementEnd()();
|
|
171
|
+
} if (rf & 2) {
|
|
172
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
173
|
+
i0.ɵɵadvance(2);
|
|
174
|
+
i0.ɵɵtextInterpolate(ctx_r3.noResultsText());
|
|
171
175
|
} }
|
|
172
176
|
function AsyncDropdownComponent_ng_template_10_Template(rf, ctx) { if (rf & 1) {
|
|
173
177
|
i0.ɵɵelementStart(0, "div", 21);
|
|
174
|
-
i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_10_ng_container_1_Template, 4, 2, "ng-container", 22)(2, AsyncDropdownComponent_ng_template_10_ng_container_2_Template, 6, 0, "ng-container", 22)(3, AsyncDropdownComponent_ng_template_10_div_3_Template, 2, 1, "div", 22)(4, AsyncDropdownComponent_ng_template_10_div_4_Template, 3,
|
|
178
|
+
i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_10_ng_container_1_Template, 4, 2, "ng-container", 22)(2, AsyncDropdownComponent_ng_template_10_ng_container_2_Template, 6, 0, "ng-container", 22)(3, AsyncDropdownComponent_ng_template_10_div_3_Template, 2, 1, "div", 22)(4, AsyncDropdownComponent_ng_template_10_div_4_Template, 3, 1, "div", 22);
|
|
175
179
|
i0.ɵɵelementEnd();
|
|
176
180
|
} if (rf & 2) {
|
|
177
181
|
const ctx_r3 = i0.ɵɵnextContext();
|
|
@@ -210,6 +214,7 @@ export class AsyncDropdownComponent {
|
|
|
210
214
|
this.customPlaceholderIcon = input('');
|
|
211
215
|
this.selections = input(new Map());
|
|
212
216
|
this.searchValue = input();
|
|
217
|
+
this.noResultsText = input('No Data Available');
|
|
213
218
|
// === Outputs ===
|
|
214
219
|
this.onSelect = output();
|
|
215
220
|
this.searchQueryChange = output();
|
|
@@ -513,7 +518,7 @@ export class AsyncDropdownComponent {
|
|
|
513
518
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dd = _t.first);
|
|
514
519
|
} }, hostBindings: function AsyncDropdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
515
520
|
i0.ɵɵlistener("keydown", function AsyncDropdownComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); }, false, i0.ɵɵresolveDocument);
|
|
516
|
-
} }, inputs: { height: [1, "height"], width: [1, "width"], size: [1, "size"], httpStream: [1, "httpStream"], displayKey: [1, "displayKey"], secondaryDisplayKey: [1, "secondaryDisplayKey"], placeholder: [1, "placeholder"], debounceTime: [1, "debounceTime"], minInputLength: [1, "minInputLength"], multi: [1, "multi"], uniqueKey: [1, "uniqueKey"], control: [1, "control"], disabled: [1, "disabled"], readonly: [1, "readonly"], disableCopyPaste: [1, "disableCopyPaste"], dropdownListWidth: [1, "dropdownListWidth"], dropdownListPosition: [1, "dropdownListPosition"], customPlaceholderIcon: [1, "customPlaceholderIcon"], selections: [1, "selections"], searchValue: [1, "searchValue"] }, outputs: { onSelect: "onSelect", searchQueryChange: "searchQueryChange", clear: "clear", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, features: [i0.ɵɵNgOnChangesFeature], decls: 12, vars: 18, consts: [["ddBtn", ""], ["defaultSearchIcon", ""], ["input", ""], ["dd", ""], ["defaultLoader", ""], ["standardItem", ""], [1, "dd-wrapper", 3, "ngClass"], ["class", "selected-list", 4, "ngIf"], [1, "search-input"], ["class", "custom-icon", 4, "ngIf", "ngIfElse"], ["type", "text", 1, "black-text", "h6", 3, "focus", "keyup.enter", "copy", "paste", "cut", "ngClass", "placeholder", "formControl"], ["class", "icon-ic-navigation-cancel-24 croos-icon", "tabindex", "0", 3, "click", "keyup.enter", 4, "ngIf"], [1, "selected-list"], ["class", "chip", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "chip", 3, "ngClass"], [2, "margin-right", "4px", 3, "ngClass"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", 3, "click", "keyup.enter", "ngStyle"], [1, "custom-icon"], ["alt", "customIcon", 3, "src"], [1, "icon-ic-action-search-24"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", "croos-icon", 3, "click", "keyup.enter"], ["tabindex", "0", "cdkTrapFocus", "", 1, "dd-list", 3, "ngStyle", "ngClass", "cdkTrapFocusAutoCapture"], [4, "ngIf"], [3, "ngTemplateOutlet", 4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet"], ["class", "status-container", 4, "ngIf"], [1, "status-container"], [3, "mobileView"], [4, "ngFor", "ngForOf"], [3, "click", "keyup.enter"], ["tabindex", "-1", "cdkFocusInitial", ""], [4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "click", "keyup.enter", "tabindex"], [1, "value"], [1, "primary"], [1, "secondary"], [1, "data-not-found"]], template: function AsyncDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
521
|
+
} }, inputs: { height: [1, "height"], width: [1, "width"], size: [1, "size"], httpStream: [1, "httpStream"], displayKey: [1, "displayKey"], secondaryDisplayKey: [1, "secondaryDisplayKey"], placeholder: [1, "placeholder"], debounceTime: [1, "debounceTime"], minInputLength: [1, "minInputLength"], multi: [1, "multi"], uniqueKey: [1, "uniqueKey"], control: [1, "control"], disabled: [1, "disabled"], readonly: [1, "readonly"], disableCopyPaste: [1, "disableCopyPaste"], dropdownListWidth: [1, "dropdownListWidth"], dropdownListPosition: [1, "dropdownListPosition"], customPlaceholderIcon: [1, "customPlaceholderIcon"], selections: [1, "selections"], searchValue: [1, "searchValue"], noResultsText: [1, "noResultsText"] }, outputs: { onSelect: "onSelect", searchQueryChange: "searchQueryChange", clear: "clear", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, features: [i0.ɵɵNgOnChangesFeature], decls: 12, vars: 18, consts: [["ddBtn", ""], ["defaultSearchIcon", ""], ["input", ""], ["dd", ""], ["defaultLoader", ""], ["standardItem", ""], [1, "dd-wrapper", 3, "ngClass"], ["class", "selected-list", 4, "ngIf"], [1, "search-input"], ["class", "custom-icon", 4, "ngIf", "ngIfElse"], ["type", "text", 1, "black-text", "h6", 3, "focus", "keyup.enter", "copy", "paste", "cut", "ngClass", "placeholder", "formControl"], ["class", "icon-ic-navigation-cancel-24 croos-icon", "tabindex", "0", 3, "click", "keyup.enter", 4, "ngIf"], [1, "selected-list"], ["class", "chip", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "chip", 3, "ngClass"], [2, "margin-right", "4px", 3, "ngClass"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", 3, "click", "keyup.enter", "ngStyle"], [1, "custom-icon"], ["alt", "customIcon", 3, "src"], [1, "icon-ic-action-search-24"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", "croos-icon", 3, "click", "keyup.enter"], ["tabindex", "0", "cdkTrapFocus", "", 1, "dd-list", 3, "ngStyle", "ngClass", "cdkTrapFocusAutoCapture"], [4, "ngIf"], [3, "ngTemplateOutlet", 4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet"], ["class", "status-container", 4, "ngIf"], [1, "status-container"], [3, "mobileView"], [4, "ngFor", "ngForOf"], [3, "click", "keyup.enter"], ["tabindex", "-1", "cdkFocusInitial", ""], [4, "ngIf", "ngIfElse"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "click", "keyup.enter", "tabindex"], [1, "value"], [1, "primary"], [1, "secondary"], [1, "data-not-found"]], template: function AsyncDropdownComponent_Template(rf, ctx) { if (rf & 1) {
|
|
517
522
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
518
523
|
i0.ɵɵelementStart(0, "div", 6, 0);
|
|
519
524
|
i0.ɵɵtemplate(2, AsyncDropdownComponent_div_2_Template, 2, 1, "div", 7);
|
|
@@ -542,7 +547,7 @@ export class AsyncDropdownComponent {
|
|
|
542
547
|
}
|
|
543
548
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AsyncDropdownComponent, [{
|
|
544
549
|
type: Component,
|
|
545
|
-
args: [{ selector: 'mis-async-search-dropdown', template: "<div class=\"dd-wrapper\"\n [ngClass]=\"{ opened: opened, disabled: disabled(), readonly: readonly() }\"\n [style.width]=\"width()\"\n #ddBtn>\n \n <!-- Selected chips for multi-select -->\n <div class=\"selected-list\" *ngIf=\"multi() && selectedItems.length > 0\">\n <div class=\"chip\"\n [ngClass]=\"{ 'chip-md': size() === 'md', 'chip-sm': size() === 'sm' }\"\n *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{ 'h6': size() === 'md', 'h8-b': size() === 'sm' }\"\n style=\"margin-right: 4px;\">\n {{ item[displayKey()] }}\n </span>\n <span class=\"icon-ic-navigation-cancel-24\"\n [ngStyle]=\"{ cursor: 'pointer', 'font-size': size() === 'sm' ? '12px' : '14px' }\"\n tabindex=\"0\"\n (click)=\"removeItem(item)\"\n (keyup.enter)=\"removeItem(item)\">\n </span>\n </div>\n </div>\n\n <!-- Search input -->\n <div class=\"search-input\">\n <!-- Placeholder icon -->\n <div *ngIf=\"customPlaceholderIcon(); else defaultSearchIcon\" class=\"custom-icon\">\n <img [src]=\"customPlaceholderIcon()\" alt=\"customIcon\" />\n </div>\n <ng-template #defaultSearchIcon>\n <span class=\"icon-ic-action-search-24\"></span>\n </ng-template>\n\n <!-- Input field -->\n <input [ngClass]=\"{ 'ip-md': size() === 'md', 'ip-sm': size() === 'sm' }\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"searchInput\"\n [attr.tabindex]=\"0\"\n type=\"text\"\n class=\"black-text h6\"\n #input\n (focus)=\"defaultCall()\"\n (keyup.enter)=\"enablePopUpOnTab()\"\n (copy)=\"disableCopyPaste() ? false : true\"\n (paste)=\"disableCopyPaste() ? false : true\"\n (cut)=\"disableCopyPaste() ? false : true\"/>\n\n <!-- Clear input -->\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\"\n *ngIf=\"searchInput.value?.length\"\n tabindex=\"0\"\n (click)=\"removeInputValue()\"\n (keyup.enter)=\"removeInputValue()\">\n </div>\n </div>\n</div>\n\n<!-- Dropdown template -->\n<ng-template #dd>\n <div class=\"dd-list\"\n [ngStyle]=\"{ 'max-height': height(), 'width': dropdownListWidth() }\"\n [ngClass]=\"{ 'dd-list-pd': data.length === 0 }\"\n tabindex=\"0\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"loading\">\n <ng-container *ngIf=\"customLoader; else defaultLoader\" [ngTemplateOutlet]=\"customLoader\"></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br/> Please try again later.</p>\n </div>\n </ng-container>\n\n <!-- Data list -->\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n\n <!-- Custom item -->\n <ng-container *ngIf=\"customItem; else standardItem\">\n <ng-container [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-container>\n\n <!-- Standard item -->\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"item\"\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n (click)=\"selectData(item, false)\"\n (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">{{ item[displayKey()] }}</div>\n <div class=\"secondary\">{{ item[secondaryDisplayKey()] }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- No data -->\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n", 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}.dd-wrapper{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened,.dd-wrapper:hover{background:var(--bg-tertiary, #F5F5F5)}.dd-wrapper .selected-list{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper:focus-within{border-color:var(--brand-primary, #0937B2);background:var(--bg-tertiary, #F5F5F5)}.dd-wrapper.disabled,.dd-wrapper.readonly{pointer-events:none}.search-input{position:relative;border-radius:8px}.search-input input{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:var(--text-primary, #181F33);border-radius:inherit;border:1px solid transparent;width:100%}.search-input span,.search-input .custom-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input .croos-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list{padding:8px 0;max-height:200px;background:var(--bg-primary, #FFFFFF);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list::-webkit-scrollbar-track{background:var(--bg-primary, #FFFFFF);border-radius:4px}.dd-list::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB);border-radius:4px}.dd-list::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary, #929DAB)}.dd-list .item{padding:8px 16px;cursor:pointer}.dd-list .item .disabled{color:var(--text-secondary, #6A737D)!important;pointer-events:none}.dd-list .item .value{display:flex;justify-content:space-between;align-items:center}.dd-list .item .value .primary,.dd-list .item .value .secondary{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.dd-list .item .reason{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-secondary, #6A737D)}.dd-list .item:hover:not(.disabled){background:var(--brand-primary-hover, #F0F3FA)}.dd-list .data-not-found{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd{padding:unset}.chip{display:inline-flex;align-items:center;background:var(--border-primary, #E0E0E0);overflow-wrap:anywhere;cursor:default}.chip span{color:var(--text-primary, #181F33)}.chip-md{border-radius:16px;padding:4px 12px}.chip-sm{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md{padding-top:8px;padding-bottom:8px}.ip-sm{padding-top:3px;padding-bottom:3px}.status-container{display:flex;justify-content:center;align-items:center;height:128px}.status-container p{text-align:center}::ng-deep #spinner{position:relative!important}\n"] }]
|
|
550
|
+
args: [{ selector: 'mis-async-search-dropdown', template: "<div class=\"dd-wrapper\"\n [ngClass]=\"{ opened: opened, disabled: disabled(), readonly: readonly() }\"\n [style.width]=\"width()\"\n #ddBtn>\n \n <!-- Selected chips for multi-select -->\n <div class=\"selected-list\" *ngIf=\"multi() && selectedItems.length > 0\">\n <div class=\"chip\"\n [ngClass]=\"{ 'chip-md': size() === 'md', 'chip-sm': size() === 'sm' }\"\n *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{ 'h6': size() === 'md', 'h8-b': size() === 'sm' }\"\n style=\"margin-right: 4px;\">\n {{ item[displayKey()] }}\n </span>\n <span class=\"icon-ic-navigation-cancel-24\"\n [ngStyle]=\"{ cursor: 'pointer', 'font-size': size() === 'sm' ? '12px' : '14px' }\"\n tabindex=\"0\"\n (click)=\"removeItem(item)\"\n (keyup.enter)=\"removeItem(item)\">\n </span>\n </div>\n </div>\n\n <!-- Search input -->\n <div class=\"search-input\">\n <!-- Placeholder icon -->\n <div *ngIf=\"customPlaceholderIcon(); else defaultSearchIcon\" class=\"custom-icon\">\n <img [src]=\"customPlaceholderIcon()\" alt=\"customIcon\" />\n </div>\n <ng-template #defaultSearchIcon>\n <span class=\"icon-ic-action-search-24\"></span>\n </ng-template>\n\n <!-- Input field -->\n <input [ngClass]=\"{ 'ip-md': size() === 'md', 'ip-sm': size() === 'sm' }\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"searchInput\"\n [attr.tabindex]=\"0\"\n type=\"text\"\n class=\"black-text h6\"\n #input\n (focus)=\"defaultCall()\"\n (keyup.enter)=\"enablePopUpOnTab()\"\n (copy)=\"disableCopyPaste() ? false : true\"\n (paste)=\"disableCopyPaste() ? false : true\"\n (cut)=\"disableCopyPaste() ? false : true\"/>\n\n <!-- Clear input -->\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\"\n *ngIf=\"searchInput.value?.length\"\n tabindex=\"0\"\n (click)=\"removeInputValue()\"\n (keyup.enter)=\"removeInputValue()\">\n </div>\n </div>\n</div>\n\n<!-- Dropdown template -->\n<ng-template #dd>\n <div class=\"dd-list\"\n [ngStyle]=\"{ 'max-height': height(), 'width': dropdownListWidth() }\"\n [ngClass]=\"{ 'dd-list-pd': data.length === 0 }\"\n tabindex=\"0\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"loading\">\n <ng-container *ngIf=\"customLoader; else defaultLoader\" [ngTemplateOutlet]=\"customLoader\"></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br/> Please try again later.</p>\n </div>\n </ng-container>\n\n <!-- Data list -->\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n\n <!-- Custom item -->\n <ng-container *ngIf=\"customItem; else standardItem\">\n <ng-container [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-container>\n\n <!-- Standard item -->\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"item\"\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n (click)=\"selectData(item, false)\"\n (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">{{ item[displayKey()] }}</div>\n <div class=\"secondary\">{{ item[secondaryDisplayKey()] }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- No data -->\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">{{ noResultsText() }}</div>\n </div>\n </div>\n</ng-template>\n", 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}.dd-wrapper{background:var(--bg-primary, #FFFFFF);border:1px solid var(--border-primary, #E0E0E0);box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened,.dd-wrapper:hover{background:var(--bg-tertiary, #F5F5F5)}.dd-wrapper .selected-list{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper:focus-within{border-color:var(--brand-primary, #0937B2);background:var(--bg-tertiary, #F5F5F5)}.dd-wrapper.disabled,.dd-wrapper.readonly{pointer-events:none}.search-input{position:relative;border-radius:8px}.search-input input{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:var(--text-primary, #181F33);border-radius:inherit;border:1px solid transparent;width:100%}.search-input span,.search-input .custom-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input .croos-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list{padding:8px 0;max-height:200px;background:var(--bg-primary, #FFFFFF);box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list::-webkit-scrollbar-track{background:var(--bg-primary, #FFFFFF);border-radius:4px}.dd-list::-webkit-scrollbar-thumb{background:var(--text-tertiary, #929DAB);border-radius:4px}.dd-list::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary, #929DAB)}.dd-list .item{padding:8px 16px;cursor:pointer}.dd-list .item .disabled{color:var(--text-secondary, #6A737D)!important;pointer-events:none}.dd-list .item .value{display:flex;justify-content:space-between;align-items:center}.dd-list .item .value .primary,.dd-list .item .value .secondary{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-primary, #181F33)}.dd-list .item .reason{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:var(--text-secondary, #6A737D)}.dd-list .item:hover:not(.disabled){background:var(--brand-primary-hover, #F0F3FA)}.dd-list .data-not-found{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd{padding:unset}.chip{display:inline-flex;align-items:center;background:var(--border-primary, #E0E0E0);overflow-wrap:anywhere;cursor:default}.chip span{color:var(--text-primary, #181F33)}.chip-md{border-radius:16px;padding:4px 12px}.chip-sm{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md{padding-top:8px;padding-bottom:8px}.ip-sm{padding-top:3px;padding-bottom:3px}.status-container{display:flex;justify-content:center;align-items:center;height:128px}.status-container p{text-align:center}::ng-deep #spinner{position:relative!important}\n"] }]
|
|
546
551
|
}], () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }], { origin: [{
|
|
547
552
|
type: ViewChild,
|
|
548
553
|
args: ['ddBtn', { static: false }]
|
|
@@ -563,4 +568,4 @@ export class AsyncDropdownComponent {
|
|
|
563
568
|
args: ['document:keydown', ['$event']]
|
|
564
569
|
}] }); })();
|
|
565
570
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AsyncDropdownComponent, { className: "AsyncDropdownComponent" }); })();
|
|
566
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBSVosU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsYUFBYSxFQUViLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNYOUMsQUFIRiwrQkFFd0MsZUFFTDtJQUMvQixZQUNGO0lBQUEsaUJBQU87SUFDUCxnQ0FJdUM7SUFBakMsQUFEQSxpTkFBUywwQkFBZ0IsS0FBQyxnTkFDWCwwQkFBZ0IsS0FBQztJQUV4QyxBQURFLGlCQUFPLEVBQ0g7Ozs7SUFaRCxvR0FBc0U7SUFFbkUsY0FBOEQ7SUFBOUQsb0dBQThEO0lBRWxFLGNBQ0Y7SUFERSw2REFDRjtJQUVNLGNBQWlGO0lBQWpGLCtG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WUFLakQsZUFBeUM7WUFBekMsa0VBQXlDO1lBb0I3RCxlQUErQjtZQUFBLEFBQS9CLGtEQUErQixtQ0FBc0I7WUFRcEQsZUFBa0U7WUFFbEUsQUFEQSxBQURBLCtGQUFrRSxrQ0FDckMsZ0NBQ0Y7O1lBYTVCLGVBQStCO1lBQS9CLDBGQUErQjs7O2lGRG5CNUIsc0JBQXNCO2NBTGxDLFNBQVM7MkJBQ0UsMkJBQTJCO3VFQXdDRSxNQUFNO2tCQUE1QyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRSxRQUFRO2tCQUE5QyxTQUFTO21CQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDRCxFQUFFO2tCQUFyQyxTQUFTO21CQUFDLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDZ0IsVUFBVTtrQkFBM0QsWUFBWTttQkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ00sWUFBWTtrQkFBakUsWUFBWTttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFnT3BELGFBQWE7a0JBRFosWUFBWTttQkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7a0ZBdlFqQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBpbnB1dCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxudHlwZSBJTGlzdERhdGEgPSBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21pcy1hc3luYy1zZWFyY2gtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBBc3luY0Ryb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHt9XG5cbiAgLy8gPT09IElucHV0cyA9PT1cbiAgaGVpZ2h0ID0gaW5wdXQ8c3RyaW5nPigpO1xuICB3aWR0aCA9IGlucHV0PHN0cmluZz4oKTtcbiAgc2l6ZSA9IGlucHV0PCdtZCcgfCAnc20nPignbWQnKTtcbiAgaHR0cFN0cmVhbSA9IGlucHV0LnJlcXVpcmVkPChzZWFyY2hLZXk6IHN0cmluZykgPT4gYW55PigpO1xuICBkaXNwbGF5S2V5ID0gaW5wdXQ8YW55PigpO1xuICBzZWNvbmRhcnlEaXNwbGF5S2V5ID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHBsYWNlaG9sZGVyID0gaW5wdXQoJ1NlbGVjdCcpO1xuICBkZWJvdW5jZVRpbWUgPSBpbnB1dCg0MDApO1xuICBtaW5JbnB1dExlbmd0aCA9IGlucHV0KDIpO1xuICBtdWx0aSA9IGlucHV0KGZhbHNlKTtcbiAgdW5pcXVlS2V5ID0gaW5wdXQ8c3RyaW5nPigpO1xuICBjb250cm9sID0gaW5wdXQ8QWJzdHJhY3RDb250cm9sIHwgbnVsbD4obnVsbCk7XG4gIGRpc2FibGVkID0gaW5wdXQoZmFsc2UpO1xuICByZWFkb25seSA9IGlucHV0KGZhbHNlKTtcbiAgZGlzYWJsZUNvcHlQYXN0ZSA9IGlucHV0KGZhbHNlKTtcbiAgZHJvcGRvd25MaXN0V2lkdGggPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGRyb3Bkb3duTGlzdFBvc2l0aW9uID0gaW5wdXQ8J0xlZnQnIHwgJ1JpZ2h0Jz4oJ0xlZnQnKTtcbiAgY3VzdG9tUGxhY2Vob2xkZXJJY29uID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHNlbGVjdGlvbnMgPSBpbnB1dDxNYXA8c3RyaW5nLCBhbnk+PihuZXcgTWFwKCkpO1xuICBzZWFyY2hWYWx1ZSA9IGlucHV0PGFueT4oKTtcblxuICAvLyA9PT0gT3V0cHV0cyA9PT1cbiAgb25TZWxlY3QgPSBvdXRwdXQ8SUxpc3REYXRhIHwgSUxpc3REYXRhW10+KCk7XG4gIHNlYXJjaFF1ZXJ5Q2hhbmdlID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgY2xlYXIgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgaXRlbVNlbGVjdGVkID0gb3V0cHV0PElMaXN0RGF0YT4oKTtcbiAgaXRlbVJlbW92ZWQgPSBvdXRwdXQ8SUxpc3REYXRhPigpO1xuXG4gIC8vID09PSBUZW1wbGF0ZSBSZWZzID09PVxuICBAVmlld0NoaWxkKCdkZEJ0bicsIHsgc3RhdGljOiBmYWxzZSB9KSBvcmlnaW4hOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdpbnB1dCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dFJlZiE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2RkJywgeyBzdGF0aWM6IGZhbHNlIH0pIGRkITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoJ21pc0N1c3RvbUl0ZW0nLCB7IHN0YXRpYzogZmFsc2UgfSkgY3VzdG9tSXRlbSE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKCdhc3luY0N1c3RvbUxvYWRlcicsIHsgc3RhdGljOiBmYWxzZSB9KSBjdXN0b21Mb2FkZXIhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICAvLyA9PT0gSW50ZXJuYWwgc3RhdGUgPT09XG4gIHNlYXJjaElucHV0OiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKCk7XG4gIHByaXZhdGUgaHR0cFN0cmVhbVRyaWdnZXIgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgc2VhcmNoU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGNvbnRyb2xTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG5cbiAgLy8gPT09IENvbXBvbmVudCBzdGF0ZSA9PT1cbiAgb3BlbmVkID0gZmFsc2U7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgZXJyb3IgPSBmYWxzZTtcbiAgb3BlblBvcFVwT25UYWIgPSBmYWxzZTtcbiAgZGF0YTogSUxpc3REYXRhW10gPSBbXTtcbiAgcHJpdmF0ZSBsYXN0U2VsZWN0ZWRWYWx1ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gPT09IExpZmVjeWNsZSA9PT1cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMubXVsdGkoKSAmJiAhdGhpcy51bmlxdWVLZXkoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdbdW5pcXVlS2V5XSByZXF1aXJlZCBpbiBtdWx0aSBtb2RlLicpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlYXJjaCBvYnNlcnZhYmxlIHBpcGVsaW5lIHdpdGggUnhKUyBvcGVyYXRvcnMgdG8gZmlsdGVyIGF0IHRoZSBzb3VyY2UuXG4gICAgICogVGhpcyBkZWNsYXJhdGl2ZSBhcHByb2FjaCBwcmV2ZW50cyB1bndhbnRlZCBzZWFyY2hlcyBieSBmaWx0ZXJpbmc6XG4gICAgICogMS4gRW1wdHkgcXVlcmllcyBvciBxdWVyaWVzIGJlbG93IG1pbklucHV0TGVuZ3RoXG4gICAgICogMi4gUXVlcmllcyB0aGF0IG1hdGNoIHRoZSBsYXN0IHNlbGVjdGVkIHZhbHVlIChwcmV2ZW50cyByZW9wZW5pbmcgYWZ0ZXIgc2VsZWN0aW9uKVxuICAgICAqIFxuICAgICAqIEZpbHRlcmluZyBhdCB0aGUgc291cmNlIGlzIHByZWZlcnJlZCBvdmVyIGNoZWNraW5nIGZsYWdzIGluIHN1YnNjcmliZSgpXG4gICAgICogYmVjYXVzZSBpdCdzIG1vcmUgZGVjbGFyYXRpdmUsIHRlc3RhYmxlLCBhbmQgZm9sbG93cyBSeEpTIGJlc3QgcHJhY3RpY2VzLlxuICAgICAqL1xuICAgIGNvbnN0IHNlYXJjaE9ic2VydmFibGUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFwKCh2YWwpID0+IHRoaXMuc2VhcmNoUXVlcnlDaGFuZ2UuZW1pdCh2YWwpKSxcbiAgICAgIGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlVGltZSgpKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAvLyBGaWx0ZXI6IE9ubHkgcHJvY2VzcyBub24tZW1wdHkgcXVlcmllcyB0aGF0IG1lZXQgbWluSW5wdXRMZW5ndGggcmVxdWlyZW1lbnRcbiAgICAgIGZpbHRlcigocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBxID0gcXVlcnk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgaWYgKCFxIHx8IHEubGVuZ3RoIDwgdGhpcy5taW5JbnB1dExlbmd0aCgpKSB7XG4gICAgICAgICAgLy8gQ2xvc2UgZHJvcGRvd24gaWYgcXVlcnkgaXMgdG9vIHNob3J0XG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSksXG4gICAgICAvLyBGaWx0ZXI6IElnbm9yZSBxdWVyaWVzIHRoYXQgbWF0Y2ggdGhlIGxhc3Qgc2VsZWN0ZWQgdmFsdWVcbiAgICAgIC8vIFRoaXMgcHJldmVudHMgZHJvcGRvd24gZnJvbSByZW9wZW5pbmcgd2hlbiBpbnB1dCBzaG93cyBzZWxlY3RlZCB2YWx1ZVxuICAgICAgZmlsdGVyKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHEgPSBxdWVyeT8udHJpbSgpID8/ICcnO1xuICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWQgPSB0aGlzLmxhc3RTZWxlY3RlZFZhbHVlO1xuICAgICAgICAvLyBBbGxvdyBzZWFyY2ggaWYgbm8gcHJldmlvdXMgc2VsZWN0aW9uIE9SIHF1ZXJ5IGlzIGRpZmZlcmVudCBmcm9tIHNlbGVjdGVkIHZhbHVlXG4gICAgICAgIHJldHVybiAhbGFzdFNlbGVjdGVkIHx8IHEgIT09IGxhc3RTZWxlY3RlZDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIFN1YnNjcmliZSB0byBzZWFyY2ggcXVlcmllcyBhbmQgdHJpZ2dlciBIVFRQIHN0cmVhbS5cbiAgICAgKiBBbGwgZmlsdGVyaW5nIGlzIGRvbmUgaW4gdGhlIHBpcGUgY2hhaW4gYWJvdmUsIHNvIHRoaXMgY2FsbGJhY2tcbiAgICAgKiBvbmx5IGhhbmRsZXMgdGhlIGFjdHVhbCBzZWFyY2ggZXhlY3V0aW9uLlxuICAgICAqL1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uID0gbWVyZ2Uoc2VhcmNoT2JzZXJ2YWJsZSwgdGhpcy5odHRwU3RyZWFtVHJpZ2dlcilcbiAgICAgIC5waXBlKFxuICAgICAgICAvLyBBZGRpdGlvbmFsIGZpbHRlciBmb3IgaHR0cFN0cmVhbVRyaWdnZXIgKG1hbnVhbCByZWZyZXNoKVxuICAgICAgICBmaWx0ZXIoKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCBxID0gcXVlcnk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgICAvLyBGb3IgbWFudWFsIHRyaWdnZXJzLCBzdGlsbCByZXNwZWN0IG1pbklucHV0TGVuZ3RoIGFuZCBsYXN0U2VsZWN0ZWRWYWx1ZVxuICAgICAgICAgIGlmICghcSB8fCBxLmxlbmd0aCA8IHRoaXMubWluSW5wdXRMZW5ndGgoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWQgPSB0aGlzLmxhc3RTZWxlY3RlZFZhbHVlO1xuICAgICAgICAgIHJldHVybiAhbGFzdFNlbGVjdGVkIHx8IHEgIT09IGxhc3RTZWxlY3RlZDtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcSA9IHF1ZXJ5Py50cmltKCkgPz8gJyc7XG4gICAgICAgIFxuICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmVycm9yID0gZmFsc2U7XG5cbiAgICAgICAgLy8gT3BlbiBvdmVybGF5IGlmIG5vdCB5ZXQgb3BlblxuICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSkge1xuICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsbCBIVFRQIHN0cmVhbVxuICAgICAgICB0aGlzLmh0dHBTdHJlYW0oKShxKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChsaXN0OiBJTGlzdERhdGFbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLmNvbnRyb2woKT8udmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ29udHJvbENoYW5nZXModGhpcy5jb250cm9sKCkhLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2woKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShcbiAgICAgIHRoaXMuaGFuZGxlQ29udHJvbENoYW5nZXNcbiAgICApO1xuXG4gICAgLy8gSGFuZGxlIHNlYXJjaFZhbHVlIGlucHV0IGNoYW5nZXNcbiAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUodGhpcy5zZWFyY2hWYWx1ZSgpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gSGFuZGxlIHNlYXJjaFZhbHVlIGNoYW5nZXNcbiAgICBpZiAodGhpcy5zZWFyY2hWYWx1ZSgpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZSh0aGlzLnNlYXJjaFZhbHVlKCksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZGlzYWJsZWQgY2hhbmdlc1xuICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc2VhcmNoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY29udHJvbFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XG4gIH1cblxuICAvLyA9PT0gTWV0aG9kcyA9PT1cbiAgcmVmcmVzaEh0dHBTdHJlYW0ocXVlcnk6IHN0cmluZykge1xuICAgIHRoaXMuaHR0cFN0cmVhbVRyaWdnZXIubmV4dChxdWVyeSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNvbnRyb2xDaGFuZ2VzID0gKHZhbHVlczogSUxpc3REYXRhW10pID0+IHtcbiAgICB2YWx1ZXMuZm9yRWFjaCgoZWwpID0+IHRoaXMuc2VsZWN0RGF0YShlbCwgdHJ1ZSkpO1xuICB9O1xuXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxFbGVtZW50Piwgb3JpZ2luOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHBvc2l0aW9uc0JvdHRvbSA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAndG9wJyB9LFxuICAgICAgICAwLFxuICAgICAgICA0XG4gICAgICApLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICAgIHsgb3JpZ2luWDogJ2VuZCcsIG9yaWdpblk6ICdib3R0b20nIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdlbmQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCxcbiAgICAgICAgNFxuICAgICAgKSxcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uc1RvcCA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdzdGFydCcsIG9yaWdpblk6ICd0b3AnIH0sXG4gICAgICAgIHsgb3ZlcmxheVg6ICdzdGFydCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICdib3R0b20nIH0sXG4gICAgICAgIDAsXG4gICAgICAgIC00XG4gICAgICApLFxuICAgIF07XG5cbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8ob3JpZ2luKVxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zQm90dG9tLnJldmVyc2UoKSA6IHBvc2l0aW9uc0JvdHRvbSksXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uKCkgPT09ICdSaWdodCcgPyBwb3NpdGlvbnNUb3AucmV2ZXJzZSgpIDogcG9zaXRpb25zVG9wKSxcbiAgICAgIF0pXG4gICAgICAud2l0aFB1c2godHJ1ZSk7XG5cbiAgICBjb25zdCBjb25maWdzID0gbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogb3JpZ2luLmNsaWVudFdpZHRoLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpKSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IHdpZHRoOiB0aGlzLmRyb3Bkb3duTGlzdFdpZHRoKCkgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChuZXcgVGVtcGxhdGVQb3J0YWwodGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZikpO1xuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xvc2VEcm9wZG93bigpKTtcbiAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gIH1cblxuICBjbG9zZURyb3Bkb3duKCkge1xuICAgIHRoaXMub3BlbmVkID0gZmFsc2U7XG4gICAgdGhpcy5vcGVuUG9wVXBPblRhYiA9IGZhbHNlO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGV0YWNoKCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gIH1cblxuICBlbmFibGVQb3BVcE9uVGFiKCkge1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIgPSB0cnVlO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBmaXJzdEl0ZW0gPSB0aGlzLm92ZXJsYXlSZWY/Lm92ZXJsYXlFbGVtZW50XG4gICAgICAgID8ucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy5pdGVtW3RhYmluZGV4PVwiMFwiXScpO1xuICAgICAgZmlyc3RJdGVtPy5mb2N1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpO1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgaXRlbSBzZWxlY3Rpb24gZnJvbSBkcm9wZG93bi5cbiAgICogXG4gICAqIEZvciBzaW5nbGUtc2VsZWN0IG1vZGU6XG4gICAqIC0gU2V0cyBpbnB1dCB2YWx1ZSB0byBkaXNwbGF5IHNlbGVjdGVkIGl0ZW0gKHN0YW5kYXJkIFVYIHBhdHRlcm4pXG4gICAqIC0gU3RvcmVzIHNlbGVjdGVkIHZhbHVlIHRvIHByZXZlbnQgcmVvcGVuaW5nIGRyb3Bkb3duIG9uIGZvY3VzL2NoYW5nZSBkZXRlY3Rpb25cbiAgICogLSBCbHVycyBpbnB1dCB0byBwcmV2ZW50IGltbWVkaWF0ZSBmb2N1cy10cmlnZ2VyZWQgc2VhcmNoZXNcbiAgICogXG4gICAqIEZvciBtdWx0aS1zZWxlY3QgbW9kZTpcbiAgICogLSBDbGVhcnMgaW5wdXQgZm9yIG5leHQgc2VsZWN0aW9uXG4gICAqIC0gTWFpbnRhaW5zIGZvY3VzIGZvciBjb250aW51b3VzIHNlbGVjdGlvblxuICAgKi9cbiAgc2VsZWN0RGF0YShpdGVtOiBJTGlzdERhdGEsIGVmZmVjdGVkRnJvbU91dHNpZGUgPSB0cnVlKSB7XG4gICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHJldHVybjtcblxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaXRlbSk7XG5cbiAgICBpZiAoIXRoaXMubXVsdGkoKSkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGl0ZW1bdGhpcy5kaXNwbGF5S2V5KCldO1xuICAgICAgLy8gU2V0IGlucHV0IHZhbHVlIHRvIHNob3cgc2VsZWN0ZWQgaXRlbSAoc3RhbmRhcmQgVVggLSBsaWtlIEFuZ3VsYXIgTWF0ZXJpYWwsIGV0Yy4pXG4gICAgICAvLyBVc2UgZW1pdEV2ZW50OiBmYWxzZSB0byBwcmV2ZW50IHRyaWdnZXJpbmcgdmFsdWVDaGFuZ2VzIHN1YnNjcmlwdGlvblxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKHNlbGVjdGVkVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIFxuICAgICAgLy8gU3RvcmUgc2VsZWN0ZWQgdmFsdWUgLSBSeEpTIGZpbHRlciB3aWxsIHByZXZlbnQgcmVvcGVuaW5nIHdpdGggc2FtZSB2YWx1ZVxuICAgICAgdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkVmFsdWU7XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShpdGVtKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbnMoKS5oYXMoaXRlbVt0aGlzLnVuaXF1ZUtleSgpIV0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9ucygpLnNldChpdGVtW3RoaXMudW5pcXVlS2V5KCkhXSwgaXRlbSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgICAgaWYgKCFlZmZlY3RlZEZyb21PdXRzaWRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldygpO1xuICAgICAgICB9LCAxMCk7XG4gICAgICB9XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUoJycpO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG5cbiAgICAvLyBCbHVyIGlucHV0IHRvIHByZXZlbnQgZm9jdXMgZXZlbnRzIGZyb20gaW1tZWRpYXRlbHkgdHJpZ2dlcmluZyBzZWFyY2hcbiAgICAvLyBUaGUgbGFzdFNlbGVjdGVkVmFsdWUgZmlsdGVyIHdpbGwgYWxzbyBwcmV2ZW50IHJlb3BlbmluZyBpZiBmb2N1cyBvY2N1cnNcbiAgICBpZiAodGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVJdGVtKGl0ZW06IElMaXN0RGF0YSkge1xuICAgIHRoaXMuaXRlbVJlbW92ZWQuZW1pdChpdGVtKTtcbiAgICB0aGlzLnNlbGVjdGlvbnMoKS5kZWxldGUoaXRlbVt0aGlzLnVuaXF1ZUtleSgpIV0pO1xuICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgdGhpcy5pbnB1dFJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZSh2YWx1ZTogSUxpc3REYXRhIHwgSUxpc3REYXRhW10pIHtcbiAgICB0aGlzLm9uU2VsZWN0LmVtaXQodmFsdWUpO1xuICAgIHRoaXMuY29udHJvbCgpPy5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRJdGVtcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbnMoKS52YWx1ZXMoKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBpbnB1dCBhbmQgcmVzZXRzIHNlbGVjdGlvbiBzdGF0ZS5cbiAgICogQ2xlYXJpbmcgbGFzdFNlbGVjdGVkVmFsdWUgYWxsb3dzIG5ldyBzZWFyY2hlcyB0byBwcm9jZWVkIG5vcm1hbGx5LlxuICAgKi9cbiAgcmVtb3ZlSW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnJlc2V0KCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZSA9IG51bGw7XG4gICAgdGhpcy5jbGVhci5lbWl0KHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGlucHV0IHJlY2VpdmVzIGZvY3VzLlxuICAgKiBPbmx5IG9wZW5zIGRyb3Bkb3duIGlmOlxuICAgKiAxLiBtaW5JbnB1dExlbmd0aCBhbGxvd3MgaXQgKC0xIG9yIDAgbWVhbnMgb3BlbiBvbiBmb2N1cylcbiAgICogMi4gSW5wdXQgdmFsdWUgZG9lc24ndCBtYXRjaCBsYXN0IHNlbGVjdGVkIHZhbHVlIChwcmV2ZW50cyByZW9wZW5pbmcgYWZ0ZXIgc2VsZWN0aW9uKVxuICAgKiBcbiAgICogVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIGlucHV0IHJlZ2FpbnMgZm9jdXMgYWZ0ZXIgc2VsZWN0aW9uLlxuICAgKiBUaGUgUnhKUyBmaWx0ZXIgaW4gc2VhcmNoT2JzZXJ2YWJsZSBoYW5kbGVzIHZhbHVlQ2hhbmdlcywgYnV0IGZvY3VzIGV2ZW50c1xuICAgKiBuZWVkIHNlcGFyYXRlIGhhbmRsaW5nIHNpbmNlIHRoZXkgYnlwYXNzIHZhbHVlQ2hhbmdlcy5cbiAgICovXG4gIGRlZmF1bHRDYWxsKCkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQudmFsdWU/LnRyaW0oKSB8fCAnJztcbiAgICBjb25zdCBsYXN0U2VsZWN0ZWQgPSB0aGlzLmxhc3RTZWxlY3RlZFZhbHVlO1xuICAgIFxuICAgIC8vIERvbid0IG9wZW4gaWYgdmFsdWUgbWF0Y2hlcyBsYXN0IHNlbGVjdGVkICh1c2VyIGhhc24ndCB0eXBlZCBuZXcgcXVlcnkpXG4gICAgaWYgKGxhc3RTZWxlY3RlZCAmJiBjdXJyZW50VmFsdWUgPT09IGxhc3RTZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICAvLyBPbmx5IG9wZW4gb24gZm9jdXMgaWYgbWluSW5wdXRMZW5ndGggYWxsb3dzIGl0XG4gICAgaWYgKHRoaXMubWluSW5wdXRMZW5ndGgoKSA9PT0gLTEpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmh0dHBTdHJlYW0oKSh0aGlzLnNlYXJjaElucHV0LnZhbHVlIHx8ICcnKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAobGlzdDogSUxpc3REYXRhW10pID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpICYmIGxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59IiwiPGRpdiBjbGFzcz1cImRkLXdyYXBwZXJcIlxuICAgICBbbmdDbGFzc109XCJ7IG9wZW5lZDogb3BlbmVkLCBkaXNhYmxlZDogZGlzYWJsZWQoKSwgcmVhZG9ubHk6IHJlYWRvbmx5KCkgfVwiXG4gICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aCgpXCJcbiAgICAgI2RkQnRuPlxuICBcbiAgPCEtLSBTZWxlY3RlZCBjaGlwcyBmb3IgbXVsdGktc2VsZWN0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbGlzdFwiICpuZ0lmPVwibXVsdGkoKSAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hpcFwiXG4gICAgICAgICBbbmdDbGFzc109XCJ7ICdjaGlwLW1kJzogc2l6ZSgpID09PSAnbWQnLCAnY2hpcC1zbSc6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cbiAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cInsgJ2g2Jzogc2l6ZSgpID09PSAnbWQnLCAnaDgtYic6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA0cHg7XCI+XG4gICAgICAgIHt7IGl0ZW1bZGlzcGxheUtleSgpXSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgY3Vyc29yOiAncG9pbnRlcicsICdmb250LXNpemUnOiBzaXplKCkgPT09ICdzbScgPyAnMTJweCcgOiAnMTRweCcgfVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oaXRlbSlcIlxuICAgICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlbW92ZUl0ZW0oaXRlbSlcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBTZWFyY2ggaW5wdXQgLS0+XG4gIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICA8IS0tIFBsYWNlaG9sZGVyIGljb24gLS0+XG4gICAgPGRpdiAqbmdJZj1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpOyBlbHNlIGRlZmF1bHRTZWFyY2hJY29uXCIgY2xhc3M9XCJjdXN0b20taWNvblwiPlxuICAgICAgPGltZyBbc3JjXT1cImN1c3RvbVBsYWNlaG9sZGVySWNvbigpXCIgYWx0PVwiY3VzdG9tSWNvblwiIC8+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2VhcmNoSWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1hY3Rpb24tc2VhcmNoLTI0XCI+PC9zcGFuPlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8IS0tIElucHV0IGZpZWxkIC0tPlxuICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7ICdpcC1tZCc6IHNpemUoKSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSgpID09PSAnc20nIH1cIlxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXG4gICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiXG4gICAgICAgICAgIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiXG4gICAgICAgICAgICNpbnB1dFxuICAgICAgICAgICAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiXG4gICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIlxuICAgICAgICAgICAoY29weSk9XCJkaXNhYmxlQ29weVBhc3RlKCkgPyBmYWxzZSA6IHRydWVcIlxuICAgICAgICAgICAocGFzdGUpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgKGN1dCk9XCJkaXNhYmxlQ29weVBhc3RlKCkgPyBmYWxzZSA6IHRydWVcIi8+XG5cbiAgICA8IS0tIENsZWFyIGlucHV0IC0tPlxuICAgIDxkaXYgY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0IGNyb29zLWljb25cIlxuICAgICAgICAgKm5nSWY9XCJzZWFyY2hJbnB1dC52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCJcbiAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJbnB1dFZhbHVlKClcIj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBEcm9wZG93biB0ZW1wbGF0ZSAtLT5cbjxuZy10ZW1wbGF0ZSAjZGQ+XG4gIDxkaXYgY2xhc3M9XCJkZC1saXN0XCJcbiAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXgtaGVpZ2h0JzogaGVpZ2h0KCksICd3aWR0aCc6IGRyb3Bkb3duTGlzdFdpZHRoKCkgfVwiXG4gICAgICAgW25nQ2xhc3NdPVwieyAnZGQtbGlzdC1wZCc6IGRhdGEubGVuZ3RoID09PSAwIH1cIlxuICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cIm9wZW5Qb3BVcE9uVGFiXCI+XG5cbiAgICA8IS0tIExvYWRlciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxvYWRlcjsgZWxzZSBkZWZhdWx0TG9hZGVyXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tTG9hZGVyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nICYmICFjdXN0b21Mb2FkZXJcIj5cbiAgICAgICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIEVycm9yIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1jb250YWluZXJcIj5cbiAgICAgICAgPHA+VW5rbm93biBlcnJvciBoYXMgb2NjdXJyZWQsIDxici8+IFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIERhdGEgbGlzdCAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWVycm9yICYmIGRhdGEubGVuZ3RoID4gMFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXCI+XG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCIgKGtleXVwLmVudGVyKT1cInNlbGVjdERhdGEoaXRlbSwgZmFsc2UpXCI+XG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuXG4gICAgICAgICAgPCEtLSBDdXN0b20gaXRlbSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tSXRlbTsgZWxzZSBzdGFuZGFyZEl0ZW1cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIFN0YW5kYXJkIGl0ZW0gLS0+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNzdGFuZGFyZEl0ZW0+XG4gICAgICAgICAgICA8ZGl2IHRhYmluZGV4PVwiLTFcIiBjZGtGb2N1c0luaXRpYWw+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiXG4gICAgICAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPnt7IGl0ZW1bZGlzcGxheUtleSgpXSB9fTwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj57eyBpdGVtW3NlY29uZGFyeURpc3BsYXlLZXkoKV0gfX08L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBObyBkYXRhIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPT09IDAgJiYgc2VhcmNoSW5wdXQudmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLW5vdC1mb3VuZFwiPk5vIERhdGEgQXZhaWxhYmxlPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
571
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFFWixZQUFZLEVBSVosU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBRUwsYUFBYSxFQUViLHNCQUFzQixHQUN2QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNYOUMsQUFIRiwrQkFFd0MsZUFFTDtJQUMvQixZQUNGO0lBQUEsaUJBQU87SUFDUCxnQ0FJdUM7SUFBakMsQUFEQSxpTkFBUywwQkFBZ0IsS0FBQyxnTkFDWCwwQkFBZ0IsS0FBQztJQUV4QyxBQURFLGlCQUFPLEVBQ0g7Ozs7SUFaRCxvR0FBc0U7SUFFbkUsY0FBOEQ7SUFBOUQsb0dBQThEO0lBRWxFLGNBQ0Y7SUFERSw2REFDRjtJQUVNLGNBQWlGO0lBQWpGLCtG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RCx3RUFJd0M7WUFHNUMsQUFERSxpQkFBTSxFQUNGO1lBR04sMkhBQWlCOzs7WUF4RFosb0NBQXVCO1lBRHZCLGlHQUEwRTtZQUtqRCxlQUF5QztZQUF6QyxrRUFBeUM7WUFvQjdELGVBQStCO1lBQUEsQUFBL0Isa0RBQStCLG1DQUFzQjtZQVFwRCxlQUFrRTtZQUVsRSxBQURBLEFBREEsK0ZBQWtFLGtDQUNyQyxnQ0FDRjs7WUFhNUIsZUFBK0I7WUFBL0IsMEZBQStCOzs7aUZEbkI1QixzQkFBc0I7Y0FMbEMsU0FBUzsyQkFDRSwyQkFBMkI7dUVBd0NFLE1BQU07a0JBQTVDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNFLFFBQVE7a0JBQTlDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNELEVBQUU7a0JBQXJDLFNBQVM7bUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNnQixVQUFVO2tCQUEzRCxZQUFZO21CQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDTSxZQUFZO2tCQUFqRSxZQUFZO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQWdPcEQsYUFBYTtrQkFEWixZQUFZO21CQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztrRkF2UWpDLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgQ29ubmVjdGlvblBvc2l0aW9uUGFpcixcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IGlucHV0LCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRhcCwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG50eXBlIElMaXN0RGF0YSA9IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWlzLWFzeW5jLXNlYXJjaC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEFzeW5jRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICkge31cblxuICAvLyA9PT0gSW5wdXRzID09PVxuICBoZWlnaHQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHdpZHRoID0gaW5wdXQ8c3RyaW5nPigpO1xuICBzaXplID0gaW5wdXQ8J21kJyB8ICdzbSc+KCdtZCcpO1xuICBodHRwU3RyZWFtID0gaW5wdXQucmVxdWlyZWQ8KHNlYXJjaEtleTogc3RyaW5nKSA9PiBhbnk+KCk7XG4gIGRpc3BsYXlLZXkgPSBpbnB1dDxhbnk+KCk7XG4gIHNlY29uZGFyeURpc3BsYXlLZXkgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcGxhY2Vob2xkZXIgPSBpbnB1dCgnU2VsZWN0Jyk7XG4gIGRlYm91bmNlVGltZSA9IGlucHV0KDQwMCk7XG4gIG1pbklucHV0TGVuZ3RoID0gaW5wdXQoMik7XG4gIG11bHRpID0gaW5wdXQoZmFsc2UpO1xuICB1bmlxdWVLZXkgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIGNvbnRyb2wgPSBpbnB1dDxBYnN0cmFjdENvbnRyb2wgfCBudWxsPihudWxsKTtcbiAgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XG4gIHJlYWRvbmx5ID0gaW5wdXQoZmFsc2UpO1xuICBkaXNhYmxlQ29weVBhc3RlID0gaW5wdXQoZmFsc2UpO1xuICBkcm9wZG93bkxpc3RXaWR0aCA9IGlucHV0PHN0cmluZz4oKTtcbiAgZHJvcGRvd25MaXN0UG9zaXRpb24gPSBpbnB1dDwnTGVmdCcgfCAnUmlnaHQnPignTGVmdCcpO1xuICBjdXN0b21QbGFjZWhvbGRlckljb24gPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgc2VsZWN0aW9ucyA9IGlucHV0PE1hcDxzdHJpbmcsIGFueT4+KG5ldyBNYXAoKSk7XG4gIHNlYXJjaFZhbHVlID0gaW5wdXQ8YW55PigpO1xuICBub1Jlc3VsdHNUZXh0ID0gaW5wdXQ8c3RyaW5nPignTm8gRGF0YSBBdmFpbGFibGUnKTtcbiAgLy8gPT09IE91dHB1dHMgPT09XG4gIG9uU2VsZWN0ID0gb3V0cHV0PElMaXN0RGF0YSB8IElMaXN0RGF0YVtdPigpO1xuICBzZWFyY2hRdWVyeUNoYW5nZSA9IG91dHB1dDxzdHJpbmc+KCk7XG4gIGNsZWFyID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIGl0ZW1TZWxlY3RlZCA9IG91dHB1dDxJTGlzdERhdGE+KCk7XG4gIGl0ZW1SZW1vdmVkID0gb3V0cHV0PElMaXN0RGF0YT4oKTtcblxuICAvLyA9PT0gVGVtcGxhdGUgUmVmcyA9PT1cbiAgQFZpZXdDaGlsZCgnZGRCdG4nLCB7IHN0YXRpYzogZmFsc2UgfSkgb3JpZ2luITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW5wdXRSZWYhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkZCcsIHsgc3RhdGljOiBmYWxzZSB9KSBkZCE6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuICBAQ29udGVudENoaWxkKCdtaXNDdXN0b21JdGVtJywgeyBzdGF0aWM6IGZhbHNlIH0pIGN1c3RvbUl0ZW0hOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZCgnYXN5bmNDdXN0b21Mb2FkZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgY3VzdG9tTG9hZGVyITogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgLy8gPT09IEludGVybmFsIHN0YXRlID09PVxuICBzZWFyY2hJbnB1dDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBwcml2YXRlIGh0dHBTdHJlYW1UcmlnZ2VyID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIG92ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIHNlYXJjaFN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBjb250cm9sU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8vID09PSBDb21wb25lbnQgc3RhdGUgPT09XG4gIG9wZW5lZCA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGVycm9yID0gZmFsc2U7XG4gIG9wZW5Qb3BVcE9uVGFiID0gZmFsc2U7XG4gIGRhdGE6IElMaXN0RGF0YVtdID0gW107XG4gIHByaXZhdGUgbGFzdFNlbGVjdGVkVmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8vID09PSBMaWZlY3ljbGUgPT09XG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLm11bHRpKCkgJiYgIXRoaXMudW5pcXVlS2V5KCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignW3VuaXF1ZUtleV0gcmVxdWlyZWQgaW4gbXVsdGkgbW9kZS4nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWFyY2ggb2JzZXJ2YWJsZSBwaXBlbGluZSB3aXRoIFJ4SlMgb3BlcmF0b3JzIHRvIGZpbHRlciBhdCB0aGUgc291cmNlLlxuICAgICAqIFRoaXMgZGVjbGFyYXRpdmUgYXBwcm9hY2ggcHJldmVudHMgdW53YW50ZWQgc2VhcmNoZXMgYnkgZmlsdGVyaW5nOlxuICAgICAqIDEuIEVtcHR5IHF1ZXJpZXMgb3IgcXVlcmllcyBiZWxvdyBtaW5JbnB1dExlbmd0aFxuICAgICAqIDIuIFF1ZXJpZXMgdGhhdCBtYXRjaCB0aGUgbGFzdCBzZWxlY3RlZCB2YWx1ZSAocHJldmVudHMgcmVvcGVuaW5nIGFmdGVyIHNlbGVjdGlvbilcbiAgICAgKiBcbiAgICAgKiBGaWx0ZXJpbmcgYXQgdGhlIHNvdXJjZSBpcyBwcmVmZXJyZWQgb3ZlciBjaGVja2luZyBmbGFncyBpbiBzdWJzY3JpYmUoKVxuICAgICAqIGJlY2F1c2UgaXQncyBtb3JlIGRlY2xhcmF0aXZlLCB0ZXN0YWJsZSwgYW5kIGZvbGxvd3MgUnhKUyBiZXN0IHByYWN0aWNlcy5cbiAgICAgKi9cbiAgICBjb25zdCBzZWFyY2hPYnNlcnZhYmxlID0gdGhpcy5zZWFyY2hJbnB1dC52YWx1ZUNoYW5nZXMucGlwZShcbiAgICAgIHRhcCgodmFsKSA9PiB0aGlzLnNlYXJjaFF1ZXJ5Q2hhbmdlLmVtaXQodmFsKSksXG4gICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUoKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgLy8gRmlsdGVyOiBPbmx5IHByb2Nlc3Mgbm9uLWVtcHR5IHF1ZXJpZXMgdGhhdCBtZWV0IG1pbklucHV0TGVuZ3RoIHJlcXVpcmVtZW50XG4gICAgICBmaWx0ZXIoKHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgcSA9IHF1ZXJ5Py50cmltKCkgPz8gJyc7XG4gICAgICAgIGlmICghcSB8fCBxLmxlbmd0aCA8IHRoaXMubWluSW5wdXRMZW5ndGgoKSkge1xuICAgICAgICAgIC8vIENsb3NlIGRyb3Bkb3duIGlmIHF1ZXJ5IGlzIHRvbyBzaG9ydFxuICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgLy8gRmlsdGVyOiBJZ25vcmUgcXVlcmllcyB0aGF0IG1hdGNoIHRoZSBsYXN0IHNlbGVjdGVkIHZhbHVlXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIGRyb3Bkb3duIGZyb20gcmVvcGVuaW5nIHdoZW4gaW5wdXQgc2hvd3Mgc2VsZWN0ZWQgdmFsdWVcbiAgICAgIGZpbHRlcigocXVlcnk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBxID0gcXVlcnk/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkID0gdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgLy8gQWxsb3cgc2VhcmNoIGlmIG5vIHByZXZpb3VzIHNlbGVjdGlvbiBPUiBxdWVyeSBpcyBkaWZmZXJlbnQgZnJvbSBzZWxlY3RlZCB2YWx1ZVxuICAgICAgICByZXR1cm4gIWxhc3RTZWxlY3RlZCB8fCBxICE9PSBsYXN0U2VsZWN0ZWQ7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBTdWJzY3JpYmUgdG8gc2VhcmNoIHF1ZXJpZXMgYW5kIHRyaWdnZXIgSFRUUCBzdHJlYW0uXG4gICAgICogQWxsIGZpbHRlcmluZyBpcyBkb25lIGluIHRoZSBwaXBlIGNoYWluIGFib3ZlLCBzbyB0aGlzIGNhbGxiYWNrXG4gICAgICogb25seSBoYW5kbGVzIHRoZSBhY3R1YWwgc2VhcmNoIGV4ZWN1dGlvbi5cbiAgICAgKi9cbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbiA9IG1lcmdlKHNlYXJjaE9ic2VydmFibGUsIHRoaXMuaHR0cFN0cmVhbVRyaWdnZXIpXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gQWRkaXRpb25hbCBmaWx0ZXIgZm9yIGh0dHBTdHJlYW1UcmlnZ2VyIChtYW51YWwgcmVmcmVzaClcbiAgICAgICAgZmlsdGVyKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgcSA9IHF1ZXJ5Py50cmltKCkgPz8gJyc7XG4gICAgICAgICAgLy8gRm9yIG1hbnVhbCB0cmlnZ2Vycywgc3RpbGwgcmVzcGVjdCBtaW5JbnB1dExlbmd0aCBhbmQgbGFzdFNlbGVjdGVkVmFsdWVcbiAgICAgICAgICBpZiAoIXEgfHwgcS5sZW5ndGggPCB0aGlzLm1pbklucHV0TGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbGFzdFNlbGVjdGVkID0gdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgICByZXR1cm4gIWxhc3RTZWxlY3RlZCB8fCBxICE9PSBsYXN0U2VsZWN0ZWQ7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHEgPSBxdWVyeT8udHJpbSgpID8/ICcnO1xuICAgICAgICBcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIC8vIE9wZW4gb3ZlcmxheSBpZiBub3QgeWV0IG9wZW5cbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgSFRUUCBzdHJlYW1cbiAgICAgICAgdGhpcy5odHRwU3RyZWFtKCkocSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiAobGlzdDogSUxpc3REYXRhW10pID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gbGlzdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5vdmVybGF5UmVmPy5oYXNBdHRhY2hlZCgpICYmIGxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jb250cm9sKCk/LnZhbHVlKSB7XG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzKHRoaXMuY29udHJvbCgpIS52YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sKCk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICB0aGlzLmhhbmRsZUNvbnRyb2xDaGFuZ2VzXG4gICAgKTtcblxuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBpbnB1dCBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKHRoaXMuc2VhcmNoVmFsdWUoKSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIC8vIEhhbmRsZSBzZWFyY2hWYWx1ZSBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuc2VhcmNoVmFsdWUoKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LnBhdGNoVmFsdWUodGhpcy5zZWFyY2hWYWx1ZSgpLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGRpc2FibGVkIGNoYW5nZXNcbiAgICBpZiAodGhpcy5kaXNhYmxlZCgpKSB7XG4gICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5odHRwU3RyZWFtVHJpZ2dlci5jb21wbGV0ZSgpO1xuICAgIHRoaXMub3ZlcmxheVJlZj8uZGlzcG9zZSgpO1xuICB9XG5cbiAgLy8gPT09IE1ldGhvZHMgPT09XG4gIHJlZnJlc2hIdHRwU3RyZWFtKHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goKGVsKSA9PiB0aGlzLnNlbGVjdERhdGEoZWwsIHRydWUpKTtcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ3RvcCcgfSxcbiAgICAgICAgMCxcbiAgICAgICAgNFxuICAgICAgKSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKFxuICAgICAgICB7IG9yaWdpblg6ICdlbmQnLCBvcmlnaW5ZOiAnYm90dG9tJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnZW5kJywgb3ZlcmxheVk6ICd0b3AnIH0sXG4gICAgICAgIDAsXG4gICAgICAgIDRcbiAgICAgICksXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LFxuICAgICAgICB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSxcbiAgICAgICAgMCxcbiAgICAgICAgLTRcbiAgICAgICksXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgICAgeyBvcmlnaW5YOiAnZW5kJywgb3JpZ2luWTogJ3RvcCcgfSxcbiAgICAgICAgeyBvdmVybGF5WDogJ2VuZCcsIG92ZXJsYXlZOiAnYm90dG9tJyB9LFxuICAgICAgICAwLFxuICAgICAgICAtNFxuICAgICAgKSxcbiAgICBdO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheVxuICAgICAgLnBvc2l0aW9uKClcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKG9yaWdpbilcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24oKSA9PT0gJ1JpZ2h0JyA/IHBvc2l0aW9uc0JvdHRvbS5yZXZlcnNlKCkgOiBwb3NpdGlvbnNCb3R0b20pLFxuICAgICAgICAuLi4odGhpcy5kcm9wZG93bkxpc3RQb3NpdGlvbigpID09PSAnUmlnaHQnID8gcG9zaXRpb25zVG9wLnJldmVyc2UoKSA6IHBvc2l0aW9uc1RvcCksXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCksXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgd2lkdGg6IG9yaWdpbi5jbGllbnRXaWR0aCxcbiAgICB9KTtcblxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoY29uZmlncyk7XG4gICAgaWYgKHRoaXMuZHJvcGRvd25MaXN0V2lkdGgoKSkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCgpIH0pO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gobmV3IFRlbXBsYXRlUG9ydGFsKHRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlRHJvcGRvd24oKSk7XG4gICAgdGhpcy5vcGVuZWQgPSB0cnVlO1xuICB9XG5cbiAgY2xvc2VEcm9wZG93bigpIHtcbiAgICB0aGlzLm9wZW5lZCA9IGZhbHNlO1xuICAgIHRoaXMub3BlblBvcFVwT25UYWIgPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICB9XG5cbiAgZW5hYmxlUG9wVXBPblRhYigpIHtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiID0gdHJ1ZTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmlyc3RJdGVtID0gdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudFxuICAgICAgICA/LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuaXRlbVt0YWJpbmRleD1cIjBcIl0nKTtcbiAgICAgIGZpcnN0SXRlbT8uZm9jdXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucmVzZXQoKTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGl0ZW0gc2VsZWN0aW9uIGZyb20gZHJvcGRvd24uXG4gICAqIFxuICAgKiBGb3Igc2luZ2xlLXNlbGVjdCBtb2RlOlxuICAgKiAtIFNldHMgaW5wdXQgdmFsdWUgdG8gZGlzcGxheSBzZWxlY3RlZCBpdGVtIChzdGFuZGFyZCBVWCBwYXR0ZXJuKVxuICAgKiAtIFN0b3JlcyBzZWxlY3RlZCB2YWx1ZSB0byBwcmV2ZW50IHJlb3BlbmluZyBkcm9wZG93biBvbiBmb2N1cy9jaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIC0gQmx1cnMgaW5wdXQgdG8gcHJldmVudCBpbW1lZGlhdGUgZm9jdXMtdHJpZ2dlcmVkIHNlYXJjaGVzXG4gICAqIFxuICAgKiBGb3IgbXVsdGktc2VsZWN0IG1vZGU6XG4gICAqIC0gQ2xlYXJzIGlucHV0IGZvciBuZXh0IHNlbGVjdGlvblxuICAgKiAtIE1haW50YWlucyBmb2N1cyBmb3IgY29udGludW91cyBzZWxlY3Rpb25cbiAgICovXG4gIHNlbGVjdERhdGEoaXRlbTogSUxpc3REYXRhLCBlZmZlY3RlZEZyb21PdXRzaWRlID0gdHJ1ZSkge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLml0ZW1TZWxlY3RlZC5lbWl0KGl0ZW0pO1xuXG4gICAgaWYgKCF0aGlzLm11bHRpKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBpdGVtW3RoaXMuZGlzcGxheUtleSgpXTtcbiAgICAgIC8vIFNldCBpbnB1dCB2YWx1ZSB0byBzaG93IHNlbGVjdGVkIGl0ZW0gKHN0YW5kYXJkIFVYIC0gbGlrZSBBbmd1bGFyIE1hdGVyaWFsLCBldGMuKVxuICAgICAgLy8gVXNlIGVtaXRFdmVudDogZmFsc2UgdG8gcHJldmVudCB0cmlnZ2VyaW5nIHZhbHVlQ2hhbmdlcyBzdWJzY3JpcHRpb25cbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShzZWxlY3RlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICBcbiAgICAgIC8vIFN0b3JlIHNlbGVjdGVkIHZhbHVlIC0gUnhKUyBmaWx0ZXIgd2lsbCBwcmV2ZW50IHJlb3BlbmluZyB3aXRoIHNhbWUgdmFsdWVcbiAgICAgIHRoaXMubGFzdFNlbGVjdGVkVmFsdWUgPSBzZWxlY3RlZFZhbHVlO1xuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoaXRlbSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25zKCkuaGFzKGl0ZW1bdGhpcy51bmlxdWVLZXkoKSFdKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbnMoKS5zZXQoaXRlbVt0aGlzLnVuaXF1ZUtleSgpIV0sIGl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIGlmICghZWZmZWN0ZWRGcm9tT3V0c2lkZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLmlucHV0UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKCcnKTtcbiAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuXG4gICAgLy8gQmx1ciBpbnB1dCB0byBwcmV2ZW50IGZvY3VzIGV2ZW50cyBmcm9tIGltbWVkaWF0ZWx5IHRyaWdnZXJpbmcgc2VhcmNoXG4gICAgLy8gVGhlIGxhc3RTZWxlY3RlZFZhbHVlIGZpbHRlciB3aWxsIGFsc28gcHJldmVudCByZW9wZW5pbmcgaWYgZm9jdXMgb2NjdXJzXG4gICAgaWYgKHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSXRlbShpdGVtOiBJTGlzdERhdGEpIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSk7XG4gICAgdGhpcy5zZWxlY3Rpb25zKCkuZGVsZXRlKGl0ZW1bdGhpcy51bmlxdWVLZXkoKSFdKTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIHRoaXMuaW5wdXRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb250cm9sVmFsdWUodmFsdWU6IElMaXN0RGF0YSB8IElMaXN0RGF0YVtdKSB7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmNvbnRyb2woKT8ucGF0Y2hWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zZWxlY3Rpb25zKCkudmFsdWVzKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyB0aGUgaW5wdXQgYW5kIHJlc2V0cyBzZWxlY3Rpb24gc3RhdGUuXG4gICAqIENsZWFyaW5nIGxhc3RTZWxlY3RlZFZhbHVlIGFsbG93cyBuZXcgc2VhcmNoZXMgdG8gcHJvY2VlZCBub3JtYWxseS5cbiAgICovXG4gIHJlbW92ZUlucHV0VmFsdWUoKSB7XG4gICAgdGhpcy5zZWFyY2hJbnB1dC5yZXNldCgpO1xuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIHRoaXMubGFzdFNlbGVjdGVkVmFsdWUgPSBudWxsO1xuICAgIHRoaXMuY2xlYXIuZW1pdCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgd2hlbiBpbnB1dCByZWNlaXZlcyBmb2N1cy5cbiAgICogT25seSBvcGVucyBkcm9wZG93biBpZjpcbiAgICogMS4gbWluSW5wdXRMZW5ndGggYWxsb3dzIGl0ICgtMSBvciAwIG1lYW5zIG9wZW4gb24gZm9jdXMpXG4gICAqIDIuIElucHV0IHZhbHVlIGRvZXNuJ3QgbWF0Y2ggbGFzdCBzZWxlY3RlZCB2YWx1ZSAocHJldmVudHMgcmVvcGVuaW5nIGFmdGVyIHNlbGVjdGlvbilcbiAgICogXG4gICAqIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBpbnB1dCByZWdhaW5zIGZvY3VzIGFmdGVyIHNlbGVjdGlvbi5cbiAgICogVGhlIFJ4SlMgZmlsdGVyIGluIHNlYXJjaE9ic2VydmFibGUgaGFuZGxlcyB2YWx1ZUNoYW5nZXMsIGJ1dCBmb2N1cyBldmVudHNcbiAgICogbmVlZCBzZXBhcmF0ZSBoYW5kbGluZyBzaW5jZSB0aGV5IGJ5cGFzcyB2YWx1ZUNoYW5nZXMuXG4gICAqL1xuICBkZWZhdWx0Q2FsbCgpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLnNlYXJjaElucHV0LnZhbHVlPy50cmltKCkgfHwgJyc7XG4gICAgY29uc3QgbGFzdFNlbGVjdGVkID0gdGhpcy5sYXN0U2VsZWN0ZWRWYWx1ZTtcbiAgICBcbiAgICAvLyBEb24ndCBvcGVuIGlmIHZhbHVlIG1hdGNoZXMgbGFzdCBzZWxlY3RlZCAodXNlciBoYXNuJ3QgdHlwZWQgbmV3IHF1ZXJ5KVxuICAgIGlmIChsYXN0U2VsZWN0ZWQgJiYgY3VycmVudFZhbHVlID09PSBsYXN0U2VsZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgXG4gICAgLy8gT25seSBvcGVuIG9uIGZvY3VzIGlmIG1pbklucHV0TGVuZ3RoIGFsbG93cyBpdFxuICAgIGlmICh0aGlzLm1pbklucHV0TGVuZ3RoKCkgPT09IC0xKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5odHRwU3RyZWFtKCkodGhpcy5zZWFyY2hJbnB1dC52YWx1ZSB8fCAnJykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGxpc3Q6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kYXRhID0gbGlzdDtcbiAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKHRoaXMuZGQsIHRoaXMub3JpZ2luLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSIsIjxkaXYgY2xhc3M9XCJkZC13cmFwcGVyXCJcbiAgICAgW25nQ2xhc3NdPVwieyBvcGVuZWQ6IG9wZW5lZCwgZGlzYWJsZWQ6IGRpc2FibGVkKCksIHJlYWRvbmx5OiByZWFkb25seSgpIH1cIlxuICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGgoKVwiXG4gICAgICNkZEJ0bj5cbiAgXG4gIDwhLS0gU2VsZWN0ZWQgY2hpcHMgZm9yIG11bHRpLXNlbGVjdCAtLT5cbiAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWxpc3RcIiAqbmdJZj1cIm11bHRpKCkgJiYgc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoaXBcIlxuICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hpcC1tZCc6IHNpemUoKSA9PT0gJ21kJywgJ2NoaXAtc20nOiBzaXplKCkgPT09ICdzbScgfVwiXG4gICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCI+XG4gICAgICA8c3BhbiBbbmdDbGFzc109XCJ7ICdoNic6IHNpemUoKSA9PT0gJ21kJywgJ2g4LWInOiBzaXplKCkgPT09ICdzbScgfVwiXG4gICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi1yaWdodDogNHB4O1wiPlxuICAgICAgICB7eyBpdGVtW2Rpc3BsYXlLZXkoKV0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNFwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGN1cnNvcjogJ3BvaW50ZXInLCAnZm9udC1zaXplJzogc2l6ZSgpID09PSAnc20nID8gJzEycHgnIDogJzE0cHgnIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCJcbiAgICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZW1vdmVJdGVtKGl0ZW0pXCI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gU2VhcmNoIGlucHV0IC0tPlxuICA8ZGl2IGNsYXNzPVwic2VhcmNoLWlucHV0XCI+XG4gICAgPCEtLSBQbGFjZWhvbGRlciBpY29uIC0tPlxuICAgIDxkaXYgKm5nSWY9XCJjdXN0b21QbGFjZWhvbGRlckljb24oKTsgZWxzZSBkZWZhdWx0U2VhcmNoSWNvblwiIGNsYXNzPVwiY3VzdG9tLWljb25cIj5cbiAgICAgIDxpbWcgW3NyY109XCJjdXN0b21QbGFjZWhvbGRlckljb24oKVwiIGFsdD1cImN1c3RvbUljb25cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNlYXJjaEljb24+XG4gICAgICA8c3BhbiBjbGFzcz1cImljb24taWMtYWN0aW9uLXNlYXJjaC0yNFwiPjwvc3Bhbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgPCEtLSBJbnB1dCBmaWVsZCAtLT5cbiAgICA8aW5wdXQgW25nQ2xhc3NdPVwieyAnaXAtbWQnOiBzaXplKCkgPT09ICdtZCcsICdpcC1zbSc6IHNpemUoKSA9PT0gJ3NtJyB9XCJcbiAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyKClcIlxuICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIlxuICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICBjbGFzcz1cImJsYWNrLXRleHQgaDZcIlxuICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgKGZvY3VzKT1cImRlZmF1bHRDYWxsKClcIlxuICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwiZW5hYmxlUG9wVXBPblRhYigpXCJcbiAgICAgICAgICAgKGNvcHkpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgKHBhc3RlKT1cImRpc2FibGVDb3B5UGFzdGUoKSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgIChjdXQpPVwiZGlzYWJsZUNvcHlQYXN0ZSgpID8gZmFsc2UgOiB0cnVlXCIvPlxuXG4gICAgPCEtLSBDbGVhciBpbnB1dCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiaWNvbi1pYy1uYXZpZ2F0aW9uLWNhbmNlbC0yNCBjcm9vcy1pY29uXCJcbiAgICAgICAgICpuZ0lmPVwic2VhcmNoSW5wdXQudmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUlucHV0VmFsdWUoKVwiXG4gICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjwhLS0gRHJvcGRvd24gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2RkPlxuICA8ZGl2IGNsYXNzPVwiZGQtbGlzdFwiXG4gICAgICAgW25nU3R5bGVdPVwieyAnbWF4LWhlaWdodCc6IGhlaWdodCgpLCAnd2lkdGgnOiBkcm9wZG93bkxpc3RXaWR0aCgpIH1cIlxuICAgICAgIFtuZ0NsYXNzXT1cInsgJ2RkLWxpc3QtcGQnOiBkYXRhLmxlbmd0aCA9PT0gMCB9XCJcbiAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgIGNka1RyYXBGb2N1c1xuICAgICAgIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJvcGVuUG9wVXBPblRhYlwiPlxuXG4gICAgPCEtLSBMb2FkZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Mb2FkZXI7IGVsc2UgZGVmYXVsdExvYWRlclwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxvYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9hZGVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiICpuZ0lmPVwibG9hZGluZyAmJiAhY3VzdG9tTG9hZGVyXCI+XG4gICAgICAgICAgPG1pcy1sb2FkZXIgW21vYmlsZVZpZXddPVwidHJ1ZVwiPjwvbWlzLWxvYWRlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBFcnJvciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXJyb3JcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCI+XG4gICAgICAgIDxwPlVua25vd24gZXJyb3IgaGFzIG9jY3VycmVkLCA8YnIvPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBEYXRhIGxpc3QgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGF0YVwiPlxuICAgICAgICA8ZGl2IChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgIDxkaXYgdGFiaW5kZXg9XCItMVwiIGNka0ZvY3VzSW5pdGlhbD48L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQ3VzdG9tIGl0ZW0gLS0+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUl0ZW07IGVsc2Ugc3RhbmRhcmRJdGVtXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGl0ZW0gfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPCEtLSBTdGFuZGFyZCBpdGVtIC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwib3BlblBvcFVwT25UYWIgPyAwIDogLTFcIlxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1hcnlcIj57eyBpdGVtW2Rpc3BsYXlLZXkoKV0gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Vjb25kYXJ5XCI+e3sgaXRlbVtzZWNvbmRhcnlEaXNwbGF5S2V5KCldIH19PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gTm8gZGF0YSAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWVycm9yICYmIGRhdGEubGVuZ3RoID09PSAwICYmIHNlYXJjaElucHV0LnZhbHVlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0YS1ub3QtZm91bmRcIj57eyBub1Jlc3VsdHNUZXh0KCkgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|