@agorapulse/ui-components 16.2.19 → 16.2.20

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.
@@ -86,6 +86,7 @@ export class SelectComponent {
86
86
  }
87
87
  customOptionTemplate;
88
88
  customLabelTemplate;
89
+ customMultiLabelTemplate;
89
90
  compareWith;
90
91
  createNew = new EventEmitter();
91
92
  valueChanges = new EventEmitter();
@@ -313,7 +314,7 @@ export class SelectComponent {
313
314
  this.hiddenCountSignal.set(hiddenCount);
314
315
  }
315
316
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
316
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: SelectComponent, isStandalone: true, selector: "ap-select", inputs: { options: "options", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", appendTo: "appendTo", clearable: "clearable", description: "description", disabled: "disabled", selectId: "selectId", inlineLabel: "inlineLabel", create: "create", createText: "createText", group: "group", selectableGroup: "selectableGroup", label: "label", multiple: "multiple", only: "only", onlyText: "onlyText", placeholder: "placeholder", selectAll: "selectAll", selectAllText: "selectAllText", unselectAllText: "unselectAllText", searchable: "searchable", searchPlaceholder: "searchPlaceholder", searchFn: "searchFn", notFoundText: "notFoundText", loadingText: "loadingText", displayType: "displayType", optionLabel: "optionLabel", optionCaption: "optionCaption", optionDivider: "optionDivider", optionProfileImageUrl: "optionProfileImageUrl", optionBadgeLabel: "optionBadgeLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupTag: "optionGroupTag", maximumDisplayOptions: "maximumDisplayOptions", customOptionTemplate: "customOptionTemplate", customLabelTemplate: "customLabelTemplate", compareWith: "compareWith" }, outputs: { createNew: "createNew", valueChanges: "valueChanges" }, host: { properties: { "class.hovered": "this.hovered", "class.inline": "this.inlineLabel" } }, providers: [SELECT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inlineLabelElement", first: true, predicate: ["inlineLabel"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\n\n<ng-select\n #select\n class=\"ap-select\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"selectAll\">\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container *ngIf=\"(!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider])\">\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div\n class=\"option\"\n [class.with-caption]=\"optionLabel && optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple\">\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n", styles: ["@import\"@ng-select/ng-select/themes/default.theme.css\";ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:-moz-fit-content;width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}.ng-select.ap-select .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select .ng-select-container .ng-value-container:hover,.ng-select.ap-select .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-dropdown-panel.ap-select,.ap-select .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select.ng-select-bottom,.ap-select .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select .ng-option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select .ng-option .ng-option-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select .ng-option.ng-option-child,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select .ng-option:hover:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option:active:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option:focus:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple),.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked:hover,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled .disabled-opaque,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select .loading-state,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select .loading-state span,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .group,.ap-select .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select .group ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select .divider,.ap-select .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select .create-new,.ap-select .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select .create-new:hover,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .create-new:active,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .option,.ap-select .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select .option ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select .option .option-item,.ap-select .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select .option.not-found,.ap-select .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select .option .content,.ap-select .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select .option .content .item,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select .option .content .texts,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select .option .content .texts .first-line,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select .option .content .texts .first-line .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .option .content ap-symbol,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .content ap-symbol div.svg,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select .option.with-caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select .option.with-caption .label,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select .option.with-caption .caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .ng-dropdown-panel-items,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select .ng-optgroup,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-select-all,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select .ng-optgroup .group,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select .ng-optgroup .group .group-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header .select-all-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select .ng-dropdown-footer,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select .standalone-link,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select .standalone-link:hover,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .standalone-link:active,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i2.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i2.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: InputComponent, selector: "ap-input", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "disabled", "clearable", "inputType", "inputId", "name", "label", "description", "prefix", "suffix", "required", "placeholder", "errorMessage", "successMessage", "symbolId", "symbolPosition"], outputs: ["focus", "blur", "keyup"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["alternativeText", "anonymous", "username", "network", "online", "profilePicture", "showInitials", "alt", "rounded", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LabelComponent, selector: "ap-label", inputs: ["content", "selectorWidth", "removable"], outputs: ["remove"] }, { kind: "component", type: TagComponent, selector: "ap-tag", inputs: ["clearable", "color"], outputs: ["clear"] }, { kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
317
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: SelectComponent, isStandalone: true, selector: "ap-select", inputs: { options: "options", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", ariaDescribedBy: "ariaDescribedBy", appendTo: "appendTo", clearable: "clearable", description: "description", disabled: "disabled", selectId: "selectId", inlineLabel: "inlineLabel", create: "create", createText: "createText", group: "group", selectableGroup: "selectableGroup", label: "label", multiple: "multiple", only: "only", onlyText: "onlyText", placeholder: "placeholder", selectAll: "selectAll", selectAllText: "selectAllText", unselectAllText: "unselectAllText", searchable: "searchable", searchPlaceholder: "searchPlaceholder", searchFn: "searchFn", notFoundText: "notFoundText", loadingText: "loadingText", displayType: "displayType", optionLabel: "optionLabel", optionCaption: "optionCaption", optionDivider: "optionDivider", optionProfileImageUrl: "optionProfileImageUrl", optionBadgeLabel: "optionBadgeLabel", optionValue: "optionValue", optionDisabled: "optionDisabled", optionGroupLabel: "optionGroupLabel", optionGroupTag: "optionGroupTag", maximumDisplayOptions: "maximumDisplayOptions", customOptionTemplate: "customOptionTemplate", customLabelTemplate: "customLabelTemplate", customMultiLabelTemplate: "customMultiLabelTemplate", compareWith: "compareWith" }, outputs: { createNew: "createNew", valueChanges: "valueChanges" }, host: { properties: { "class.hovered": "this.hovered", "class.inline": "this.inlineLabel" } }, providers: [SELECT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "inlineLabelElement", first: true, predicate: ["inlineLabel"], descendants: true }, { propertyName: "select", first: true, predicate: ["select"], descendants: true }], ngImport: i0, template: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\n\n<ng-select\n #select\n class=\"ap-select\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"selectAll\">\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n <ng-container *ngIf=\"!customMultiLabelTemplate\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customMultiLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container *ngIf=\"(!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate\">\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(optionLabel && item[optionLabel]) || customOptionTemplate\">\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple\">\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n", styles: ["@import\"@ng-select/ng-select/themes/default.theme.css\";ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:-moz-fit-content;width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}.ng-select.ap-select .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select .ng-select-container .ng-value-container:hover,.ng-select.ap-select .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-dropdown-panel.ap-select,.ap-select .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select.ng-select-bottom,.ap-select .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select .ng-option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select .ng-option .ng-option-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select .ng-option.ng-option-child,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select .ng-option:hover:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option:active:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option:focus:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple),.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked:hover,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled .disabled-opaque,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select .loading-state,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select .loading-state span,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .group,.ap-select .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select .group ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select .divider,.ap-select .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select .create-new,.ap-select .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select .create-new:hover,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .create-new:active,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .option,.ap-select .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select .option ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select .option .option-item,.ap-select .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select .option.not-found,.ap-select .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select .option .content,.ap-select .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select .option .content .item,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select .option .content .texts,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select .option .content .texts .first-line,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select .option .content .texts .first-line .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .option .content ap-symbol,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .content ap-symbol div.svg,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select .option.with-caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select .option.with-caption .label,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select .option.with-caption .caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .ng-dropdown-panel-items,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select .ng-optgroup,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-select-all,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select .ng-optgroup .group,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select .ng-optgroup .group .group-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header .select-all-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select .ng-dropdown-footer,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select .standalone-link,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select .standalone-link:hover,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .standalone-link:active,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i2.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd", "deselectOnClick"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { kind: "directive", type: i2.NgOptgroupTemplateDirective, selector: "[ng-optgroup-tmp]" }, { kind: "directive", type: i2.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i2.NgLabelTemplateDirective, selector: "[ng-label-tmp]" }, { kind: "directive", type: i2.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i2.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "directive", type: i2.NgFooterTemplateDirective, selector: "[ng-footer-tmp]" }, { kind: "directive", type: i2.NgNotFoundTemplateDirective, selector: "[ng-notfound-tmp]" }, { kind: "directive", type: i2.NgLoadingTextTemplateDirective, selector: "[ng-loadingtext-tmp]" }, { kind: "directive", type: i2.NgLoadingSpinnerTemplateDirective, selector: "[ng-loadingspinner-tmp]" }, { kind: "component", type: InputComponent, selector: "ap-input", inputs: ["ariaLabel", "ariaLabelledBy", "ariaDescribedBy", "disabled", "clearable", "inputType", "inputId", "name", "label", "description", "prefix", "suffix", "required", "placeholder", "errorMessage", "successMessage", "symbolId", "symbolPosition"], outputs: ["focus", "blur", "keyup"] }, { kind: "component", type: SymbolComponent, selector: "ap-symbol", inputs: ["color", "symbolId", "size"] }, { kind: "component", type: CheckboxComponent, selector: "ap-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "disabled", "indeterminate", "checked", "required", "name"], outputs: ["change"] }, { kind: "component", type: AvatarComponent, selector: "ap-avatar", inputs: ["alternativeText", "anonymous", "username", "network", "online", "profilePicture", "showInitials", "alt", "rounded", "size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LabelComponent, selector: "ap-label", inputs: ["content", "selectorWidth", "removable"], outputs: ["remove"] }, { kind: "component", type: TagComponent, selector: "ap-tag", inputs: ["clearable", "color"], outputs: ["clear"] }, { kind: "component", type: BadgeComponent, selector: "ap-badge", inputs: ["color"] }, { kind: "component", type: LoaderComponent, selector: "ap-loader", inputs: ["color", "diameter"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
317
318
  }
318
319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: SelectComponent, decorators: [{
319
320
  type: Component,
@@ -334,7 +335,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
334
335
  TagComponent,
335
336
  BadgeComponent,
336
337
  LoaderComponent,
337
- ], providers: [SELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\n\n<ng-select\n #select\n class=\"ap-select\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"selectAll\">\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container *ngIf=\"(!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider])\">\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div\n class=\"option\"\n [class.with-caption]=\"optionLabel && optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple\">\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n", styles: ["@import\"@ng-select/ng-select/themes/default.theme.css\";ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:-moz-fit-content;width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}.ng-select.ap-select .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select .ng-select-container .ng-value-container:hover,.ng-select.ap-select .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-dropdown-panel.ap-select,.ap-select .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select.ng-select-bottom,.ap-select .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select .ng-option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select .ng-option .ng-option-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select .ng-option.ng-option-child,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select .ng-option:hover:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option:active:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option:focus:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple),.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked:hover,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled .disabled-opaque,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select .loading-state,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select .loading-state span,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .group,.ap-select .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select .group ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select .divider,.ap-select .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select .create-new,.ap-select .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select .create-new:hover,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .create-new:active,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .option,.ap-select .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select .option ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select .option .option-item,.ap-select .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select .option.not-found,.ap-select .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select .option .content,.ap-select .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select .option .content .item,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select .option .content .texts,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select .option .content .texts .first-line,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select .option .content .texts .first-line .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .option .content ap-symbol,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .content ap-symbol div.svg,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select .option.with-caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select .option.with-caption .label,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select .option.with-caption .caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .ng-dropdown-panel-items,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select .ng-optgroup,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-select-all,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select .ng-optgroup .group,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select .ng-optgroup .group .group-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header .select-all-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select .ng-dropdown-footer,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select .standalone-link,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select .standalone-link:hover,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .standalone-link:active,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}\n"] }]
338
+ ], providers: [SELECT_VALUE_ACCESSOR], encapsulation: ViewEncapsulation.None, template: "<label\n *ngIf=\"label && !inlineLabel\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n <span\n *ngIf=\"description\"\n class=\"description\">\n {{ description }}\n </span>\n</label>\n\n<div\n *ngIf=\"inlineLabel\"\n #inlineLabel\n tabindex=\"0\"\n class=\"inline-label\"\n (click)=\"onOpenSelect()\"\n (keydown.enter)=\"onOpenSelect()\"\n (mouseenter)=\"onInlineInputEnter()\"\n (mouseleave)=\"onInlineInputLeave()\">\n <label\n *ngIf=\"label && inlineLabel\"\n class=\"label\"\n [for]=\"selectId\">\n <span>\n {{ label }}\n </span>\n </label>\n <div class=\"divider\"></div>\n</div>\n\n<ng-select\n #select\n class=\"ap-select\"\n [tabIndex]=\"0\"\n [clearable]=\"clearable\"\n [placeholder]=\"placeholder\"\n [labelForId]=\"selectId\"\n [searchable]=\"false\"\n [closeOnSelect]=\"!multiple\"\n [bindValue]=\"optionValue ? optionValue : ''\"\n [groupBy]=\"group ? optionGroupLabel : ''\"\n [multiple]=\"multiple\"\n [disabled]=\"disabled\"\n [markFirst]=\"false\"\n [selectableGroup]=\"selectableGroup\"\n [selectableGroupAsModel]=\"false\"\n [appendTo]=\"appendTo\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledBy || null\"\n [attr.aria-describedby]=\"ariaDescribedBy || null\"\n [attr.aria-disabled]=\"disabled?.toString()\"\n [items]=\"optionsSignal()\"\n [compareWith]=\"compareWith\"\n [loading]=\"loadingSignal()\"\n [ngModel]=\"selectedValuesSignal()\"\n (ngModelChange)=\"onSelectedValuesChange($event)\"\n (open)=\"onSelectOpened()\">\n <ng-container *ngIf=\"searchable || selectAll\">\n <ng-template\n let-item=\"item\"\n ng-header-tmp>\n <ng-container *ngIf=\"searchable\">\n <ap-input\n #searchInput\n tabindex=\"0\"\n name=\"search-input\"\n class=\"full-width\"\n symbolId=\"search-alternate\"\n symbolPosition=\"right\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchTermSignal()\"\n (ngModelChange)=\"onSearchTermChange($event)\" />\n </ng-container>\n <ng-container *ngIf=\"selectAll\">\n <ap-checkbox\n class=\"select-all-checkbox\"\n name=\"option-group-select-all\"\n [indeterminate]=\"partialySelectedSignal()\"\n [checked]=\"allSelectedSignal()\"\n (click)=\"onToggleAll()\">\n <span>\n {{ partialySelectedSignal() || allSelectedSignal() ? unselectAllText : selectAllText }}\n </span>\n </ap-checkbox>\n </ng-container>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-optgroup-tmp>\n <div\n class=\"group\"\n [class.with-search]=\"searchable\"\n [class.with-select-all]=\"selectAll\">\n <ng-container *ngIf=\"!multiple\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ap-checkbox\n *ngIf=\"selectableGroup\"\n [name]=\"'option-group-selection-' + item['group']\"\n [indeterminate]=\"isGroupIndeterminate(item$.children)\"\n [checked]=\"isGroupChecked(item$.children)\">\n <span class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n <ap-badge\n *ngIf=\"optionGroupTag && optionGroupTag[item[optionGroupLabel]]\"\n color=\"blue\">\n {{ optionGroupTag[item[optionGroupLabel]] }}\n </ap-badge>\n </ap-checkbox>\n <span\n *ngIf=\"!selectableGroup\"\n class=\"group-label\">\n {{ item[optionGroupLabel] }}\n </span>\n </ng-container>\n </div>\n </ng-template>\n <ng-template\n let-items=\"items\"\n let-item$=\"item$\"\n ng-multi-label-tmp>\n <ng-container>\n <div class=\"multiple-item\">\n <ng-container *ngIf=\"!customMultiLabelTemplate\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n class=\"item\"\n removable=\"true\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n clearable=\"true\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!optionLabel || !item[optionLabel]\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"item text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n class=\"item\"\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"item text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"item with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span class=\"text-item\">\n {{ item }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customMultiLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customMultiLabelTemplate; context: { options: items }\" />\n </ng-container>\n </div>\n <div\n *ngIf=\"hiddenCountSignal() > 0\"\n class=\"remaining\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || displayTypeSignal() === 'withAvatar' || !displayTypeSignal()\">\n <span class=\"text-item\">+{{ hiddenCountSignal() }}</span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n clearable=\"false\">\n +{{ hiddenCountSignal() }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"false\"\n [content]=\"'+' + hiddenCountSignal()\" />\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template ng-loadingtext-tmp>\n <div class=\"loading-state\">\n <ap-loader diameter=\"30\" />\n <span>\n {{ loadingText }}\n </span>\n </div>\n </ng-template>\n <ng-template ng-loadingspinner-tmp></ng-template>\n <ng-container *ngIf=\"create\">\n <ng-template ng-footer-tmp>\n <button\n class=\"create-new\"\n type=\"button\"\n (click)=\"onCreateNew()\">\n <ap-symbol\n symbolId=\"add-2022\"\n size=\"micro\" />\n <span>\n {{ createText }}\n </span>\n <ng-container *ngIf=\"searchTermSignal()\">\"{{ searchTermSignal() }}\"</ng-container>\n </button>\n </ng-template>\n </ng-container>\n <ng-template\n let-item=\"item\"\n let-item$=\"item$\"\n ng-option-tmp>\n <ng-container *ngIf=\"(!optionLabel || !item[optionLabel]) && item && (!optionDivider || !item[optionDivider]) && !customOptionTemplate\">\n <div class=\"option\">\n <span\n class=\"option-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"(optionLabel && item[optionLabel]) || customOptionTemplate\">\n <div\n class=\"option\"\n [class.with-caption]=\"optionCaption && item[optionCaption]\"\n [class.multiple]=\"multiple\"\n (mouseenter)=\"onHoverItem(item$.htmlId)\"\n (mouseleave)=\"onLeaveItem()\">\n <ng-container *ngTemplateOutlet=\"contentItem; context: { item: item, item$: item$ }\" />\n </div>\n </ng-container>\n <ng-container *ngIf=\"optionDivider && item[optionDivider]\">\n <div class=\"divider\"></div>\n </ng-container>\n </ng-template>\n <ng-template\n let-item=\"item\"\n ng-label-tmp>\n <ng-container *ngIf=\"customLabelTemplate\">\n <ng-container *ngTemplateOutlet=\"customLabelTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"!optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span\n class=\"text-item\"\n [title]=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n (clear)=\"removeSelectedItem($event, item)\">\n {{ item }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <span class=\"text-item\">\n {{ item }}\n </span>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && !customLabelTemplate\">\n <ng-container *ngIf=\"displayTypeSignal() === 'text' || !displayTypeSignal()\">\n <span class=\"text-item\">\n {{ item[optionLabel] }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'label'\">\n <ap-label\n color=\"blue\"\n [removable]=\"multiple\"\n [content]=\"item[optionLabel]\"\n (remove)=\"removeSelectedItem($event, item)\" />\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'tag'\">\n <ap-tag\n class=\"text-item\"\n [clearable]=\"multiple\"\n [title]=\"item[optionLabel]\"\n (clear)=\"removeSelectedItem($event, item)\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n {{ item[optionLabel] }}\n </ap-tag>\n </ng-container>\n <ng-container *ngIf=\"displayTypeSignal() === 'withAvatar'\">\n <div class=\"with-avatar\">\n <ap-avatar\n *ngIf=\"optionProfileImageUrl\"\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\" />\n <span\n class=\"text-item\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n </div>\n </ng-container>\n </ng-container>\n </ng-template>\n <ng-template ng-notfound-tmp>\n <div class=\"option not-found\">\n {{ notFoundText }}\n </div>\n </ng-template>\n</ng-select>\n\n<ng-template\n #contentItem\n let-item=\"item\"\n let-item$=\"item$\">\n <ng-container *ngIf=\"multiple\">\n <div class=\"disabled-opaque\"></div>\n <ap-checkbox\n *ngIf=\"multiple\"\n [checked]=\"item$.selected\"\n [disabled]=\"item$.disabled\"\n [name]=\"'option-selection-' + item$.htmlId\">\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ap-checkbox>\n </ng-container>\n <ng-container *ngIf=\"!multiple\">\n <div class=\"disabled-opaque\"></div>\n <ng-container *ngTemplateOutlet=\"textItem; context: { item: item, item$: item$ }\" />\n </ng-container>\n</ng-template>\n\n<ng-template\n #textItem\n let-item=\"item\"\n let-item$=\"item$\">\n <div class=\"content\">\n <ng-container *ngIf=\"!customOptionTemplate\">\n <ng-container *ngIf=\"!optionLabel\">\n <span class=\"item\">\n {{ item }}\n </span>\n </ng-container>\n <ng-container *ngIf=\"optionProfileImageUrl\">\n <ap-avatar\n size=\"24\"\n [profilePicture]=\"item[optionProfileImageUrl] ?? ''\"\n [username]=\"optionLabel && item[optionLabel] ? item[optionLabel] : ''\"\n [showInitials]=\"true\"/>\n </ng-container>\n <ng-container *ngIf=\"optionLabel && item[optionLabel]\">\n <div class=\"texts\">\n <div class=\"first-line\">\n <span\n class=\"label\"\n [title]=\"item[optionLabel]\">\n {{ item[optionLabel] }}\n </span>\n <ng-container *ngIf=\"optionBadgeLabel && item[optionBadgeLabel]\">\n <ap-badge color=\"blue\">{{ item[optionBadgeLabel] }}</ap-badge>\n </ng-container>\n </div>\n <ng-container *ngIf=\"optionCaption && item[optionCaption]\">\n <span\n class=\"caption\"\n [title]=\"item[optionCaption]\">\n {{ item[optionCaption] }}\n </span>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"customOptionTemplate\">\n <ng-container *ngTemplateOutlet=\"customOptionTemplate; context: { option: item }\" />\n </ng-container>\n <ng-container *ngIf=\"only && !item$.disabled && itemHoveredSignal() === item$.htmlId && multiple\">\n <button\n class=\"standalone-link\"\n type=\"button\"\n (click)=\"onSelectOnly(item)\">\n {{ onlyText }}\n </button>\n </ng-container>\n <ng-container *ngIf=\"item$.selected && !multiple\">\n <ap-symbol\n symbolId=\"check-2\"\n color=\"electric-blue\"\n size=\"micro\" />\n </ng-container>\n </div>\n</ng-template>\n", styles: ["@import\"@ng-select/ng-select/themes/default.theme.css\";ap-select{--placeholder-padding-left: 0px;display:flex;flex-direction:column;position:relative;gap:var(--ref-spacing-xxs);font-family:var(--ref-font-family);font-size:var(--ref-font-size-sm)}ap-select.inline .inline-label{display:flex;align-items:center;position:absolute;z-index:10000;top:0;left:0;height:100%;padding-left:var(--ref-spacing-xs);box-sizing:border-box;color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label:hover{cursor:pointer}ap-select.inline .inline-label .label{display:flex;z-index:10;font-size:var(--comp-select-inline-label-text-size);line-height:var(--comp-select-inline-label-text-line-height);font-family:var(--comp-select-inline-label-text-font-family);font-weight:var(--comp-select-inline-label-text-font-weight);color:var(--comp-select-inline-label-text-color)}ap-select.inline .inline-label .label:hover{cursor:pointer}ap-select.inline .inline-label .label span{width:-moz-fit-content;width:fit-content}ap-select.inline .inline-label .divider{height:18px;max-height:18px;width:1px;margin:0 8px;background-color:var(--comp-select-separator-color);border-radius:1px}ap-select.inline .ng-select .ng-value-container{padding-left:calc(var(--placeholder-padding-left))!important}ap-select.hovered .ng-select-container{border-color:var(--ref-color-grey-40)!important}ap-select label{display:flex;flex-direction:column;gap:var(--comp-forms-label-spacing-vertical);font-size:var(--comp-forms-label-size);font-weight:var(--comp-forms-label-font-weight);line-height:var(--comp-forms-label-line-height);font-family:var(--comp-forms-label-font-family);color:var(--comp-forms-label-text-color)}ap-select label .description{font-size:var(--comp-forms-label-description-text-size);font-weight:var(--comp-forms-label-description-text-font-weight);line-height:var(--comp-forms-label-description-text-line-height);font-family:var(--comp-forms-label-description-text-font-family);color:var(--comp-forms-label-description-text-color)}.ng-select.ap-select .ng-select-container{border-color:var(--ref-color-grey-20)}.ng-select.ap-select .ng-select-container:hover{box-shadow:none;cursor:pointer;border-color:var(--ref-color-grey-40)!important}.ng-select.ap-select .ng-select-container .ng-value-container{overflow-x:auto;overflow-y:hidden}.ng-select.ap-select .ng-select-container .ng-value-container:hover,.ng-select.ap-select .ng-select-container .ng-value-container input:hover{cursor:pointer}.ng-select.ap-select.ng-select-opened.ng-select-bottom .ng-select-container,.ng-select.ap-select.ng-select-opened.ng-select-top .ng-select-container{border-radius:var(--ref-border-radius-sm);border-color:var(--ref-color-grey-20)}.ng-select.ap-select.ng-select-opened .ng-arrow{border-color:transparent transparent var(--ref-color-electric-blue-100)}.ng-select.ap-select.ng-select-opened .ng-select-container:hover{border-color:var(--ref-color-electric-blue-100)!important}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value{overflow:visible!important;width:100%;display:flex}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span.text-item{display:inline-block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value span{display:inline-block}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag{width:100%;margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-tag div{overflow:auto}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label{margin-right:var(--ref-spacing-xxs)}.ng-select.ap-select.ng-select-single .ng-value-container .ng-value ap-label .label{overflow:auto}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container{padding-left:12px;flex-wrap:nowrap;overflow:hidden}.ng-select.ap-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{top:0!important}.ng-select.ap-select.ng-select-disabled .ng-select-container{background-color:var(--ref-color-grey-20);border-color:var(--ref-color-grey-20);color:var(--ref-color-grey-100)}.ng-select.ap-select.ng-select-disabled .ng-select-container:hover{cursor:default!important;background-color:var(--ref-color-grey-20)!important;border-color:var(--ref-color-grey-20)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-placeholder{color:var(--ref-color-grey-60)!important}.ng-select.ap-select.ng-select-disabled .ng-select-container .ng-value-container:hover{cursor:default!important}.ng-select.ap-select .ng-value-container{padding-left:12px;height:100%;position:relative;padding-top:0!important}.ng-select.ap-select .ng-value-container .ng-placeholder{position:absolute;padding-left:0!important;color:var(--ref-color-grey-60);font-weight:var(--ref-font-weight-regular);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .multiple-item{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .multiple-item .item{visibility:hidden}.ng-select.ap-select .ng-value-container .multiple-item .text-item{color:var(--ref-color-grey-100);font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm)}.ng-select.ap-select .ng-value-container .with-avatar{display:flex;align-items:center;gap:var(--ref-spacing-xxxs)}.ng-select.ap-select .ng-value-container .ng-value{margin:0!important}.ng-select.ap-select .ng-value-container .ng-input{position:unset!important;padding:0!important;height:100%!important}.ng-select.ap-select .ng-value-container .ng-input input{height:100%;color:var(--ref-color-grey-100)!important;caret-color:var(--ref-color-grey-100)!important;border-radius:unset}.ng-dropdown-panel.ap-select,.ap-select .ng-select-container+.ng-dropdown-panel{overflow:hidden;border:none;box-shadow:var(--comp-select-shadow);padding:var(--comp-select-padding-vertical) 0;background-color:var(--comp-select-background-color)}.ng-dropdown-panel.ap-select.ng-select-bottom,.ap-select .ng-select-container+.ng-dropdown-panel.ng-select-bottom{margin-top:var(--ref-spacing-xxxs);border-radius:var(--ref-border-radius-sm)}.ng-dropdown-panel.ap-select .ng-option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option{box-sizing:border-box;padding:0;position:relative}.ng-dropdown-panel.ap-select .ng-option .ng-option-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option .ng-option-label{padding:0}.ng-dropdown-panel.ap-select .ng-option.ng-option-child,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-child{padding-left:0}.ng-dropdown-panel.ap-select .ng-option:hover:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:hover:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option:active:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:active:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option:focus:not(.ng-option-disabled) .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option:focus:not(.ng-option-disabled) .option{background-color:var(--ref-color-electric-blue-20)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple),.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple){background-color:var(--ref-color-electric-blue-10);color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .label,.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option:not(.multiple) .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option:not(.multiple) .caption{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected .option .label{font-family:var(--comp-select-one-line-selected-text-font-family);font-size:var(--comp-select-one-line-selected-text-size);line-height:var(--comp-select-one-line-selected-text-line-height);font-weight:var(--comp-select-one-line-selected-text-font-weight);color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option{background-color:var(--ref-color-electric-blue-10)}.ng-dropdown-panel.ap-select .ng-option.ng-option-selected.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-selected.ng-option-marked .option span{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked:hover,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked:hover{background-color:transparent}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option span,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option span{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .label{color:var(--ref-color-grey-100)}.ng-dropdown-panel.ap-select .ng-option.ng-option-marked .option.multiple .caption,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-marked .option.multiple .caption{color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled{color:var(--ref-color-grey-40)}.ng-dropdown-panel.ap-select .ng-option.ng-option-disabled .disabled-opaque,.ap-select .ng-select-container+.ng-dropdown-panel .ng-option.ng-option-disabled .disabled-opaque{position:absolute;inset:0;opacity:.6;background-color:var(--ref-color-white);cursor:default;width:100%;height:100%;z-index:999}.ng-dropdown-panel.ap-select .loading-state,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state{display:flex;justify-content:center;align-items:center;flex-direction:column;gap:var(--ref-spacing-xxs);min-height:90px;max-height:90px;padding:var(--ref-spacing-md) var(--ref-spacing-sm) var(--ref-spacing-sm);box-sizing:border-box}.ng-dropdown-panel.ap-select .loading-state span,.ap-select .ng-select-container+.ng-dropdown-panel .loading-state span{font-size:var(--ref-font-size-sm);line-height:var(--ref-font-line-height-sm);font-style:italic;font-weight:var(--ref-font-weight-regular);color:var(--ref-color-grey-80)}.ng-dropdown-panel.ap-select .group,.ap-select .ng-select-container+.ng-dropdown-panel .group{display:flex;align-items:center;width:100%;gap:var(--ref-spacing-xxs);padding:var(--comp-select-group-padding-horizontal) var(--comp-select-group-padding-vertical)}.ng-dropdown-panel.ap-select .group ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .group ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .group ap-checkbox .checkbox label{display:flex;gap:var(--ref-spacing-xxs);flex:1}.ng-dropdown-panel.ap-select .divider,.ap-select .ng-select-container+.ng-dropdown-panel .divider{width:100%;height:1px;background-color:var(--comp-select-separator-color);margin:var(--ref-spacing-xxs) 0}.ng-dropdown-panel.ap-select .create-new,.ap-select .ng-select-container+.ng-dropdown-panel .create-new{display:flex;align-items:center;border:none;width:100%;background-color:transparent;gap:var(--ref-spacing-xxxs);color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);cursor:pointer;padding:var(--comp-select-search-bar-bottom-link-margin-top) var(--comp-select-search-bar-bottom-link-padding-horizontal) var(--comp-select-search-bar-bottom-link-padding-bottom) var(--comp-select-search-bar-bottom-link-padding-horizontal);line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm)}.ng-dropdown-panel.ap-select .create-new:hover,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .create-new:active,.ap-select .ng-select-container+.ng-dropdown-panel .create-new:active{color:var(--ref-color-electric-blue-150)}.ng-dropdown-panel.ap-select .option,.ap-select .ng-select-container+.ng-dropdown-panel .option{display:flex;align-items:center;box-sizing:border-box;min-height:var(--comp-select-one-line-height);max-height:var(--comp-select-one-line-height);color:var(--comp-select-one-line-text-color);background-color:var(--comp-select-one-line-background-color);font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height);padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal)}.ng-dropdown-panel.ap-select .option ap-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox{width:100%}.ng-dropdown-panel.ap-select .option ap-checkbox .checkbox label,.ap-select .ng-select-container+.ng-dropdown-panel .option ap-checkbox .checkbox label{flex:1;overflow:auto}.ng-dropdown-panel.ap-select .option .option-item,.ap-select .ng-select-container+.ng-dropdown-panel .option .option-item{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;flex:1}.ng-dropdown-panel.ap-select .option.not-found,.ap-select .ng-select-container+.ng-dropdown-panel .option.not-found{padding:var(--ref-spacing-xs) var(--ref-spacing-sm) var(--ref-spacing-xxxs) var(--ref-spacing-sm)}.ng-dropdown-panel.ap-select .option .content,.ap-select .ng-select-container+.ng-dropdown-panel .option .content{display:flex;align-items:center;gap:var(--comp-select-one-line-spacing);flex:1;width:100%}.ng-dropdown-panel.ap-select .option .content .item,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .item{flex:1}.ng-dropdown-panel.ap-select .option .content .texts,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts{flex:1;overflow:auto;display:flex;flex-direction:column}.ng-dropdown-panel.ap-select .option .content .texts .first-line,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line{display:flex;align-items:center;gap:var(--ref-spacing-xxs)}.ng-dropdown-panel.ap-select .option .content .texts .first-line .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .content .texts .first-line .label{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .option .content ap-symbol,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .content ap-symbol div.svg,.ap-select .ng-select-container+.ng-dropdown-panel .option .content ap-symbol div.svg{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .option .label,.ap-select .ng-select-container+.ng-dropdown-panel .option .label{font-family:var(--comp-select-one-line-text-font-family);font-size:var(--comp-select-one-line-text-size);font-weight:var(--comp-select-one-line-text-font-weight);line-height:var(--comp-select-one-line-text-line-height)}.ng-dropdown-panel.ap-select .option.with-caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption{padding:var(--ref-spacing-xxs) var(--comp-select-one-line-padding-horizontal);min-height:var(--comp-select-two-line-height);max-height:var(--comp-select-two-line-height)}.ng-dropdown-panel.ap-select .option.with-caption .label,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .label{font-weight:var(--comp-select-two-line-title-text-font-weight);font-family:var(--comp-select-two-line-title-text-font-family);font-size:var(--comp-select-two-line-title-text-size);line-height:var(--comp-select-two-line-title-text-line-height);color:var(--comp-select-two-line-title-text-color)}.ng-dropdown-panel.ap-select .option.with-caption .caption,.ap-select .ng-select-container+.ng-dropdown-panel .option.with-caption .caption{font-weight:var(--comp-select-two-line-caption-text-font-weight);font-family:var(--comp-select-two-line-caption-text-font-family);font-size:var(--comp-select-two-line-caption-text-size);line-height:var(--comp-select-two-line-caption-text-line-height);color:var(--comp-select-two-line-caption-text-color);display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:100%}.ng-dropdown-panel.ap-select .ng-dropdown-panel-items,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-panel-items{padding:0}.ng-dropdown-panel.ap-select .ng-optgroup,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup{display:flex;align-items:center;padding:0}.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-search,.ng-dropdown-panel.ap-select .ng-optgroup:first-child .with-select-all,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-search,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup:first-child .with-select-all{border:none}.ng-dropdown-panel.ap-select .ng-optgroup .group,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group{display:flex;width:100%;height:100%;background-color:var(--comp-select-group-background-color);min-height:32px;box-sizing:border-box;max-height:50px;padding:var(--comp-select-group-padding-vertical) var(--comp-select-group-padding-horizontal);border-top:1px solid var(--comp-select-group-border-top-color)}.ng-dropdown-panel.ap-select .ng-optgroup .group .group-label,.ap-select .ng-select-container+.ng-dropdown-panel .ng-optgroup .group .group-label{font-weight:var(--comp-select-group-text-font-weight);font-size:var(--comp-select-group-text-size);line-height:var(--comp-select-group-text-line-height);font-family:var(--comp-select-group-text-font-family);color:var(--comp-select-group-text-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header{padding:0 var(--comp-select-search-bar-padding-horizontal) var(--comp-select-search-bar-margin-bottom) var(--comp-select-search-bar-padding-horizontal);border-bottom:1px solid var(--comp-select-search-bar-border-bottom-color)}.ng-dropdown-panel.ap-select .ng-dropdown-header .select-all-checkbox,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-header .select-all-checkbox{padding-left:var(--ref-spacing-xxs);height:var(--comp-select-one-line-height)}.ng-dropdown-panel.ap-select .ng-dropdown-footer,.ap-select .ng-select-container+.ng-dropdown-panel .ng-dropdown-footer{cursor:pointer;padding:0;border-top:1px solid var(--ref-color-grey-10)}.ng-dropdown-panel.ap-select .standalone-link,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link{color:var(--ref-color-electric-blue-150);font-weight:var(--ref-font-weight-bold);font-family:var(--ref-font-family);background-color:transparent;border:none;line-height:var(--ref-font-line-height-sm);font-size:var(--ref-font-size-sm);cursor:pointer}.ng-dropdown-panel.ap-select .standalone-link:hover,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:hover{color:var(--ref-color-electric-blue-100)}.ng-dropdown-panel.ap-select .standalone-link:active,.ap-select .ng-select-container+.ng-dropdown-panel .standalone-link:active{color:var(--ref-color-electric-blue-150)}\n"] }]
338
339
  }], ctorParameters: function () { return []; }, propDecorators: { searchInput: [{
339
340
  type: ViewChild,
340
341
  args: ['searchInput']
@@ -431,6 +432,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
431
432
  type: Input
432
433
  }], customLabelTemplate: [{
433
434
  type: Input
435
+ }], customMultiLabelTemplate: [{
436
+ type: Input
434
437
  }], compareWith: [{
435
438
  type: Input
436
439
  }], createNew: [{
@@ -438,4 +441,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
438
441
  }], valueChanges: [{
439
442
  type: Output
440
443
  }] } });
