igniteui-angular 17.2.15 → 17.2.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -369,7 +369,7 @@ export class IgxComboComponent extends IgxComboBaseDirective {
369
369
  IgxComboAPIService,
370
370
  { provide: IGX_COMBO_COMPONENT, useExisting: IgxComboComponent },
371
371
  { provide: NG_VALUE_ACCESSOR, useExisting: IgxComboComponent, multi: true }
372
- ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n {{ clearIcon }}\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ toggleIcon }}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" >\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"searchPlaceholder\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"></igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
372
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: IgxComboDropDownComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n {{ clearIcon }}\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ toggleIcon }}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" >\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"searchPlaceholder\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"></igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IgxInputGroupComponent, selector: "igx-input-group", inputs: ["resourceStrings", "suppressInputAutofocus", "type", "theme"] }, { kind: "directive", type: IgxInputDirective, selector: "[igxInput]", inputs: ["value", "disabled", "required"], exportAs: ["igxInput"] }, { kind: "directive", type: IgxSuffixDirective, selector: "igx-suffix,[igxSuffix],[igxEnd]" }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "component", type: IgxComboDropDownComponent, selector: "igx-combo-drop-down", inputs: ["singleMode"] }, { kind: "directive", type: IgxDropDownItemNavigationDirective, selector: "[igxDropDownItemNavigation]", inputs: ["igxDropDownItemNavigation"] }, { kind: "directive", type: IgxForOfDirective, selector: "[igxFor][igxForOf]", inputs: ["igxForOf", "igxForSizePropName", "igxForScrollOrientation", "igxForScrollContainer", "igxForContainerSize", "igxForItemSize", "igxForTotalItemCount", "igxForTrackBy"], outputs: ["chunkLoad", "scrollbarVisibilityChanged", "contentSizeChange", "dataChanged", "beforeViewDestroyed", "chunkPreload"] }, { kind: "component", type: IgxComboItemComponent, selector: "igx-combo-item", inputs: ["itemHeight", "ariaLabel", "singleMode"] }, { kind: "component", type: IgxComboAddItemComponent, selector: "igx-combo-add-item" }, { kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "pipe", type: IgxComboFilteringPipe, name: "comboFiltering" }, { kind: "pipe", type: IgxComboGroupingPipe, name: "comboGrouping" }] }); }
373
373
  }