441
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9zZWxlY3Qvc3JjL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc2VsZWN0L3NyYy9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0s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QUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ08scUJBQXFCO3NCQUFqQyxLQUFLO2dCQUdHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFSSxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2FkZXJDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1hbmltYXRpb25zJztcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvYXZhdGFyJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9iYWRnZSc7XG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2lucHV0JztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9sYWJlbHMnO1xuaW1wb3J0IHsgVGFnQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy90YWcnO1xuaW1wb3J0IHsgU3ltYm9sQ29tcG9uZW50LCBTeW1ib2xSZWdpc3RyeSwgYXBBZGQyMDIyLCBhcENoZWNrMiwgYXBEZWxldGVOb0NpcmNsZSwgYXBTZWFyY2hBbHRlcm5hdGUgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1zeW1ib2wnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgU2xpY2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRGVzdHJveVJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEVudmlyb25tZW50SW5qZWN0b3IsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUHJvdmlkZXIsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGNvbXB1dGVkLFxuICAgIGVmZmVjdCxcbiAgICBmb3J3YXJkUmVmLFxuICAgIGluamVjdCxcbiAgICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gICAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCwgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nT3B0aW9uLCBOZ1NlbGVjdENvbXBvbmVudCwgTmdTZWxlY3RNb2R1bGUgfSBmcm9tICdAbmctc2VsZWN0L25nLXNlbGVjdCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgb2YsIHNraXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCB0eXBlIERpc3BsYXlUeXBlID0gJ3RleHQnIHwgJ2xhYmVsJyB8ICd0YWcnIHwgJ3dpdGhBdmF0YXInO1xuXG5leHBvcnQgY29uc3QgU0VMRUNUX1ZBTFVFX0FDQ0VTU09SOiBQcm92aWRlciA9IHtcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWxlY3RDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlLFxufTtcblxuQENvbXBvbmVudCh7XG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc2VsZWN0b3I6ICdhcC1zZWxlY3QnLFxuICAgIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBOZ0lmLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgICAgICBJbnB1dENvbXBvbmVudCxcbiAgICAgICAgU3ltYm9sQ29tcG9uZW50LFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFNsaWNlUGlwZSxcbiAgICAgICAgQ2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIEF2YXRhckNvbXBvbmVudCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgTGFiZWxDb21wb25lbnQsXG4gICAgICAgIFRhZ0NvbXBvbmVudCxcbiAgICAgICAgQmFkZ2VDb21wb25lbnQsXG4gICAgICAgIExvYWRlckNvbXBvbmVudCxcbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1NFTEVDVF9WQUxVRV9BQ0NFU1NPUl0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHN0cmluZz4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICBwcml2YXRlIHN5bWJvbFJlZ2lzdHJ5OiBTeW1ib2xSZWdpc3RyeSA9IGluamVjdChTeW1ib2xSZWdpc3RyeSk7XG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBJbnB1dENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCdpbmxpbmVMYWJlbCcpIGlubGluZUxhYmVsRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdCcpIHNlbGVjdCE6IE5nU2VsZWN0Q29tcG9uZW50O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5ob3ZlcmVkJykgaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb3B0aW9uc1NpZ25hbCA9IHNpZ25hbDxUW10+KFtdKTtcbiAgICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBzZXQgb3B0aW9ucyhvcHRpb25zOiBUW10pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zU2lnbmFsLnNldChvcHRpb25zKTtcbiAgICAgICAgdGhpcy5maWx0ZXJlZE9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGFyaWFMYWJlbCE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcmlhTGFiZWxsZWRCeSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcmlhRGVzY3JpYmVkQnkhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYXBwZW5kVG86IHN0cmluZyA9ICdib2R5JztcbiAgICBASW5wdXQoKSBjbGVhcmFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdElkPzogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfaW5saW5lOiBib29sZWFuID0gZmFsc2U7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pbmxpbmUnKVxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGlubGluZUxhYmVsKGlubGluZUxhYmVsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lubGluZSA9IGlubGluZUxhYmVsO1xuICAgICAgICBpZiAoIXRoaXMuaW5saW5lTGFiZWxFbGVtZW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoXG4gICAgICAgICAgICAnLS1wbGFjZWhvbGRlci1wYWRkaW5nLWxlZnQnLFxuICAgICAgICAgICAgYCR7dGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aH1weGBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXQgaW5saW5lTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmU7XG4gICAgfVxuXG4gICAgQElucHV0KCkgY3JlYXRlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgY3JlYXRlVGV4dDogc3RyaW5nID0gJ0NyZWF0ZSc7XG4gICAgQElucHV0KCkgZ3JvdXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3RhYmxlR3JvdXA6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgICBASW5wdXQoKSBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBvbmx5VGV4dDogc3RyaW5nID0gJ09ubHknO1xuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0Li4uJztcbiAgICBASW5wdXQoKSBzZWxlY3RBbGw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWxlY3RBbGxUZXh0OiBzdHJpbmcgPSAnU2VsZWN0IGFsbCc7XG4gICAgQElucHV0KCkgdW5zZWxlY3RBbGxUZXh0OiBzdHJpbmcgPSAnVW5zZWxlY3QgYWxsJztcbiAgICBASW5wdXQoKSBzZWFyY2hhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VhcmNoUGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWFyY2guLi4nO1xuICAgIEBJbnB1dCgpIHNlYXJjaEZuOiAodGVybTogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPFRbXT4gPSB0aGlzLmRlZmF1bHRTZWFyY2hGbjtcbiAgICBASW5wdXQoKSBub3RGb3VuZFRleHQ6IHN0cmluZyA9ICdObyByZXN1bHRzIGZvdW5kJztcbiAgICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nID0gJ0xvYWRpbmcgaXRlbXMnO1xuICAgIEBJbnB1dCgpIHNldCBkaXNwbGF5VHlwZShkaXNwbGF5VHlwZTogRGlzcGxheVR5cGUpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VHlwZVNpZ25hbC5zZXQoZGlzcGxheVR5cGUpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG9wdGlvbkxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkNhcHRpb24/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uRGl2aWRlcj86IHN0cmluZyA9ICdkaXZpZGVyJztcbiAgICBASW5wdXQoKSBvcHRpb25Qcm9maWxlSW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uQmFkZ2VMYWJlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25WYWx1ZT86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZDogc3RyaW5nID0gJ2Rpc2FibGVkJztcbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cExhYmVsOiBzdHJpbmcgPSAnZ3JvdXAnO1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwVGFnPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgICBASW5wdXQoKSBzZXQgbWF4aW11bURpc3BsYXlPcHRpb25zKG1heGltdW1EaXNwbGF5T3B0aW9uczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubWF4aW11bURpc3BsYXlWYWx1ZXNTaWduYWwuc2V0KG1heGltdW1EaXNwbGF5T3B0aW9ucyk7XG4gICAgfVxuICAgIEBJbnB1dCgpIGN1c3RvbU9wdGlvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG4gICAgQElucHV0KCkgY3VzdG9tTGFiZWxUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgb3B0aW9uOiBUIH0+O1xuXG4gICAgQElucHV0KCkgY29tcGFyZVdpdGghOiAoYTogYW55LCBiOiBhbnkpID0+IGJvb2xlYW47XG5cbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcjx1bmtub3duW10+KCk7XG5cbiAgICBwcml2YXRlIF9jb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuITogKHZhbHVlOiB1bmtub3duW10pID0+IHZvaWQ7XG4gICAgb25Ub3VjaGVkITogKCkgPT4gdm9pZDtcbiAgICBkaXNwbGF5VHlwZVNpZ25hbCA9IHNpZ25hbDxEaXNwbGF5VHlwZT4oJ3RleHQnKTtcblxuICAgIGVuYWJsZWRPcHRpb25zID0gY29tcHV0ZWQ8VFtdPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNTaWduYWwoKS5maWx0ZXIoKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uRGlzYWJsZWQgJiYgIXZhbHVlW3RoaXMub3B0aW9uRGlzYWJsZWRdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0ZW1Ib3ZlcmVkU2lnbmFsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICAgIGZpbHRlcmVkT3B0aW9uc1NpZ25hbCA9IHNpZ25hbDxUW10+KFtdKTtcbiAgICBsb2FkaW5nU2lnbmFsID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgICBzZWxlY3RlZFZhbHVlc1NpZ25hbCA9IHNpZ25hbDx1bmtub3duW10+KFtdKTtcbiAgICBzZWFyY2hUZXJtU2lnbmFsID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICAgIHNlYXJjaFRlcm0kID0gdG9PYnNlcnZhYmxlKHRoaXMuc2VhcmNoVGVybVNpZ25hbCk7XG4gICAgbWF4aW11bURpc3BsYXlWYWx1ZXNTaWduYWwgPSBzaWduYWw8bnVtYmVyPigtMSk7XG4gICAgaGlkZGVuQ291bnRTaWduYWwgPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAgIGFsbFNlbGVjdGVkU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA9PT0gdGhpcy5lbmFibGVkT3B0aW9ucygpLmxlbmd0aDtcbiAgICB9KTtcbiAgICBwYXJ0aWFseVNlbGVjdGVkU2lnbmFsID0gY29tcHV0ZWQ8Ym9vbGVhbj4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA+IDAgJiYgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpLmxlbmd0aCA8IHRoaXMuZW5hYmxlZE9wdGlvbnMoKS5sZW5ndGg7XG4gICAgfSk7XG5cbiAgICBwcml2YXRlIGluamVjdG9yID0gaW5qZWN0KEVudmlyb25tZW50SW5qZWN0b3IpO1xuICAgIHByaXZhdGUgc2VsZWN0VmFsdWVDb250YWluZXIhOiBIVE1MRWxlbWVudDtcbiAgICBwcml2YXRlIHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwgPSBzaWduYWwoMCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zeW1ib2xSZWdpc3RyeS5yZWdpc3RlclN5bWJvbHMoW2FwQ2hlY2syLCBhcFNlYXJjaEFsdGVybmF0ZSwgYXBBZGQyMDIyLCBhcERlbGV0ZU5vQ2lyY2xlXSk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShzZWxlY3RlZFZhbHVlczogdW5rbm93bltdID0gW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogdW5rbm93bltdKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4gPSBmbjtcbiAgICB9XG5cbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgKCF0aGlzLmRpc3BsYXlUeXBlU2lnbmFsKCkgfHwgdGhpcy5kaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0Rpc3BsYXkgdHlwZSBcInRleHRcIiBpcyBub3Qgc3VwcG9ydGVkIGZvciBtdWx0aXBsZSBzZWxlY3QuIFN3aXRjaGluZyB0byBcImxhYmVsXCIuJyk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlUeXBlU2lnbmFsLnNldCgnbGFiZWwnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFRlcm0kXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMjUwKSxcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1NpZ25hbC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc1NpZ25hbC5zZXQoW10pO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgodGVybTogc3RyaW5nKSA9PiB0aGlzLnNlYXJjaEZuKHRlcm0pKSxcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdTaWduYWwuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgob3B0aW9uczogVFtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zU2lnbmFsLnNldChvcHRpb25zKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5saW5lTGFiZWxFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAnLS1wbGFjZWhvbGRlci1wYWRkaW5nLWxlZnQnLFxuICAgICAgICAgICAgICAgIGAke3RoaXMuaW5saW5lTGFiZWxFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGh9cHhgXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXIgPSB0aGlzLnNlbGVjdC5lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ25nLXZhbHVlLWNvbnRhaW5lcicpWzBdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDIwMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwoKTtcbiAgICAgICAgcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuaW5qZWN0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGVmZmVjdChcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwgPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVJlc3BvbnNpdmVMYWJlbHMoc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCwgc2VsZWN0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2VhcmNoVGVybUNoYW5nZShzZWFyY2hUZXJtOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtU2lnbmFsLnNldChzZWFyY2hUZXJtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlZmF1bHRTZWFyY2hGbih0ZXJtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1NpZ25hbCgpLmZpbHRlcigob3B0aW9uOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25MYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG9wdGlvblt0aGlzLm9wdGlvbkxhYmVsXSkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0ZXJtLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0dyb3VwSW5kZXRlcm1pbmF0ZShjaGlsZHJlbjogTmdPcHRpb25bXSkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4uc29tZSgoY2hpbGQ6IE5nT3B0aW9uKSA9PiBjaGlsZC5zZWxlY3RlZCkgJiYgIXRoaXMuaXNHcm91cENoZWNrZWQoY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIGlzR3JvdXBEaXNhYmxlZChjaGlsZHJlbjogTmdPcHRpb25bXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW4uZXZlcnkoKGNoaWxkOiBOZ09wdGlvbikgPT4gY2hpbGQuZGlzYWJsZWQpO1xuICAgIH1cblxuICAgIGlzR3JvdXBDaGVja2VkKGNoaWxkcmVuOiBOZ09wdGlvbltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IE5nT3B0aW9uKSA9PiBjaGlsZC5kaXNhYmxlZCB8fCBjaGlsZC5zZWxlY3RlZCkgJiYgIXRoaXMuaXNHcm91cERpc2FibGVkKGNoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE9ubHkoaXRlbTogVCk6IHZvaWQge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChbaXRlbV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25WYWx1ZSA/IHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtpdGVtW3RoaXMub3B0aW9uVmFsdWVdXSkgOiB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChbaXRlbV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdE9wZW5lZCgpOiB2b2lkIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5vblRvdWNoZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuc2VhcmNoYWJsZSAmJiAhIXRoaXMuc2VhcmNoRm4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0LmZvY3VzSW5wdXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25Ib3Zlckl0ZW0oaHRtbGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLml0ZW1Ib3ZlcmVkU2lnbmFsLnNldChodG1saWQpO1xuICAgIH1cblxuICAgIG9uTGVhdmVJdGVtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXRlbUhvdmVyZWRTaWduYWwuc2V0KG51bGwpO1xuICAgIH1cblxuICAgIG9uVG9nZ2xlQWxsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wYXJ0aWFseVNlbGVjdGVkU2lnbmFsKCkgfHwgdGhpcy5wYXJ0aWFseVNlbGVjdGVkU2lnbmFsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFxuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlZE9wdGlvbnMoKS5tYXAoKHZhbHVlOiBUKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uVmFsdWUgPyB2YWx1ZVt0aGlzLm9wdGlvblZhbHVlXSA6IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKTtcbiAgICB9XG5cbiAgICBvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoc2VsZWN0ZWRWYWx1ZXMpO1xuICAgICAgICB0aGlzLmNhbGxDb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKCk7XG4gICAgfVxuXG4gICAgb25PcGVuU2VsZWN0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdC5vcGVuKCk7XG4gICAgfVxuXG4gICAgb25JbmxpbmVJbnB1dEVudGVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIG9uSW5saW5lSW5wdXRMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgb25DcmVhdGVOZXcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3JlYXRlTmV3LmVtaXQodGhpcy5zZWFyY2hUZXJtU2lnbmFsKCkpO1xuICAgICAgICB0aGlzLnNlbGVjdC5jbG9zZSgpO1xuICAgIH1cblxuICAgIHJlbW92ZVNlbGVjdGVkSXRlbSh7ICRldmVudCB9OiB7ICRldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCB9LCBpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICAgICAgICRldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1JZCA9IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyA/IGl0ZW0gOiB0aGlzLm9wdGlvblZhbHVlID8gaXRlbVt0aGlzLm9wdGlvblZhbHVlXSA6IGl0ZW07XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwudXBkYXRlKChzZWxlY3RlZFZhbHVlczogdW5rbm93bltdKSA9PlxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKChzZWxlY3RlZFZhbHVlOiB1bmtub3duKSA9PiBzZWxlY3RlZFZhbHVlICE9PSBzZWxlY3RlZEl0ZW1JZClcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VzLmVtaXQodGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpKTtcbiAgICAgICAgaWYgKHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4pIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1BsYWNlSG9sZGVyV2lkdGggPSAxMDA7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5jbGllbnRXaWR0aCAtIHJlbWFpbmluZ1BsYWNlSG9sZGVyV2lkdGg7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGhTaWduYWwuc2V0KHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVSZXNwb25zaXZlTGFiZWxzKGNvbnRhaW5lcldpZHRoOiBudW1iZXIsIHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFzZWxlY3RlZFZhbHVlcyB8fCBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZGVuQ291bnRTaWduYWwuc2V0KDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtdWx0aXBsZS1pdGVtJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lci5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdpdGVtJyk7XG4gICAgICAgIGxldCB0b3RhbFdpZHRoID0gMDtcbiAgICAgICAgbGV0IGhpZGRlbkNvdW50ID0gMDtcbiAgICAgICAgY29uc3QgaXRlbUdhcCA9IDQ7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBpdGVtcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCBpdGVtV2lkdGggPSBpdGVtLmNsaWVudFdpZHRoICsgaXRlbUdhcDtcbiAgICAgICAgICAgIGlmICh0b3RhbFdpZHRoICsgaXRlbVdpZHRoIDwgY29udGFpbmVyV2lkdGggJiYgIWhpZGRlbkNvdW50KSB7XG4gICAgICAgICAgICAgICAgdG90YWxXaWR0aCArPSBpdGVtV2lkdGg7XG4gICAgICAgICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIChpdGVtIGFzIEhUTUxFbGVtZW50KS5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XG4gICAgICAgICAgICAgICAgaGlkZGVuQ291bnQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpdGVtc0NvbnRhaW5lci5zdHlsZS5tYXhXaWR0aCA9IGAke3RvdGFsV2lkdGh9cHhgO1xuICAgICAgICB0aGlzLmhpZGRlbkNvdW50U2lnbmFsLnNldChoaWRkZW5Db3VudCk7XG4gICAgfVxufVxuIiwiPGxhYmVsXG4gICAgKm5nSWY9XCJsYWJlbCAmJiAhaW5saW5lTGFiZWxcIlxuICAgIFtmb3JdPVwic2VsZWN0SWRcIj5cbiAgICA8c3Bhbj5cbiAgICAgICAge3sgbGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICA8L3NwYW4+XG48L2xhYmVsPlxuXG48ZGl2XG4gICAgKm5nSWY9XCJpbmxpbmVMYWJlbFwiXG4gICAgI2lubGluZUxhYmVsXG4gICAgdGFiaW5kZXg9XCIwXCJcbiAgICBjbGFzcz1cImlubGluZS1sYWJlbFwiXG4gICAgKGNsaWNrKT1cIm9uT3BlblNlbGVjdCgpXCJcbiAgICAoa2V5ZG93bi5lbnRlcik9XCJvbk9wZW5TZWxlY3QoKVwiXG4gICAgKG1vdXNlZW50ZXIpPVwib25JbmxpbmVJbnB1dEVudGVyKClcIlxuICAgIChtb3VzZWxlYXZlKT1cIm9uSW5saW5lSW5wdXRMZWF2ZSgpXCI+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwibGFiZWwgJiYgaW5saW5lTGFiZWxcIlxuICAgICAgICBjbGFzcz1cImxhYmVsXCJcbiAgICAgICAgW2Zvcl09XCJzZWxlY3RJZFwiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG48L2Rpdj5cblxuPG5nLXNlbGVjdFxuICAgICNzZWxlY3RcbiAgICBjbGFzcz1cImFwLXNlbGVjdFwiXG4gICAgW3RhYkluZGV4XT1cIjBcIlxuICAgIFtjbGVhcmFibGVdPVwiY2xlYXJhYmxlXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgIFtsYWJlbEZvcklkXT1cInNlbGVjdElkXCJcbiAgICBbc2VhcmNoYWJsZV09XCJmYWxzZVwiXG4gICAgW2Nsb3NlT25TZWxlY3RdPVwiIW11bHRpcGxlXCJcbiAgICBbYmluZFZhbHVlXT1cIm9wdGlvblZhbHVlID8gb3B0aW9uVmFsdWUgOiAnJ1wiXG4gICAgW2dyb3VwQnldPVwiZ3JvdXAgPyBvcHRpb25Hcm91cExhYmVsIDogJydcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbbWFya0ZpcnN0XT1cImZhbHNlXCJcbiAgICBbc2VsZWN0YWJsZUdyb3VwXT1cInNlbGVjdGFibGVHcm91cFwiXG4gICAgW3NlbGVjdGFibGVHcm91cEFzTW9kZWxdPVwiZmFsc2VcIlxuICAgIFthcHBlbmRUb109XCJhcHBlbmRUb1wiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZEJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZEJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWQ/LnRvU3RyaW5nKClcIlxuICAgIFtpdGVtc109XCJvcHRpb25zU2lnbmFsKClcIlxuICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlV2l0aFwiXG4gICAgW2xvYWRpbmddPVwibG9hZGluZ1NpZ25hbCgpXCJcbiAgICBbbmdNb2RlbF09XCJzZWxlY3RlZFZhbHVlc1NpZ25hbCgpXCJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJvblNlbGVjdGVkVmFsdWVzQ2hhbmdlKCRldmVudClcIlxuICAgIChvcGVuKT1cIm9uU2VsZWN0T3BlbmVkKClcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoYWJsZSB8fCBzZWxlY3RBbGxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICAgICAgbmctaGVhZGVyLXRtcD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hhYmxlXCI+XG4gICAgICAgICAgICAgICAgPGFwLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwic2VhcmNoLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmdWxsLXdpZHRoXCJcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJzZWFyY2gtYWx0ZXJuYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgc3ltYm9sUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cInNlYXJjaFRlcm1TaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VhcmNoVGVybUNoYW5nZSgkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBuYW1lPVwib3B0aW9uLWdyb3VwLXNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgICAgICBbaW5kZXRlcm1pbmF0ZV09XCJwYXJ0aWFseVNlbGVjdGVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhbGxTZWxlY3RlZFNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlQWxsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBwYXJ0aWFseVNlbGVjdGVkU2lnbmFsKCkgfHwgYWxsU2VsZWN0ZWRTaWduYWwoKSA/IHVuc2VsZWN0QWxsVGV4dCA6IHNlbGVjdEFsbFRleHQgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1vcHRncm91cC10bXA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXBcIlxuICAgICAgICAgICAgW2NsYXNzLndpdGgtc2VhcmNoXT1cInNlYXJjaGFibGVcIlxuICAgICAgICAgICAgW2NsYXNzLndpdGgtc2VsZWN0LWFsbF09XCJzZWxlY3RBbGxcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uR3JvdXBMYWJlbF0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGFwLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uR3JvdXBUYWcgJiYgb3B0aW9uR3JvdXBUYWdbaXRlbVtvcHRpb25Hcm91cExhYmVsXV1cIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uR3JvdXBUYWdbaXRlbVtvcHRpb25Hcm91cExhYmVsXV0gfX1cbiAgICAgICAgICAgICAgICA8L2FwLWJhZGdlPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGVcIj5cbiAgICAgICAgICAgICAgICA8YXAtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RhYmxlR3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCInb3B0aW9uLWdyb3VwLXNlbGVjdGlvbi0nICsgaXRlbVsnZ3JvdXAnXVwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cImlzR3JvdXBJbmRldGVybWluYXRlKGl0ZW0kLmNoaWxkcmVuKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzR3JvdXBDaGVja2VkKGl0ZW0kLmNoaWxkcmVuKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdyb3VwLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkdyb3VwTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWJhZGdlXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbkdyb3VwVGFnICYmIG9wdGlvbkdyb3VwVGFnW2l0ZW1bb3B0aW9uR3JvdXBMYWJlbF1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uR3JvdXBUYWdbaXRlbVtvcHRpb25Hcm91cExhYmVsXV0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9hcC1iYWRnZT5cbiAgICAgICAgICAgICAgICA8L2FwLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNlbGVjdGFibGVHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25Hcm91cExhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbXM9XCJpdGVtc1wiXG4gICAgICAgIGxldC1pdGVtJD1cIml0ZW0kXCJcbiAgICAgICAgbmctbXVsdGktbGFiZWwtdG1wPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpcGxlLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JyB8fCAhZGlzcGxheVR5cGVTaWduYWwoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92YWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtW29wdGlvbkxhYmVsXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RhZydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtdGFnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbSB0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcmFibGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uUHJvZmlsZUltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtIHdpdGgtYXZhdGFyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uUHJvZmlsZUltYWdlVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvZmlsZVBpY3R1cmVdPVwiaXRlbVtvcHRpb25Qcm9maWxlSW1hZ2VVcmxdID8/ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VybmFtZV09XCJvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSA/IGl0ZW1bb3B0aW9uTGFiZWxdIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uTGFiZWwgfHwgIWl0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RleHQnIHx8ICFkaXNwbGF5VHlwZVNpZ25hbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gd2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhpZGRlbkNvdW50U2lnbmFsKCkgPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlbWFpbmluZ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInIHx8ICFkaXNwbGF5VHlwZVNpZ25hbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+K3t7IGhpZGRlbkNvdW50U2lnbmFsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAre3sgaGlkZGVuQ291bnRTaWduYWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIicrJyArIGhpZGRlbkNvdW50U2lnbmFsKClcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG5nLWxvYWRpbmd0ZXh0LXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3RhdGVcIj5cbiAgICAgICAgICAgIDxhcC1sb2FkZXIgZGlhbWV0ZXI9XCIzMFwiIC8+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBsb2FkaW5nVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1mb290ZXItdG1wPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlLW5ld1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ3JlYXRlTmV3KClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYWRkLTIwMjJcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBjcmVhdGVUZXh0IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hUZXJtU2lnbmFsKClcIj5cInt7IHNlYXJjaFRlcm1TaWduYWwoKSB9fVwiPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1vcHRpb24tdG1wPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF0pICYmIGl0ZW0gJiYgKCFvcHRpb25EaXZpZGVyIHx8ICFpdGVtW29wdGlvbkRpdmlkZXJdKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtJC5zZWxlY3RlZCAmJiAhbXVsdGlwbGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLXN5bWJvbFxuICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sSWQ9XCJjaGVjay0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiZWxlY3RyaWMtYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLndpdGgtY2FwdGlvbl09XCJvcHRpb25MYWJlbCAmJiBvcHRpb25DYXB0aW9uICYmIGl0ZW1bb3B0aW9uQ2FwdGlvbl1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Ib3Zlckl0ZW0oaXRlbSQuaHRtbElkKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZUl0ZW0oKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SXRlbTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpdGVtJDogaXRlbSQgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25EaXZpZGVyICYmIGl0ZW1bb3B0aW9uRGl2aWRlcl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgICAgIG5nLWxhYmVsLXRtcD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21MYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uTGFiZWwgJiYgIWN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiAhY3VzdG9tTGFiZWxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JyB8fCAhZGlzcGxheVR5cGVTaWduYWwoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgPGFwLXRhZ1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIi8+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmctbm90Zm91bmQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uIG5vdC1mb3VuZFwiPlxuICAgICAgICAgICAge3sgbm90Rm91bmRUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXNlbGVjdD5cblxuPG5nLXRlbXBsYXRlXG4gICAgI2NvbnRlbnRJdGVtXG4gICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWQtb3BhcXVlXCI+PC9kaXY+XG4gICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtJC5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbSQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ29wdGlvbi1zZWxlY3Rpb24tJyArIGl0ZW0kLmh0bWxJZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICAgICAgPC9hcC1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW11bHRpcGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNhYmxlZC1vcGFxdWVcIj48L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICN0ZXh0SXRlbVxuICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbU9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvbkxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIj5cbiAgICAgICAgICAgICAgICA8YXAtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25CYWRnZUxhYmVsICYmIGl0ZW1bb3B0aW9uQmFkZ2VMYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2UgY29sb3I9XCJibHVlXCI+e3sgaXRlbVtvcHRpb25CYWRnZUxhYmVsXSB9fTwvYXAtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25DYXB0aW9uICYmIGl0ZW1bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25DYXB0aW9uXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uQ2FwdGlvbl0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21PcHRpb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbU9wdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5ICYmICFpdGVtJC5kaXNhYmxlZCAmJiBpdGVtSG92ZXJlZFNpZ25hbCgpID09PSBpdGVtJC5odG1sSWQgJiYgbXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0YW5kYWxvbmUtbGlua1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0T25seShpdGVtKVwiPlxuICAgICAgICAgICAgICAgIHt7IG9ubHlUZXh0IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtJC5zZWxlY3RlZCAmJiAhbXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImNoZWNrLTJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZWxlY3RyaWMtYmx1ZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1pY3JvXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
444
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvdWktY29tcG9uZW50cy9zZWxlY3Qvc3JjL3NlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9saWJzL3VpLWNvbXBvbmVudHMvc2VsZWN0L3NyYy9zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xJLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLG1CQUFtQixFQUNuQixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBR04sU0FBUyxFQUNULGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLE1BQU0s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Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNPLHFCQUFxQjtzQkFBakMsS0FBSztnQkFHRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvYWRlckNvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWFuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9hdmF0YXInO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2JhZGdlJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGFnb3JhcHVsc2UvdWktY29tcG9uZW50cy9jaGVja2JveCc7XG5pbXBvcnQgeyBJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLWNvbXBvbmVudHMvaW5wdXQnO1xuaW1wb3J0IHsgTGFiZWxDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL2xhYmVscyc7XG5pbXBvcnQgeyBUYWdDb21wb25lbnQgfSBmcm9tICdAYWdvcmFwdWxzZS91aS1jb21wb25lbnRzL3RhZyc7XG5pbXBvcnQgeyBTeW1ib2xDb21wb25lbnQsIFN5bWJvbFJlZ2lzdHJ5LCBhcEFkZDIwMjIsIGFwQ2hlY2syLCBhcERlbGV0ZU5vQ2lyY2xlLCBhcFNlYXJjaEFsdGVybmF0ZSB9IGZyb20gJ0BhZ29yYXB1bHNlL3VpLXN5bWJvbCc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBTbGljZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRW52aXJvbm1lbnRJbmplY3RvcixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBQcm92aWRlcixcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgY29tcHV0ZWQsXG4gICAgZWZmZWN0LFxuICAgIGZvcndhcmRSZWYsXG4gICAgaW5qZWN0LFxuICAgIHJ1bkluSW5qZWN0aW9uQ29udGV4dCxcbiAgICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdPcHRpb24sIE5nU2VsZWN0Q29tcG9uZW50LCBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0JztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBvZiwgc2tpcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgRGlzcGxheVR5cGUgPSAndGV4dCcgfCAnbGFiZWwnIHwgJ3RhZycgfCAnd2l0aEF2YXRhcic7XG5cbmV4cG9ydCBjb25zdCBTRUxFQ1RfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFNlbGVjdENvbXBvbmVudCksXG4gICAgbXVsdGk6IHRydWUsXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzZWxlY3RvcjogJ2FwLXNlbGVjdCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdTZWxlY3RNb2R1bGUsXG4gICAgICAgIElucHV0Q29tcG9uZW50LFxuICAgICAgICBTeW1ib2xDb21wb25lbnQsXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgU2xpY2VQaXBlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgQXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBMYWJlbENvbXBvbmVudCxcbiAgICAgICAgVGFnQ29tcG9uZW50LFxuICAgICAgICBCYWRnZUNvbXBvbmVudCxcbiAgICAgICAgTG9hZGVyQ29tcG9uZW50LFxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbU0VMRUNUX1ZBTFVFX0FDQ0VTU09SXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnQ8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgc3RyaW5nPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIHByaXZhdGUgc3ltYm9sUmVnaXN0cnk6IFN5bWJvbFJlZ2lzdHJ5ID0gaW5qZWN0KFN5bWJvbFJlZ2lzdHJ5KTtcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gICAgQFZpZXdDaGlsZCgnc2VhcmNoSW5wdXQnKSBzZWFyY2hJbnB1dCE6IElucHV0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ2lubGluZUxhYmVsJykgaW5saW5lTGFiZWxFbGVtZW50ITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0Jykgc2VsZWN0ITogTmdTZWxlY3RDb21wb25lbnQ7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhvdmVyZWQnKSBob3ZlcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBvcHRpb25zU2lnbmFsID0gc2lnbmFsPFRbXT4oW10pO1xuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIHNldCBvcHRpb25zKG9wdGlvbnM6IFRbXSkge1xuICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9uc1NpZ25hbC5zZXQob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgYXJpYUxhYmVsITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFyaWFMYWJlbGxlZEJ5ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGFyaWFEZXNjcmliZWRCeSE6IHN0cmluZztcbiAgICBASW5wdXQoKSBhcHBlbmRUbzogc3RyaW5nID0gJ2JvZHknO1xuICAgIEBJbnB1dCgpIGNsZWFyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgc2VsZWN0SWQ/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9pbmxpbmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlubGluZScpXG4gICAgQElucHV0KClcbiAgICBzZXQgaW5saW5lTGFiZWwoaW5saW5lTGFiZWw6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5faW5saW5lID0gaW5saW5lTGFiZWw7XG4gICAgICAgIGlmICghdGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXBhZGRpbmctbGVmdCcsXG4gICAgICAgICAgICBgJHt0aGlzLmlubGluZUxhYmVsRWxlbWVudC5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRofXB4YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBpbmxpbmVMYWJlbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZTtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBjcmVhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBjcmVhdGVUZXh0OiBzdHJpbmcgPSAnQ3JlYXRlJztcbiAgICBASW5wdXQoKSBncm91cDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdGFibGVHcm91cDogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgb25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIG9ubHlUZXh0OiBzdHJpbmcgPSAnT25seSc7XG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3QuLi4nO1xuICAgIEBJbnB1dCgpIHNlbGVjdEFsbDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNlbGVjdEFsbFRleHQ6IHN0cmluZyA9ICdTZWxlY3QgYWxsJztcbiAgICBASW5wdXQoKSB1bnNlbGVjdEFsbFRleHQ6IHN0cmluZyA9ICdVbnNlbGVjdCBhbGwnO1xuICAgIEBJbnB1dCgpIHNlYXJjaGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlYXJjaC4uLic7XG4gICAgQElucHV0KCkgc2VhcmNoRm46ICh0ZXJtOiBzdHJpbmcpID0+IE9ic2VydmFibGU8VFtdPiA9IHRoaXMuZGVmYXVsdFNlYXJjaEZuO1xuICAgIEBJbnB1dCgpIG5vdEZvdW5kVGV4dDogc3RyaW5nID0gJ05vIHJlc3VsdHMgZm91bmQnO1xuICAgIEBJbnB1dCgpIGxvYWRpbmdUZXh0OiBzdHJpbmcgPSAnTG9hZGluZyBpdGVtcyc7XG4gICAgQElucHV0KCkgc2V0IGRpc3BsYXlUeXBlKGRpc3BsYXlUeXBlOiBEaXNwbGF5VHlwZSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlUeXBlU2lnbmFsLnNldChkaXNwbGF5VHlwZSk7XG4gICAgfVxuXG4gICAgQElucHV0KCkgb3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgb3B0aW9uQ2FwdGlvbj86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25EaXZpZGVyPzogc3RyaW5nID0gJ2RpdmlkZXInO1xuICAgIEBJbnB1dCgpIG9wdGlvblByb2ZpbGVJbWFnZVVybD86IHN0cmluZztcbiAgICBASW5wdXQoKSBvcHRpb25CYWRnZUxhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvblZhbHVlPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIG9wdGlvbkRpc2FibGVkOiBzdHJpbmcgPSAnZGlzYWJsZWQnO1xuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwTGFiZWw6IHN0cmluZyA9ICdncm91cCc7XG4gICAgQElucHV0KCkgb3B0aW9uR3JvdXBUYWc/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIEBJbnB1dCgpIHNldCBtYXhpbXVtRGlzcGxheU9wdGlvbnMobWF4aW11bURpc3BsYXlPcHRpb25zOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5tYXhpbXVtRGlzcGxheVZhbHVlc1NpZ25hbC5zZXQobWF4aW11bURpc3BsYXlPcHRpb25zKTtcbiAgICB9XG4gICAgQElucHV0KCkgY3VzdG9tT3B0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IG9wdGlvbjogVCB9PjtcbiAgICBASW5wdXQoKSBjdXN0b21MYWJlbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb246IFQgfT47XG4gICAgQElucHV0KCkgY3VzdG9tTXVsdGlMYWJlbFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyBvcHRpb25zOiBUW10gfT47XG5cbiAgICBASW5wdXQoKSBjb21wYXJlV2l0aCE6IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbjtcblxuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXc6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZXMgPSBuZXcgRXZlbnRFbWl0dGVyPHVua25vd25bXT4oKTtcblxuICAgIHByaXZhdGUgX2NvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4hOiAodmFsdWU6IHVua25vd25bXSkgPT4gdm9pZDtcbiAgICBvblRvdWNoZWQhOiAoKSA9PiB2b2lkO1xuICAgIGRpc3BsYXlUeXBlU2lnbmFsID0gc2lnbmFsPERpc3BsYXlUeXBlPigndGV4dCcpO1xuXG4gICAgZW5hYmxlZE9wdGlvbnMgPSBjb21wdXRlZDxUW10+KCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1NpZ25hbCgpLmZpbHRlcigodmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25EaXNhYmxlZCAmJiAhdmFsdWVbdGhpcy5vcHRpb25EaXNhYmxlZF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXRlbUhvdmVyZWRTaWduYWwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgZmlsdGVyZWRPcHRpb25zU2lnbmFsID0gc2lnbmFsPFRbXT4oW10pO1xuICAgIGxvYWRpbmdTaWduYWwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHNlbGVjdGVkVmFsdWVzU2lnbmFsID0gc2lnbmFsPHVua25vd25bXT4oW10pO1xuICAgIHNlYXJjaFRlcm1TaWduYWwgPSBzaWduYWw8c3RyaW5nPignJyk7XG4gICAgc2VhcmNoVGVybSQgPSB0b09ic2VydmFibGUodGhpcy5zZWFyY2hUZXJtU2lnbmFsKTtcbiAgICBtYXhpbXVtRGlzcGxheVZhbHVlc1NpZ25hbCA9IHNpZ25hbDxudW1iZXI+KC0xKTtcbiAgICBoaWRkZW5Db3VudFNpZ25hbCA9IHNpZ25hbDxudW1iZXI+KDApO1xuXG4gICAgYWxsU2VsZWN0ZWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkubGVuZ3RoID09PSB0aGlzLmVuYWJsZWRPcHRpb25zKCkubGVuZ3RoO1xuICAgIH0pO1xuICAgIHBhcnRpYWx5U2VsZWN0ZWRTaWduYWwgPSBjb21wdXRlZDxib29sZWFuPigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkubGVuZ3RoID4gMCAmJiB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkubGVuZ3RoIDwgdGhpcy5lbmFibGVkT3B0aW9ucygpLmxlbmd0aDtcbiAgICB9KTtcblxuICAgIHByaXZhdGUgaW5qZWN0b3IgPSBpbmplY3QoRW52aXJvbm1lbnRJbmplY3Rvcik7XG4gICAgcHJpdmF0ZSBzZWxlY3RWYWx1ZUNvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICAgIHByaXZhdGUgc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCA9IHNpZ25hbCgwKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnN5bWJvbFJlZ2lzdHJ5LnJlZ2lzdGVyU3ltYm9scyhbYXBDaGVjazIsIGFwU2VhcmNoQWx0ZXJuYXRlLCBhcEFkZDIwMjIsIGFwRGVsZXRlTm9DaXJjbGVdKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10gPSBbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChzZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiB1bmtub3duW10pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSAmJiAoIXRoaXMuZGlzcGxheVR5cGVTaWduYWwoKSB8fCB0aGlzLmRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignRGlzcGxheSB0eXBlIFwidGV4dFwiIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIG11bHRpcGxlIHNlbGVjdC4gU3dpdGNoaW5nIHRvIFwibGFiZWxcIi4nKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVR5cGVTaWduYWwuc2V0KCdsYWJlbCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VhcmNoVGVybSRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgyNTApLFxuICAgICAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2lnbmFsLnNldCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zU2lnbmFsLnNldChbXSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCh0ZXJtOiBzdHJpbmcpID0+IHRoaXMuc2VhcmNoRm4odGVybSkpLFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1NpZ25hbC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChvcHRpb25zOiBUW10pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNTaWduYWwuc2V0KG9wdGlvbnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KFxuICAgICAgICAgICAgICAgICctLXBsYWNlaG9sZGVyLXBhZGRpbmctbGVmdCcsXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5pbmxpbmVMYWJlbEVsZW1lbnQubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aH1weGBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lciA9IHRoaXMuc2VsZWN0LmVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbmctdmFsdWUtY29udGFpbmVyJylbMF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgICAgICAucGlwZShkZWJvdW5jZVRpbWUoMjAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlU2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5pbmplY3RvciwgKCkgPT4ge1xuICAgICAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCA9IHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUmVzcG9uc2l2ZUxhYmVscyhzZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsLCBzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TZWFyY2hUZXJtQ2hhbmdlKHNlYXJjaFRlcm06IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlYXJjaFRlcm1TaWduYWwuc2V0KHNlYXJjaFRlcm0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVmYXVsdFNlYXJjaEZuKHRlcm06IHN0cmluZyk6IE9ic2VydmFibGU8VFtdPiB7XG4gICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyZWRPcHRpb25zU2lnbmFsKCkuZmlsdGVyKChvcHRpb246IFQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcob3B0aW9uW3RoaXMub3B0aW9uTGFiZWxdKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0udG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzR3JvdXBJbmRldGVybWluYXRlKGNoaWxkcmVuOiBOZ09wdGlvbltdKSB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5zb21lKChjaGlsZDogTmdPcHRpb24pID0+IGNoaWxkLnNlbGVjdGVkKSAmJiAhdGhpcy5pc0dyb3VwQ2hlY2tlZChjaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaXNHcm91cERpc2FibGVkKGNoaWxkcmVuOiBOZ09wdGlvbltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBjaGlsZHJlbi5ldmVyeSgoY2hpbGQ6IE5nT3B0aW9uKSA9PiBjaGlsZC5kaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaXNHcm91cENoZWNrZWQoY2hpbGRyZW46IE5nT3B0aW9uW10pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuLmV2ZXJ5KChjaGlsZDogTmdPcHRpb24pID0+IGNoaWxkLmRpc2FibGVkIHx8IGNoaWxkLnNlbGVjdGVkKSAmJiAhdGhpcy5pc0dyb3VwRGlzYWJsZWQoY2hpbGRyZW4pO1xuICAgIH1cblxuICAgIG9uU2VsZWN0T25seShpdGVtOiBUKTogdm9pZCB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtpdGVtXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvblZhbHVlID8gdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW2l0ZW1bdGhpcy5vcHRpb25WYWx1ZV1dKSA6IHRoaXMuc2VsZWN0ZWRWYWx1ZXNTaWduYWwuc2V0KFtpdGVtXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0T3BlbmVkKCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWFyY2hhYmxlICYmICEhdGhpcy5zZWFyY2hGbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZm9jdXNJbnB1dCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkhvdmVySXRlbShodG1saWQ6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXRlbUhvdmVyZWRTaWduYWwuc2V0KGh0bWxpZCk7XG4gICAgfVxuXG4gICAgb25MZWF2ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5tdWx0aXBsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtSG92ZXJlZFNpZ25hbC5zZXQobnVsbCk7XG4gICAgfVxuXG4gICAgb25Ub2dnbGVBbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKSB8fCB0aGlzLnBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVkT3B0aW9ucygpLm1hcCgodmFsdWU6IFQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25WYWx1ZSA/IHZhbHVlW3RoaXMub3B0aW9uVmFsdWVdIDogdmFsdWU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpO1xuICAgIH1cblxuICAgIG9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2Uoc2VsZWN0ZWRWYWx1ZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsLnNldChzZWxlY3RlZFZhbHVlcyk7XG4gICAgICAgIHRoaXMuY2FsbENvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4oKTtcbiAgICB9XG5cbiAgICBvbk9wZW5TZWxlY3QoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0Lm9wZW4oKTtcbiAgICB9XG5cbiAgICBvbklubGluZUlucHV0RW50ZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG92ZXJlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgb25JbmxpbmVJbnB1dExlYXZlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBvbkNyZWF0ZU5ldygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jcmVhdGVOZXcuZW1pdCh0aGlzLnNlYXJjaFRlcm1TaWduYWwoKSk7XG4gICAgICAgIHRoaXMuc2VsZWN0LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlU2VsZWN0ZWRJdGVtKHsgJGV2ZW50IH06IHsgJGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50IH0sIGl0ZW06IFQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCRldmVudCkge1xuICAgICAgICAgICAgJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSXRlbUlkID0gdHlwZW9mIGl0ZW0gPT09ICdzdHJpbmcnID8gaXRlbSA6IHRoaXMub3B0aW9uVmFsdWUgPyBpdGVtW3RoaXMub3B0aW9uVmFsdWVdIDogaXRlbTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1NpZ25hbC51cGRhdGUoKHNlbGVjdGVkVmFsdWVzOiB1bmtub3duW10pID0+XG4gICAgICAgICAgICBzZWxlY3RlZFZhbHVlcy5maWx0ZXIoKHNlbGVjdGVkVmFsdWU6IHVua25vd24pID0+IHNlbGVjdGVkVmFsdWUgIT09IHNlbGVjdGVkSXRlbUlkKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNhbGxDb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxsQ29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbigpIHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZXMuZW1pdCh0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkpO1xuICAgICAgICBpZiAodGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbikge1xuICAgICAgICAgICAgdGhpcy5fY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLnNlbGVjdGVkVmFsdWVzU2lnbmFsKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RWYWx1ZUNvbnRhaW5lcldpZHRoU2lnbmFsKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RWYWx1ZUNvbnRhaW5lcikge1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nUGxhY2VIb2xkZXJXaWR0aCA9IDEwMDtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdFZhbHVlQ29udGFpbmVyV2lkdGggPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmNsaWVudFdpZHRoIC0gcmVtYWluaW5nUGxhY2VIb2xkZXJXaWR0aDtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aFNpZ25hbC5zZXQoc2VsZWN0VmFsdWVDb250YWluZXJXaWR0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVJlc3BvbnNpdmVMYWJlbHMoY29udGFpbmVyV2lkdGg6IG51bWJlciwgc2VsZWN0ZWRWYWx1ZXM6IHVua25vd25bXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXNlbGVjdGVkVmFsdWVzIHx8IHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5oaWRkZW5Db3VudFNpZ25hbC5zZXQoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXRlbXNDb250YWluZXIgPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ211bHRpcGxlLWl0ZW0nKVswXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLnNlbGVjdFZhbHVlQ29udGFpbmVyLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2l0ZW0nKTtcbiAgICAgICAgbGV0IHRvdGFsV2lkdGggPSAwO1xuICAgICAgICBsZXQgaGlkZGVuQ291bnQgPSAwO1xuICAgICAgICBjb25zdCBpdGVtR2FwID0gNDtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1zLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1XaWR0aCA9IGl0ZW0uY2xpZW50V2lkdGggKyBpdGVtR2FwO1xuICAgICAgICAgICAgaWYgKHRvdGFsV2lkdGggKyBpdGVtV2lkdGggPCBjb250YWluZXJXaWR0aCAmJiAhaGlkZGVuQ291bnQpIHtcbiAgICAgICAgICAgICAgICB0b3RhbFdpZHRoICs9IGl0ZW1XaWR0aDtcbiAgICAgICAgICAgICAgICAoaXRlbSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKGl0ZW0gYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgICAgICBoaWRkZW5Db3VudCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGl0ZW1zQ29udGFpbmVyLnN0eWxlLm1heFdpZHRoID0gYCR7dG90YWxXaWR0aH1weGA7XG4gICAgICAgIHRoaXMuaGlkZGVuQ291bnRTaWduYWwuc2V0KGhpZGRlbkNvdW50KTtcbiAgICB9XG59XG4iLCI8bGFiZWxcbiAgICAqbmdJZj1cImxhYmVsICYmICFpbmxpbmVMYWJlbFwiXG4gICAgW2Zvcl09XCJzZWxlY3RJZFwiPlxuICAgIDxzcGFuPlxuICAgICAgICB7eyBsYWJlbCB9fVxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICB7eyBkZXNjcmlwdGlvbiB9fVxuICAgIDwvc3Bhbj5cbjwvbGFiZWw+XG5cbjxkaXZcbiAgICAqbmdJZj1cImlubGluZUxhYmVsXCJcbiAgICAjaW5saW5lTGFiZWxcbiAgICB0YWJpbmRleD1cIjBcIlxuICAgIGNsYXNzPVwiaW5saW5lLWxhYmVsXCJcbiAgICAoY2xpY2spPVwib25PcGVuU2VsZWN0KClcIlxuICAgIChrZXlkb3duLmVudGVyKT1cIm9uT3BlblNlbGVjdCgpXCJcbiAgICAobW91c2VlbnRlcik9XCJvbklubGluZUlucHV0RW50ZXIoKVwiXG4gICAgKG1vdXNlbGVhdmUpPVwib25JbmxpbmVJbnB1dExlYXZlKClcIj5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJsYWJlbCAmJiBpbmxpbmVMYWJlbFwiXG4gICAgICAgIGNsYXNzPVwibGFiZWxcIlxuICAgICAgICBbZm9yXT1cInNlbGVjdElkXCI+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cbjwvZGl2PlxuXG48bmctc2VsZWN0XG4gICAgI3NlbGVjdFxuICAgIGNsYXNzPVwiYXAtc2VsZWN0XCJcbiAgICBbdGFiSW5kZXhdPVwiMFwiXG4gICAgW2NsZWFyYWJsZV09XCJjbGVhcmFibGVcIlxuICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgW2xhYmVsRm9ySWRdPVwic2VsZWN0SWRcIlxuICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcbiAgICBbY2xvc2VPblNlbGVjdF09XCIhbXVsdGlwbGVcIlxuICAgIFtiaW5kVmFsdWVdPVwib3B0aW9uVmFsdWUgPyBvcHRpb25WYWx1ZSA6ICcnXCJcbiAgICBbZ3JvdXBCeV09XCJncm91cCA/IG9wdGlvbkdyb3VwTGFiZWwgOiAnJ1wiXG4gICAgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttYXJrRmlyc3RdPVwiZmFsc2VcIlxuICAgIFtzZWxlY3RhYmxlR3JvdXBdPVwic2VsZWN0YWJsZUdyb3VwXCJcbiAgICBbc2VsZWN0YWJsZUdyb3VwQXNNb2RlbF09XCJmYWxzZVwiXG4gICAgW2FwcGVuZFRvXT1cImFwcGVuZFRvXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbCB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiYXJpYUxhYmVsbGVkQnkgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJhcmlhRGVzY3JpYmVkQnkgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZD8udG9TdHJpbmcoKVwiXG4gICAgW2l0ZW1zXT1cIm9wdGlvbnNTaWduYWwoKVwiXG4gICAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVXaXRoXCJcbiAgICBbbG9hZGluZ109XCJsb2FkaW5nU2lnbmFsKClcIlxuICAgIFtuZ01vZGVsXT1cInNlbGVjdGVkVmFsdWVzU2lnbmFsKClcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uU2VsZWN0ZWRWYWx1ZXNDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9wZW4pPVwib25TZWxlY3RPcGVuZWQoKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hhYmxlIHx8IHNlbGVjdEFsbFwiPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgICAgICAgICBuZy1oZWFkZXItdG1wPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlYXJjaGFibGVcIj5cbiAgICAgICAgICAgICAgICA8YXAtaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0XG4gICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJzZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZ1bGwtd2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xJZD1cInNlYXJjaC1hbHRlcm5hdGVcIlxuICAgICAgICAgICAgICAgICAgICBzeW1ib2xQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoVGVybVNpZ25hbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hUZXJtQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0QWxsXCI+XG4gICAgICAgICAgICAgICAgPGFwLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgIG5hbWU9XCJvcHRpb24tZ3JvdXAtc2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRldGVybWluYXRlXT1cInBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImFsbFNlbGVjdGVkU2lnbmFsKClcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVBbGwoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHBhcnRpYWx5U2VsZWN0ZWRTaWduYWwoKSB8fCBhbGxTZWxlY3RlZFNpZ25hbCgpID8gdW5zZWxlY3RBbGxUZXh0IDogc2VsZWN0QWxsVGV4dCB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9hcC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBsZXQtaXRlbT1cIml0ZW1cIlxuICAgICAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiXG4gICAgICAgIG5nLW9wdGdyb3VwLXRtcD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJncm91cFwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWFyY2hdPVwic2VhcmNoYWJsZVwiXG4gICAgICAgICAgICBbY2xhc3Mud2l0aC1zZWxlY3QtYWxsXT1cInNlbGVjdEFsbFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25Hcm91cExhYmVsXSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YXAtYmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Hcm91cFRhZyAmJiBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgIDwvYXAtYmFkZ2U+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICAgICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGFibGVHcm91cFwiXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIidvcHRpb24tZ3JvdXAtc2VsZWN0aW9uLScgKyBpdGVtWydncm91cCddXCJcbiAgICAgICAgICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwiaXNHcm91cEluZGV0ZXJtaW5hdGUoaXRlbSQuY2hpbGRyZW4pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNHcm91cENoZWNrZWQoaXRlbSQuY2hpbGRyZW4pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ3JvdXAtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uR3JvdXBMYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3B0aW9uR3JvdXBUYWcgJiYgb3B0aW9uR3JvdXBUYWdbaXRlbVtvcHRpb25Hcm91cExhYmVsXV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25Hcm91cFRhZ1tpdGVtW29wdGlvbkdyb3VwTGFiZWxdXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2FwLWJhZGdlPlxuICAgICAgICAgICAgICAgIDwvYXAtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhc2VsZWN0YWJsZUdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJncm91cC1sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkdyb3VwTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtcz1cIml0ZW1zXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1tdWx0aS1sYWJlbC10bXA+XG4gICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY3VzdG9tTXVsdGlMYWJlbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3RleHQnIHx8ICFkaXNwbGF5VHlwZVNpZ25hbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtW29wdGlvbkxhYmVsXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICdsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIml0ZW1bb3B0aW9uTGFiZWxdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtIHRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXAtdGFnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0gd2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICdsYWJlbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJibHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlbW92YWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwLXRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW0gdGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsZWFyYWJsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGVhcik9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbSB3aXRoLWF2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvblByb2ZpbGVJbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMjRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Byb2ZpbGVQaWN0dXJlXT1cIml0ZW1bb3B0aW9uUHJvZmlsZUltYWdlVXJsXSA/PyAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SW5pdGlhbHNdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlMYWJlbFRlbXBsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21NdWx0aUxhYmVsVGVtcGxhdGU7IGNvbnRleHQ6IHsgb3B0aW9uczogaXRlbXMgfVwiIC8+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cImhpZGRlbkNvdW50U2lnbmFsKCkgPiAwXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlbWFpbmluZ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ3dpdGhBdmF0YXInIHx8ICFkaXNwbGF5VHlwZVNpZ25hbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+K3t7IGhpZGRlbkNvdW50U2lnbmFsKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAre3sgaGlkZGVuQ291bnRTaWduYWwoKSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXAtbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIicrJyArIGhpZGRlbkNvdW50U2lnbmFsKClcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlIG5nLWxvYWRpbmd0ZXh0LXRtcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxvYWRpbmctc3RhdGVcIj5cbiAgICAgICAgICAgIDxhcC1sb2FkZXIgZGlhbWV0ZXI9XCIzMFwiIC8+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBsb2FkaW5nVGV4dCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSBuZy1sb2FkaW5nc3Bpbm5lci10bXA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3JlYXRlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBuZy1mb290ZXItdG1wPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY3JlYXRlLW5ld1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ3JlYXRlTmV3KClcIj5cbiAgICAgICAgICAgICAgICA8YXAtc3ltYm9sXG4gICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiYWRkLTIwMjJcIlxuICAgICAgICAgICAgICAgICAgICBzaXplPVwibWljcm9cIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBjcmVhdGVUZXh0IH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hUZXJtU2lnbmFsKClcIj5cInt7IHNlYXJjaFRlcm1TaWduYWwoKSB9fVwiPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICAgICAgbGV0LWl0ZW0kPVwiaXRlbSRcIlxuICAgICAgICBuZy1vcHRpb24tdG1wPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFvcHRpb25MYWJlbCB8fCAhaXRlbVtvcHRpb25MYWJlbF0pICYmIGl0ZW0gJiYgKCFvcHRpb25EaXZpZGVyIHx8ICFpdGVtW29wdGlvbkRpdmlkZXJdKSAmJiAhY3VzdG9tT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvbi1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSQuc2VsZWN0ZWQgJiYgIW11bHRpcGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbElkPVwiY2hlY2stMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImVsZWN0cmljLWJsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIm1pY3JvXCIgLz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihvcHRpb25MYWJlbCAmJiBpdGVtW29wdGlvbkxhYmVsXSkgfHwgY3VzdG9tT3B0aW9uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLndpdGgtY2FwdGlvbl09XCJvcHRpb25DYXB0aW9uICYmIGl0ZW1bb3B0aW9uQ2FwdGlvbl1cIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5tdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Ib3Zlckl0ZW0oaXRlbSQuaHRtbElkKVwiXG4gICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwib25MZWF2ZUl0ZW0oKVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb250ZW50SXRlbTsgY29udGV4dDogeyBpdGVtOiBpdGVtLCBpdGVtJDogaXRlbSQgfVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25EaXZpZGVyICYmIGl0ZW1bb3B0aW9uRGl2aWRlcl1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgICAgIG5nLWxhYmVsLXRtcD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjdXN0b21MYWJlbFRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhb3B0aW9uTGFiZWwgJiYgIWN1c3RvbUxhYmVsVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGV4dCcgfHwgIWRpc3BsYXlUeXBlU2lnbmFsKClcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnbGFiZWwnXCI+XG4gICAgICAgICAgICAgICAgPGFwLWxhYmVsXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwiYmx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVTZWxlY3RlZEl0ZW0oJGV2ZW50LCBpdGVtKVwiIC8+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAndGFnJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC10YWdcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xlYXJhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsZWFyKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L2FwLXRhZz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd3aXRoQXZhdGFyJ1wiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25MYWJlbCAmJiAhY3VzdG9tTGFiZWxUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0ZXh0JyB8fCAhZGlzcGxheVR5cGVTaWduYWwoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGlzcGxheVR5cGVTaWduYWwoKSA9PT0gJ2xhYmVsJ1wiPlxuICAgICAgICAgICAgICAgIDxhcC1sYWJlbFxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cImJsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAocmVtb3ZlKT1cInJlbW92ZVNlbGVjdGVkSXRlbSgkZXZlbnQsIGl0ZW0pXCIgLz5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlUeXBlU2lnbmFsKCkgPT09ICd0YWcnXCI+XG4gICAgICAgICAgICAgICAgPGFwLXRhZ1xuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGVhcmFibGVdPVwibXVsdGlwbGVcIlxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25MYWJlbF1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xlYXIpPVwicmVtb3ZlU2VsZWN0ZWRJdGVtKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIi8+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uTGFiZWxdIH19XG4gICAgICAgICAgICAgICAgPC9hcC10YWc+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5VHlwZVNpZ25hbCgpID09PSAnd2l0aEF2YXRhcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2l0aC1hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cIjI0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3VzZXJuYW1lXT1cIm9wdGlvbkxhYmVsICYmIGl0ZW1bb3B0aW9uTGFiZWxdID8gaXRlbVtvcHRpb25MYWJlbF0gOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0luaXRpYWxzXT1cInRydWVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtW29wdGlvbkxhYmVsXSB9fVxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgbmctbm90Zm91bmQtdG1wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9uIG5vdC1mb3VuZFwiPlxuICAgICAgICAgICAge3sgbm90Rm91bmRUZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXNlbGVjdD5cblxuPG5nLXRlbXBsYXRlXG4gICAgI2NvbnRlbnRJdGVtXG4gICAgbGV0LWl0ZW09XCJpdGVtXCJcbiAgICBsZXQtaXRlbSQ9XCJpdGVtJFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtdWx0aXBsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGlzYWJsZWQtb3BhcXVlXCI+PC9kaXY+XG4gICAgICAgIDxhcC1jaGVja2JveFxuICAgICAgICAgICAgKm5nSWY9XCJtdWx0aXBsZVwiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJpdGVtJC5zZWxlY3RlZFwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXRlbSQuZGlzYWJsZWRcIlxuICAgICAgICAgICAgW25hbWVdPVwiJ29wdGlvbi1zZWxlY3Rpb24tJyArIGl0ZW0kLmh0bWxJZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICAgICAgPC9hcC1jaGVja2JveD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW11bHRpcGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkaXNhYmxlZC1vcGFxdWVcIj48L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRleHRJdGVtOyBjb250ZXh0OiB7IGl0ZW06IGl0ZW0sIGl0ZW0kOiBpdGVtJCB9XCIgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICAgICN0ZXh0SXRlbVxuICAgIGxldC1pdGVtPVwiaXRlbVwiXG4gICAgbGV0LWl0ZW0kPVwiaXRlbSRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWN1c3RvbU9wdGlvblRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvbkxhYmVsXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0gfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25Qcm9maWxlSW1hZ2VVcmxcIj5cbiAgICAgICAgICAgICAgICA8YXAtYXZhdGFyXG4gICAgICAgICAgICAgICAgICAgIHNpemU9XCIyNFwiXG4gICAgICAgICAgICAgICAgICAgIFtwcm9maWxlUGljdHVyZV09XCJpdGVtW29wdGlvblByb2ZpbGVJbWFnZVVybF0gPz8gJydcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlcm5hbWVdPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF0gPyBpdGVtW29wdGlvbkxhYmVsXSA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dJbml0aWFsc109XCJ0cnVlXCIvPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uTGFiZWwgJiYgaXRlbVtvcHRpb25MYWJlbF1cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpcnN0LWxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIml0ZW1bb3B0aW9uTGFiZWxdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbVtvcHRpb25MYWJlbF0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25CYWRnZUxhYmVsICYmIGl0ZW1bb3B0aW9uQmFkZ2VMYWJlbF1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXAtYmFkZ2UgY29sb3I9XCJibHVlXCI+e3sgaXRlbVtvcHRpb25CYWRnZUxhYmVsXSB9fTwvYXAtYmFkZ2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25DYXB0aW9uICYmIGl0ZW1bb3B0aW9uQ2FwdGlvbl1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVtvcHRpb25DYXB0aW9uXVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bb3B0aW9uQ2FwdGlvbl0gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21PcHRpb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImN1c3RvbU9wdGlvblRlbXBsYXRlOyBjb250ZXh0OiB7IG9wdGlvbjogaXRlbSB9XCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvbmx5ICYmICFpdGVtJC5kaXNhYmxlZCAmJiBpdGVtSG92ZXJlZFNpZ25hbCgpID09PSBpdGVtJC5odG1sSWQgJiYgbXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cInN0YW5kYWxvbmUtbGlua1wiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0T25seShpdGVtKVwiPlxuICAgICAgICAgICAgICAgIHt7IG9ubHlUZXh0IH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtJC5zZWxlY3RlZCAmJiAhbXVsdGlwbGVcIj5cbiAgICAgICAgICAgIDxhcC1zeW1ib2xcbiAgICAgICAgICAgICAgICBzeW1ib2xJZD1cImNoZWNrLTJcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZWxlY3RyaWMtYmx1ZVwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cIm1pY3JvXCIgLz5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19