374
374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxComboComponent, decorators: [{
375
375
  type: Component,
@@ -395,7 +395,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
395
395
  IgxRippleDirective,
396
396
  IgxComboFilteringPipe,
397
397
  IgxComboGroupingPipe
398
- ], template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n {{ clearIcon }}\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ toggleIcon }}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" >\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"searchPlaceholder\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"></igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
398
+ ], template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [type]=\"type\" (click)=\"onClick($event)\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n <input igxInput #comboInput name=\"comboInput\" type=\"text\" [value]=\"displayValue\" readonly\n [attr.placeholder]=\"placeholder\" [disabled]=\"disabled\"\n role=\"combobox\" aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"!dropdown.collapsed\" [attr.aria-controls]=\"dropdown.listId\"\n [attr.aria-labelledby]=\"ariaLabelledBy || label?.id || placeholder\"\n (blur)=\"onBlur()\" />\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"displayValue\" [attr.aria-label]=\"resourceStrings.igx_combo_clearItems_placeholder\" class=\"igx-combo__clear-button\"\n (click)=\"handleClearItems($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n {{ clearIcon }}\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!toggleIconTemplate\">\n {{ toggleIcon }}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [labelledBy]=\"ariaLabelledBy || label?.id || placeholder || ''\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\">\n <div class=\"igx-combo__search\">\n <igx-input-group *ngIf=\"displaySearchInput\" [displayDensity]=\"displayDensity\" theme=\"material\" >\n <input igxInput #searchInput name=\"searchInput\" autocomplete=\"off\" type=\"text\"\n [(ngModel)]=\"searchValue\" (ngModelChange)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (focus)=\"dropdown.onBlur($event)\" [attr.placeholder]=\"searchPlaceholder\"\n aria-autocomplete=\"list\" role=\"searchbox\" aria-label=\"search\"/>\n <igx-suffix *ngIf=\"showSearchCaseIcon\" (click)=\"toggleCaseSensitive()\">\n <span [ngClass]=\"filteringOptions.caseSensitive? 'igx-combo__case-icon--active' : 'igx-combo__case-icon'\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"></igx-icon>\n </span>\n </igx-suffix>\n </igx-input-group>\n </div>\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.rem]=\"itemsMaxHeightInRem\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" [attr.id]=\"dropdown.id\" aria-multiselectable=\"true\"\n [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-combo-item [itemHeight]=\"itemHeight\" *igxFor=\"let item of data\n | comboFiltering:filterValue:displayKey:filteringOptions:filterFunction\n | comboGrouping:groupKey:valueKey:groupSortingDirection:compareCollator;\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item?.isHeader\" [index]=\"rowIndex\" [role]=\"item?.isHeader? 'group' : 'option'\">\n <ng-container *ngIf=\"item?.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <!-- if item is 'null' it should be displayed and !!(item?.isHeader) would resolve it to 'false' and not display it -->\n <ng-container *ngIf=\"!item?.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n [attr.aria-label]=\"resourceStrings.igx_combo_addCustomValues_placeholder\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>{{resourceStrings.igx_combo_empty_message}}</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button type=\"button\" igxButton=\"flat\" igxRipple>{{ resourceStrings.igx_combo_addCustomValues_placeholder }}</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n" }]
399
399
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.IgxSelectionAPIService }, { type: i2.IgxComboAPIService }, { type: i3.IgxIconService }, { type: undefined, decorators: [{
400
400
  type: Optional
401
401
  }, {
@@ -428,4 +428,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
428
428
  type: HostListener,
429
429
  args: ['keydown.Alt.ArrowDown', ['$event']]
430
430
  }] } });
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDK0IsU0FBUyxFQUMzQyxRQUFRLEVBQUUsTUFBTSxFQUFZLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVcsZ0JBQWdCLEVBQzlHLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFB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Qjt3QkFDbEIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxtQkFBbUIsRUFBRTt3QkFDaEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUM5RSxjQUNXLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6QixrQ0FBa0M7d0JBQ2xDLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjtxQkFDdkI7OzBCQWlGSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDdkMsUUFBUTt5Q0ExRU4sZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTM0IsVUFBVTtzQkFEcEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFzQi9CLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFXQyxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBS0EsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF1Qy9DLFdBQVc7c0JBRmpCLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLCBJbmplY3QsIEluamVjdG9yLCBWaWV3Q2hpbGQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBEb0NoZWNrLCBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCwgSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYyB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21iby1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb21iby1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9GaWx0ZXJpbmdQaXBlLCBJZ3hDb21ib0dyb3VwaW5nUGlwZSB9IGZyb20gJy4vY29tYm8ucGlwZXMnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHlUb2tlbiwgSURpc3BsYXlEZW5zaXR5T3B0aW9ucyB9IGZyb20gJy4uL2NvcmUvZGVuc2l0eSc7XG5pbXBvcnQgeyBJR1hfQ09NQk9fQ09NUE9ORU5ULCBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWFkZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBFZGl0b3JQcm92aWRlciB9IGZyb20gJy4uL2NvcmUvZWRpdC1wcm92aWRlcic7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvc3VmZml4L3N1ZmZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZSc7XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaWd4LWNvbWJvJ3Mgc2VsZWN0aW9uIGlzIGNoYW5naW5nICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgYXJlIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIG9sZFZhbHVlOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3VmFsdWU6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IGFyZSBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgc2VsZWN0ZWQgYWZ0ZXIgdGhpcyBldmVudCAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55W107XG4gICAgLyoqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb24gKGlmIGFueSkgKi9cbiAgICByZW1vdmVkOiBhbnlbXTtcbiAgICAvKiogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tYm8gdGV4dCBib3ggKi9cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIC8qKiBUaGUgdXNlciBpbnRlcmFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlneC1jb21ibydzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHRleHQgdGhhdCBoYXMgYmVlbiB0eXBlZCBpbnRvIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgb2xkQ29sbGVjdGlvbjogYW55W107XG4gICAgYWRkZWRJdGVtOiBhbnk7XG4gICAgbmV3Q29sbGVjdGlvbjogYW55W107XG59XG5cbi8qKlxuICogV2hlbiBjYWxsZWQgd2l0aCBzZXRzIEEgJiBCLCByZXR1cm5zIEEgLSBCIChhcyBhcnJheSk7XG4gKlxuICogQGhpZGRlblxuICovXG5jb25zdCBkaWZmSW5TZXRzID0gKHNldDE6IFNldDxhbnk+LCBzZXQyOiBTZXQ8YW55Pik6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgc2V0MS5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKCFzZXQyLmhhcyhlbnRyeSkpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogIFJlcHJlc2VudHMgYSBkcm9wLWRvd24gbGlzdCB0aGF0IHByb3ZpZGVzIGVkaXRhYmxlIGZ1bmN0aW9uYWxpdGllcywgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGFuIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgY29tYm8gc2VsZWN0aW9uXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBJdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgaXRlbXMgYXMgd2VsbCBhcyBwZXJmb3JtIHNlbGVjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNvbWJvIFtpdGVtc01heEhlaWdodF09XCIyNTBcIiBbZGF0YV09XCJsb2NhdGlvbkRhdGFcIlxuICogIFtkaXNwbGF5S2V5XT1cIidmaWVsZCdcIiBbdmFsdWVLZXldPVwiJ2ZpZWxkJ1wiXG4gKiAgcGxhY2Vob2xkZXI9XCJMb2NhdGlvbihzKVwiIHNlYXJjaFBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCI+XG4gKiA8L2lneC1jb21ibz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdjb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBJR1hfQ09NQk9fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4Q29tYm9Db21wb25lbnQgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIElneElucHV0RGlyZWN0aXZlLFxuICAgICAgICBJZ3hTdWZmaXhEaXJlY3RpdmUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIElneEZvck9mRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0l0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4QnV0dG9uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hSaXBwbGVEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9Hcm91cGluZ1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvQ29tcG9uZW50IGV4dGVuZHMgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksIERvQ2hlY2ssIEVkaXRvclByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjb21ibydzIHNlYXJjaCBib3ggc2hvdWxkIGJlIGZvY3VzZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW5lZC5cbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgYXV0b0ZvY3VzU2VhcmNoID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgZmlsdGVyaW5nIGluIHRoZSBsaXN0LiBUaGUgZGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE0LjAuMC4gVXNlIHRoZSBgZmlsdGVyaW5nT3B0aW9ucy5maWx0ZXJhYmxlYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyaW5nT3B0aW9ucy5maWx0ZXJhYmxlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5maWx0ZXJpbmdPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5maWx0ZXJpbmdPcHRpb25zLCB7IGZpbHRlcmFibGU6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIGZvciB0aGUgY29tYm8gZHJvcGRvd24gc2VhcmNoIGZpZWxkXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9TZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMuY29tYm8uc2VhcmNoUGxhY2Vob2xkZXI7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW3NlYXJjaFBsYWNlaG9sZGVyXT0nbmV3UGxhY2VIb2xkZXInPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJ0VudGVyIGEgU2VhcmNoIFRlcm0nO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGl0ZW0gc2VsZWN0aW9uIGlzIGNoYW5naW5nLCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZXNcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmluZ09wdGlvbnMuZmlsdGVyYWJsZSA/IHRoaXMuX2ZpbHRlcmVkRGF0YSA6IHRoaXMuZGF0YTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldCBmaWx0ZXJlZERhdGEodmFsOiBhbnlbXSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWREYXRhID0gdGhpcy5ncm91cEtleSA/ICh2YWwgfHwgW10pLmZpbHRlcigoZSkgPT4gZS5pc0hlYWRlciAhPT0gdHJ1ZSkgOiB2YWw7XG4gICAgICAgIHRoaXMuY2hlY2tNYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcmluZ0xvZ2ljID0gRmlsdGVyaW5nTG9naWMuT3I7XG5cbiAgICBwcm90ZWN0ZWQgc3RyaW5nRmlsdGVycyA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQ7XG4gICAgcHJvdGVjdGVkIGJvb2xlYW5GaWx0ZXJzID0gSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQ7XG4gICAgcHJvdGVjdGVkIF9wcmV2SW5wdXRWYWx1ZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheVRleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBjb21ib0FQSTogSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIEBPcHRpb25hbCgpIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgX2ljb25TZXJ2aWNlLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUsIF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tYm9BUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5U2VhcmNoSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmluZ09wdGlvbnMuZmlsdGVyYWJsZSB8fCB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBQbGF0Zm9ybVV0aWwgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnRG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdFc2MnKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsKGV2dCkge1xuICAgICAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5maWx0ZXIoeCA9PiB4ICE9PSB1bmRlZmluZWQpIDogW107XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIHNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWVLZXkgPyB0aGlzLnNlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IHRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCAmJiB0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX2Rpc3BsYXlUZXh0IHx8IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIFtdKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZUtleSA/IHRoaXMuc2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdEb0NoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRFZGl0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB0aGlzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xlYXJJdGVtcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsSXRlbXModHJ1ZSwgZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RWRpdEVsZW1lbnQoKS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBkZWZpbmVkIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SXRlbXMgbmV3IGl0ZW1zIHRvIGJlIHNlbGVjdGVkXG4gICAgICogQHBhcmFtIGNsZWFyQ3VycmVudFNlbGVjdGlvbiBpZiB0cnVlIGNsZWFyIHByZXZpb3VzIHNlbGVjdGVkIGl0ZW1zXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uc2VsZWN0KFtcIk5ldyBZb3JrXCIsIFwiTmV3IEplcnNleVwiXSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdChuZXdJdGVtczogQXJyYXk8YW55PiwgY2xlYXJDdXJyZW50U2VsZWN0aW9uPzogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAobmV3SXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgbmV3SXRlbXMsIGNsZWFyQ3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyBpdGVtcyB0byBkZXNlbGVjdGVkXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3QoaXRlbXM6IEFycmF5PGFueT4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIGl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBzZWxlY3RzIGFsbCBpdGVtcywgb3RoZXJ3aXNlIHNlbGVjdHMgb25seSB0aGUgZmlsdGVyZWQgb25lcy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RBbGxJdGVtcyhpZ25vcmVGaWx0ZXI/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGFsbFZpc2libGUgPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2FsbF9pZHMoaWdub3JlRmlsdGVyID8gdGhpcy5kYXRhIDogdGhpcy5maWx0ZXJlZERhdGEsIHRoaXMudmFsdWVLZXkpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuYWRkX2l0ZW1zKHRoaXMuaWQsIGFsbFZpc2libGUpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCBhbGwgKGZpbHRlcmVkKSBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGlnbm9yZUZpbHRlciBpZiBzZXQgdG8gdHJ1ZSwgZGVzZWxlY3RzIGFsbCBpdGVtcywgb3RoZXJ3aXNlIGRlc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLmRlc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3RBbGxJdGVtcyhpZ25vcmVGaWx0ZXI/OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2VtcHR5KCk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggIT09IHRoaXMuZGF0YS5sZW5ndGggJiYgIWlnbm9yZUZpbHRlcikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmRlbGV0ZV9pdGVtcyh0aGlzLmlkLCB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2FsbF9pZHModGhpcy5maWx0ZXJlZERhdGEsIHRoaXMudmFsdWVLZXkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzL0Rlc2VsZWN0cyBhIHNpbmdsZSBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbUlEIHRoZSBpdGVtSUQgb2YgdGhlIHNwZWNpZmljIGl0ZW1cbiAgICAgKiBAcGFyYW0gc2VsZWN0IElmIHRoZSBpdGVtIHNob3VsZCBiZSBzZWxlY3RlZCAodHJ1ZSkgb3IgZGVzZWxlY3RlZCAoZmFsc2UpXG4gICAgICpcbiAgICAgKiBXaXRob3V0IHNwZWNpZmllZCB2YWx1ZUtleTtcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby52YWx1ZUtleSA9IG51bGw7XG4gICAgICogY29uc3QgaXRlbXM6IHsgZmllbGQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmd9W10gPSBkYXRhO1xuICAgICAqIHRoaXMuY29tYm8uc2V0U2VsZWN0ZWRJdGVtKGl0ZW1zWzBdLCB0cnVlKTtcbiAgICAgKiBgYGBcbiAgICAgKiBXaXRoIHNwZWNpZmllZCB2YWx1ZUtleTtcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby52YWx1ZUtleSA9ICdmaWVsZCc7XG4gICAgICogY29uc3QgaXRlbXM6IHsgZmllbGQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmd9W10gPSBkYXRhO1xuICAgICAqIHRoaXMuY29tYm8uc2V0U2VsZWN0ZWRJdGVtKCdDb25uZWN0aWN1dCcsIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZEl0ZW0oaXRlbUlEOiBhbnksIHNlbGVjdCA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW1JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoW2l0ZW1JRF0sIGZhbHNlLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KFtpdGVtSURdLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuXG4gICAgICAgIC8vIERpc2FibGluZyBmb2N1cyBvZiB0aGUgc2VhcmNoIGlucHV0IHNob3VsZCBoYXBwZW4gb25seSB3aGVuIGRyb3AgZG93biBvcGVucy5cbiAgICAgICAgLy8gRHVyaW5nIGtleWJvYXJkIG5hdmlnYXRpb24gaW5wdXQgc2hvdWxkIHJlY2VpdmUgZm9jdXMsIGV2ZW4gdGhlIGF1dG9Gb2N1c1NlYXJjaCBpcyBkaXNhYmxlZC5cbiAgICAgICAgLy8gVGhhdCBpcyB3aHkgaW4gc3VjaCBjYXNlcyBmb2N1c2luZyBvZiB0aGUgZHJvcGRvd25Db250YWluZXIgaGFwcGVucyBvdXRzaWRlIGZvY3VzU2VhcmNoSW5wdXQgbWV0aG9kLlxuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXNTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5U2VhcmNoSW5wdXQgJiYgdGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbjogU2V0PGFueT4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhkaWZmSW5TZXRzKGN1cnJlbnRTZWxlY3Rpb24sIHNlbGVjdGlvbikpO1xuICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKGRpZmZJblNldHMoc2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gQXJyYXkuZnJvbShzZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbiB8fCBbXSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKG5ld1ZhbHVlKTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMob2xkVmFsdWUpO1xuICAgICAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMobmV3VmFsdWUpLCBvbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbixcbiAgICAgICAgICAgIG9sZFNlbGVjdGlvbixcbiAgICAgICAgICAgIGFkZGVkLFxuICAgICAgICAgICAgcmVtb3ZlZCxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgb3duZXI6IHRoaXMsXG4gICAgICAgICAgICBkaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIGFyZ3MubmV3VmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcmdzLm5ld1ZhbHVlO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcGxheVZhbHVlID0gdGhpcy5fZGlzcGxheVRleHQgPSBhcmdzLmRpc3BsYXlUZXh0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBhcmdzLm9sZFNlbGVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGFyZ3MubmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZW1vdGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJSZW1vdGVFbnRyaWVzKGRpZmZJblNldHMoc2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbjogYW55W10sIG9sZFNlbGVjdGlvbjogYW55W10pIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy52YWx1ZUtleSA/IG5ld1NlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IG5ld1NlbGVjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZW1vdGVcbiAgICAgICAgICAgID8gdGhpcy5nZXRSZW1vdGVTZWxlY3Rpb24oc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pXG4gICAgICAgICAgICA6IHRoaXMuY29uY2F0RGlzcGxheVRleHQobmV3U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIHN0cmluZyB0aGF0IHNob3VsZCBiZSBwb3B1bGF0ZWQgaW4gdGhlIGNvbWJvJ3MgdGV4dCBib3ggKi9cbiAgICBwcml2YXRlIGNvbmNhdERpc3BsYXlUZXh0KHNlbGVjdGlvbjogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGlzcGxheUtleSAhPT0gbnVsbCAmJiB0aGlzLmRpc3BsYXlLZXkgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICBzZWxlY3Rpb24ubWFwKGVudHJ5ID0+IGVudHJ5W3RoaXMuZGlzcGxheUtleV0pLmpvaW4oJywgJykgOlxuICAgICAgICAgICAgc2VsZWN0aW9uLmpvaW4oJywgJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iLCI8aWd4LWlucHV0LWdyb3VwICNpbnB1dEdyb3VwIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIFt0eXBlXT1cInR5cGVcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIltpZ3hMYWJlbF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lneExhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXByZWZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtcHJlZml4XCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtaGludCwgW2lneEhpbnRdXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1oaW50LCBbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlucHV0IGlneElucHV0ICNjb21ib0lucHV0IG5hbWU9XCJjb21ib0lucHV0XCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCIgcmVhZG9ubHlcbiAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWRyb3Bkb3duLmNvbGxhcHNlZFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZHJvcGRvd24ubGlzdElkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSB8fCBsYWJlbD8uaWQgfHwgcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtc3VmZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlneC1zdWZmaXggKm5nSWY9XCJkaXNwbGF5VmFsdWVcIiBhcmlhLWxhYmVsPVwiQ2xlYXIgU2VsZWN0aW9uXCIgY2xhc3M9XCJpZ3gtY29tYm9fX2NsZWFyLWJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJoYW5kbGVDbGVhckl0ZW1zKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNsZWFySWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJJY29uVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFjbGVhckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAge3sgY2xlYXJJY29uIH19XG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9pZ3gtc3VmZml4PlxuICAgIDxpZ3gtc3VmZml4IGNsYXNzPVwiaWd4LWNvbWJvX190b2dnbGUtYnV0dG9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0b2dnbGVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0b2dnbGVJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGNvbGxhcHNlZH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiF0b2dnbGVJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIHt7IHRvZ2dsZUljb24gfX1cbiAgICAgICAgPC9pZ3gtaWNvbj5cbiAgICA8L2lneC1zdWZmaXg+XG48L2lneC1pbnB1dC1ncm91cD5cbjxpZ3gtY29tYm8tZHJvcC1kb3duICNpZ3hDb21ib0Ryb3BEb3duIGNsYXNzPVwiaWd4LWNvbWJvX19kcm9wLWRvd25cIiBbZGlzcGxheURlbnNpdHldPVwiZGlzcGxheURlbnNpdHlcIlxuICAgIFtsYWJlbGxlZEJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IGxhYmVsPy5pZCB8fCBwbGFjZWhvbGRlciB8fCAnJ1wiXG4gICAgW3dpZHRoXT1cIml0ZW1zV2lkdGggfHwgJzEwMCUnXCIgKG9wZW5pbmcpPVwiaGFuZGxlT3BlbmluZygkZXZlbnQpXCIgKGNsb3NpbmcpPVwiaGFuZGxlQ2xvc2luZygkZXZlbnQpXCJcbiAgICAob3BlbmVkKT1cImhhbmRsZU9wZW5lZCgpXCIgKGNsb3NlZCk9XCJoYW5kbGVDbG9zZWQoKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX3NlYXJjaFwiPlxuICAgICAgICA8aWd4LWlucHV0LWdyb3VwICpuZ0lmPVwiZGlzcGxheVNlYXJjaElucHV0XCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCIgdGhlbWU9XCJtYXRlcmlhbFwiID5cbiAgICAgICAgICAgIDxpbnB1dCBpZ3hJbnB1dCAjc2VhcmNoSW5wdXQgbmFtZT1cInNlYXJjaElucHV0XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVJbnB1dENoYW5nZSgkZXZlbnQpXCIgKGtleXVwKT1cImhhbmRsZUtleVVwKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiIChmb2N1cyk9XCJkcm9wZG93bi5vbkJsdXIoJGV2ZW50KVwiIFthdHRyLnBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiByb2xlPVwic2VhcmNoYm94XCIgYXJpYS1sYWJlbD1cInNlYXJjaFwiLz5cbiAgICAgICAgICAgIDxpZ3gtc3VmZml4ICpuZ0lmPVwic2hvd1NlYXJjaENhc2VJY29uXCIgKGNsaWNrKT1cInRvZ2dsZUNhc2VTZW5zaXRpdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cImZpbHRlcmluZ09wdGlvbnMuY2FzZVNlbnNpdGl2ZT8gJ2lneC1jb21ib19fY2FzZS1pY29uLS1hY3RpdmUnIDogJ2lneC1jb21ib19fY2FzZS1pY29uJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aWd4LWljb24gZmFtaWx5PVwiaW14LWljb25zXCIgbmFtZT1cImNhc2Utc2Vuc2l0aXZlXCIgW2FjdGl2ZV09XCJmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmVcIj48L2lneC1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvaWd4LXN1ZmZpeD5cbiAgICAgICAgPC9pZ3gtaW5wdXQtZ3JvdXA+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAjZHJvcGRvd25JdGVtQ29udGFpbmVyIGNsYXNzPVwiaWd4LWNvbWJvX19jb250ZW50XCIgW3N0eWxlLm92ZXJmbG93XT1cIidoaWRkZW4nXCJcbiAgICAgICAgW3N0eWxlLm1heEhlaWdodC5yZW1dPVwiaXRlbXNNYXhIZWlnaHRJblJlbVwiIFtpZ3hEcm9wRG93bkl0ZW1OYXZpZ2F0aW9uXT1cImRyb3Bkb3duXCIgKGZvY3VzKT1cImRyb3Bkb3duLm9uRm9jdXMoKVwiXG4gICAgICAgIFt0YWJpbmRleF09XCJkcm9wZG93bi5jb2xsYXBzZWQgPyAtMSA6IDBcIiBbYXR0ci5pZF09XCJkcm9wZG93bi5pZFwiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPVwidHJ1ZVwiXG4gICAgICAgIFthdHRyLmFyaWEtYWN0aXZlZGVzY2VuZGFudF09XCJhY3RpdmVEZXNjZW5kYW50XCI+XG4gICAgICAgIDxpZ3gtY29tYm8taXRlbSBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0XCIgKmlneEZvcj1cImxldCBpdGVtIG9mIGRhdGFcbiAgICAgICAgICAgIHwgY29tYm9GaWx0ZXJpbmc6ZmlsdGVyVmFsdWU6ZGlzcGxheUtleTpmaWx0ZXJpbmdPcHRpb25zOmZpbHRlckZ1bmN0aW9uXG4gICAgICAgICAgICB8IGNvbWJvR3JvdXBpbmc6Z3JvdXBLZXk6dmFsdWVLZXk6Z3JvdXBTb3J0aW5nRGlyZWN0aW9uOmNvbXBhcmVDb2xsYXRvcjtcbiAgICAgICAgICAgIGluZGV4IGFzIHJvd0luZGV4OyBjb250YWluZXJTaXplOiBpdGVtc01heEhlaWdodDsgc2Nyb2xsT3JpZW50YXRpb246ICd2ZXJ0aWNhbCc7IGl0ZW1TaXplOiBpdGVtSGVpZ2h0XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCIgW2lzSGVhZGVyXT1cIml0ZW0/LmlzSGVhZGVyXCIgW2luZGV4XT1cInJvd0luZGV4XCIgW3JvbGVdPVwiaXRlbT8uaXNIZWFkZXI/ICdncm91cCcgOiAnb3B0aW9uJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0/LmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlckl0ZW1UZW1wbGF0ZSA/IGhlYWRlckl0ZW1UZW1wbGF0ZSA6IGhlYWRlckl0ZW1CYXNlO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtLCBkYXRhOiBkYXRhLCB2YWx1ZUtleTogdmFsdWVLZXksIGdyb3VwS2V5OiBncm91cEtleSwgZGlzcGxheUtleTogZGlzcGxheUtleX1cIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPCEtLSBpZiBpdGVtIGlzICdudWxsJyBpdCBzaG91bGQgYmUgZGlzcGxheWVkIGFuZCAhIShpdGVtPy5pc0hlYWRlcikgd291bGQgcmVzb2x2ZSBpdCB0byAnZmFsc2UnIGFuZCBub3QgZGlzcGxheSBpdCAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbT8uaXNIZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICNsaXN0SXRlbVxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBpdGVtLCBkYXRhOiBkYXRhLCB2YWx1ZUtleTogdmFsdWVLZXksIGRpc3BsYXlLZXk6IGRpc3BsYXlLZXl9O1wiPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaWd4LWNvbWJvLWl0ZW0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImlneC1jb21ib19fYWRkXCIgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID09PSAwIHx8IGlzQWRkQnV0dG9uVmlzaWJsZSgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2VtcHR5XCIgKm5nSWY9XCJmaWx0ZXJlZERhdGEubGVuZ3RoID09PSAwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZSA/IGVtcHR5VGVtcGxhdGUgOiBlbXB0eVwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aWd4LWNvbWJvLWFkZC1pdGVtIFtpdGVtSGVpZ2h0XT1cIml0ZW1IZWlnaHRcIiAqbmdJZj1cImlzQWRkQnV0dG9uVmlzaWJsZSgpXCJcbiAgICAgICAgICAgIFt0YWJpbmRleF09XCJkcm9wZG93bi5jb2xsYXBzZWQgPyAtMSA6IGN1c3RvbVZhbHVlRmxhZyA/IDEgOiAtMVwiIGNsYXNzPVwiaWd4LWNvbWJvX19hZGQtaXRlbVwiIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZCBJdGVtXCIgW2luZGV4XT1cInZpcnR1YWxTY3JvbGxDb250YWluZXIuaWd4Rm9yT2YubGVuZ3RoXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkSXRlbVRlbXBsYXRlID8gYWRkSXRlbVRlbXBsYXRlIDogYWRkSXRlbURlZmF1bHRcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1hZGQtaXRlbT5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGVcIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvaWd4LWNvbWJvLWRyb3AtZG93bj5cbjxuZy10ZW1wbGF0ZSAjY29tcGxleCBsZXQtZGlzcGxheSBsZXQtZGF0YT1cImRhdGFcIiBsZXQta2V5PVwiZGlzcGxheUtleVwiPlxuICAgIHt7ZGlzcGxheVtrZXldfX1cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3ByaW1pdGl2ZSBsZXQtZGlzcGxheT5cbiAgICB7e2Rpc3BsYXl9fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjZW1wdHk+XG4gICAgPHNwYW4+e3tyZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2VtcHR5X21lc3NhZ2V9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2FkZEl0ZW1EZWZhdWx0IGxldC1jb250cm9sPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbj1cImZsYXRcIiBpZ3hSaXBwbGU+QWRkIGl0ZW08L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI2hlYWRlckl0ZW1CYXNlIGxldC1pdGVtIGxldC1rZXk9XCJ2YWx1ZUtleVwiIGxldC1ncm91cEtleT1cImdyb3VwS2V5XCI+XG4gICAge3sgaXRlbVtrZXldIH19XG48L25nLXRlbXBsYXRlPlxuIl19
431
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jb21iby9jb21iby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFDK0IsU0FBUyxFQUMzQyxRQUFRLEVBQUUsTUFBTSxFQUFZLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQVcsZ0JBQWdCLEVBQzlHLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJdEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0csT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFB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Qjt3QkFDbEIsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxtQkFBbUIsRUFBRTt3QkFDaEUsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3FCQUM5RSxjQUNXLElBQUksV0FDUDt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsT0FBTzt3QkFDUCxXQUFXO3dCQUNYLHNCQUFzQjt3QkFDdEIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIseUJBQXlCO3dCQUN6QixrQ0FBa0M7d0JBQ2xDLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix3QkFBd0I7d0JBQ3hCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjtxQkFDdkI7OzBCQWlGSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0JBQW9COzswQkFDdkMsUUFBUTt5Q0ExRU4sZUFBZTtzQkFEckIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTM0IsVUFBVTtzQkFEcEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFzQi9CLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFXQyxpQkFBaUI7c0JBRHZCLE1BQU07Z0JBS0EsUUFBUTtzQkFEZCxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkF1Qy9DLFdBQVc7c0JBRmpCLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUM7O3NCQUM1QyxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uSW5pdCwgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLCBJbmplY3QsIEluamVjdG9yLCBWaWV3Q2hpbGQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBEb0NoZWNrLCBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4U3RyaW5nRmlsdGVyaW5nT3BlcmFuZCwgSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLWNvbmRpdGlvbic7XG5pbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYyB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Rm9yT2ZEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneElucHV0R3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21iby1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb21iby1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9GaWx0ZXJpbmdQaXBlLCBJZ3hDb21ib0dyb3VwaW5nUGlwZSB9IGZyb20gJy4vY29tYm8ucGlwZXMnO1xuaW1wb3J0IHsgRGlzcGxheURlbnNpdHlUb2tlbiwgSURpc3BsYXlEZW5zaXR5T3B0aW9ucyB9IGZyb20gJy4uL2NvcmUvZGVuc2l0eSc7XG5pbXBvcnQgeyBJR1hfQ09NQk9fQ09NUE9ORU5ULCBJZ3hDb21ib0Jhc2VEaXJlY3RpdmUgfSBmcm9tICcuL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hDb21ib0FkZEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbWJvLWFkZC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hDb21ib0FQSVNlcnZpY2UgfSBmcm9tICcuL2NvbWJvLmFwaSc7XG5pbXBvcnQgeyBFZGl0b3JQcm92aWRlciB9IGZyb20gJy4uL2NvcmUvZWRpdC1wcm92aWRlcic7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi9kcm9wLWRvd24vZHJvcC1kb3duLW5hdmlnYXRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvc3VmZml4L3N1ZmZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZSc7XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gYW4gaWd4LWNvbWJvJ3Mgc2VsZWN0aW9uIGlzIGNoYW5naW5nICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgYXJlIGN1cnJlbnRseSBzZWxlY3RlZCAqL1xuICAgIG9sZFZhbHVlOiBhbnlbXTtcbiAgICAvKiogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgdmFsdWVzIHRoYXQgd2lsbCBiZSBzZWxlY3RlZCBhZnRlciB0aGlzIGV2ZW50ICovXG4gICAgbmV3VmFsdWU6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IGFyZSBjdXJyZW50bHkgc2VsZWN0ZWQgKi9cbiAgICBvbGRTZWxlY3Rpb246IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgc2VsZWN0ZWQgYWZ0ZXIgdGhpcyBldmVudCAqL1xuICAgIG5ld1NlbGVjdGlvbjogYW55W107XG4gICAgLyoqIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIHRoYXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uIChpZiBhbnkpICovXG4gICAgYWRkZWQ6IGFueVtdO1xuICAgIC8qKiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBpdGVtcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZWxlY3Rpb24gKGlmIGFueSkgKi9cbiAgICByZW1vdmVkOiBhbnlbXTtcbiAgICAvKiogVGhlIHRleHQgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgY29tYm8gdGV4dCBib3ggKi9cbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIC8qKiBUaGUgdXNlciBpbnRlcmFjdGlvbiB0aGF0IHRyaWdnZXJlZCB0aGUgc2VsZWN0aW9uIGNoYW5nZSAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbi8qKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIGlneC1jb21ibydzIHNlYXJjaCBpbnB1dCBjaGFuZ2VzICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogVGhlIHRleHQgdGhhdCBoYXMgYmVlbiB0eXBlZCBpbnRvIHRoZSBzZWFyY2ggaW5wdXQgKi9cbiAgICBzZWFyY2hUZXh0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncywgQ2FuY2VsYWJsZUV2ZW50QXJncyB7XG4gICAgb2xkQ29sbGVjdGlvbjogYW55W107XG4gICAgYWRkZWRJdGVtOiBhbnk7XG4gICAgbmV3Q29sbGVjdGlvbjogYW55W107XG59XG5cbi8qKlxuICogV2hlbiBjYWxsZWQgd2l0aCBzZXRzIEEgJiBCLCByZXR1cm5zIEEgLSBCIChhcyBhcnJheSk7XG4gKlxuICogQGhpZGRlblxuICovXG5jb25zdCBkaWZmSW5TZXRzID0gKHNldDE6IFNldDxhbnk+LCBzZXQyOiBTZXQ8YW55Pik6IGFueVtdID0+IHtcbiAgICBjb25zdCByZXN1bHRzID0gW107XG4gICAgc2V0MS5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYgKCFzZXQyLmhhcyhlbnRyeSkpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbn07XG5cbi8qKlxuICogIFJlcHJlc2VudHMgYSBkcm9wLWRvd24gbGlzdCB0aGF0IHByb3ZpZGVzIGVkaXRhYmxlIGZ1bmN0aW9uYWxpdGllcywgYWxsb3dpbmcgdXNlcnMgdG8gY2hvb3NlIGFuIG9wdGlvbiBmcm9tIGEgcHJlZGVmaW5lZCBsaXN0LlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q29tYm9Nb2R1bGVcbiAqIEBpZ3hUaGVtZSBpZ3gtY29tYm8tdGhlbWVcbiAqIEBpZ3hLZXl3b3JkcyBjb21ib2JveCwgY29tYm8gc2VsZWN0aW9uXG4gKiBAaWd4R3JvdXAgR3JpZHMgJiBMaXN0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBJdCBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBmaWx0ZXIgaXRlbXMgYXMgd2VsbCBhcyBwZXJmb3JtIHNlbGVjdGlvbiB3aXRoIHRoZSBwcm92aWRlZCBkYXRhLlxuICogQWRkaXRpb25hbGx5LCBpdCBleHBvc2VzIGtleWJvYXJkIG5hdmlnYXRpb24gYW5kIGN1c3RvbSBzdHlsaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNvbWJvIFtpdGVtc01heEhlaWdodF09XCIyNTBcIiBbZGF0YV09XCJsb2NhdGlvbkRhdGFcIlxuICogIFtkaXNwbGF5S2V5XT1cIidmaWVsZCdcIiBbdmFsdWVLZXldPVwiJ2ZpZWxkJ1wiXG4gKiAgcGxhY2Vob2xkZXI9XCJMb2NhdGlvbihzKVwiIHNlYXJjaFBsYWNlaG9sZGVyPVwiU2VhcmNoLi4uXCI+XG4gKiA8L2lneC1jb21ibz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jb21ibycsXG4gICAgdGVtcGxhdGVVcmw6ICdjb21iby5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgeyBwcm92aWRlOiBJR1hfQ09NQk9fQ09NUE9ORU5ULCB1c2VFeGlzdGluZzogSWd4Q29tYm9Db21wb25lbnQgfSxcbiAgICAgICAgeyBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IElneENvbWJvQ29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9XG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTmdDbGFzcyxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIElneElucHV0R3JvdXBDb21wb25lbnQsXG4gICAgICAgIElneElucHV0RGlyZWN0aXZlLFxuICAgICAgICBJZ3hTdWZmaXhEaXJlY3RpdmUsXG4gICAgICAgIElneEljb25Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvRHJvcERvd25Db21wb25lbnQsXG4gICAgICAgIElneERyb3BEb3duSXRlbU5hdmlnYXRpb25EaXJlY3RpdmUsXG4gICAgICAgIElneEZvck9mRGlyZWN0aXZlLFxuICAgICAgICBJZ3hDb21ib0l0ZW1Db21wb25lbnQsXG4gICAgICAgIElneENvbWJvQWRkSXRlbUNvbXBvbmVudCxcbiAgICAgICAgSWd4QnV0dG9uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hSaXBwbGVEaXJlY3RpdmUsXG4gICAgICAgIElneENvbWJvRmlsdGVyaW5nUGlwZSxcbiAgICAgICAgSWd4Q29tYm9Hcm91cGluZ1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvQ29tcG9uZW50IGV4dGVuZHMgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksIERvQ2hlY2ssIEVkaXRvclByb3ZpZGVyIHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRoZSBjb21ibydzIHNlYXJjaCBib3ggc2hvdWxkIGJlIGZvY3VzZWQgYWZ0ZXIgdGhlIGRyb3Bkb3duIGlzIG9wZW5lZC5cbiAgICAgKiBXaGVuIGBmYWxzZWAsIHRoZSBjb21ibydzIGxpc3QgaXRlbSBjb250YWluZXIgd2lsbCBiZSBmb2N1c2VkIGluc3RlYWRcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgYXV0b0ZvY3VzU2VhcmNoID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvZGlzYWJsZXMgZmlsdGVyaW5nIGluIHRoZSBsaXN0LiBUaGUgZGVmYXVsdCBpcyBgdHJ1ZWAuXG4gICAgICpcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE0LjAuMC4gVXNlIHRoZSBgZmlsdGVyaW5nT3B0aW9ucy5maWx0ZXJhYmxlYCBwcm9wZXJ0eSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgZmlsdGVyYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyaW5nT3B0aW9ucy5maWx0ZXJhYmxlO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5maWx0ZXJpbmdPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5maWx0ZXJpbmdPcHRpb25zLCB7IGZpbHRlcmFibGU6IHZhbHVlIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIHBsYWNlaG9sZGVyIHZhbHVlIGZvciB0aGUgY29tYm8gZHJvcGRvd24gc2VhcmNoIGZpZWxkXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9TZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMuY29tYm8uc2VhcmNoUGxhY2Vob2xkZXI7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW3NlYXJjaFBsYWNlaG9sZGVyXT0nbmV3UGxhY2VIb2xkZXInPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNlYXJjaFBsYWNlaG9sZGVyID0gJ0VudGVyIGEgU2VhcmNoIFRlcm0nO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGl0ZW0gc2VsZWN0aW9uIGlzIGNoYW5naW5nLCBiZWZvcmUgdGhlIHNlbGVjdGlvbiBjb21wbGV0ZXNcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChzZWxlY3Rpb25DaGFuZ2luZyk9J2hhbmRsZVNlbGVjdGlvbigpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBkcm9wZG93bjogSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsdGVyZWREYXRhKCk6IGFueVtdIHwgbnVsbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmluZ09wdGlvbnMuZmlsdGVyYWJsZSA/IHRoaXMuX2ZpbHRlcmVkRGF0YSA6IHRoaXMuZGF0YTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldCBmaWx0ZXJlZERhdGEodmFsOiBhbnlbXSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyZWREYXRhID0gdGhpcy5ncm91cEtleSA/ICh2YWwgfHwgW10pLmZpbHRlcigoZSkgPT4gZS5pc0hlYWRlciAhPT0gdHJ1ZSkgOiB2YWw7XG4gICAgICAgIHRoaXMuY2hlY2tNYXRjaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGZpbHRlcmluZ0xvZ2ljID0gRmlsdGVyaW5nTG9naWMuT3I7XG5cbiAgICBwcm90ZWN0ZWQgc3RyaW5nRmlsdGVycyA9IElneFN0cmluZ0ZpbHRlcmluZ09wZXJhbmQ7XG4gICAgcHJvdGVjdGVkIGJvb2xlYW5GaWx0ZXJzID0gSWd4Qm9vbGVhbkZpbHRlcmluZ09wZXJhbmQ7XG4gICAgcHJvdGVjdGVkIF9wcmV2SW5wdXRWYWx1ZSA9ICcnO1xuXG4gICAgcHJpdmF0ZSBfZGlzcGxheVRleHQ6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBjb21ib0FQSTogSWd4Q29tYm9BUElTZXJ2aWNlLFxuICAgICAgICBfaWNvblNlcnZpY2U6IElneEljb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERpc3BsYXlEZW5zaXR5VG9rZW4pIF9kaXNwbGF5RGVuc2l0eU9wdGlvbnM6IElEaXNwbGF5RGVuc2l0eU9wdGlvbnMsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIEBPcHRpb25hbCgpIF9pbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyLCBzZWxlY3Rpb25TZXJ2aWNlLCBjb21ib0FQSSwgX2ljb25TZXJ2aWNlLCBfZGlzcGxheURlbnNpdHlPcHRpb25zLCBfaW5wdXRHcm91cFR5cGUsIF9pbmplY3Rvcik7XG4gICAgICAgIHRoaXMuY29tYm9BUEkucmVnaXN0ZXIodGhpcyk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQXJyb3dEb3duKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBkaXNwbGF5U2VhcmNoSW5wdXQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcmluZ09wdGlvbnMuZmlsdGVyYWJsZSB8fCB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGhhbmRsZUtleVVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIC8vIFRPRE86IHVzZSBQbGF0Zm9ybVV0aWwgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnRG93bicpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSB0aGlzLmRyb3Bkb3duLml0ZW1zWzBdO1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyB8fCBldmVudC5rZXkgPT09ICdFc2MnKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsKGV2dCkge1xuICAgICAgICBpZiAoZXZ0LmNoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGxJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5maWx0ZXIoeCA9PiB4ICE9PSB1bmRlZmluZWQpIDogW107XG4gICAgICAgIGNvbnN0IG9sZFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIHNlbGVjdGlvbiwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pO1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWVLZXkgPyB0aGlzLnNlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IHRoaXMuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGE/Lmxlbmd0aCAmJiB0aGlzLnNlbGVjdGlvbi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlWYWx1ZSA9IHRoaXMuX2Rpc3BsYXlUZXh0IHx8IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5zZWxlY3Rpb24sIFtdKTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZUtleSA/IHRoaXMuc2VsZWN0aW9uLm1hcChpdGVtID0+IGl0ZW1bdGhpcy52YWx1ZUtleV0pIDogdGhpcy5zZWxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgc3VwZXIubmdEb0NoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRFZGl0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udGV4dCgpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJGltcGxpY2l0OiB0aGlzXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xlYXJJdGVtcyhldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRlc2VsZWN0QWxsSXRlbXModHJ1ZSwgZXZlbnQpO1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0RWRpdEVsZW1lbnQoKS5mb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaElucHV0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBkZWZpbmVkIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmV3SXRlbXMgbmV3IGl0ZW1zIHRvIGJlIHNlbGVjdGVkXG4gICAgICogQHBhcmFtIGNsZWFyQ3VycmVudFNlbGVjdGlvbiBpZiB0cnVlIGNsZWFyIHByZXZpb3VzIHNlbGVjdGVkIGl0ZW1zXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uc2VsZWN0KFtcIk5ldyBZb3JrXCIsIFwiTmV3IEplcnNleVwiXSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdChuZXdJdGVtczogQXJyYXk8YW55PiwgY2xlYXJDdXJyZW50U2VsZWN0aW9uPzogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAobmV3SXRlbXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5hZGRfaXRlbXModGhpcy5pZCwgbmV3SXRlbXMsIGNsZWFyQ3VycmVudFNlbGVjdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlc2VsZWN0IGRlZmluZWQgaXRlbXNcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyBpdGVtcyB0byBkZXNlbGVjdGVkXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHRoaXMuY29tYm8uZGVzZWxlY3QoW1wiTmV3IFlvcmtcIiwgXCJOZXcgSmVyc2V5XCJdKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3QoaXRlbXM6IEFycmF5PGFueT4sIGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGl0ZW1zKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlX2l0ZW1zKHRoaXMuaWQsIGl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFsbCAoZmlsdGVyZWQpIGl0ZW1zXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWdub3JlRmlsdGVyIGlmIHNldCB0byB0cnVlLCBzZWxlY3RzIGFsbCBpdGVtcywgb3RoZXJ3aXNlIHNlbGVjdHMgb25seSB0aGUgZmlsdGVyZWQgb25lcy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby5zZWxlY3RBbGxJdGVtcygpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RBbGxJdGVtcyhpZ25vcmVGaWx0ZXI/OiBib29sZWFuLCBldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGFsbFZpc2libGUgPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2FsbF9pZHMoaWdub3JlRmlsdGVyID8gdGhpcy5kYXRhIDogdGhpcy5maWx0ZXJlZERhdGEsIHRoaXMudmFsdWVLZXkpO1xuICAgICAgICBjb25zdCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuYWRkX2l0ZW1zKHRoaXMuaWQsIGFsbFZpc2libGUpO1xuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXNlbGVjdCBhbGwgKGZpbHRlcmVkKSBpdGVtc1xuICAgICAqXG4gICAgICogQHBhcmFtIGlnbm9yZUZpbHRlciBpZiBzZXQgdG8gdHJ1ZSwgZGVzZWxlY3RzIGFsbCBpdGVtcywgb3RoZXJ3aXNlIGRlc2VsZWN0cyBvbmx5IHRoZSBmaWx0ZXJlZCBvbmVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNvbWJvLmRlc2VsZWN0QWxsSXRlbXMoKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3RBbGxJdGVtcyhpZ25vcmVGaWx0ZXI/OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGxldCBuZXdTZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2VtcHR5KCk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkRGF0YS5sZW5ndGggIT09IHRoaXMuZGF0YS5sZW5ndGggJiYgIWlnbm9yZUZpbHRlcikge1xuICAgICAgICAgICAgbmV3U2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmRlbGV0ZV9pdGVtcyh0aGlzLmlkLCB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0X2FsbF9pZHModGhpcy5maWx0ZXJlZERhdGEsIHRoaXMudmFsdWVLZXkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzL0Rlc2VsZWN0cyBhIHNpbmdsZSBpdGVtXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaXRlbUlEIHRoZSBpdGVtSUQgb2YgdGhlIHNwZWNpZmljIGl0ZW1cbiAgICAgKiBAcGFyYW0gc2VsZWN0IElmIHRoZSBpdGVtIHNob3VsZCBiZSBzZWxlY3RlZCAodHJ1ZSkgb3IgZGVzZWxlY3RlZCAoZmFsc2UpXG4gICAgICpcbiAgICAgKiBXaXRob3V0IHNwZWNpZmllZCB2YWx1ZUtleTtcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby52YWx1ZUtleSA9IG51bGw7XG4gICAgICogY29uc3QgaXRlbXM6IHsgZmllbGQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmd9W10gPSBkYXRhO1xuICAgICAqIHRoaXMuY29tYm8uc2V0U2VsZWN0ZWRJdGVtKGl0ZW1zWzBdLCB0cnVlKTtcbiAgICAgKiBgYGBcbiAgICAgKiBXaXRoIHNwZWNpZmllZCB2YWx1ZUtleTtcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5jb21iby52YWx1ZUtleSA9ICdmaWVsZCc7XG4gICAgICogY29uc3QgaXRlbXM6IHsgZmllbGQ6IHN0cmluZywgcmVnaW9uOiBzdHJpbmd9W10gPSBkYXRhO1xuICAgICAqIHRoaXMuY29tYm8uc2V0U2VsZWN0ZWRJdGVtKCdDb25uZWN0aWN1dCcsIHRydWUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRTZWxlY3RlZEl0ZW0oaXRlbUlEOiBhbnksIHNlbGVjdCA9IHRydWUsIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW1JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3QoW2l0ZW1JRF0sIGZhbHNlLCBldmVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlc2VsZWN0KFtpdGVtSURdLCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmVkKCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJDaGVjaygpO1xuXG4gICAgICAgIC8vIERpc2FibGluZyBmb2N1cyBvZiB0aGUgc2VhcmNoIGlucHV0IHNob3VsZCBoYXBwZW4gb25seSB3aGVuIGRyb3AgZG93biBvcGVucy5cbiAgICAgICAgLy8gRHVyaW5nIGtleWJvYXJkIG5hdmlnYXRpb24gaW5wdXQgc2hvdWxkIHJlY2VpdmUgZm9jdXMsIGV2ZW4gdGhlIGF1dG9Gb2N1c1NlYXJjaCBpcyBkaXNhYmxlZC5cbiAgICAgICAgLy8gVGhhdCBpcyB3aHkgaW4gc3VjaCBjYXNlcyBmb2N1c2luZyBvZiB0aGUgZHJvcGRvd25Db250YWluZXIgaGFwcGVucyBvdXRzaWRlIGZvY3VzU2VhcmNoSW5wdXQgbWV0aG9kLlxuICAgICAgICBpZiAodGhpcy5hdXRvRm9jdXNTZWFyY2gpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNTZWFyY2hJbnB1dCh0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkLmVtaXQoeyBvd25lcjogdGhpcyB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5U2VhcmNoSW5wdXQgJiYgdGhpcy5zZWFyY2hJbnB1dCkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAob3BlbmluZykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Db250YWluZXIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbWJvSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uKHNlbGVjdGlvbjogU2V0PGFueT4sIGV2ZW50PzogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCk7XG4gICAgICAgIGNvbnN0IHJlbW92ZWQgPSB0aGlzLmNvbnZlcnRLZXlzVG9JdGVtcyhkaWZmSW5TZXRzKGN1cnJlbnRTZWxlY3Rpb24sIHNlbGVjdGlvbikpO1xuICAgICAgICBjb25zdCBhZGRlZCA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKGRpZmZJblNldHMoc2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSk7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gQXJyYXkuZnJvbShzZWxlY3Rpb24pO1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IEFycmF5LmZyb20oY3VycmVudFNlbGVjdGlvbiB8fCBbXSk7XG4gICAgICAgIGNvbnN0IG5ld1NlbGVjdGlvbiA9IHRoaXMuY29udmVydEtleXNUb0l0ZW1zKG5ld1ZhbHVlKTtcbiAgICAgICAgY29uc3Qgb2xkU2VsZWN0aW9uID0gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMob2xkVmFsdWUpO1xuICAgICAgICBjb25zdCBkaXNwbGF5VGV4dCA9IHRoaXMuY3JlYXRlRGlzcGxheVRleHQodGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMobmV3VmFsdWUpLCBvbGRWYWx1ZSk7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib1NlbGVjdGlvbkNoYW5naW5nRXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgbmV3VmFsdWUsXG4gICAgICAgICAgICBvbGRWYWx1ZSxcbiAgICAgICAgICAgIG5ld1NlbGVjdGlvbixcbiAgICAgICAgICAgIG9sZFNlbGVjdGlvbixcbiAgICAgICAgICAgIGFkZGVkLFxuICAgICAgICAgICAgcmVtb3ZlZCxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgb3duZXI6IHRoaXMsXG4gICAgICAgICAgICBkaXNwbGF5VGV4dCxcbiAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBpZiAoIWFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0X2l0ZW1zKHRoaXMuaWQsIGFyZ3MubmV3VmFsdWUsIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSBhcmdzLm5ld1ZhbHVlO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlUZXh0ICE9PSBhcmdzLmRpc3BsYXlUZXh0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlzcGxheVZhbHVlID0gdGhpcy5fZGlzcGxheVRleHQgPSBhcmdzLmRpc3BsYXlUZXh0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaXNwbGF5VmFsdWUgPSB0aGlzLmNyZWF0ZURpc3BsYXlUZXh0KHRoaXMuc2VsZWN0aW9uLCBhcmdzLm9sZFNlbGVjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGFyZ3MubmV3VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNSZW1vdGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJSZW1vdGVFbnRyaWVzKGRpZmZJblNldHMoc2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZURpc3BsYXlUZXh0KG5ld1NlbGVjdGlvbjogYW55W10sIG9sZFNlbGVjdGlvbjogYW55W10pIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy52YWx1ZUtleSA/IG5ld1NlbGVjdGlvbi5tYXAoaXRlbSA9PiBpdGVtW3RoaXMudmFsdWVLZXldKSA6IG5ld1NlbGVjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNSZW1vdGVcbiAgICAgICAgICAgID8gdGhpcy5nZXRSZW1vdGVTZWxlY3Rpb24oc2VsZWN0aW9uLCBvbGRTZWxlY3Rpb24pXG4gICAgICAgICAgICA6IHRoaXMuY29uY2F0RGlzcGxheVRleHQobmV3U2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICAvKiogUmV0dXJucyBhIHN0cmluZyB0aGF0IHNob3VsZCBiZSBwb3B1bGF0ZWQgaW4gdGhlIGNvbWJvJ3MgdGV4dCBib3ggKi9cbiAgICBwcml2YXRlIGNvbmNhdERpc3BsYXlUZXh0KHNlbGVjdGlvbjogYW55W10pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZGlzcGxheUtleSAhPT0gbnVsbCAmJiB0aGlzLmRpc3BsYXlLZXkgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICBzZWxlY3Rpb24ubWFwKGVudHJ5ID0+IGVudHJ5W3RoaXMuZGlzcGxheUtleV0pLmpvaW4oJywgJykgOlxuICAgICAgICAgICAgc2VsZWN0aW9uLmpvaW4oJywgJyk7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG59XG4iLCI8aWd4LWlucHV0LWdyb3VwICNpbnB1dEdyb3VwIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIFt0eXBlXT1cInR5cGVcIiAoY2xpY2spPVwib25DbGljaygkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciBuZ1Byb2plY3RBcz1cIltpZ3hMYWJlbF1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2lneExhYmVsXVwiPjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyIG5nUHJvamVjdEFzPVwiaWd4LXByZWZpeFwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtcHJlZml4XCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtaGludCwgW2lneEhpbnRdXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1oaW50LCBbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlucHV0IGlneElucHV0ICNjb21ib0lucHV0IG5hbWU9XCJjb21ib0lucHV0XCIgdHlwZT1cInRleHRcIiBbdmFsdWVdPVwiZGlzcGxheVZhbHVlXCIgcmVhZG9ubHlcbiAgICAgICAgICAgIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIHJvbGU9XCJjb21ib2JveFwiIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiIWRyb3Bkb3duLmNvbGxhcHNlZFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZHJvcGRvd24ubGlzdElkXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWxsZWRCeSB8fCBsYWJlbD8uaWQgfHwgcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAvPlxuICAgIDxuZy1jb250YWluZXIgbmdQcm9qZWN0QXM9XCJpZ3gtc3VmZml4XCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1zdWZmaXhcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGlneC1zdWZmaXggKm5nSWY9XCJkaXNwbGF5VmFsdWVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInJlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fY2xlYXJJdGVtc19wbGFjZWhvbGRlclwiIGNsYXNzPVwiaWd4LWNvbWJvX19jbGVhci1idXR0b25cIlxuICAgICAgICAoY2xpY2spPVwiaGFuZGxlQ2xlYXJJdGVtcygkZXZlbnQpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjbGVhckljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFySWNvblRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhY2xlYXJJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIHt7IGNsZWFySWNvbiB9fVxuICAgICAgICA8L2lneC1pY29uPlxuICAgIDwvaWd4LXN1ZmZpeD5cbiAgICA8aWd4LXN1ZmZpeCBjbGFzcz1cImlneC1jb21ib19fdG9nZ2xlLWJ1dHRvblwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidG9nZ2xlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidG9nZ2xlSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBjb2xsYXBzZWR9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8aWd4LWljb24gKm5nSWY9XCIhdG9nZ2xlSWNvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICB7eyB0b2dnbGVJY29uIH19XG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9pZ3gtc3VmZml4PlxuPC9pZ3gtaW5wdXQtZ3JvdXA+XG48aWd4LWNvbWJvLWRyb3AtZG93biAjaWd4Q29tYm9Ecm9wRG93biBjbGFzcz1cImlneC1jb21ib19fZHJvcC1kb3duXCIgW2Rpc3BsYXlEZW5zaXR5XT1cImRpc3BsYXlEZW5zaXR5XCJcbiAgICBbbGFiZWxsZWRCeV09XCJhcmlhTGFiZWxsZWRCeSB8fCBsYWJlbD8uaWQgfHwgcGxhY2Vob2xkZXIgfHwgJydcIlxuICAgIFt3aWR0aF09XCJpdGVtc1dpZHRoIHx8ICcxMDAlJ1wiIChvcGVuaW5nKT1cImhhbmRsZU9wZW5pbmcoJGV2ZW50KVwiIChjbG9zaW5nKT1cImhhbmRsZUNsb3NpbmcoJGV2ZW50KVwiXG4gICAgKG9wZW5lZCk9XCJoYW5kbGVPcGVuZWQoKVwiIChjbG9zZWQpPVwiaGFuZGxlQ2xvc2VkKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWNvbWJvX19zZWFyY2hcIj5cbiAgICAgICAgPGlneC1pbnB1dC1ncm91cCAqbmdJZj1cImRpc3BsYXlTZWFyY2hJbnB1dFwiIFtkaXNwbGF5RGVuc2l0eV09XCJkaXNwbGF5RGVuc2l0eVwiIHRoZW1lPVwibWF0ZXJpYWxcIiA+XG4gICAgICAgICAgICA8aW5wdXQgaWd4SW5wdXQgI3NlYXJjaElucHV0IG5hbWU9XCJzZWFyY2hJbnB1dFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlSW5wdXRDaGFuZ2UoJGV2ZW50KVwiIChrZXl1cCk9XCJoYW5kbGVLZXlVcCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIiAoZm9jdXMpPVwiZHJvcGRvd24ub25CbHVyKCRldmVudClcIiBbYXR0ci5wbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9XCJsaXN0XCIgcm9sZT1cInNlYXJjaGJveFwiIGFyaWEtbGFiZWw9XCJzZWFyY2hcIi8+XG4gICAgICAgICAgICA8aWd4LXN1ZmZpeCAqbmdJZj1cInNob3dTZWFyY2hDYXNlSWNvblwiIChjbGljayk9XCJ0b2dnbGVDYXNlU2Vuc2l0aXZlKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmU/ICdpZ3gtY29tYm9fX2Nhc2UtaWNvbi0tYWN0aXZlJyA6ICdpZ3gtY29tYm9fX2Nhc2UtaWNvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlneC1pY29uIGZhbWlseT1cImlteC1pY29uc1wiIG5hbWU9XCJjYXNlLXNlbnNpdGl2ZVwiIFthY3RpdmVdPVwiZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlXCI+PC9pZ3gtaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2lneC1zdWZmaXg+XG4gICAgICAgIDwvaWd4LWlucHV0LWdyb3VwPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJUZW1wbGF0ZVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgI2Ryb3Bkb3duSXRlbUNvbnRhaW5lciBjbGFzcz1cImlneC1jb21ib19fY29udGVudFwiIFtzdHlsZS5vdmVyZmxvd109XCInaGlkZGVuJ1wiXG4gICAgICAgIFtzdHlsZS5tYXhIZWlnaHQucmVtXT1cIml0ZW1zTWF4SGVpZ2h0SW5SZW1cIiBbaWd4RHJvcERvd25JdGVtTmF2aWdhdGlvbl09XCJkcm9wZG93blwiIChmb2N1cyk9XCJkcm9wZG93bi5vbkZvY3VzKClcIlxuICAgICAgICBbdGFiaW5kZXhdPVwiZHJvcGRvd24uY29sbGFwc2VkID8gLTEgOiAwXCIgW2F0dHIuaWRdPVwiZHJvcGRvd24uaWRcIiBhcmlhLW11bHRpc2VsZWN0YWJsZT1cInRydWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWFjdGl2ZWRlc2NlbmRhbnRdPVwiYWN0aXZlRGVzY2VuZGFudFwiPlxuICAgICAgICA8aWd4LWNvbWJvLWl0ZW0gW2l0ZW1IZWlnaHRdPVwiaXRlbUhlaWdodFwiICppZ3hGb3I9XCJsZXQgaXRlbSBvZiBkYXRhXG4gICAgICAgICAgICB8IGNvbWJvRmlsdGVyaW5nOmZpbHRlclZhbHVlOmRpc3BsYXlLZXk6ZmlsdGVyaW5nT3B0aW9uczpmaWx0ZXJGdW5jdGlvblxuICAgICAgICAgICAgfCBjb21ib0dyb3VwaW5nOmdyb3VwS2V5OnZhbHVlS2V5Omdyb3VwU29ydGluZ0RpcmVjdGlvbjpjb21wYXJlQ29sbGF0b3I7XG4gICAgICAgICAgICBpbmRleCBhcyByb3dJbmRleDsgY29udGFpbmVyU2l6ZTogaXRlbXNNYXhIZWlnaHQ7IHNjcm9sbE9yaWVudGF0aW9uOiAndmVydGljYWwnOyBpdGVtU2l6ZTogaXRlbUhlaWdodFwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiIFtpc0hlYWRlcl09XCJpdGVtPy5pc0hlYWRlclwiIFtpbmRleF09XCJyb3dJbmRleFwiIFtyb2xlXT1cIml0ZW0/LmlzSGVhZGVyPyAnZ3JvdXAnIDogJ29wdGlvbidcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5pc0hlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJoZWFkZXJJdGVtVGVtcGxhdGUgPyBoZWFkZXJJdGVtVGVtcGxhdGUgOiBoZWFkZXJJdGVtQmFzZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBncm91cEtleTogZ3JvdXBLZXksIGRpc3BsYXlLZXk6IGRpc3BsYXlLZXl9XCI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwhLS0gaWYgaXRlbSBpcyAnbnVsbCcgaXQgc2hvdWxkIGJlIGRpc3BsYXllZCBhbmQgISEoaXRlbT8uaXNIZWFkZXIpIHdvdWxkIHJlc29sdmUgaXQgdG8gJ2ZhbHNlJyBhbmQgbm90IGRpc3BsYXkgaXQgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0/LmlzSGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAjbGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgZGF0YTogZGF0YSwgdmFsdWVLZXk6IHZhbHVlS2V5LCBkaXNwbGF5S2V5OiBkaXNwbGF5S2V5fTtcIj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2lneC1jb21iby1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtY29tYm9fX2FkZFwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMCB8fCBpc0FkZEJ1dHRvblZpc2libGUoKVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWNvbWJvX19lbXB0eVwiICpuZ0lmPVwiZmlsdGVyZWREYXRhLmxlbmd0aCA9PT0gMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVtcHR5VGVtcGxhdGUgPyBlbXB0eVRlbXBsYXRlIDogZW1wdHlcIj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGlneC1jb21iby1hZGQtaXRlbSBbaXRlbUhlaWdodF09XCJpdGVtSGVpZ2h0XCIgKm5nSWY9XCJpc0FkZEJ1dHRvblZpc2libGUoKVwiXG4gICAgICAgICAgICBbdGFiaW5kZXhdPVwiZHJvcGRvd24uY29sbGFwc2VkID8gLTEgOiBjdXN0b21WYWx1ZUZsYWcgPyAxIDogLTFcIiBjbGFzcz1cImlneC1jb21ib19fYWRkLWl0ZW1cIiByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicmVzb3VyY2VTdHJpbmdzLmlneF9jb21ib19hZGRDdXN0b21WYWx1ZXNfcGxhY2Vob2xkZXJcIiBbaW5kZXhdPVwidmlydHVhbFNjcm9sbENvbnRhaW5lci5pZ3hGb3JPZi5sZW5ndGhcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJhZGRJdGVtVGVtcGxhdGUgPyBhZGRJdGVtVGVtcGxhdGUgOiBhZGRJdGVtRGVmYXVsdFwiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvaWd4LWNvbWJvLWFkZC1pdGVtPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb290ZXJUZW1wbGF0ZVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9pZ3gtY29tYm8tZHJvcC1kb3duPlxuPG5nLXRlbXBsYXRlICNjb21wbGV4IGxldC1kaXNwbGF5IGxldC1kYXRhPVwiZGF0YVwiIGxldC1rZXk9XCJkaXNwbGF5S2V5XCI+XG4gICAge3tkaXNwbGF5W2tleV19fVxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjcHJpbWl0aXZlIGxldC1kaXNwbGF5PlxuICAgIHt7ZGlzcGxheX19XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNlbXB0eT5cbiAgICA8c3Bhbj57e3Jlc291cmNlU3RyaW5ncy5pZ3hfY29tYm9fZW1wdHlfbWVzc2FnZX19PC9zcGFuPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjYWRkSXRlbURlZmF1bHQgbGV0LWNvbnRyb2w+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWd4QnV0dG9uPVwiZmxhdFwiIGlneFJpcHBsZT57eyByZXNvdXJjZVN0cmluZ3MuaWd4X2NvbWJvX2FkZEN1c3RvbVZhbHVlc19wbGFjZWhvbGRlciB9fTwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjaGVhZGVySXRlbUJhc2UgbGV0LWl0ZW0gbGV0LWtleT1cInZhbHVlS2V5XCIgbGV0LWdyb3VwS2V5PVwiZ3JvdXBLZXlcIj5cbiAgICB7eyBpdGVtW2tleV0gfX1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,4 +1,6 @@
1
1
  export const ComboResourceStringsEN = {
2
- igx_combo_empty_message: 'The list is empty'
2
+ igx_combo_empty_message: 'The list is empty',
3
+ igx_combo_addCustomValues_placeholder: 'Add Item',
4
+ igx_combo_clearItems_placeholder: 'Clear Selection'
3
5
  };
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8tcmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvaTE4bi9jb21iby1yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTBCO0lBQ3pELHVCQUF1QixFQUFFLG1CQUFtQjtDQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQ29tYm9SZXNvdXJjZVN0cmluZ3Mge1xuICAgIGlneF9jb21ib19lbXB0eV9tZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgQ29tYm9SZXNvdXJjZVN0cmluZ3NFTjogSUNvbWJvUmVzb3VyY2VTdHJpbmdzID0ge1xuICAgIGlneF9jb21ib19lbXB0eV9tZXNzYWdlOiAnVGhlIGxpc3QgaXMgZW1wdHknXG59O1xuIl19
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8tcmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvaTE4bi9jb21iby1yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQTBCO0lBQ3pELHVCQUF1QixFQUFFLG1CQUFtQjtJQUM1QyxxQ0FBcUMsRUFBRSxVQUFVO0lBQ2pELGdDQUFnQyxFQUFFLGlCQUFpQjtDQUV0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJQ29tYm9SZXNvdXJjZVN0cmluZ3Mge1xuICAgIGlneF9jb21ib19lbXB0eV9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9jb21ib19hZGRDdXN0b21WYWx1ZXNfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2NvbWJvX2NsZWFySXRlbXNfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBDb21ib1Jlc291cmNlU3RyaW5nc0VOOiBJQ29tYm9SZXNvdXJjZVN0cmluZ3MgPSB7XG4gICAgaWd4X2NvbWJvX2VtcHR5X21lc3NhZ2U6ICdUaGUgbGlzdCBpcyBlbXB0eScsXG4gICAgaWd4X2NvbWJvX2FkZEN1c3RvbVZhbHVlc19wbGFjZWhvbGRlcjogJ0FkZCBJdGVtJyxcbiAgICBpZ3hfY29tYm9fY2xlYXJJdGVtc19wbGFjZWhvbGRlcjogJ0NsZWFyIFNlbGVjdGlvbidcblxufTtcbiJdfQ==
@@ -110,6 +110,7 @@ export const GridResourceStringsEN = {
110
110
  igx_grid_pinning_uncheck_all_label: 'Unpin All',
111
111
  igx_grid_row_edit_btn_done: 'Done',
112
112
  igx_grid_row_edit_btn_cancel: 'Cancel',
113
+ igx_grid_row_edit_text: 'You have {0} changes in this row and {1} hidden columns',
113
114
  igx_grid_toolbar_actions_filter_prompt: 'Filter columns list ...',
114
115
  igx_grid_toolbar_pinning_button_tooltip: 'Open column pinning dropdown',
115
116
  igx_grid_toolbar_hiding_button_tooltip: 'Open column hiding dropdown',
@@ -164,4 +165,4 @@ export const GridResourceStringsEN = {
164
165
  igx_grid_email_validation_error: 'A valid email address should be entered',
165
166
  igx_grid_pattern_validation_error: 'Entry does not match the required pattern'
166
167
  };
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1yZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVLQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDdkQsNEJBQTRCLEVBQUUsZ0VBQWdFO0lBQzlGLG1DQUFtQyxFQUFFLGlFQUFpRTtJQUN0RyxxQ0FBcUMsRUFBRSxtRUFBbUU7SUFDMUcsa0NBQWtDLEVBQUUsbUJBQW1CO0lBQ3ZELDBCQUEwQixFQUFFLG1CQUFtQjtJQUMvQyxlQUFlLEVBQUUsUUFBUTtJQUN6Qix5QkFBeUIsRUFBRSxPQUFPO0lBQ2xDLHlCQUF5QixFQUFFLE9BQU87SUFDbEMsK0JBQStCLEVBQUUsa0JBQWtCO0lBQ25ELHVDQUF1QyxFQUFFLEtBQUs7SUFDOUMsb0NBQW9DLEVBQUUsY0FBYztJQUNwRCxvQ0FBb0MsRUFBRSxjQUFjO0lBQ3BELDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsMkJBQTJCLEVBQUUsSUFBSTtJQUNqQyx1QkFBdUIsRUFBRSxnQkFBZ0I7SUFDekMsd0JBQXdCLEVBQUUsVUFBVTtJQUNwQyw4QkFBOEIsRUFBRSxrQkFBa0I7SUFDbEQsMEJBQTBCLEVBQUUsYUFBYTtJQUN6Qyx3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsNEJBQTRCLEVBQUUsZ0JBQWdCO0lBQzlDLHFCQUFxQixFQUFFLE9BQU87SUFDOUIsd0JBQXdCLEVBQUUsV0FBVztJQUNyQyxvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyx5QkFB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QUUsMEJBQTBCO0lBQ2pFLHFDQUFxQyxFQUFFLDBCQUEwQjtJQUNqRSxvQ0FBb0MsRUFBRSx5QkFBeUI7SUFDL0QsNEJBQTRCLEVBQUUseUJBQXlCO0lBQ3ZELCtCQUErQixFQUFFLDRCQUE0QjtJQUM3RCwrQkFBK0IsRUFBRSw0QkFBNEI7SUFDN0QsOEJBQThCLEVBQUUsMkJBQTJCO0lBQzNELDRCQUE0QixFQUFFLDBDQUEwQztJQUN4RSwrQkFBK0IsRUFBRSxTQUFTO0lBQzFDLDRCQUE0QixFQUFFLE1BQU07SUFDcEMsK0JBQStCLEVBQUUsU0FBUztJQUMxQyw4QkFBOEIsRUFBRSxRQUFRO0lBQ3hDLG1DQUFtQyxFQUFFLGlCQUFpQjtJQUN0RCxrQ0FBa0MsRUFBRSx3QkFBd0I7SUFDNUQsNkJBQTZCLEVBQUUsMkNBQTJDO0lBQzFFLDZCQUE2QixFQUFFLDRDQUE0QztJQUMzRSxvQ0FBb0MsRUFBRSxnREFBZ0Q7SUFDdEYsb0NBQW9DLEVBQUUsb0RBQW9EO0lBQzFGLCtCQUErQixFQUFFLHlDQUF5QztJQUMxRSxpQ0FBaUMsRUFBRSwyQ0FBMkM7Q0FDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSZXNvdXJjZVN0cmluZ3Mge1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZ3JvdXBCeUFyZWFfc2VsZWN0X21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZ3JvdXBCeUFyZWFfZGVzZWxlY3RfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9lbXB0eUZpbHRlcmVkR3JpZF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtcHR5R3JpZF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Jvb2xlYW5fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfdGltZV9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfb3BlcmF0b3JfYW5kPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2NvbXBsZXhfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9zdGFydHNXaXRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9lbmRzV2l0aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9kb2VzTm90RXF1YWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2VtcHR5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ub3RFbXB0eT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbnVsbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90TnVsbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYmVmb3JlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hZnRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdF9hdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hdF9hZnRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdG9kYXk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3llc3RlcmRheT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdGhpc01vbnRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sYXN0TW9udGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdGhpc1llYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9uZXh0WWVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW4/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbk9yRXF1YWxUbz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGVzc1RoYW5PckVxdWFsVG8/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2ZhbHNlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hbGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2NvdW50Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbWluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfc3VtPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfYXZlcmFnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnRfc2hvcnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19yaWdodD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2FzYz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfZGVzYz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfY2xlYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19hZGQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXN0b21fZGlhbG9nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jYW5jZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdF9hbGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0cz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9hZGRfdG9fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2JsYW5rcz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9oaWRlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3Nob3c/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfcGluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF90ZXh0X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9udW1iZXJfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXN0b21fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfbWF0Y2hlc19jb3VudD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2VuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfY3JlYXRlX2FuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfY3JlYXRlX29yX2dyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX29yX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hZGRfY29uZGl0aW9uPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9kZWxldGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdmFsdWVfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmVkX3Jvd19pbmRpY2F0b3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmluZ191bmNoZWNrX2FsbF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fY2FuY2VsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfY3N2X2VudHJ5X3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19hY3Rpb250ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfcGluX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wRG93bl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW0/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2F2Zz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3Jvd19kcm9wX2FyZWE/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3ZhbHVlX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9yb3dfZHJvcF9jaGlwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2NvbHVtbl9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZmlsdGVyX2Ryb3BfY2hpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF92YWx1ZV9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3Jvd3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcmVxdWlyZWRfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fbGVuZ3RoX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGF0dGVybl92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgR3JpZFJlc291cmNlU3RyaW5nc0VOOiBJR3JpZFJlc291cmNlU3RyaW5ncyA9IHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlOiAnRHJhZyBhIGNvbHVtbiBoZWFkZXIgYW5kIGRyb3AgaXQgaGVyZSB0byBncm91cCBieSB0aGF0IGNvbHVtbi4nLFxuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlOiAnU2VsZWN0IGFsbCByb3dzIGluIHRoZSBncm91cCB3aXRoIGZpZWxkIG5hbWUgezB9IGFuZCB2YWx1ZSB7MX0uJyxcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9kZXNlbGVjdF9tZXNzYWdlOiAnRGVzZWxlY3QgYWxsIHJvd3MgaW4gdGhlIGdyb3VwIHdpdGggZmllbGQgbmFtZSB7MH0gYW5kIHZhbHVlIHsxfS4nLFxuICAgIGlneF9ncmlkX2VtcHR5RmlsdGVyZWRHcmlkX21lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kLicsXG4gICAgaWd4X2dyaWRfZW1wdHlHcmlkX21lc3NhZ2U6ICdHcmlkIGhhcyBubyBkYXRhLicsXG4gICAgaWd4X2dyaWRfZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlOiAnQ2xvc2UnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ6ICdSZXNldCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcjogJ0FkZCBmaWx0ZXIgdmFsdWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfYm9vbGVhbl9wbGFjZWhvbGRlcjogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyOiAnUGljayB1cCBkYXRlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI6ICdQaWNrIHVwIHRpbWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9hbmQ6ICdBbmQnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcjogJ09yJyxcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcjogJ0NvbXBsZXggRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM6ICdDb250YWlucycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluOiAnRG9lcyBOb3QgQ29udGFpbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3N0YXJ0c1dpdGg6ICdTdGFydHMgV2l0aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2VuZHNXaXRoOiAnRW5kcyBXaXRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzOiAnRXF1YWxzJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsOiAnRG9lcyBOb3QgRXF1YWwnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eTogJ0VtcHR5JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk6ICdOb3QgRW1wdHknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9udWxsOiAnTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw6ICdOb3QgTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZTogJ0JlZm9yZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FmdGVyOiAnQWZ0ZXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9hdDogJ0F0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90X2F0OiAnTm90IEF0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlOiAnQXQgb3IgQmVmb3JlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI6ICdBdCBvciBBZnRlcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5OiAnVG9kYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzTW9udGg6ICdUaGlzIE1vbnRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoOiAnTGFzdCBNb250aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aDogJ05leHQgTW9udGgnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzWWVhcjogJ1RoaXMgWWVhcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyOiAnTGFzdCBZZWFyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI6ICdOZXh0IFllYXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbjogJ0dyZWF0ZXIgVGhhbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuOiAnTGVzcyBUaGFuJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG86ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWwgVG8nLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbk9yRXF1YWxUbzogJ0xlc3MgVGhhbiBPciBFcXVhbCBUbycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU6ICdUcnVlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZmFsc2U6ICdGYWxzZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FsbDogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9taW46ICdNaW4nLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4OiAnTWF4JyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bTogJ1N1bScsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9hdmVyYWdlOiAnQXZnJyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0OiAnRWFybGllc3QnLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0OiAnTGF0ZXN0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ6ICdtb3ZlIGxlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdF9zaG9ydDogJ2xlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ6ICdtb3ZlIHJpZ2h0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0OiAncmlnaHQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyOiAnbW92ZScsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjOiAnYXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ6ICdhc2MnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M6ICdkZXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0OiAnZGVzYycsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfaGVhZGVyOiAnc29ydCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyOiAnQ2xlYXIgY29sdW1uIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkOiAnYWRkIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcjogJ0NsZWFyIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI6ICdDdXN0b20gYXV0by1maWx0ZXIgb24gY29sdW1uOiAnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2NhbmNlbDogJ2NhbmNlbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk6ICdhcHBseScsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsOiAnU2VsZWN0IEFsbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0czogJ1NlbGVjdCBhbGwgc2VhcmNoIHJlc3VsdHMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2FkZF90b19maWx0ZXI6ICdBZGQgY3VycmVudCBzZWxlY3Rpb24gdG8gZmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M6ICcoQmxhbmtzKScsXG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZTogJ0hpZGUgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93OiAnU2hvdyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3BpbjogJ1BpbiBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluOiAnVW5waW4gY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q6ICdTZWxlY3QgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdDogJ0Rlc2VsZWN0IGNvbHVtbicsXG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI6ICdUZXh0IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcjogJ051bWJlciBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyOiAnRGF0ZSBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyOiAnQm9vbGVhbiBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcjogJ0N1cnJlbmN5IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcjogJ0N1c3RvbSBmaWx0ZXIuLi4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM6ICdObyBtYXRjaGVzJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9tYXRjaGVzX2NvdW50OiAnezB9IG1hdGNoZXMuJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU6ICdBZHZhbmNlZCBGaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA6ICdcIkFuZFwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA6ICdcIk9yXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA6ICdFbmQgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfYW5kX2dyb3VwOiAnQ3JlYXRlIFwiQW5kXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfb3JfZ3JvdXA6ICdDcmVhdGUgXCJPclwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsOiAnYW5kJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfbGFiZWw6ICdvcicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FkZF9jb25kaXRpb246ICdDb25kaXRpb24nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwOiAnVW5ncm91cCcsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZTogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzOiAnRGVsZXRlIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ6ICdTdGFydCB3aXRoIGNyZWF0aW5nIGEgZ3JvdXAgb2YgY29uZGl0aW9ucyBsaW5rZWQgd2l0aCBcIkFuZFwiIG9yIFwiT3JcIicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl92YWx1ZV9wbGFjZWhvbGRlcjogJ1ZhbHVlJyxcbiAgICBpZ3hfZ3JpZF9waW5uZWRfcm93X2luZGljYXRvcjogJ1Bpbm5lZCcsXG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbDogJ1Nob3cgQWxsJyxcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw6ICdIaWRlIEFsbCcsXG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw6ICdQaW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9waW5uaW5nX3VuY2hlY2tfYWxsX2xhYmVsOiAnVW5waW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZTogJ0RvbmUnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X2J0bl9jYW5jZWw6ICdDYW5jZWwnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0OiAnRmlsdGVyIGNvbHVtbnMgbGlzdCAuLi4nLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gY29sdW1uIHBpbm5pbmcgZHJvcGRvd24nLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfaGlkaW5nX2J1dHRvbl90b29sdGlwOiAnT3BlbiBjb2x1bW4gaGlkaW5nIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU6ICdQaW5uZWQgY29sdW1ucycsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU6ICdWaXNpYmxlIGNvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWR2YW5jZWRfZmlsdGVyaW5nX2J1dHRvbl90b29sdGlwOiAnT3BlbiBhZHZhbmNlZCBmaWx0ZXJpbmcgZGlhbG9nJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FkdmFuY2VkX2ZpbHRlcmluZ19idXR0b25fbGFiZWw6ICdBZHZhbmNlZCBmaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA6ICdPcGVuIGV4cG9ydGVyIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2J1dHRvbl9sYWJlbDogJ0V4cG9ydCcsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0OiAnRXhwb3J0IHRvIEV4Y2VsJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2Nzdl9lbnRyeV90ZXh0OiAnRXhwb3J0IHRvIENTVicsXG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsOiAnUm93IGFkZGVkJyxcbiAgICBpZ3hfZ3JpZF9zbmFja2Jhcl9hZGRyb3dfYWN0aW9udGV4dDogJ1NIT1cnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbDogJ0VkaXQnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2xhYmVsOiAnQWRkJyxcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsOiAnQUREIFJPVycsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19hZGRfY2hpbGRfbGFiZWw6ICdBZGQgQ2hpbGQnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsOiAnRGVsZXRlJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX3Bpbl9sYWJlbDogJ1BpbicsXG4gICAgaWd4X2dyaWRfYWN0aW9uc191bnBpbl9sYWJlbDogJ1VucGluJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2p1bXBVcF9sYWJlbDogJ0p1bXAgdXAnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfanVtcERvd25fbGFiZWw6ICdKdW1wIGRvd24nLFxuICAgIGlneF9ncmlkX3Bpdm90X2RhdGVfZGltZW5zaW9uX3RvdGFsOiAnQWxsIFBlcmlvZHMnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9jb3VudDogJ0NvdW50JyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWluOiAnTWluaW11bScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21heDogJ01heGltdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW06ICdTdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9hdmc6ICdBdmVyYWdlJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q6ICdMYXRlc3QgRGF0ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q6ICdFYXJsaWVzdCBEYXRlJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfdGltZV9sYXRlc3Q6ICdMYXRlc3QgVGltZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfZWFybGllc3Q6ICdFYXJsaWVzdCBUaW1lJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9yb3dfZHJvcF9hcmVhOiAnRHJvcCBSb3cgRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9jb2x1bW5fZHJvcF9hcmVhOiAnRHJvcCBDb2x1bW4gRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhOiAnRHJvcCBGaWx0ZXIgRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV92YWx1ZV9kcm9wX2FyZWE6ICdEcm9wIFZhbHVlIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3Rfcm93X2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgcm93JyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9jb2x1bW5fZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX3Bpdm90X2ZpbHRlcl9kcm9wX2NoaXA6ICdEcm9wIGhlcmUgdG8gdXNlIGFzIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfcGl2b3RfdmFsdWVfZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyB2YWx1ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZTogJ1Bpdm90IGdyaWQgaGFzIG5vIGRpbWVuc2lvbnMgYW5kIHZhbHVlcy4nLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2ZpbHRlcnM6ICdGaWx0ZXJzJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9yb3dzOiAnUm93cycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1uczogJ0NvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlczogJ1ZhbHVlcycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk6ICdEcm9wIEl0ZW1zIEhlcmUnLFxuICAgIGlneF9ncmlkX3JlcXVpcmVkX3ZhbGlkYXRpb25fZXJyb3I6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyxcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcjogJ0EgdmFsdWUgb2YgYXQgbGVhc3QgezB9IHNob3VsZCBiZSBlbnRlcmVkJyxcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcjogJ0EgdmFsdWUgbm8gbW9yZSB0aGFuIHswfSBzaG91bGQgYmUgZW50ZXJlZCcsXG4gICAgaWd4X2dyaWRfbWluX2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yOiAnRW50cnkgc2hvdWxkIGJlIGF0IGxlYXN0IHswfSBjaGFyYWN0ZXIocykgbG9uZycsXG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yOiAnRW50cnkgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiB7MH0gY2hhcmFjdGVyKHMpIGxvbmcnLFxuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbGlkIGVtYWlsIGFkZHJlc3Mgc2hvdWxkIGJlIGVudGVyZWQnLFxuICAgIGlneF9ncmlkX3BhdHRlcm5fdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBwYXR0ZXJuJ1xufTtcbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1yZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdLQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDdkQsNEJBQTRCLEVBQUUsZ0VBQWdFO0lBQzlGLG1DQUFtQyxFQUFFLGlFQUFpRTtJQUN0RyxxQ0FBcUMsRUFBRSxtRUFBbUU7SUFDMUcsa0NBQWtDLEVBQUUsbUJBQW1CO0lBQ3ZELDBCQUEwQixFQUFFLG1CQUFtQjtJQUMvQyxlQUFlLEVBQUUsUUFBUTtJQUN6Qix5QkFBeUIsRUFBRSxPQUFPO0lBQ2xDLHlCQUF5QixFQUFFLE9BQU87SUFDbEMsK0JBQStCLEVBQUUsa0JBQWtCO0lBQ25ELHVDQUF1QyxFQUFFLEtBQUs7SUFDOUMsb0NBQW9DLEVBQUUsY0FBYztJQUNwRCxvQ0FBb0MsRUFBRSxjQUFjO0lBQ3BELDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsMkJBQTJCLEVBQUUsSUFBSTtJQUNqQyx1QkFBdUIsRUFBRSxnQkFBZ0I7SUFDekMsd0JBQXdCLEVBQUUsVUFBVTtJQUNwQyw4QkFBOEIsRUFBRSxrQkFBa0I7SUFDbEQsMEJBQTBCLEVBQUUsYUFBYTtJQUN6Qyx3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsNEJBQTRCLEVBQUUsZ0JBQWdCO0lBQzlDLHFCQUFxQixFQUFFLE9BQU87SUFDOUIsd0JBQXdCLEVBQUUsV0FBVztJQUNyQyxvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyx5QkFB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QUUsdUJBQXVCO0lBQzNELHFDQUFxQyxFQUFFLDBCQUEwQjtJQUNqRSxxQ0FBcUMsRUFBRSwwQkFBMEI7SUFDakUsb0NBQW9DLEVBQUUseUJBQXlCO0lBQy9ELDRCQUE0QixFQUFFLHlCQUF5QjtJQUN2RCwrQkFBK0IsRUFBRSw0QkFBNEI7SUFDN0QsK0JBQStCLEVBQUUsNEJBQTRCO0lBQzdELDhCQUE4QixFQUFFLDJCQUEyQjtJQUMzRCw0QkFBNEIsRUFBRSwwQ0FBMEM7SUFDeEUsK0JBQStCLEVBQUUsU0FBUztJQUMxQyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLCtCQUErQixFQUFFLFNBQVM7SUFDMUMsOEJBQThCLEVBQUUsUUFBUTtJQUN4QyxtQ0FBbUMsRUFBRSxpQkFBaUI7SUFDdEQsa0NBQWtDLEVBQUUsd0JBQXdCO0lBQzVELDZCQUE2QixFQUFFLDJDQUEyQztJQUMxRSw2QkFBNkIsRUFBRSw0Q0FBNEM7SUFDM0Usb0NBQW9DLEVBQUUsZ0RBQWdEO0lBQ3RGLG9DQUFvQyxFQUFFLG9EQUFvRDtJQUMxRiwrQkFBK0IsRUFBRSx5Q0FBeUM7SUFDMUUsaUNBQWlDLEVBQUUsMkNBQTJDO0NBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElHcmlkUmVzb3VyY2VTdHJpbmdzIHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX2Rlc2VsZWN0X21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZW1wdHlGaWx0ZXJlZEdyaWRfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9lbXB0eUdyaWRfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19jbG9zZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3Jlc2V0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19ib29sZWFuX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfZGF0ZV9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX29wZXJhdG9yX2FuZD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfb3BlcmF0b3Jfb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbnRhaW5zPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9kb2VzTm90Q29udGFpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfc3RhcnRzV2l0aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZW5kc1dpdGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2VxdWFscz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX251bGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYWZ0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2F0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ub3RfYXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2F0X2JlZm9yZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RoaXNNb250aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9uZXh0TW9udGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RoaXNZZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sYXN0WWVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2dyZWF0ZXJUaGFuPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG8/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuT3JFcXVhbFRvPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl90cnVlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9mYWxzZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYWxsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9jb25kaXRpb25fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc3VtbWFyeV9jb3VudD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X21heD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2F2ZXJhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc3VtbWFyeV9lYXJsaWVzdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2xhdGVzdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19sZWZ0X3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19yaWdodF9zaG9ydD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjX3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfZGVzY19zaG9ydD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19oZWFkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfY2xlYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY2FuY2VsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2FwcGx5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlYXJjaF9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdF9hbGxfc2VhcmNoX3Jlc3VsdHM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfYWRkX3RvX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3Bpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF91bnBpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZGVzZWxlY3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9kYXRlX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ib29sZWFuX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXJyZW5jeV9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ub19tYXRjaGVzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX21hdGNoZXNfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3RpdGxlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX29yX2dyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NyZWF0ZV9hbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NyZWF0ZV9vcl9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9vcl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYWRkX2NvbmRpdGlvbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdW5ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfZGVsZXRlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9kZWxldGVfZmlsdGVycz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfaW5pdGlhbF90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jb2x1bW5fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3ZhbHVlX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5lZF9yb3dfaW5kaWNhdG9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2hpZGluZ19jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfaGlkaW5nX3VuY2hlY2tfYWxsX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5pbmdfY2hlY2tfYWxsX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5pbmdfdW5jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcm93X2VkaXRfYnRuX2RvbmU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcm93X2VkaXRfYnRuX2NhbmNlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfY3N2X2VudHJ5X3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19hY3Rpb250ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfcGluX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wRG93bl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW0/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2F2Zz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3Jvd19kcm9wX2FyZWE/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3ZhbHVlX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9yb3dfZHJvcF9jaGlwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2NvbHVtbl9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZmlsdGVyX2Ryb3BfY2hpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF92YWx1ZV9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3Jvd3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcmVxdWlyZWRfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fbGVuZ3RoX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGF0dGVybl92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgR3JpZFJlc291cmNlU3RyaW5nc0VOOiBJR3JpZFJlc291cmNlU3RyaW5ncyA9IHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlOiAnRHJhZyBhIGNvbHVtbiBoZWFkZXIgYW5kIGRyb3AgaXQgaGVyZSB0byBncm91cCBieSB0aGF0IGNvbHVtbi4nLFxuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlOiAnU2VsZWN0IGFsbCByb3dzIGluIHRoZSBncm91cCB3aXRoIGZpZWxkIG5hbWUgezB9IGFuZCB2YWx1ZSB7MX0uJyxcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9kZXNlbGVjdF9tZXNzYWdlOiAnRGVzZWxlY3QgYWxsIHJvd3MgaW4gdGhlIGdyb3VwIHdpdGggZmllbGQgbmFtZSB7MH0gYW5kIHZhbHVlIHsxfS4nLFxuICAgIGlneF9ncmlkX2VtcHR5RmlsdGVyZWRHcmlkX21lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kLicsXG4gICAgaWd4X2dyaWRfZW1wdHlHcmlkX21lc3NhZ2U6ICdHcmlkIGhhcyBubyBkYXRhLicsXG4gICAgaWd4X2dyaWRfZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlOiAnQ2xvc2UnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ6ICdSZXNldCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcjogJ0FkZCBmaWx0ZXIgdmFsdWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfYm9vbGVhbl9wbGFjZWhvbGRlcjogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyOiAnUGljayB1cCBkYXRlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI6ICdQaWNrIHVwIHRpbWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9hbmQ6ICdBbmQnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcjogJ09yJyxcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcjogJ0NvbXBsZXggRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM6ICdDb250YWlucycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluOiAnRG9lcyBOb3QgQ29udGFpbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3N0YXJ0c1dpdGg6ICdTdGFydHMgV2l0aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2VuZHNXaXRoOiAnRW5kcyBXaXRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzOiAnRXF1YWxzJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsOiAnRG9lcyBOb3QgRXF1YWwnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eTogJ0VtcHR5JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk6ICdOb3QgRW1wdHknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9udWxsOiAnTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw6ICdOb3QgTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZTogJ0JlZm9yZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FmdGVyOiAnQWZ0ZXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9hdDogJ0F0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90X2F0OiAnTm90IEF0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlOiAnQXQgb3IgQmVmb3JlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI6ICdBdCBvciBBZnRlcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5OiAnVG9kYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzTW9udGg6ICdUaGlzIE1vbnRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoOiAnTGFzdCBNb250aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aDogJ05leHQgTW9udGgnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzWWVhcjogJ1RoaXMgWWVhcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyOiAnTGFzdCBZZWFyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI6ICdOZXh0IFllYXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbjogJ0dyZWF0ZXIgVGhhbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuOiAnTGVzcyBUaGFuJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG86ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWwgVG8nLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbk9yRXF1YWxUbzogJ0xlc3MgVGhhbiBPciBFcXVhbCBUbycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU6ICdUcnVlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZmFsc2U6ICdGYWxzZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FsbDogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9taW46ICdNaW4nLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4OiAnTWF4JyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bTogJ1N1bScsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9hdmVyYWdlOiAnQXZnJyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0OiAnRWFybGllc3QnLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0OiAnTGF0ZXN0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ6ICdtb3ZlIGxlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdF9zaG9ydDogJ2xlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ6ICdtb3ZlIHJpZ2h0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0OiAncmlnaHQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyOiAnbW92ZScsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjOiAnYXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ6ICdhc2MnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M6ICdkZXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0OiAnZGVzYycsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfaGVhZGVyOiAnc29ydCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyOiAnQ2xlYXIgY29sdW1uIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkOiAnYWRkIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcjogJ0NsZWFyIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI6ICdDdXN0b20gYXV0by1maWx0ZXIgb24gY29sdW1uOiAnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2NhbmNlbDogJ2NhbmNlbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk6ICdhcHBseScsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsOiAnU2VsZWN0IEFsbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0czogJ1NlbGVjdCBhbGwgc2VhcmNoIHJlc3VsdHMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2FkZF90b19maWx0ZXI6ICdBZGQgY3VycmVudCBzZWxlY3Rpb24gdG8gZmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M6ICcoQmxhbmtzKScsXG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZTogJ0hpZGUgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93OiAnU2hvdyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3BpbjogJ1BpbiBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluOiAnVW5waW4gY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q6ICdTZWxlY3QgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdDogJ0Rlc2VsZWN0IGNvbHVtbicsXG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI6ICdUZXh0IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcjogJ051bWJlciBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyOiAnRGF0ZSBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyOiAnQm9vbGVhbiBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcjogJ0N1cnJlbmN5IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcjogJ0N1c3RvbSBmaWx0ZXIuLi4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM6ICdObyBtYXRjaGVzJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9tYXRjaGVzX2NvdW50OiAnezB9IG1hdGNoZXMuJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU6ICdBZHZhbmNlZCBGaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA6ICdcIkFuZFwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA6ICdcIk9yXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA6ICdFbmQgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfYW5kX2dyb3VwOiAnQ3JlYXRlIFwiQW5kXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfb3JfZ3JvdXA6ICdDcmVhdGUgXCJPclwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsOiAnYW5kJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfbGFiZWw6ICdvcicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FkZF9jb25kaXRpb246ICdDb25kaXRpb24nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwOiAnVW5ncm91cCcsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZTogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzOiAnRGVsZXRlIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ6ICdTdGFydCB3aXRoIGNyZWF0aW5nIGEgZ3JvdXAgb2YgY29uZGl0aW9ucyBsaW5rZWQgd2l0aCBcIkFuZFwiIG9yIFwiT3JcIicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl92YWx1ZV9wbGFjZWhvbGRlcjogJ1ZhbHVlJyxcbiAgICBpZ3hfZ3JpZF9waW5uZWRfcm93X2luZGljYXRvcjogJ1Bpbm5lZCcsXG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbDogJ1Nob3cgQWxsJyxcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw6ICdIaWRlIEFsbCcsXG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw6ICdQaW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9waW5uaW5nX3VuY2hlY2tfYWxsX2xhYmVsOiAnVW5waW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZTogJ0RvbmUnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X2J0bl9jYW5jZWw6ICdDYW5jZWwnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X3RleHQ6ICdZb3UgaGF2ZSB7MH0gY2hhbmdlcyBpbiB0aGlzIHJvdyBhbmQgezF9IGhpZGRlbiBjb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FjdGlvbnNfZmlsdGVyX3Byb21wdDogJ0ZpbHRlciBjb2x1bW5zIGxpc3QgLi4uJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfYnV0dG9uX3Rvb2x0aXA6ICdPcGVuIGNvbHVtbiBwaW5uaW5nIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gY29sdW1uIGhpZGluZyBkcm9wZG93bicsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9waW5uaW5nX3RpdGxlOiAnUGlubmVkIGNvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfaGlkaW5nX3RpdGxlOiAnVmlzaWJsZSBjb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FkdmFuY2VkX2ZpbHRlcmluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gYWR2YW5jZWQgZmlsdGVyaW5nIGRpYWxvZycsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsOiAnQWR2YW5jZWQgZmlsdGVyaW5nJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2J1dHRvbl90b29sdGlwOiAnT3BlbiBleHBvcnRlciBkcm9wZG93bicsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw6ICdFeHBvcnQnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfZXhjZWxfZW50cnlfdGV4dDogJ0V4cG9ydCB0byBFeGNlbCcsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9jc3ZfZW50cnlfdGV4dDogJ0V4cG9ydCB0byBDU1YnLFxuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19sYWJlbDogJ1JvdyBhZGRlZCcsXG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2FjdGlvbnRleHQ6ICdTSE9XJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2VkaXRfbGFiZWw6ICdFZGl0JyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbDogJ0FkZCcsXG4gICAgaWd4X2dyaWRfYWRkX3Jvd19sYWJlbDogJ0FERCBST1cnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsOiAnQWRkIENoaWxkJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2RlbGV0ZV9sYWJlbDogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19waW5fbGFiZWw6ICdQaW4nLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw6ICdVbnBpbicsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw6ICdKdW1wIHVwJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2p1bXBEb3duX2xhYmVsOiAnSnVtcCBkb3duJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbDogJ0FsbCBQZXJpb2RzJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbjogJ01pbmltdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9tYXg6ICdNYXhpbXVtJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfc3VtOiAnU3VtJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfYXZnOiAnQXZlcmFnZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfbGF0ZXN0OiAnTGF0ZXN0IERhdGUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9kYXRlX2VhcmxpZXN0OiAnRWFybGllc3QgRGF0ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0OiAnTGF0ZXN0IFRpbWUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0OiAnRWFybGllc3QgVGltZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfcm93X2Ryb3BfYXJlYTogJ0Ryb3AgUm93IEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYTogJ0Ryb3AgQ29sdW1uIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfZmlsdGVyX2Ryb3BfYXJlYTogJ0Ryb3AgRmlsdGVyIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfdmFsdWVfZHJvcF9hcmVhOiAnRHJvcCBWYWx1ZSBGaWVsZHMgaGVyZS4nLFxuICAgIGlneF9ncmlkX3Bpdm90X3Jvd19kcm9wX2NoaXA6ICdEcm9wIGhlcmUgdG8gdXNlIGFzIHJvdycsXG4gICAgaWd4X2dyaWRfcGl2b3RfY29sdW1uX2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9maWx0ZXJfZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3Bpdm90X3ZhbHVlX2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgdmFsdWUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X21lc3NhZ2U6ICdQaXZvdCBncmlkIGhhcyBubyBkaW1lbnNpb25zIGFuZCB2YWx1ZXMuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzOiAnRmlsdGVycycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93czogJ1Jvd3MnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2NvbHVtbnM6ICdDb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM6ICdWYWx1ZXMnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3BhbmVsX2VtcHR5OiAnRHJvcCBJdGVtcyBIZXJlJyxcbiAgICBpZ3hfZ3JpZF9yZXF1aXJlZF92YWxpZGF0aW9uX2Vycm9yOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXG4gICAgaWd4X2dyaWRfbWluX3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbHVlIG9mIGF0IGxlYXN0IHswfSBzaG91bGQgYmUgZW50ZXJlZCcsXG4gICAgaWd4X2dyaWRfbWF4X3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbHVlIG5vIG1vcmUgdGhhbiB7MH0gc2hvdWxkIGJlIGVudGVyZWQnLFxuICAgIGlneF9ncmlkX21pbl9sZW5ndGhfdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IHNob3VsZCBiZSBhdCBsZWFzdCB7MH0gY2hhcmFjdGVyKHMpIGxvbmcnLFxuICAgIGlneF9ncmlkX21heF9sZW5ndGhfdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gezB9IGNoYXJhY3RlcihzKSBsb25nJyxcbiAgICBpZ3hfZ3JpZF9lbWFpbF92YWxpZGF0aW9uX2Vycm9yOiAnQSB2YWxpZCBlbWFpbCBhZGRyZXNzIHNob3VsZCBiZSBlbnRlcmVkJyxcbiAgICBpZ3hfZ3JpZF9wYXR0ZXJuX3ZhbGlkYXRpb25fZXJyb3I6ICdFbnRyeSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgcGF0dGVybidcbn07XG4iXX0=