@sarasanalytics-com/design-system 0.0.139 → 0.0.140
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/interfaces/form-layout.interface.mjs +1 -1
- package/esm2022/interfaces/icon-interface.mjs +1 -1
- package/esm2022/lib/accordion/accordion.component.mjs +2 -2
- package/esm2022/lib/button/button.component.mjs +1 -1
- package/esm2022/lib/card/card.component.mjs +2 -2
- package/esm2022/lib/card/checkbox-card/checkbox-card.component.mjs +2 -2
- package/esm2022/lib/card/guide-card/guide-card.component.mjs +1 -1
- package/esm2022/lib/card/menu-card/menu-card.component.mjs +2 -2
- package/esm2022/lib/card-carousel/card-carousel.component.mjs +2 -2
- package/esm2022/lib/categories-nav/categories-nav.component.mjs +22 -5
- package/esm2022/lib/data-grid/data-grid.component.mjs +24 -3
- package/esm2022/lib/dialog/dialog.component.mjs +3 -3
- package/esm2022/lib/filter/filter.component.mjs +2 -2
- package/esm2022/lib/form-input/form-input.component.mjs +13 -3
- package/esm2022/lib/form-select/form-select.component.mjs +3 -3
- package/esm2022/lib/grid-cell/grid-cell.component.mjs +8 -3
- package/esm2022/lib/header/header.component.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +4 -2
- package/esm2022/lib/layout-section/layout-section.component.mjs +2 -2
- package/esm2022/lib/left-nav/left-nav.component.mjs +2 -2
- package/esm2022/lib/list/list.component.mjs +2 -2
- package/esm2022/lib/menu/menu-list/menu-item.component.mjs +2 -2
- package/esm2022/lib/menu/menu.component.mjs +2 -2
- package/esm2022/lib/message-banner/message-banner.component.mjs +2 -2
- package/esm2022/lib/message-banner-v2/message-banner-v2.component.mjs +46 -29
- package/esm2022/lib/mini-card/mini-card.component.mjs +2 -2
- package/esm2022/lib/toast/toast.component.mjs +1 -1
- package/esm2022/lib/tool-tip/tool-tip.component.mjs +3 -3
- package/fesm2022/sarasanalytics-com-design-system.mjs +133 -63
- package/fesm2022/sarasanalytics-com-design-system.mjs.map +1 -1
- package/interfaces/form-layout.interface.d.ts +2 -7
- package/interfaces/icon-interface.d.ts +1 -0
- package/lib/categories-nav/categories-nav.component.d.ts +36 -3
- package/lib/data-grid/data-grid.component.d.ts +6 -1
- package/lib/form-input/form-input.component.d.ts +3 -0
- package/lib/icon/icon.component.d.ts +2 -1
- package/lib/message-banner-v2/message-banner-v2.component.d.ts +6 -3
- package/package.json +1 -1
|
@@ -260,7 +260,7 @@ export class FormSelectComponent extends FieldType {
|
|
|
260
260
|
}
|
|
261
261
|
}
|
|
262
262
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
263
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormSelectComponent, isStandalone: true, selector: "lib-form-select", outputs: { hoverEvent: "hoverEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"sa-select-container {{props?.['inputContainerClass']}}\">\r\n @if(!!props?.['label']){\r\n <div class=\"sa-select-label-container\">\r\n <div class=\"sa-select-label-tooltip-container\">\r\n <span class=\"sa-select-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-select-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-select-field-container\">\r\n <div [style.visibility]=\"(props?.['showTag'] !== false && (openState || topLabel)) ? 'visible' : 'hidden'\"\r\n class=\"clicked-label\">{{params.label}}\r\n </div>\r\n <div\r\n class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}} {{formControl.valid ? '' : 'invalid'}}\">\r\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\r\n </div>\r\n <ng-select (change)=\"onNgSelectChange($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\r\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\r\n [placeholder]=\"placeholderLabel\" [bindLabel]=\"props?.['bindLabel'] || 'name'\" [bindValue]=\"props?.['bindValue'] || null\" [items]=\"selectables\" [multiple]=\"params?.multiple\"\r\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\" [clearable]=\"false\"> \r\n <!-- Multi-label template for displaying selected items as chips -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\r\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\r\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\r\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\r\n [iconPosition]=\"params.iconPosition\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"items.length > (startInd+labelLimit)\">\r\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\"\r\n class=\"ng-value overflow-label\">\r\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Checkbox option template for individual items when in checkbox mode -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\" *ngIf=\"params?.showCheckboxes\">\r\n <div class=\"checkbox-option\">\r\n <input type=\"checkbox\" \r\n [checked]=\"isOptionSelected(item)\" \r\n (mousedown)=\"toggleItemSelection(item, $event)\"\r\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\r\n class=\"option-checkbox\"> \r\n <span class=\"option-label\">{{ item[props?.['bindLabel'] || 'name'] }}</span>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Simple header template for Select All / Unselect All when in checkbox mode -->\r\n <ng-template ng-header-tmp *ngIf=\"params?.showCheckboxes && params?.multiple\">\r\n <div class=\"select-all-header\">\r\n <span class=\"select-all-label\" (click)=\"selectAll()\">Select all</span>\r\n <span class=\"unselect-all-label\" (click)=\"unselectAll()\">Unselect all</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-arrow-tmp>\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex custom-dropdown-arrow\" [size]=\"'18'\"></sa-icon>\r\n </ng-template>\r\n </ng-select>\r\n <div *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\" class=\"right-icon\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\" (click)=\"openClose(true)\"\r\n (blur)=\"openClose(false)\"></sa-icon>\r\n </div>\r\n <!-- <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\r\n </div> -->\r\n\r\n <div class=\"fallback-arrow\" *ngIf=\"!openState\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\"></sa-icon>\r\n </div>\r\n </div>\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n <div class=\"support-label\">{{params.supportText}}</div>\r\n</div>", styles: [".idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.disabled{border:1px solid var(--grey-50)!important}.ng-select-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.ng-select-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px) 0 var(--medium-30px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-family:var(--font);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.invalid{border:1px solid var(--semantic-error-500, #BD271E)}.ng-select{width:inherit;display:inline-flex;justify-content:center;align-items:center;flex-shrink:0}.custom-select-container .ng-select{padding-left:1.25rem}.ng-select ::ng-deep .ng-select-container{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;font-family:var(--font);box-sizing:border-box;border:none}.ng-select ::ng-deep .ng-dropdown-panel{margin-top:2px;border:1px solid var(--grey-50);box-shadow:none!important}.ng-select ::ng-deep .ng-select-container{box-shadow:none!important;position:relative!important;z-index:1!important}.ng-select ::ng-deep .ng-value-container{padding:0!important;flex-wrap:nowrap!important;display:flex;justify-content:flex-start;gap:5px;overflow-x:hidden}.ng-select ::ng-deep .ng-value{flex:none;margin:0!important}.overflow-label{padding:0 5px;cursor:pointer}.ng-select ::ng-deep .ng-placeholder{padding:0!important;position:inherit!important;color:var(--text-lowemphasis)}.ng-select ::ng-deep .ng-input{padding:0!important;position:inherit!important}.ng-select ::ng-deep .ng-clear-wrapper{z-index:9;display:flex;margin-left:5px}.ng-select ::ng-deep .ng-arrow{border-color:none!important;border-style:none!important;border-width:0!important}.svg-icon{-webkit-mask-size:contain;mask-size:contain;width:20px;height:20px;background-color:gray}.svg-icon:hover{cursor:pointer}.ng-select ::ng-deep .ng-arrow-wrapper,::ng-deep .ng-select-filtered .ng-select-container .ng-value-container .ng-value{display:none}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.clicked-label{position:relative;width:max-content;font-family:var(--font);font-size:11px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:0 var(--small-8px);margin-left:12px;margin-bottom:-8px;z-index:99;background-color:#fff}.ng-select ::ng-deep .ng-dropdown-panel{width:calc(100% + 24px);left:-12px;margin-top:6px}.custom-select-container .ng-select ::ng-deep .ng-dropdown-panel{left:.45rem}.d-flex{display:flex}.custom-select-container.sa-select-container{display:flex;flex-direction:column;gap:var(--small-12px, 12px)}.sa-select-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-select-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.right-icon{padding-right:1.2rem;color:#757575}.invalid .right-icon{color:var(--semantic-error-500, #BD271E)}.error-message{color:var(--semantic-error-500, #BD271E);font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:var(--small-16px);letter-spacing:.5px}.checkbox-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s ease}.checkbox-option:hover{background-color:var(--grey-50, #F9FAFB)}.option-checkbox{width:16px;height:16px;margin-right:8px;cursor:pointer;accent-color:var(--primary-500, #6B46C1)}.option-label{font-size:14px;font-weight:400;color:var(--text-high-emphasis, #1D2939);line-height:20px}.select-all-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--grey-200, #E4E7EC);background-color:var(--grey-25, #FCFCFD);cursor:pointer;transition:background-color .2s ease}.select-all-header:hover{background-color:var(--grey-50, #F9FAFB)}.select-all-label,.unselect-all-label{font-size:14px;font-weight:500;color:var(--primary-500, #6B46C1);line-height:20px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.select-all-label:hover,.unselect-all-label:hover{background-color:var(--primary-50, #F3F4F6)}.unselect-all-label{color:var(--grey-600, #475467)}.unselect-all-label:hover{background-color:var(--grey-100, #F2F4F7)}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-medium-emphasis, #6D6979)}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:transparent!important}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-highlighted{background-color:var(--grey-50, #F9FAFB)!important}.custom-dropdown-arrow{color:var(--Grey-600, #475467);cursor:pointer;transition:transform .2s ease}.ng-select.ng-select-opened .custom-dropdown-arrow{transform:rotate(180deg)}.ng-select ::ng-deep .ng-arrow-wrapper{display:flex!important;align-items:center;justify-content:center;padding-right:12px;width:18px;height:18px}.ng-select ::ng-deep .ng-arrow-wrapper .ng-arrow{display:none}.ng-select.ng-select-multiple ::ng-deep .ng-arrow-wrapper{display:flex!important}.fallback-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;color:var(--Grey-600, #475467)}.ng-select ::ng-deep .ng-arrow-wrapper:not(:empty)+.fallback-arrow{display:none}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.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: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
263
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: FormSelectComponent, isStandalone: true, selector: "lib-form-select", outputs: { hoverEvent: "hoverEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"sa-select-container {{props?.['inputContainerClass']}}\">\r\n @if(!!props?.['label']){\r\n <div class=\"sa-select-label-container\">\r\n <div class=\"sa-select-label-tooltip-container\">\r\n <span class=\"sa-select-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-select-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-select-field-container\">\r\n <div [style.visibility]=\"(props?.['showTag'] !== false && (openState || topLabel)) ? 'visible' : 'hidden'\"\r\n class=\"clicked-label\">{{params.label}}\r\n </div>\r\n <div\r\n class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}} {{formControl.valid ? '' : 'invalid'}}\">\r\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\r\n </div>\r\n <ng-select (change)=\"onNgSelectChange($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\r\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\r\n [placeholder]=\"placeholderLabel\" [bindLabel]=\"props?.['bindLabel'] || 'name'\" [bindValue]=\"props?.['bindValue'] || null\" [items]=\"selectables\" [multiple]=\"params?.multiple\"\r\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\" [clearable]=\"false\"> \r\n <!-- Multi-label template for displaying selected items as chips -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\r\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\r\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\r\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\r\n [iconPosition]=\"params.iconPosition\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"items.length > (startInd+labelLimit)\">\r\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"primary\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\"\r\n class=\"ng-value overflow-label\">\r\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Checkbox option template for individual items when in checkbox mode -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\" *ngIf=\"params?.showCheckboxes\">\r\n <div class=\"checkbox-option\">\r\n <input type=\"checkbox\" \r\n [checked]=\"isOptionSelected(item)\" \r\n (mousedown)=\"toggleItemSelection(item, $event)\"\r\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\r\n class=\"option-checkbox\"> \r\n <span class=\"option-label\">{{ item[props?.['bindLabel'] || 'name'] }}</span>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Simple header template for Select All / Unselect All when in checkbox mode -->\r\n <ng-template ng-header-tmp *ngIf=\"params?.showCheckboxes && params?.multiple\">\r\n <div class=\"select-all-header\">\r\n <span class=\"select-all-label\" (click)=\"selectAll()\">Select all</span>\r\n <span class=\"unselect-all-label\" (click)=\"unselectAll()\">Unselect all</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-arrow-tmp>\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex custom-dropdown-arrow\" [size]=\"'18'\"></sa-icon>\r\n </ng-template>\r\n </ng-select>\r\n <div *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\" class=\"right-icon\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\" (click)=\"openClose(true)\"\r\n (blur)=\"openClose(false)\"></sa-icon>\r\n </div>\r\n <!-- <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\r\n </div> -->\r\n\r\n <div class=\"fallback-arrow\" *ngIf=\"!openState\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\"></sa-icon>\r\n </div>\r\n </div>\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n <div class=\"support-label\">{{params.supportText}}</div>\r\n</div>", styles: [".idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.disabled{border:1px solid var(--grey-50)!important}.ng-select-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.ng-select-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px) 0 var(--medium-30px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-family:var(--font);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.invalid{border:1px solid var(--semantic-error-500, #BD271E)}.ng-select{width:inherit;display:inline-flex;justify-content:center;align-items:center;flex-shrink:0}.custom-select-container .ng-select{padding-left:1.25rem}.ng-select ::ng-deep .ng-select-container{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;font-family:var(--font);box-sizing:border-box;border:none}.ng-select ::ng-deep .ng-dropdown-panel{margin-top:2px;border:1px solid var(--grey-50);box-shadow:none!important}.ng-select ::ng-deep .ng-select-container{box-shadow:none!important;position:relative!important;z-index:1!important}.ng-select ::ng-deep .ng-value-container{padding:0!important;flex-wrap:nowrap!important;display:flex;justify-content:flex-start;gap:5px;overflow-x:hidden}.ng-select ::ng-deep .ng-value{flex:none;margin:0!important}.overflow-label{padding:0 5px;cursor:pointer}.ng-select ::ng-deep .ng-placeholder{padding:0!important;position:inherit!important;color:var(--text-lowemphasis)}.ng-select ::ng-deep .ng-input{padding:0!important;position:inherit!important}.ng-select ::ng-deep .ng-clear-wrapper{z-index:9;display:flex;margin-left:5px}.ng-select ::ng-deep .ng-arrow{border-color:none!important;border-style:none!important;border-width:0!important}.svg-icon{-webkit-mask-size:contain;mask-size:contain;width:20px;height:20px;background-color:gray}.svg-icon:hover{cursor:pointer}.ng-select ::ng-deep .ng-arrow-wrapper,::ng-deep .ng-select-filtered .ng-select-container .ng-value-container .ng-value{display:none}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--primary-50)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.clicked-label{position:relative;width:max-content;font-family:var(--font);font-size:11px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:0 var(--small-8px);margin-left:12px;margin-bottom:-8px;z-index:99;background-color:#fff}.ng-select ::ng-deep .ng-dropdown-panel{width:calc(100% + 24px);left:-12px;margin-top:6px}.custom-select-container .ng-select ::ng-deep .ng-dropdown-panel{left:.45rem}.d-flex{display:flex}.custom-select-container.sa-select-container{display:flex;flex-direction:column;gap:var(--small-12px, 12px)}.sa-select-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-select-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.right-icon{padding-right:1.2rem;color:#757575}.invalid .right-icon{color:var(--semantic-error-500, #BD271E)}.error-message{color:var(--semantic-error-500, #BD271E);font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:var(--small-16px);letter-spacing:.5px}.checkbox-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s ease}.checkbox-option:hover{background-color:var(--grey-50, #F9FAFB)}.option-checkbox{width:16px;height:16px;margin-right:8px;cursor:pointer;accent-color:var(--primary-500, #6B46C1)}.option-label{font-size:14px;font-weight:400;color:var(--text-high-emphasis, #1D2939);line-height:20px}.select-all-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--grey-200, #E4E7EC);background-color:var(--grey-25, #FCFCFD);cursor:pointer;transition:background-color .2s ease}.select-all-header:hover{background-color:var(--grey-50, #F9FAFB)}.select-all-label,.unselect-all-label{font-size:14px;font-weight:500;color:var(--primary-500, #6B46C1);line-height:20px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.select-all-label:hover,.unselect-all-label:hover{background-color:var(--primary-50, #F3F4F6)}.unselect-all-label{color:var(--grey-600, #475467)}.unselect-all-label:hover{background-color:var(--grey-100, #F2F4F7)}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-medium-emphasis, #6D6979)}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:transparent!important}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-highlighted{background-color:var(--grey-50, #F9FAFB)!important}.custom-dropdown-arrow{color:var(--Grey-600, #475467);cursor:pointer;transition:transform .2s ease}.ng-select.ng-select-opened .custom-dropdown-arrow{transform:rotate(180deg)}.ng-select ::ng-deep .ng-arrow-wrapper{display:flex!important;align-items:center;justify-content:center;padding-right:12px;width:18px;height:18px}.ng-select ::ng-deep .ng-arrow-wrapper .ng-arrow{display:none}.ng-select.ng-select-multiple ::ng-deep .ng-arrow-wrapper{display:flex!important}.fallback-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;color:var(--Grey-600, #475467)}.ng-select ::ng-deep .ng-arrow-wrapper:not(:empty)+.fallback-arrow{display:none}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: i2.ɵFormlyValidationMessage, selector: "formly-validation-message", inputs: ["field"] }, { kind: "ngmodule", type: NgSelectModule }, { kind: "component", type: i3.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: i3.NgOptionTemplateDirective, selector: "[ng-option-tmp]" }, { kind: "directive", type: i3.NgMultiLabelTemplateDirective, selector: "[ng-multi-label-tmp]" }, { kind: "directive", type: i3.NgHeaderTemplateDirective, selector: "[ng-header-tmp]" }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "ngmodule", type: CommonModule }] }); }
|
|
264
264
|
}
|
|
265
265
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: FormSelectComponent, decorators: [{
|
|
266
266
|
type: Component,
|
|
@@ -276,9 +276,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
276
276
|
IconComponent,
|
|
277
277
|
CommonModule,
|
|
278
278
|
MatTooltipModule
|
|
279
|
-
], template: "<div class=\"sa-select-container {{props?.['inputContainerClass']}}\">\r\n @if(!!props?.['label']){\r\n <div class=\"sa-select-label-container\">\r\n <div class=\"sa-select-label-tooltip-container\">\r\n <span class=\"sa-select-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-select-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-select-field-container\">\r\n <div [style.visibility]=\"(props?.['showTag'] !== false && (openState || topLabel)) ? 'visible' : 'hidden'\"\r\n class=\"clicked-label\">{{params.label}}\r\n </div>\r\n <div\r\n class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}} {{formControl.valid ? '' : 'invalid'}}\">\r\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\r\n </div>\r\n <ng-select (change)=\"onNgSelectChange($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\r\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\r\n [placeholder]=\"placeholderLabel\" [bindLabel]=\"props?.['bindLabel'] || 'name'\" [bindValue]=\"props?.['bindValue'] || null\" [items]=\"selectables\" [multiple]=\"params?.multiple\"\r\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\" [clearable]=\"false\"> \r\n <!-- Multi-label template for displaying selected items as chips -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\r\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\r\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\r\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\r\n [iconPosition]=\"params.iconPosition\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"items.length > (startInd+labelLimit)\">\r\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\"\r\n class=\"ng-value overflow-label\">\r\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Checkbox option template for individual items when in checkbox mode -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\" *ngIf=\"params?.showCheckboxes\">\r\n <div class=\"checkbox-option\">\r\n <input type=\"checkbox\" \r\n [checked]=\"isOptionSelected(item)\" \r\n (mousedown)=\"toggleItemSelection(item, $event)\"\r\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\r\n class=\"option-checkbox\"> \r\n <span class=\"option-label\">{{ item[props?.['bindLabel'] || 'name'] }}</span>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Simple header template for Select All / Unselect All when in checkbox mode -->\r\n <ng-template ng-header-tmp *ngIf=\"params?.showCheckboxes && params?.multiple\">\r\n <div class=\"select-all-header\">\r\n <span class=\"select-all-label\" (click)=\"selectAll()\">Select all</span>\r\n <span class=\"unselect-all-label\" (click)=\"unselectAll()\">Unselect all</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-arrow-tmp>\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex custom-dropdown-arrow\" [size]=\"'18'\"></sa-icon>\r\n </ng-template>\r\n </ng-select>\r\n <div *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\" class=\"right-icon\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\" (click)=\"openClose(true)\"\r\n (blur)=\"openClose(false)\"></sa-icon>\r\n </div>\r\n <!-- <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\r\n </div> -->\r\n\r\n <div class=\"fallback-arrow\" *ngIf=\"!openState\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\"></sa-icon>\r\n </div>\r\n </div>\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n <div class=\"support-label\">{{params.supportText}}</div>\r\n</div>", styles: [".idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.disabled{border:1px solid var(--grey-50)!important}.ng-select-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.ng-select-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px) 0 var(--medium-30px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-family:var(--font);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.invalid{border:1px solid var(--semantic-error-500, #BD271E)}.ng-select{width:inherit;display:inline-flex;justify-content:center;align-items:center;flex-shrink:0}.custom-select-container .ng-select{padding-left:1.25rem}.ng-select ::ng-deep .ng-select-container{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;font-family:var(--font);box-sizing:border-box;border:none}.ng-select ::ng-deep .ng-dropdown-panel{margin-top:2px;border:1px solid var(--grey-50);box-shadow:none!important}.ng-select ::ng-deep .ng-select-container{box-shadow:none!important;position:relative!important;z-index:1!important}.ng-select ::ng-deep .ng-value-container{padding:0!important;flex-wrap:nowrap!important;display:flex;justify-content:flex-start;gap:5px;overflow-x:hidden}.ng-select ::ng-deep .ng-value{flex:none;margin:0!important}.overflow-label{padding:0 5px;cursor:pointer}.ng-select ::ng-deep .ng-placeholder{padding:0!important;position:inherit!important;color:var(--text-lowemphasis)}.ng-select ::ng-deep .ng-input{padding:0!important;position:inherit!important}.ng-select ::ng-deep .ng-clear-wrapper{z-index:9;display:flex;margin-left:5px}.ng-select ::ng-deep .ng-arrow{border-color:none!important;border-style:none!important;border-width:0!important}.svg-icon{-webkit-mask-size:contain;mask-size:contain;width:20px;height:20px;background-color:gray}.svg-icon:hover{cursor:pointer}.ng-select ::ng-deep .ng-arrow-wrapper,::ng-deep .ng-select-filtered .ng-select-container .ng-value-container .ng-value{display:none}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.clicked-label{position:relative;width:max-content;font-family:var(--font);font-size:11px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:0 var(--small-8px);margin-left:12px;margin-bottom:-8px;z-index:99;background-color:#fff}.ng-select ::ng-deep .ng-dropdown-panel{width:calc(100% + 24px);left:-12px;margin-top:6px}.custom-select-container .ng-select ::ng-deep .ng-dropdown-panel{left:.45rem}.d-flex{display:flex}.custom-select-container.sa-select-container{display:flex;flex-direction:column;gap:var(--small-12px, 12px)}.sa-select-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-select-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.right-icon{padding-right:1.2rem;color:#757575}.invalid .right-icon{color:var(--semantic-error-500, #BD271E)}.error-message{color:var(--semantic-error-500, #BD271E);font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:var(--small-16px);letter-spacing:.5px}.checkbox-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s ease}.checkbox-option:hover{background-color:var(--grey-50, #F9FAFB)}.option-checkbox{width:16px;height:16px;margin-right:8px;cursor:pointer;accent-color:var(--primary-500, #6B46C1)}.option-label{font-size:14px;font-weight:400;color:var(--text-high-emphasis, #1D2939);line-height:20px}.select-all-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--grey-200, #E4E7EC);background-color:var(--grey-25, #FCFCFD);cursor:pointer;transition:background-color .2s ease}.select-all-header:hover{background-color:var(--grey-50, #F9FAFB)}.select-all-label,.unselect-all-label{font-size:14px;font-weight:500;color:var(--primary-500, #6B46C1);line-height:20px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.select-all-label:hover,.unselect-all-label:hover{background-color:var(--primary-50, #F3F4F6)}.unselect-all-label{color:var(--grey-600, #475467)}.unselect-all-label:hover{background-color:var(--grey-100, #F2F4F7)}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-medium-emphasis, #6D6979)}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:transparent!important}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-highlighted{background-color:var(--grey-50, #F9FAFB)!important}.custom-dropdown-arrow{color:var(--Grey-600, #475467);cursor:pointer;transition:transform .2s ease}.ng-select.ng-select-opened .custom-dropdown-arrow{transform:rotate(180deg)}.ng-select ::ng-deep .ng-arrow-wrapper{display:flex!important;align-items:center;justify-content:center;padding-right:12px;width:18px;height:18px}.ng-select ::ng-deep .ng-arrow-wrapper .ng-arrow{display:none}.ng-select.ng-select-multiple ::ng-deep .ng-arrow-wrapper{display:flex!important}.fallback-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;color:var(--Grey-600, #475467)}.ng-select ::ng-deep .ng-arrow-wrapper:not(:empty)+.fallback-arrow{display:none}\n"] }]
|
|
279
|
+
], template: "<div class=\"sa-select-container {{props?.['inputContainerClass']}}\">\r\n @if(!!props?.['label']){\r\n <div class=\"sa-select-label-container\">\r\n <div class=\"sa-select-label-tooltip-container\">\r\n <span class=\"sa-select-label\">\r\n {{props?.['label']}}\r\n </span>\r\n @if(!!props?.['tooltip']){\r\n <span class=\"tooltip-container\">\r\n <sa-icon [icon]=\"props?.['tooltipIcon'] || 'infoCircleOutlined'\" customClass=\"info-icon\"\r\n [matTooltip]=\"props?.['tooltip']\" matTooltipClass=\"custom-tooltip\" class=\"tooltip-icon d-flex\"\r\n [size]=\"props?.['tooltipIconSize'] || '20'\"></sa-icon>\r\n </span>\r\n }\r\n </div>\r\n @if(!!props?.['description']) {\r\n <p class=\"sa-select-description\">\r\n {{props?.['description']}}\r\n </p>\r\n }\r\n </div>\r\n }\r\n <div class=\"sa-select-field-container\">\r\n <div [style.visibility]=\"(props?.['showTag'] !== false && (openState || topLabel)) ? 'visible' : 'hidden'\"\r\n class=\"clicked-label\">{{params.label}}\r\n </div>\r\n <div\r\n class=\"ng-select-field {{openState ? 'activated' : 'idle'}} {{field.props.disabled ? 'disabled' : ''}} {{formControl.valid ? '' : 'invalid'}}\">\r\n <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"left-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'left' || params.dropIconPosition == 'both')\">\r\n </div>\r\n <ng-select (change)=\"onNgSelectChange($event)\" (remove)=\"shiftLabel('removed')\" (clear)=\"shiftLabel('cleared')\"\r\n (search)=\"openClose(true)\" (focus)=\"openClose(true)\" (blur)=\" openClose(false)\" [isOpen]=\"openState\"\r\n [placeholder]=\"placeholderLabel\" [bindLabel]=\"props?.['bindLabel'] || 'name'\" [bindValue]=\"props?.['bindValue'] || null\" [items]=\"selectables\" [multiple]=\"params?.multiple\"\r\n [formControl]=\"formControl\" [style] [formlyAttributes]=\"field\" [searchable]=\"field.props['searchable']\" [clearable]=\"false\"> \r\n <!-- Multi-label template for displaying selected items as chips -->\r\n <ng-template ng-multi-label-tmp let-items=\"items\" let-clear=\"clear\">\r\n <div *ngFor=\"let item of (items ? items.slice(startInd,startInd+labelLimit): [])\">\r\n <sa-chip (onClickEvent)=\" (!field.props.disabled) ? clear(item) : null\" [id]=\"item.id\"\r\n [iconPath]=\"params.iconPath\" [text]=\"item.name\" [type]=\"params.type\"\r\n [state]=\"field.props.disabled ? 'neutral' : params.state\" [filling]=\"params.filling\"\r\n [iconPosition]=\"params.iconPosition\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('clicked')\" class=\"ng-value overflow-label\"\r\n *ngIf=\"items.length > (startInd+labelLimit)\">\r\n <sa-chip text=\"+{{items.length-(startInd+labelLimit)}}\" type=\"regular\" state=\"primary\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n <div (click)=\"shiftLabel('cleared')\" *ngIf=\"startInd == items.length-labelLimit\"\r\n class=\"ng-value overflow-label\">\r\n <sa-chip text=\"...\" type=\"regular\" state=\"default\" filling=\"filled\">\r\n </sa-chip>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Checkbox option template for individual items when in checkbox mode -->\r\n <ng-template ng-option-tmp let-item=\"item\" let-item$=\"item$\" let-index=\"index\" *ngIf=\"params?.showCheckboxes\">\r\n <div class=\"checkbox-option\">\r\n <input type=\"checkbox\" \r\n [checked]=\"isOptionSelected(item)\" \r\n (mousedown)=\"toggleItemSelection(item, $event)\"\r\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\r\n class=\"option-checkbox\"> \r\n <span class=\"option-label\">{{ item[props?.['bindLabel'] || 'name'] }}</span>\r\n </div>\r\n </ng-template>\r\n \r\n <!-- Simple header template for Select All / Unselect All when in checkbox mode -->\r\n <ng-template ng-header-tmp *ngIf=\"params?.showCheckboxes && params?.multiple\">\r\n <div class=\"select-all-header\">\r\n <span class=\"select-all-label\" (click)=\"selectAll()\">Select all</span>\r\n <span class=\"unselect-all-label\" (click)=\"unselectAll()\">Unselect all</span>\r\n </div>\r\n </ng-template>\r\n\r\n <ng-template ng-arrow-tmp>\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex custom-dropdown-arrow\" [size]=\"'18'\"></sa-icon>\r\n </ng-template>\r\n </ng-select>\r\n <div *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\" class=\"right-icon\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\" (click)=\"openClose(true)\"\r\n (blur)=\"openClose(false)\"></sa-icon>\r\n </div>\r\n <!-- <div role=\"button\" title=\"drop-button\" tabindex=\"0\" class=\"right-icon svg-icon\" [style]=\"svgStyle\"\r\n (click)=\"openClose(true)\" (blur)=\"openClose(false)\"\r\n *ngIf=\"(params.dropIconPosition == 'right' || params.dropIconPosition == 'both')\">\r\n </div> -->\r\n\r\n <div class=\"fallback-arrow\" *ngIf=\"!openState\">\r\n <sa-icon [icon]=\"'downChevronOutlined'\" class=\"d-flex\" [size]=\"'18'\"></sa-icon>\r\n </div>\r\n </div>\r\n @if(!formControl.valid){\r\n <div class=\"error-message-container\">\r\n <span class=\"error-message\">\r\n <formly-validation-message [field]=\"field\"></formly-validation-message>\r\n </span>\r\n </div>\r\n }\r\n <div class=\"support-label\">{{params.supportText}}</div>\r\n</div>", styles: [".idle{--border: 1px solid var(--grey-50)}.activated{--border: 1px solid var(--primary-300)}.disabled{border:1px solid var(--grey-50)!important}.ng-select-field:hover{--border: 1px solid var(--primary-300);--font-color: var(--text-highemphasis)}.ng-select-field{width:100%;box-sizing:border-box;position:relative;display:inline-flex;padding:0px var(--small-12px) 0 var(--medium-30px);height:40px;justify-content:center;align-items:center;border:var(--border);border-radius:var(--small-4px);font-family:var(--font);font-size:14px;font-style:normal;font-weight:400;line-height:20px;letter-spacing:.25px;--font-color: var(--text-lowemphasis)}.invalid{border:1px solid var(--semantic-error-500, #BD271E)}.ng-select{width:inherit;display:inline-flex;justify-content:center;align-items:center;flex-shrink:0}.custom-select-container .ng-select{padding-left:1.25rem}.ng-select ::ng-deep .ng-select-container{display:inline-flex;justify-content:center;align-items:center;flex-shrink:0;font-family:var(--font);box-sizing:border-box;border:none}.ng-select ::ng-deep .ng-dropdown-panel{margin-top:2px;border:1px solid var(--grey-50);box-shadow:none!important}.ng-select ::ng-deep .ng-select-container{box-shadow:none!important;position:relative!important;z-index:1!important}.ng-select ::ng-deep .ng-value-container{padding:0!important;flex-wrap:nowrap!important;display:flex;justify-content:flex-start;gap:5px;overflow-x:hidden}.ng-select ::ng-deep .ng-value{flex:none;margin:0!important}.overflow-label{padding:0 5px;cursor:pointer}.ng-select ::ng-deep .ng-placeholder{padding:0!important;position:inherit!important;color:var(--text-lowemphasis)}.ng-select ::ng-deep .ng-input{padding:0!important;position:inherit!important}.ng-select ::ng-deep .ng-clear-wrapper{z-index:9;display:flex;margin-left:5px}.ng-select ::ng-deep .ng-arrow{border-color:none!important;border-style:none!important;border-width:0!important}.svg-icon{-webkit-mask-size:contain;mask-size:contain;width:20px;height:20px;background-color:gray}.svg-icon:hover{cursor:pointer}.ng-select ::ng-deep .ng-arrow-wrapper,::ng-deep .ng-select-filtered .ng-select-container .ng-value-container .ng-value{display:none}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{background-color:var(--primary-50)}.support-label{font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:var(--small-4px) var(--small-16px) 0px var(--small-16px)}.clicked-label{position:relative;width:max-content;font-family:var(--font);font-size:11px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:.5px;color:var(--text-lowemphasis);padding:0 var(--small-8px);margin-left:12px;margin-bottom:-8px;z-index:99;background-color:#fff}.ng-select ::ng-deep .ng-dropdown-panel{width:calc(100% + 24px);left:-12px;margin-top:6px}.custom-select-container .ng-select ::ng-deep .ng-dropdown-panel{left:.45rem}.d-flex{display:flex}.custom-select-container.sa-select-container{display:flex;flex-direction:column;gap:var(--small-12px, 12px)}.sa-select-label-tooltip-container{display:flex;gap:var(--small-4px);align-items:center}.sa-select-label{color:var(--text-highemphasis, #1B1D20);font-family:var(--font);font-size:var(--small-14px);font-style:normal;font-weight:500;line-height:var(--medium-20px);letter-spacing:.1px}.right-icon{padding-right:1.2rem;color:#757575}.invalid .right-icon{color:var(--semantic-error-500, #BD271E)}.error-message{color:var(--semantic-error-500, #BD271E);font-family:var(--font);font-size:11px;font-style:normal;font-weight:400;line-height:var(--small-16px);letter-spacing:.5px}.checkbox-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer;transition:background-color .2s ease}.checkbox-option:hover{background-color:var(--grey-50, #F9FAFB)}.option-checkbox{width:16px;height:16px;margin-right:8px;cursor:pointer;accent-color:var(--primary-500, #6B46C1)}.option-label{font-size:14px;font-weight:400;color:var(--text-high-emphasis, #1D2939);line-height:20px}.select-all-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--grey-200, #E4E7EC);background-color:var(--grey-25, #FCFCFD);cursor:pointer;transition:background-color .2s ease}.select-all-header:hover{background-color:var(--grey-50, #F9FAFB)}.select-all-label,.unselect-all-label{font-size:14px;font-weight:500;color:var(--primary-500, #6B46C1);line-height:20px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background-color .2s ease}.select-all-label:hover,.unselect-all-label:hover{background-color:var(--primary-50, #F3F4F6)}.unselect-all-label{color:var(--grey-600, #475467)}.unselect-all-label:hover{background-color:var(--grey-100, #F2F4F7)}::ng-deep .ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{color:var(--text-medium-emphasis, #6D6979)}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-selected{background-color:transparent!important}::ng-deep .ng-select .ng-dropdown-panel .ng-dropdown-panel-items .ng-option.ng-option-highlighted{background-color:var(--grey-50, #F9FAFB)!important}.custom-dropdown-arrow{color:var(--Grey-600, #475467);cursor:pointer;transition:transform .2s ease}.ng-select.ng-select-opened .custom-dropdown-arrow{transform:rotate(180deg)}.ng-select ::ng-deep .ng-arrow-wrapper{display:flex!important;align-items:center;justify-content:center;padding-right:12px;width:18px;height:18px}.ng-select ::ng-deep .ng-arrow-wrapper .ng-arrow{display:none}.ng-select.ng-select-multiple ::ng-deep .ng-arrow-wrapper{display:flex!important}.fallback-arrow{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;z-index:2;color:var(--Grey-600, #475467)}.ng-select ::ng-deep .ng-arrow-wrapper:not(:empty)+.fallback-arrow{display:none}\n"] }]
|
|
280
280
|
}], propDecorators: { hoverEvent: [{
|
|
281
281
|
type: Output,
|
|
282
282
|
args: ['hoverEvent']
|
|
283
283
|
}] } });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBc0J6RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBMEI7SUFuQm5FOztRQXVCRSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFHRCxlQUFV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QztZQUNaLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzs4R0FoUlUsbUJBQW1CO2tHQUFuQixtQkFBbUIseUlDL0JoQyw0dExBc0dNLHFzTER0RkYsbUJBQW1CLHlUQUNuQixZQUFZLHlRQUVaLGNBQWMsc3FDQUNkLGNBQWMsMk5BQ2QsSUFBSSw2RkFDSixLQUFLLGtIQUNMLGdCQUFnQiw2VEFDaEIsYUFBYSxvTEFDYixZQUFZOzsyRkFNSCxtQkFBbUI7a0JBbkIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakI7OEJBZXFCLFVBQVU7c0JBQS9CLE1BQU07dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwLCBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNlbGVjdEludGVyZmFjZSwgU2VsZWN0U3ViSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLXNlbGVjdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybWx5TW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nU2VsZWN0TW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnQsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3IsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgSWNvbkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xyXG4gIHNlbGVjdGFibGVzOiBhbnk7XHJcbiAgcGFyYW1zOiBhbnk7XHJcblxyXG4gIHN2Z1N0eWxlID0ge307XHJcbiAgb3BlblN0YXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9wTGFiZWw6IGJvb2xlYW47XHJcbiAgc3RhcnRJbmQ6IG51bWJlciA9IDA7XHJcbiAgbGFiZWxMaW1pdDogbnVtYmVyID0gMjtcclxuXHJcbiAgcGxhY2Vob2xkZXJMYWJlbDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoJ2hvdmVyRXZlbnQnKSBob3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8c2VsZWN0SG92ZXJFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RhYmxlcyA9IHRoaXMuZmllbGQucHJvcHMub3B0aW9ucztcclxuICAgIHRoaXMucGFyYW1zID0gdGhpcy5maWVsZC5wcm9wc1sncGFyYW1zJ107XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5sYWJlbDtcclxuICAgIHRoaXMuc3ZnU3R5bGUgPSB7XHJcbiAgICAgICctd2Via2l0LW1hc2staW1hZ2UnOiBgdXJsKCR7dGhpcy5wYXJhbXMuZHJvcEljb259KX0pYCxcclxuICAgICAgJ21hc2staW1hZ2UnOiBgdXJsKCR7dGhpcy5wYXJhbXMuZHJvcEljb259KWAsXHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW5DbG9zZShzdGF0ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMub3BlblN0YXRlID0gc3RhdGU7XHJcbiAgICBpZiAoc3RhdGUgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5wbGFjZWhvbGRlclxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJMYWJlbCA9IHRoaXMucGFyYW1zLmxhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuICBzaGlmdExhYmVsKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgaWYgKGFjdGlvbiA9PSAnY2xpY2tlZCcpIHRoaXMuc3RhcnRJbmQrKztcclxuICBpZiAoYWN0aW9uID09ICdjbGVhcmVkJykgdGhpcy5zdGFydEluZCA9IDA7XHJcbiAgaWYgKGFjdGlvbiA9PSAncmVtb3ZlZCcgJiYgdGhpcy5zdGFydEluZCA+IDApIHRoaXMuc3RhcnRJbmQtLTtcclxuICB0aGlzLnRvcExhYmVsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMDsgXHJcbiAgdGhpcy5wbGFjZWhvbGRlckxhYmVsID0gdGhpcy5vcGVuU3RhdGUgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMCBcclxuICAgID8gdGhpcy5wYXJhbXMucGxhY2Vob2xkZXIgXHJcbiAgICA6IHRoaXMucGFyYW1zLmxhYmVsO1xyXG59XHJcblxyXG4gIHRvZ2dsZU9wdGlvbihpdGVtOiBhbnksIGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMucGFyYW1zPy5tdWx0aXBsZSkge1xyXG4gICAgICAvLyBTaW5nbGUgc2VsZWN0IG1vZGVcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShpdGVtKTtcclxuICAgICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTsgXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNdWx0aS1zZWxlY3QgbW9kZVxyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IHRoaXMucHJvcHM/LlsnYmluZFZhbHVlJ107XHJcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBiaW5kVmFsdWUgPyBpdGVtW2JpbmRWYWx1ZV0gOiBpdGVtO1xyXG4gICAgXHJcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRWYWx1ZS5maW5kSW5kZXgoKHNlbGVjdGVkOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGJpbmRWYWx1ZSA/IHNlbGVjdGVkW2JpbmRWYWx1ZV0gOiBzZWxlY3RlZDtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkVmFsdWUgPT09IGl0ZW1WYWx1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBuZXdWYWx1ZTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIG5ld1ZhbHVlID0gWy4uLmN1cnJlbnRWYWx1ZV07XHJcbiAgICAgIG5ld1ZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdWYWx1ZSA9IFsuLi5jdXJyZW50VmFsdWUsIGl0ZW1dO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNoZWNrRm9yWmVybyhuZXdWYWx1ZSk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uTmdTZWxlY3RDaGFuZ2Uoc2VsZWN0ZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gT25seSBoYW5kbGUgbmctc2VsZWN0IGNoYW5nZXMgd2hlbiBOT1QgaW4gY2hlY2tib3ggbW9kZVxyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvclplcm8oc2VsZWN0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSW4gY2hlY2tib3ggbW9kZSwgcHJldmVudCBuZy1zZWxlY3QgZnJvbSBjaGFuZ2luZyB0aGUgZm9ybSBjb250cm9sXHJcbiAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgdmFsdWUgdG8gcHJldmVudCBuZy1zZWxlY3QgaW50ZXJmZXJlbmNlXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY3VycmVudFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8ubXVsdGlwbGUpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcz8uWydiaW5kVmFsdWUnXTtcclxuICAgIGxldCBhbGxWYWx1ZXM7XHJcbiAgICBcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgYWxsVmFsdWVzID0gdGhpcy5zZWxlY3RhYmxlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtiaW5kVmFsdWVdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsbFZhbHVlcyA9IFsuLi50aGlzLnNlbGVjdGFibGVzXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShhbGxWYWx1ZXMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBcclxuICAgIHRoaXMuY2hlY2tGb3JaZXJvKGFsbFZhbHVlcyk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgICAvLyBFbnN1cmUgRm9ybWx5IGludGVncmF0aW9uXHJcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYWxsVmFsdWVzKTtcclxuICAgICAgdGhpcy5maWVsZC5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdEFsbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5wYXJhbXM/Lm11bHRpcGxlKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IGVtcHR5VmFsdWU6IGFueVtdID0gW107XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZW1wdHlWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5jaGVja0Zvclplcm8oZW1wdHlWYWx1ZSk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZW1wdHlWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpICYmIFxyXG4gICAgICAgICAgIGN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IHRoaXMuc2VsZWN0YWJsZXMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0aGlzLmlzT3B0aW9uU2VsZWN0ZWQoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgaXNTb21lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSAmJiBcclxuICAgICAgICAgICBjdXJyZW50VmFsdWUubGVuZ3RoID4gMCAmJiBcclxuICAgICAgICAgICBjdXJyZW50VmFsdWUubGVuZ3RoIDwgdGhpcy5zZWxlY3RhYmxlcy5sZW5ndGg7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogYW55LCBldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8ubXVsdGlwbGUpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IHRoaXMucHJvcHM/LlsnYmluZFZhbHVlJ107XHJcbiAgICBcclxuICAgIGxldCBpdGVtSW5kZXggPSAtMTtcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgaXRlbUluZGV4ID0gY3VycmVudFZhbHVlLmZpbmRJbmRleCgoc2VsZWN0ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gdHlwZW9mIHNlbGVjdGVkID09PSAnb2JqZWN0JyA/IHNlbGVjdGVkW2JpbmRWYWx1ZV0gOiBzZWxlY3RlZDtcclxuICAgICAgICBjb25zdCBpdGVtVmFsID0gaXRlbVtiaW5kVmFsdWVdO1xyXG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZhbCA9PT0gaXRlbVZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtSW5kZXggPSBjdXJyZW50VmFsdWUuZmluZEluZGV4KChzZWxlY3RlZDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkID09PSBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IG5ld1ZhbHVlO1xyXG4gICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgIG5ld1ZhbHVlID0gWy4uLmN1cnJlbnRWYWx1ZV07XHJcbiAgICAgIG5ld1ZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUgPSBbLi4uY3VycmVudFZhbHVlLCBpdGVtXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5vbk5nU2VsZWN0Q2hhbmdlKG5ld1ZhbHVlKTtcclxuICAgIFxyXG4gICAgdGhpcy5jaGVja0Zvclplcm8obmV3VmFsdWUpO1xyXG4gICAgXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5mb3JtQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgdGhpcy5maWVsZC5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEZvcmNlIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIFVJXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSBjaGlwcyBhcmUgdXBkYXRlZCBpbiB0aGUgbmV4dCB0aWNrXHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGlzT3B0aW9uU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHJldHVybiBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcz8uWydiaW5kVmFsdWUnXTtcclxuICAgIGNvbnN0IGJpbmRMYWJlbCA9IHRoaXMucHJvcHM/LlsnYmluZExhYmVsJ10gfHwgJ25hbWUnO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgdGhlIHZhbHVlIHRvIGNvbXBhcmUgZnJvbSB0aGUgaXRlbVxyXG4gICAgbGV0IGl0ZW1WYWx1ZTtcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgaXRlbVZhbHVlID0gaXRlbVtiaW5kVmFsdWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbVZhbHVlID0gaXRlbTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpdGVtIGlzIGluIHRoZSBzZWxlY3RlZCB2YWx1ZXNcclxuICAgIHJldHVybiBjdXJyZW50VmFsdWUuc29tZSgoc2VsZWN0ZWQ6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgc3RydWN0dXJlcyBvZiBzZWxlY3RlZCB2YWx1ZXNcclxuICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZCA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWQgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoYmluZFZhbHVlICYmIHNlbGVjdGVkW2JpbmRWYWx1ZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkW2JpbmRWYWx1ZV07XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFtiaW5kTGFiZWxdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPSBzZWxlY3RlZFtiaW5kTGFiZWxdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQubmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWQubmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWQ7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIENvbXBhcmUgdGhlIHZhbHVlc1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZSA9PT0gaXRlbVZhbHVlIHx8IFxyXG4gICAgICAgICAgICAgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBzZWxlY3RlZFZhbHVlID09PSAnb2JqZWN0JyAmJiBcclxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShpdGVtVmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShzZWxlY3RlZFZhbHVlKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yWmVybyhzZWxlY3RlZDogYW55LCBzdGF0ZT86IGJvb2xlYW4pIHtcclxuICAgIC8vIFVzZSB0aGUgcGFzc2VkIHNlbGVjdGVkIHBhcmFtZXRlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gZm9ybSBjb250cm9sIHZhbHVlXHJcbiAgICBjb25zdCB2YWx1ZVRvQ2hlY2sgPSBzZWxlY3RlZCAhPT0gdW5kZWZpbmVkID8gc2VsZWN0ZWQgOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvcExhYmVsID0gdmFsdWVUb0NoZWNrPy5sZW5ndGggPT0gMCA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGVzdFwiLCB0aGlzLmZvcm1Db250cm9sLnZhbHVlPy5sZW5ndGgpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInRlc3RcIiwgdGhpcy5vcGVuU3RhdGUpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInBsYWNlaG9sZGVyLS0tIFwiLCB0aGlzLnBsYWNlaG9sZGVyTGFiZWwpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtcy5sYWJlbC0tLSBcIiwgdGhpcy5wYXJhbXMubGFiZWwpXHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9IHN0YXRlO1xyXG4gICAgaWYgKHN0YXRlIHx8IHZhbHVlVG9DaGVjaz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5wbGFjZWhvbGRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJMYWJlbCA9IHRoaXMucGFyYW1zLmxhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuICBtb3VzZUhvdmVyKGl0ZW06IFNlbGVjdFN1YkludGVyZmFjZSwgZXZlbnQ6IGFueSA9IG51bGwsIHRvb2x0aXA6IE1hdFRvb2x0aXApIHsgIC8vIE5ldyBtZXRob2QgZm9yIG1vdXNlZW50ZXIgZXZlbnRcclxuICAgIHRoaXMuaG92ZXJFdmVudC5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGl0ZW1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRvb2x0aXApIHtcclxuICAgICAgdG9vbHRpcC5zaG93KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHNlbGVjdEhvdmVyRXZlbnQge1xyXG4gIGV2ZW50OiBhbnksXHJcbiAgaXRlbTogU2VsZWN0U3ViSW50ZXJmYWNlXHJcbn0iLCI8ZGl2IGNsYXNzPVwic2Etc2VsZWN0LWNvbnRhaW5lciB7e3Byb3BzPy5bJ2lucHV0Q29udGFpbmVyQ2xhc3MnXX19XCI+XHJcbiAgQGlmKCEhcHJvcHM/LlsnbGFiZWwnXSl7XHJcbiAgPGRpdiBjbGFzcz1cInNhLXNlbGVjdC1sYWJlbC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzYS1zZWxlY3QtbGFiZWwtdG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS1zZWxlY3QtbGFiZWxcIj5cclxuICAgICAgICB7e3Byb3BzPy5bJ2xhYmVsJ119fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIEBpZighIXByb3BzPy5bJ3Rvb2x0aXAnXSl7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICA8c2EtaWNvbiBbaWNvbl09XCJwcm9wcz8uWyd0b29sdGlwSWNvbiddIHx8ICdpbmZvQ2lyY2xlT3V0bGluZWQnXCIgY3VzdG9tQ2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwicHJvcHM/LlsndG9vbHRpcCddXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBjbGFzcz1cInRvb2x0aXAtaWNvbiBkLWZsZXhcIlxyXG4gICAgICAgICAgW3NpemVdPVwicHJvcHM/LlsndG9vbHRpcEljb25TaXplJ10gfHwgJzIwJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZighIXByb3BzPy5bJ2Rlc2NyaXB0aW9uJ10pIHtcclxuICAgIDxwIGNsYXNzPVwic2Etc2VsZWN0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7cHJvcHM/LlsnZGVzY3JpcHRpb24nXX19XHJcbiAgICA8L3A+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJzYS1zZWxlY3QtZmllbGQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cIihwcm9wcz8uWydzaG93VGFnJ10gIT09IGZhbHNlICYmIChvcGVuU3RhdGUgfHwgdG9wTGFiZWwpKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcclxuICAgICAgY2xhc3M9XCJjbGlja2VkLWxhYmVsXCI+e3twYXJhbXMubGFiZWx9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibmctc2VsZWN0LWZpZWxkIHt7b3BlblN0YXRlID8gJ2FjdGl2YXRlZCcgOiAnaWRsZSd9fSB7e2ZpZWxkLnByb3BzLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnfX0ge3tmb3JtQ29udHJvbC52YWxpZCA/ICcnIDogJ2ludmFsaWQnfX1cIj5cclxuICAgICAgPGRpdiByb2xlPVwiYnV0dG9uXCIgdGl0bGU9XCJkcm9wLWJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwibGVmdC1pY29uIHN2Zy1pY29uXCIgW3N0eWxlXT1cInN2Z1N0eWxlXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkNsb3NlKHRydWUpXCIgKGJsdXIpPVwib3BlbkNsb3NlKGZhbHNlKVwiXHJcbiAgICAgICAgKm5nSWY9XCIocGFyYW1zLmRyb3BJY29uUG9zaXRpb24gPT0gJ2xlZnQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1zZWxlY3QgKGNoYW5nZSk9XCJvbk5nU2VsZWN0Q2hhbmdlKCRldmVudClcIiAocmVtb3ZlKT1cInNoaWZ0TGFiZWwoJ3JlbW92ZWQnKVwiIChjbGVhcik9XCJzaGlmdExhYmVsKCdjbGVhcmVkJylcIlxyXG4gICAgICAoc2VhcmNoKT1cIm9wZW5DbG9zZSh0cnVlKVwiIChmb2N1cyk9XCJvcGVuQ2xvc2UodHJ1ZSlcIiAoYmx1cik9XCIgb3BlbkNsb3NlKGZhbHNlKVwiIFtpc09wZW5dPVwib3BlblN0YXRlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyTGFiZWxcIiBbYmluZExhYmVsXT1cInByb3BzPy5bJ2JpbmRMYWJlbCddIHx8ICduYW1lJ1wiIFtiaW5kVmFsdWVdPVwicHJvcHM/LlsnYmluZFZhbHVlJ10gfHwgbnVsbFwiIFtpdGVtc109XCJzZWxlY3RhYmxlc1wiIFttdWx0aXBsZV09XCJwYXJhbXM/Lm11bHRpcGxlXCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW3N0eWxlXSBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIFtzZWFyY2hhYmxlXT1cImZpZWxkLnByb3BzWydzZWFyY2hhYmxlJ11cIiBbY2xlYXJhYmxlXT1cImZhbHNlXCI+ICAgICAgXHJcbiAgICAgIDwhLS0gTXVsdGktbGFiZWwgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgc2VsZWN0ZWQgaXRlbXMgYXMgY2hpcHMgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgKGl0ZW1zID8gaXRlbXMuc2xpY2Uoc3RhcnRJbmQsc3RhcnRJbmQrbGFiZWxMaW1pdCk6IFtdKVwiPlxyXG4gICAgICAgICAgPHNhLWNoaXAgKG9uQ2xpY2tFdmVudCk9XCIgKCFmaWVsZC5wcm9wcy5kaXNhYmxlZCkgPyAgY2xlYXIoaXRlbSkgOiBudWxsXCIgW2lkXT1cIml0ZW0uaWRcIlxyXG4gICAgICAgICAgICBbaWNvblBhdGhdPVwicGFyYW1zLmljb25QYXRoXCIgW3RleHRdPVwiaXRlbS5uYW1lXCIgW3R5cGVdPVwicGFyYW1zLnR5cGVcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiZmllbGQucHJvcHMuZGlzYWJsZWQgPyAnbmV1dHJhbCcgOiBwYXJhbXMuc3RhdGVcIiBbZmlsbGluZ109XCJwYXJhbXMuZmlsbGluZ1wiXHJcbiAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwicGFyYW1zLmljb25Qb3NpdGlvblwiPlxyXG4gICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNoaWZ0TGFiZWwoJ2NsaWNrZWQnKVwiIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAoc3RhcnRJbmQrbGFiZWxMaW1pdClcIj5cclxuICAgICAgICAgIDxzYS1jaGlwIHRleHQ9XCIre3tpdGVtcy5sZW5ndGgtKHN0YXJ0SW5kK2xhYmVsTGltaXQpfX1cIiB0eXBlPVwicmVndWxhclwiIHN0YXRlPVwiZGVmYXVsdFwiIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzaGlmdExhYmVsKCdjbGVhcmVkJylcIiAqbmdJZj1cInN0YXJ0SW5kID09IGl0ZW1zLmxlbmd0aC1sYWJlbExpbWl0XCJcclxuICAgICAgICAgIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIj5cclxuICAgICAgICAgIDxzYS1jaGlwIHRleHQ9XCIuLi5cIiB0eXBlPVwicmVndWxhclwiIHN0YXRlPVwiZGVmYXVsdFwiIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gQ2hlY2tib3ggb3B0aW9uIHRlbXBsYXRlIGZvciBpbmRpdmlkdWFsIGl0ZW1zIHdoZW4gaW4gY2hlY2tib3ggbW9kZSAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiICpuZ0lmPVwicGFyYW1zPy5zaG93Q2hlY2tib3hlc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1vcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNPcHRpb25TZWxlY3RlZChpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24tY2hlY2tib3hcIj4gICAgICAgICAgXHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1sYWJlbFwiPnt7IGl0ZW1bcHJvcHM/LlsnYmluZExhYmVsJ10gfHwgJ25hbWUnXSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gU2ltcGxlIGhlYWRlciB0ZW1wbGF0ZSBmb3IgU2VsZWN0IEFsbCAvIFVuc2VsZWN0IEFsbCB3aGVuIGluIGNoZWNrYm94IG1vZGUgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wICpuZ0lmPVwicGFyYW1zPy5zaG93Q2hlY2tib3hlcyAmJiBwYXJhbXM/Lm11bHRpcGxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1hbGwtbGFiZWxcIiAoY2xpY2spPVwic2VsZWN0QWxsKClcIj5TZWxlY3QgYWxsPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bnNlbGVjdC1hbGwtbGFiZWxcIiAoY2xpY2spPVwidW5zZWxlY3RBbGwoKVwiPlVuc2VsZWN0IGFsbDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1hcnJvdy10bXA+XHJcbiAgICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Rvd25DaGV2cm9uT3V0bGluZWQnXCIgY2xhc3M9XCJkLWZsZXggY3VzdG9tLWRyb3Bkb3duLWFycm93XCIgW3NpemVdPVwiJzE4J1wiPjwvc2EtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctc2VsZWN0PlxyXG4gICAgPGRpdiAqbmdJZj1cIihwYXJhbXMuZHJvcEljb25Qb3NpdGlvbiA9PSAncmlnaHQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIiBjbGFzcz1cInJpZ2h0LWljb25cIj5cclxuICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Rvd25DaGV2cm9uT3V0bGluZWQnXCIgY2xhc3M9XCJkLWZsZXhcIiBbc2l6ZV09XCInMTgnXCIgKGNsaWNrKT1cIm9wZW5DbG9zZSh0cnVlKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib3BlbkNsb3NlKGZhbHNlKVwiPjwvc2EtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IHJvbGU9XCJidXR0b25cIiB0aXRsZT1cImRyb3AtYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJyaWdodC1pY29uIHN2Zy1pY29uXCIgW3N0eWxlXT1cInN2Z1N0eWxlXCJcclxuICAgICAgKGNsaWNrKT1cIm9wZW5DbG9zZSh0cnVlKVwiIChibHVyKT1cIm9wZW5DbG9zZShmYWxzZSlcIlxyXG4gICAgICAqbmdJZj1cIihwYXJhbXMuZHJvcEljb25Qb3NpdGlvbiA9PSAncmlnaHQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIj5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiA8ZGl2IGNsYXNzPVwiZmFsbGJhY2stYXJyb3dcIiAqbmdJZj1cIiFvcGVuU3RhdGVcIj5cclxuICA8c2EtaWNvbiBbaWNvbl09XCInZG93bkNoZXZyb25PdXRsaW5lZCdcIiBjbGFzcz1cImQtZmxleFwiIFtzaXplXT1cIicxOCdcIj48L3NhLWljb24+XHJcbiA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBAaWYoIWZvcm1Db250cm9sLnZhbGlkKXtcclxuICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZS1jb250YWluZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICA8Zm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZSBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2U+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJzdXBwb3J0LWxhYmVsXCI+e3twYXJhbXMuc3VwcG9ydFRleHR9fTwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50LWxpYnJhcnkvc3JjL2xpYi9mb3JtLXNlbGVjdC9mb3JtLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2Zvcm0tc2VsZWN0L2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBbUIsTUFBTSxrQkFBa0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWMsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBc0J6RSxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsU0FBMEI7SUFuQm5FOztRQXVCRSxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUUzQixhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBVyxDQUFDLENBQUM7UUFHRCxlQUFV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QztZQUNaLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQzs4R0FoUlUsbUJBQW1CO2tHQUFuQixtQkFBbUIseUlDL0JoQyw0dExBc0dNLG0wTER0RkYsbUJBQW1CLHlUQUNuQixZQUFZLHlRQUVaLGNBQWMsc3FDQUNkLGNBQWMsMk5BQ2QsSUFBSSw2RkFDSixLQUFLLGtIQUNMLGdCQUFnQiw2VEFDaEIsYUFBYSxvTUFDYixZQUFZOzsyRkFNSCxtQkFBbUI7a0JBbkIvQixTQUFTOytCQUNFLGlCQUFpQixjQUNmLElBQUksV0FDUDt3QkFDUCxtQkFBbUI7d0JBQ25CLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsSUFBSTt3QkFDSixLQUFLO3dCQUNMLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjtxQkFDakI7OEJBZXFCLFVBQVU7c0JBQS9CLE1BQU07dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgRmllbGRUeXBlQ29uZmlnIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XHJcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnO1xyXG5pbXBvcnQgeyBDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4uL2NoaXBzL2NoaXBzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwLCBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFNlbGVjdEludGVyZmFjZSwgU2VsZWN0U3ViSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vcHVibGljLWFwaSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1mb3JtLXNlbGVjdCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybWx5TW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE5nU2VsZWN0TW9kdWxlLFxyXG4gICAgQ2hpcHNDb21wb25lbnQsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdGb3IsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgSWNvbkNvbXBvbmVudCxcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2Zvcm0tc2VsZWN0LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xyXG4gIHNlbGVjdGFibGVzOiBhbnk7XHJcbiAgcGFyYW1zOiBhbnk7XHJcblxyXG4gIHN2Z1N0eWxlID0ge307XHJcbiAgb3BlblN0YXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgdG9wTGFiZWw6IGJvb2xlYW47XHJcbiAgc3RhcnRJbmQ6IG51bWJlciA9IDA7XHJcbiAgbGFiZWxMaW1pdDogbnVtYmVyID0gMjtcclxuXHJcbiAgcGxhY2Vob2xkZXJMYWJlbDogc3RyaW5nO1xyXG4gIEBPdXRwdXQoJ2hvdmVyRXZlbnQnKSBob3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8c2VsZWN0SG92ZXJFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RhYmxlcyA9IHRoaXMuZmllbGQucHJvcHMub3B0aW9ucztcclxuICAgIHRoaXMucGFyYW1zID0gdGhpcy5maWVsZC5wcm9wc1sncGFyYW1zJ107XHJcbiAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5sYWJlbDtcclxuICAgIHRoaXMuc3ZnU3R5bGUgPSB7XHJcbiAgICAgICctd2Via2l0LW1hc2staW1hZ2UnOiBgdXJsKCR7dGhpcy5wYXJhbXMuZHJvcEljb259KX0pYCxcclxuICAgICAgJ21hc2staW1hZ2UnOiBgdXJsKCR7dGhpcy5wYXJhbXMuZHJvcEljb259KWAsXHJcbiAgICB9XHJcbiAgfVxyXG4gIG9wZW5DbG9zZShzdGF0ZTogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuZmllbGQucHJvcHMuZGlzYWJsZWQpIHJldHVybjtcclxuICAgIHRoaXMub3BlblN0YXRlID0gc3RhdGU7XHJcbiAgICBpZiAoc3RhdGUgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5wbGFjZWhvbGRlclxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJMYWJlbCA9IHRoaXMucGFyYW1zLmxhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuICBzaGlmdExhYmVsKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgaWYgKGFjdGlvbiA9PSAnY2xpY2tlZCcpIHRoaXMuc3RhcnRJbmQrKztcclxuICBpZiAoYWN0aW9uID09ICdjbGVhcmVkJykgdGhpcy5zdGFydEluZCA9IDA7XHJcbiAgaWYgKGFjdGlvbiA9PSAncmVtb3ZlZCcgJiYgdGhpcy5zdGFydEluZCA+IDApIHRoaXMuc3RhcnRJbmQtLTtcclxuICB0aGlzLnRvcExhYmVsID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMDsgXHJcbiAgdGhpcy5wbGFjZWhvbGRlckxhYmVsID0gdGhpcy5vcGVuU3RhdGUgfHwgdGhpcy5mb3JtQ29udHJvbC52YWx1ZT8ubGVuZ3RoID4gMCBcclxuICAgID8gdGhpcy5wYXJhbXMucGxhY2Vob2xkZXIgXHJcbiAgICA6IHRoaXMucGFyYW1zLmxhYmVsO1xyXG59XHJcblxyXG4gIHRvZ2dsZU9wdGlvbihpdGVtOiBhbnksIGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgXHJcbiAgICBpZiAoIXRoaXMucGFyYW1zPy5tdWx0aXBsZSkge1xyXG4gICAgICAvLyBTaW5nbGUgc2VsZWN0IG1vZGVcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShpdGVtKTtcclxuICAgICAgdGhpcy5vcGVuU3RhdGUgPSBmYWxzZTsgXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvLyBNdWx0aS1zZWxlY3QgbW9kZVxyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IHRoaXMucHJvcHM/LlsnYmluZFZhbHVlJ107XHJcbiAgICBjb25zdCBpdGVtVmFsdWUgPSBiaW5kVmFsdWUgPyBpdGVtW2JpbmRWYWx1ZV0gOiBpdGVtO1xyXG4gICAgXHJcbiAgICBjb25zdCBpbmRleCA9IGN1cnJlbnRWYWx1ZS5maW5kSW5kZXgoKHNlbGVjdGVkOiBhbnkpID0+IHtcclxuICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGJpbmRWYWx1ZSA/IHNlbGVjdGVkW2JpbmRWYWx1ZV0gOiBzZWxlY3RlZDtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkVmFsdWUgPT09IGl0ZW1WYWx1ZTtcclxuICAgIH0pO1xyXG5cclxuICAgIGxldCBuZXdWYWx1ZTtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIG5ld1ZhbHVlID0gWy4uLmN1cnJlbnRWYWx1ZV07XHJcbiAgICAgIG5ld1ZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdWYWx1ZSA9IFsuLi5jdXJyZW50VmFsdWUsIGl0ZW1dO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG4gICAgXHJcbiAgICB0aGlzLmNoZWNrRm9yWmVybyhuZXdWYWx1ZSk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIG9uTmdTZWxlY3RDaGFuZ2Uoc2VsZWN0ZWQ6IGFueSk6IHZvaWQge1xyXG4gICAgLy8gT25seSBoYW5kbGUgbmctc2VsZWN0IGNoYW5nZXMgd2hlbiBOT1QgaW4gY2hlY2tib3ggbW9kZVxyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8uc2hvd0NoZWNrYm94ZXMpIHtcclxuICAgICAgdGhpcy5jaGVja0Zvclplcm8oc2VsZWN0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gSW4gY2hlY2tib3ggbW9kZSwgcHJldmVudCBuZy1zZWxlY3QgZnJvbSBjaGFuZ2luZyB0aGUgZm9ybSBjb250cm9sXHJcbiAgICAgIC8vIFJlc3RvcmUgdGhlIGN1cnJlbnQgdmFsdWUgdG8gcHJldmVudCBuZy1zZWxlY3QgaW50ZXJmZXJlbmNlXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoY3VycmVudFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0sIDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8ubXVsdGlwbGUpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcz8uWydiaW5kVmFsdWUnXTtcclxuICAgIGxldCBhbGxWYWx1ZXM7XHJcbiAgICBcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgYWxsVmFsdWVzID0gdGhpcy5zZWxlY3RhYmxlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbVtiaW5kVmFsdWVdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGFsbFZhbHVlcyA9IFsuLi50aGlzLnNlbGVjdGFibGVzXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShhbGxWYWx1ZXMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICBcclxuICAgIHRoaXMuY2hlY2tGb3JaZXJvKGFsbFZhbHVlcyk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgICAvLyBFbnN1cmUgRm9ybWx5IGludGVncmF0aW9uXHJcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoYWxsVmFsdWVzKTtcclxuICAgICAgdGhpcy5maWVsZC5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1bnNlbGVjdEFsbCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5wYXJhbXM/Lm11bHRpcGxlKSByZXR1cm47XHJcbiAgICBcclxuICAgIGNvbnN0IGVtcHR5VmFsdWU6IGFueVtdID0gW107XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZW1wdHlWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5jaGVja0Zvclplcm8oZW1wdHlWYWx1ZSk7XHJcbiAgICBcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy5maWVsZCAmJiB0aGlzLmZpZWxkLmZvcm1Db250cm9sKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wuc2V0VmFsdWUoZW1wdHlWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZmllbGQuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUgfHwgW107XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjdXJyZW50VmFsdWUpICYmIFxyXG4gICAgICAgICAgIGN1cnJlbnRWYWx1ZS5sZW5ndGggPT09IHRoaXMuc2VsZWN0YWJsZXMubGVuZ3RoICYmXHJcbiAgICAgICAgICAgdGhpcy5zZWxlY3RhYmxlcy5ldmVyeSgoaXRlbTogYW55KSA9PiB0aGlzLmlzT3B0aW9uU2VsZWN0ZWQoaXRlbSkpO1xyXG4gIH1cclxuXHJcbiAgaXNTb21lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoY3VycmVudFZhbHVlKSAmJiBcclxuICAgICAgICAgICBjdXJyZW50VmFsdWUubGVuZ3RoID4gMCAmJiBcclxuICAgICAgICAgICBjdXJyZW50VmFsdWUubGVuZ3RoIDwgdGhpcy5zZWxlY3RhYmxlcy5sZW5ndGg7XHJcbiAgfVxyXG4gIHRvZ2dsZUl0ZW1TZWxlY3Rpb24oaXRlbTogYW55LCBldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIFxyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8ubXVsdGlwbGUpIHJldHVybjtcclxuICAgIFxyXG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZSB8fCBbXTtcclxuICAgIGNvbnN0IGJpbmRWYWx1ZSA9IHRoaXMucHJvcHM/LlsnYmluZFZhbHVlJ107XHJcbiAgICBcclxuICAgIGxldCBpdGVtSW5kZXggPSAtMTtcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgaXRlbUluZGV4ID0gY3VycmVudFZhbHVlLmZpbmRJbmRleCgoc2VsZWN0ZWQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gdHlwZW9mIHNlbGVjdGVkID09PSAnb2JqZWN0JyA/IHNlbGVjdGVkW2JpbmRWYWx1ZV0gOiBzZWxlY3RlZDtcclxuICAgICAgICBjb25zdCBpdGVtVmFsID0gaXRlbVtiaW5kVmFsdWVdO1xyXG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZhbCA9PT0gaXRlbVZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtSW5kZXggPSBjdXJyZW50VmFsdWUuZmluZEluZGV4KChzZWxlY3RlZDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2VsZWN0ZWQpID09PSBKU09OLnN0cmluZ2lmeShpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkID09PSBpdGVtO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgbGV0IG5ld1ZhbHVlO1xyXG4gICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XHJcbiAgICAgIG5ld1ZhbHVlID0gWy4uLmN1cnJlbnRWYWx1ZV07XHJcbiAgICAgIG5ld1ZhbHVlLnNwbGljZShpdGVtSW5kZXgsIDEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3VmFsdWUgPSBbLi4uY3VycmVudFZhbHVlLCBpdGVtXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLm1hcmtBc1RvdWNoZWQoKTtcclxuICAgIFxyXG4gICAgdGhpcy5vbk5nU2VsZWN0Q2hhbmdlKG5ld1ZhbHVlKTtcclxuICAgIFxyXG4gICAgdGhpcy5jaGVja0Zvclplcm8obmV3VmFsdWUpO1xyXG4gICAgXHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMuZmllbGQgJiYgdGhpcy5maWVsZC5mb3JtQ29udHJvbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLmZvcm1Db250cm9sLnNldFZhbHVlKG5ld1ZhbHVlKTtcclxuICAgICAgdGhpcy5maWVsZC5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIEZvcmNlIEFuZ3VsYXIgY2hhbmdlIGRldGVjdGlvbiB0byB1cGRhdGUgdGhlIFVJXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gVGhpcyBlbnN1cmVzIHRoZSBjaGlwcyBhcmUgdXBkYXRlZCBpbiB0aGUgbmV4dCB0aWNrXHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIGlzT3B0aW9uU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmZvcm1Db250cm9sLnZhbHVlIHx8IFtdO1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGN1cnJlbnRWYWx1ZSkpIHJldHVybiBmYWxzZTtcclxuICAgIFxyXG4gICAgY29uc3QgYmluZFZhbHVlID0gdGhpcy5wcm9wcz8uWydiaW5kVmFsdWUnXTtcclxuICAgIGNvbnN0IGJpbmRMYWJlbCA9IHRoaXMucHJvcHM/LlsnYmluZExhYmVsJ10gfHwgJ25hbWUnO1xyXG4gICAgXHJcbiAgICAvLyBHZXQgdGhlIHZhbHVlIHRvIGNvbXBhcmUgZnJvbSB0aGUgaXRlbVxyXG4gICAgbGV0IGl0ZW1WYWx1ZTtcclxuICAgIGlmIChiaW5kVmFsdWUpIHtcclxuICAgICAgaXRlbVZhbHVlID0gaXRlbVtiaW5kVmFsdWVdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbVZhbHVlID0gaXRlbTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gQ2hlY2sgaWYgdGhpcyBpdGVtIGlzIGluIHRoZSBzZWxlY3RlZCB2YWx1ZXNcclxuICAgIHJldHVybiBjdXJyZW50VmFsdWUuc29tZSgoc2VsZWN0ZWQ6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgXHJcbiAgICAgIC8vIEhhbmRsZSBkaWZmZXJlbnQgc3RydWN0dXJlcyBvZiBzZWxlY3RlZCB2YWx1ZXNcclxuICAgICAgaWYgKHR5cGVvZiBzZWxlY3RlZCA9PT0gJ29iamVjdCcgJiYgc2VsZWN0ZWQgIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoYmluZFZhbHVlICYmIHNlbGVjdGVkW2JpbmRWYWx1ZV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkW2JpbmRWYWx1ZV07XHJcbiAgICAgICAgfSBlbHNlIGlmIChzZWxlY3RlZFtiaW5kTGFiZWxdICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPSBzZWxlY3RlZFtiaW5kTGFiZWxdO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWQubmFtZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICBzZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWQubmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9IHNlbGVjdGVkO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZWxlY3RlZFZhbHVlID0gc2VsZWN0ZWQ7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIC8vIENvbXBhcmUgdGhlIHZhbHVlc1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRWYWx1ZSA9PT0gaXRlbVZhbHVlIHx8IFxyXG4gICAgICAgICAgICAgKHR5cGVvZiBpdGVtVmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBzZWxlY3RlZFZhbHVlID09PSAnb2JqZWN0JyAmJiBcclxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShpdGVtVmFsdWUpID09PSBKU09OLnN0cmluZ2lmeShzZWxlY3RlZFZhbHVlKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrRm9yWmVybyhzZWxlY3RlZDogYW55LCBzdGF0ZT86IGJvb2xlYW4pIHtcclxuICAgIC8vIFVzZSB0aGUgcGFzc2VkIHNlbGVjdGVkIHBhcmFtZXRlciBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gZm9ybSBjb250cm9sIHZhbHVlXHJcbiAgICBjb25zdCB2YWx1ZVRvQ2hlY2sgPSBzZWxlY3RlZCAhPT0gdW5kZWZpbmVkID8gc2VsZWN0ZWQgOiB0aGlzLmZvcm1Db250cm9sLnZhbHVlO1xyXG4gICAgXHJcbiAgICB0aGlzLnRvcExhYmVsID0gdmFsdWVUb0NoZWNrPy5sZW5ndGggPT0gMCA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIC8vIGNvbnNvbGUubG9nKFwidGVzdFwiLCB0aGlzLmZvcm1Db250cm9sLnZhbHVlPy5sZW5ndGgpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInRlc3RcIiwgdGhpcy5vcGVuU3RhdGUpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInBsYWNlaG9sZGVyLS0tIFwiLCB0aGlzLnBsYWNlaG9sZGVyTGFiZWwpXHJcbiAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtcy5sYWJlbC0tLSBcIiwgdGhpcy5wYXJhbXMubGFiZWwpXHJcbiAgICB0aGlzLm9wZW5TdGF0ZSA9IHN0YXRlO1xyXG4gICAgaWYgKHN0YXRlIHx8IHZhbHVlVG9DaGVjaz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyTGFiZWwgPSB0aGlzLnBhcmFtcy5wbGFjZWhvbGRlcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXJMYWJlbCA9IHRoaXMucGFyYW1zLmxhYmVsO1xyXG4gICAgfVxyXG4gIH1cclxuICBtb3VzZUhvdmVyKGl0ZW06IFNlbGVjdFN1YkludGVyZmFjZSwgZXZlbnQ6IGFueSA9IG51bGwsIHRvb2x0aXA6IE1hdFRvb2x0aXApIHsgIC8vIE5ldyBtZXRob2QgZm9yIG1vdXNlZW50ZXIgZXZlbnRcclxuICAgIHRoaXMuaG92ZXJFdmVudC5lbWl0KHtcclxuICAgICAgZXZlbnQsXHJcbiAgICAgIGl0ZW1cclxuICAgIH0pO1xyXG4gICAgaWYgKHRvb2x0aXApIHtcclxuICAgICAgdG9vbHRpcC5zaG93KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHNlbGVjdEhvdmVyRXZlbnQge1xyXG4gIGV2ZW50OiBhbnksXHJcbiAgaXRlbTogU2VsZWN0U3ViSW50ZXJmYWNlXHJcbn0iLCI8ZGl2IGNsYXNzPVwic2Etc2VsZWN0LWNvbnRhaW5lciB7e3Byb3BzPy5bJ2lucHV0Q29udGFpbmVyQ2xhc3MnXX19XCI+XHJcbiAgQGlmKCEhcHJvcHM/LlsnbGFiZWwnXSl7XHJcbiAgPGRpdiBjbGFzcz1cInNhLXNlbGVjdC1sYWJlbC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzYS1zZWxlY3QtbGFiZWwtdG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzYS1zZWxlY3QtbGFiZWxcIj5cclxuICAgICAgICB7e3Byb3BzPy5bJ2xhYmVsJ119fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICAgIEBpZighIXByb3BzPy5bJ3Rvb2x0aXAnXSl7XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwidG9vbHRpcC1jb250YWluZXJcIj5cclxuICAgICAgICA8c2EtaWNvbiBbaWNvbl09XCJwcm9wcz8uWyd0b29sdGlwSWNvbiddIHx8ICdpbmZvQ2lyY2xlT3V0bGluZWQnXCIgY3VzdG9tQ2xhc3M9XCJpbmZvLWljb25cIlxyXG4gICAgICAgICAgW21hdFRvb2x0aXBdPVwicHJvcHM/LlsndG9vbHRpcCddXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRvb2x0aXBcIiBjbGFzcz1cInRvb2x0aXAtaWNvbiBkLWZsZXhcIlxyXG4gICAgICAgICAgW3NpemVdPVwicHJvcHM/LlsndG9vbHRpcEljb25TaXplJ10gfHwgJzIwJ1wiPjwvc2EtaWNvbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIEBpZighIXByb3BzPy5bJ2Rlc2NyaXB0aW9uJ10pIHtcclxuICAgIDxwIGNsYXNzPVwic2Etc2VsZWN0LWRlc2NyaXB0aW9uXCI+XHJcbiAgICAgIHt7cHJvcHM/LlsnZGVzY3JpcHRpb24nXX19XHJcbiAgICA8L3A+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJzYS1zZWxlY3QtZmllbGQtY29udGFpbmVyXCI+XHJcbiAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cIihwcm9wcz8uWydzaG93VGFnJ10gIT09IGZhbHNlICYmIChvcGVuU3RhdGUgfHwgdG9wTGFiZWwpKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXCJcclxuICAgICAgY2xhc3M9XCJjbGlja2VkLWxhYmVsXCI+e3twYXJhbXMubGFiZWx9fVxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwibmctc2VsZWN0LWZpZWxkIHt7b3BlblN0YXRlID8gJ2FjdGl2YXRlZCcgOiAnaWRsZSd9fSB7e2ZpZWxkLnByb3BzLmRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnfX0ge3tmb3JtQ29udHJvbC52YWxpZCA/ICcnIDogJ2ludmFsaWQnfX1cIj5cclxuICAgICAgPGRpdiByb2xlPVwiYnV0dG9uXCIgdGl0bGU9XCJkcm9wLWJ1dHRvblwiIHRhYmluZGV4PVwiMFwiIGNsYXNzPVwibGVmdC1pY29uIHN2Zy1pY29uXCIgW3N0eWxlXT1cInN2Z1N0eWxlXCJcclxuICAgICAgICAoY2xpY2spPVwib3BlbkNsb3NlKHRydWUpXCIgKGJsdXIpPVwib3BlbkNsb3NlKGZhbHNlKVwiXHJcbiAgICAgICAgKm5nSWY9XCIocGFyYW1zLmRyb3BJY29uUG9zaXRpb24gPT0gJ2xlZnQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxuZy1zZWxlY3QgKGNoYW5nZSk9XCJvbk5nU2VsZWN0Q2hhbmdlKCRldmVudClcIiAocmVtb3ZlKT1cInNoaWZ0TGFiZWwoJ3JlbW92ZWQnKVwiIChjbGVhcik9XCJzaGlmdExhYmVsKCdjbGVhcmVkJylcIlxyXG4gICAgICAoc2VhcmNoKT1cIm9wZW5DbG9zZSh0cnVlKVwiIChmb2N1cyk9XCJvcGVuQ2xvc2UodHJ1ZSlcIiAoYmx1cik9XCIgb3BlbkNsb3NlKGZhbHNlKVwiIFtpc09wZW5dPVwib3BlblN0YXRlXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyTGFiZWxcIiBbYmluZExhYmVsXT1cInByb3BzPy5bJ2JpbmRMYWJlbCddIHx8ICduYW1lJ1wiIFtiaW5kVmFsdWVdPVwicHJvcHM/LlsnYmluZFZhbHVlJ10gfHwgbnVsbFwiIFtpdGVtc109XCJzZWxlY3RhYmxlc1wiIFttdWx0aXBsZV09XCJwYXJhbXM/Lm11bHRpcGxlXCJcclxuICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW3N0eWxlXSBbZm9ybWx5QXR0cmlidXRlc109XCJmaWVsZFwiIFtzZWFyY2hhYmxlXT1cImZpZWxkLnByb3BzWydzZWFyY2hhYmxlJ11cIiBbY2xlYXJhYmxlXT1cImZhbHNlXCI+ICAgICAgXHJcbiAgICAgIDwhLS0gTXVsdGktbGFiZWwgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgc2VsZWN0ZWQgaXRlbXMgYXMgY2hpcHMgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1tdWx0aS1sYWJlbC10bXAgbGV0LWl0ZW1zPVwiaXRlbXNcIiBsZXQtY2xlYXI9XCJjbGVhclwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgKGl0ZW1zID8gaXRlbXMuc2xpY2Uoc3RhcnRJbmQsc3RhcnRJbmQrbGFiZWxMaW1pdCk6IFtdKVwiPlxyXG4gICAgICAgICAgPHNhLWNoaXAgKG9uQ2xpY2tFdmVudCk9XCIgKCFmaWVsZC5wcm9wcy5kaXNhYmxlZCkgPyAgY2xlYXIoaXRlbSkgOiBudWxsXCIgW2lkXT1cIml0ZW0uaWRcIlxyXG4gICAgICAgICAgICBbaWNvblBhdGhdPVwicGFyYW1zLmljb25QYXRoXCIgW3RleHRdPVwiaXRlbS5uYW1lXCIgW3R5cGVdPVwicGFyYW1zLnR5cGVcIlxyXG4gICAgICAgICAgICBbc3RhdGVdPVwiZmllbGQucHJvcHMuZGlzYWJsZWQgPyAnbmV1dHJhbCcgOiBwYXJhbXMuc3RhdGVcIiBbZmlsbGluZ109XCJwYXJhbXMuZmlsbGluZ1wiXHJcbiAgICAgICAgICAgIFtpY29uUG9zaXRpb25dPVwicGFyYW1zLmljb25Qb3NpdGlvblwiPlxyXG4gICAgICAgICAgPC9zYS1jaGlwPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKGNsaWNrKT1cInNoaWZ0TGFiZWwoJ2NsaWNrZWQnKVwiIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtcy5sZW5ndGggPiAoc3RhcnRJbmQrbGFiZWxMaW1pdClcIj5cclxuICAgICAgICAgIDxzYS1jaGlwIHRleHQ9XCIre3tpdGVtcy5sZW5ndGgtKHN0YXJ0SW5kK2xhYmVsTGltaXQpfX1cIiB0eXBlPVwicmVndWxhclwiIHN0YXRlPVwicHJpbWFyeVwiIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IChjbGljayk9XCJzaGlmdExhYmVsKCdjbGVhcmVkJylcIiAqbmdJZj1cInN0YXJ0SW5kID09IGl0ZW1zLmxlbmd0aC1sYWJlbExpbWl0XCJcclxuICAgICAgICAgIGNsYXNzPVwibmctdmFsdWUgb3ZlcmZsb3ctbGFiZWxcIj5cclxuICAgICAgICAgIDxzYS1jaGlwIHRleHQ9XCIuLi5cIiB0eXBlPVwicmVndWxhclwiIHN0YXRlPVwiZGVmYXVsdFwiIGZpbGxpbmc9XCJmaWxsZWRcIj5cclxuICAgICAgICAgIDwvc2EtY2hpcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gQ2hlY2tib3ggb3B0aW9uIHRlbXBsYXRlIGZvciBpbmRpdmlkdWFsIGl0ZW1zIHdoZW4gaW4gY2hlY2tib3ggbW9kZSAtLT5cclxuICAgICAgPG5nLXRlbXBsYXRlIG5nLW9wdGlvbi10bXAgbGV0LWl0ZW09XCJpdGVtXCIgbGV0LWl0ZW0kPVwiaXRlbSRcIiBsZXQtaW5kZXg9XCJpbmRleFwiICpuZ0lmPVwicGFyYW1zPy5zaG93Q2hlY2tib3hlc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1vcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgXHJcbiAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNPcHRpb25TZWxlY3RlZChpdGVtKVwiIFxyXG4gICAgICAgICAgICAgICAgIChtb3VzZWRvd24pPVwidG9nZ2xlSXRlbVNlbGVjdGlvbihpdGVtLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiXHJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb24tY2hlY2tib3hcIj4gICAgICAgICAgXHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1sYWJlbFwiPnt7IGl0ZW1bcHJvcHM/LlsnYmluZExhYmVsJ10gfHwgJ25hbWUnXSB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgXHJcbiAgICAgIDwhLS0gU2ltcGxlIGhlYWRlciB0ZW1wbGF0ZSBmb3IgU2VsZWN0IEFsbCAvIFVuc2VsZWN0IEFsbCB3aGVuIGluIGNoZWNrYm94IG1vZGUgLS0+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1oZWFkZXItdG1wICpuZ0lmPVwicGFyYW1zPy5zaG93Q2hlY2tib3hlcyAmJiBwYXJhbXM/Lm11bHRpcGxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGwtaGVhZGVyXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdC1hbGwtbGFiZWxcIiAoY2xpY2spPVwic2VsZWN0QWxsKClcIj5TZWxlY3QgYWxsPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1bnNlbGVjdC1hbGwtbGFiZWxcIiAoY2xpY2spPVwidW5zZWxlY3RBbGwoKVwiPlVuc2VsZWN0IGFsbDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgIDxuZy10ZW1wbGF0ZSBuZy1hcnJvdy10bXA+XHJcbiAgICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Rvd25DaGV2cm9uT3V0bGluZWQnXCIgY2xhc3M9XCJkLWZsZXggY3VzdG9tLWRyb3Bkb3duLWFycm93XCIgW3NpemVdPVwiJzE4J1wiPjwvc2EtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvbmctc2VsZWN0PlxyXG4gICAgPGRpdiAqbmdJZj1cIihwYXJhbXMuZHJvcEljb25Qb3NpdGlvbiA9PSAncmlnaHQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIiBjbGFzcz1cInJpZ2h0LWljb25cIj5cclxuICAgICAgPHNhLWljb24gW2ljb25dPVwiJ2Rvd25DaGV2cm9uT3V0bGluZWQnXCIgY2xhc3M9XCJkLWZsZXhcIiBbc2l6ZV09XCInMTgnXCIgKGNsaWNrKT1cIm9wZW5DbG9zZSh0cnVlKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib3BlbkNsb3NlKGZhbHNlKVwiPjwvc2EtaWNvbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IHJvbGU9XCJidXR0b25cIiB0aXRsZT1cImRyb3AtYnV0dG9uXCIgdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJyaWdodC1pY29uIHN2Zy1pY29uXCIgW3N0eWxlXT1cInN2Z1N0eWxlXCJcclxuICAgICAgKGNsaWNrKT1cIm9wZW5DbG9zZSh0cnVlKVwiIChibHVyKT1cIm9wZW5DbG9zZShmYWxzZSlcIlxyXG4gICAgICAqbmdJZj1cIihwYXJhbXMuZHJvcEljb25Qb3NpdGlvbiA9PSAncmlnaHQnIHx8IHBhcmFtcy5kcm9wSWNvblBvc2l0aW9uID09ICdib3RoJylcIj5cclxuICAgIDwvZGl2PiAtLT5cclxuXHJcbiA8ZGl2IGNsYXNzPVwiZmFsbGJhY2stYXJyb3dcIiAqbmdJZj1cIiFvcGVuU3RhdGVcIj5cclxuICA8c2EtaWNvbiBbaWNvbl09XCInZG93bkNoZXZyb25PdXRsaW5lZCdcIiBjbGFzcz1cImQtZmxleFwiIFtzaXplXT1cIicxOCdcIj48L3NhLWljb24+XHJcbiA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBAaWYoIWZvcm1Db250cm9sLnZhbGlkKXtcclxuICA8ZGl2IGNsYXNzPVwiZXJyb3ItbWVzc2FnZS1jb250YWluZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAgICA8Zm9ybWx5LXZhbGlkYXRpb24tbWVzc2FnZSBbZmllbGRdPVwiZmllbGRcIj48L2Zvcm1seS12YWxpZGF0aW9uLW1lc3NhZ2U+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJzdXBwb3J0LWxhYmVsXCI+e3twYXJhbXMuc3VwcG9ydFRleHR9fTwvZGl2PlxyXG48L2Rpdj4iXX0=
|
|
@@ -65,7 +65,7 @@ export class GridCellComponent {
|
|
|
65
65
|
toggleDropdown(element) {
|
|
66
66
|
if (this.overlayRef) {
|
|
67
67
|
this.overlayRef.dispose();
|
|
68
|
-
|
|
68
|
+
this.overlayRef = null;
|
|
69
69
|
}
|
|
70
70
|
const positionStrategy = this.overlay.position()
|
|
71
71
|
.flexibleConnectedTo(element)
|
|
@@ -97,7 +97,12 @@ export class GridCellComponent {
|
|
|
97
97
|
});
|
|
98
98
|
const portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);
|
|
99
99
|
this.overlayRef.attach(portal);
|
|
100
|
-
this.overlayRef.backdropClick().subscribe(() =>
|
|
100
|
+
this.overlayRef.backdropClick().subscribe(() => {
|
|
101
|
+
if (this.overlayRef) {
|
|
102
|
+
this.overlayRef.dispose();
|
|
103
|
+
this.overlayRef = null;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
101
106
|
}
|
|
102
107
|
handleActionClick(action, event) {
|
|
103
108
|
event.stopPropagation();
|
|
@@ -229,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
229
234
|
type: HostListener,
|
|
230
235
|
args: ['document:click', ['$event']]
|
|
231
236
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZ3JpZC1jZWxsL2dyaWQtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2dyaWQtY2VsbC9ncmlkLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFpQyxTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBd0JyRCxNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUFvQixHQUFzQixFQUFVLE9BQWdCLEVBQVUsZ0JBQWtDO1FBQTVGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFaaEgsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDWixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDL0IsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUV4QixXQUFN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QUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBdUdQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAsIElIZWFkZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IEdyaWRJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2dyaWQtaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sVGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbC10aXAvdG9vbC10aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hpcEludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hpcC1pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcblxyXG5pbnRlcmZhY2UgQ2VsbFBhcmFtcyBleHRlbmRzIElDZWxsUmVuZGVyZXJQYXJhbXMge1xyXG4gIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgdmFsdWU6IGFueTtcclxuICBkYXRhOiB7IHlvdT86IGJvb2xlYW4gfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYS1ncmlkLWNlbGwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgQ2hpcHNDb21wb25lbnQsXHJcbiAgICBCdXR0b25Db21wb25lbnQsXHJcbiAgICBOZ0ZvcixcclxuICAgIE5nSWYsXHJcbiAgICBUb29sVGlwQ29tcG9uZW50LFxyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZ3JpZC1jZWxsLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJykgZHJvcGRvd25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9uc0NvbnRhaW5lcicpIGFjdGlvbnNDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIHNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gIHJlYWRvbmx5IE1BWF9WSVNJQkxFX0NISVBTID0gMTsgXHJcbiAgZGlzcGxheWVkQ2hpcHM6IENoaXBJbnRlcmZhY2VbXSA9IFtdO1xyXG4gIHJlbWFpbmluZ0NoaXBzQ291bnQgPSAwO1xyXG4gIHBhcmFtcyE6IEdyaWRJbnRlcmZhY2U7XHJcbiAgcm93TnVtID0gMDtcclxuXHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tCdXR0b25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb3dJZDogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tDaGlwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93SWQ6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrTGlua0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrQXZhdGFyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93SWQ6IG51bWJlciB9PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxyXG5cclxuICBob3ZlcmVkQ2hpcDogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIHRvb2x0aXBDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUb29sVGlwQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBDZWxsUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvd051bSA9IHBhcmFtcy5yb3dJbmRleDtcclxuICAgIFxyXG4gICAgLy8gQ2hlY2sgZm9yIGRpcmVjdCBmaWVsZCB2YWx1ZSBmaXJzdCwgdGhlbiBmYWxsYmFjayB0byBfY2VsbFBhcmFtc1xyXG4gICAgbGV0IGNlbGxEYXRhID0gcGFyYW1zLnZhbHVlO1xyXG4gICAgaWYgKCFjZWxsRGF0YSAmJiBwYXJhbXMuZGF0YSAmJiBwYXJhbXMuY29sRGVmPy5maWVsZCkge1xyXG4gICAgICBjb25zdCBjZWxsUGFyYW1zS2V5ID0gYCR7cGFyYW1zLmNvbERlZi5maWVsZH1fY2VsbFBhcmFtc2A7XHJcbiAgICAgIGNlbGxEYXRhID0gcGFyYW1zLmRhdGFbY2VsbFBhcmFtc0tleV07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGFyYW1zID0ge1xyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICAgIC4uLihjZWxsRGF0YSA/PyB7fSlcclxuICAgIH07XHJcbiAgICBcclxuICAgIGlmICh0aGlzLnBhcmFtcy5jaGlwQ29uZmlnICYmIEFycmF5LmlzQXJyYXkodGhpcy5wYXJhbXMuY2hpcENvbmZpZykpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDaGlwcyA9IHRoaXMucGFyYW1zLmNoaXBDb25maWcuc2xpY2UoMCwgdGhpcy5NQVhfVklTSUJMRV9DSElQUyk7XHJcbiAgICAgIHRoaXMucmVtYWluaW5nQ2hpcHNDb3VudCA9IE1hdGgubWF4KDAsIHRoaXMucGFyYW1zLmNoaXBDb25maWcubGVuZ3RoIC0gdGhpcy5NQVhfVklTSUJMRV9DSElQUyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgIHRoaXMuZGlzcGxheWVkQ2hpcHMgPSB0aGlzLnBhcmFtcy5jaGlwQ29uZmlnO1xyXG4gICAgICAgdGhpcy5yZW1haW5pbmdDaGlwc0NvdW50ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2gocGFyYW1zOiBDZWxsUGFyYW1zKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLmFnSW5pdChwYXJhbXMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICB0eXBlT2YodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcclxuICB9XHJcbiAgXHJcbiAgYnV0dG9uQ2xpY2tlZChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXMuYnV0dG9uQ29uZmlnPy5vbkNsaWNrKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmJ1dHRvbkNvbmZpZy5vbkNsaWNrKGV2ZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMucGFyYW1zLmJ1dHRvbkNsaWNrZWQgJiYgdGhpcy5wYXJhbXMuYnV0dG9uQ2xpY2tlZCh7ICAgICAgICAgICAgXHJcbiAgICAgIC4uLmV2ZW50LFxyXG4gICAgICByb3dJZDogdGhpcy5yb3dOdW1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNsaWNrQnV0dG9uRXZlbnQuZW1pdCh7IC4uLmV2ZW50LCByb3dJZDogdGhpcy5yb3dOdW0gfSk7ICAgICAgXHJcbiAgfVxyXG5cclxuICB0b2dnbGVEcm9wZG93bihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXHJcbiAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXHJcbiAgICAgIC53aXRoUHVzaCh0cnVlKSBcclxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnModHJ1ZSkgXHJcbiAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oOCkgXHJcbiAgICAgIC53aXRoUG9zaXRpb25zKFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgb2Zmc2V0WTogNCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgb2Zmc2V0WTogNCxcclxuICAgICAgICB9XHJcbiAgICAgIF0pO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgYmFja2Ryb3BDbGFzczogJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJyxcclxuICAgICAgcGFuZWxDbGFzczogJ2FjdGlvbnMtZHJvcGRvd24tcGFuZWwnLFxyXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpIFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2gocG9ydGFsKTtcclxuXHJcbiAgICB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbjogYW55LCBldmVudDogRXZlbnQpIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIGlmIChhY3Rpb24ub25DbGljaykge1xyXG4gICAgICBhY3Rpb24ub25DbGljaygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIG9uRG9jdW1lbnRDbGljayhldmVudDogRXZlbnQpIHtcclxuICAgIGlmICh0aGlzLmFjdGlvbnNDb250YWluZXIgJiYgIXRoaXMuYWN0aW9uc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5zaG93RHJvcGRvd24gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNoaXBDbGlja2VkKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMucGFyYW1zLmNoaXBDbGlja2VkICYmIHRoaXMucGFyYW1zLmNoaXBDbGlja2VkKHtcclxuICAgICAgLi4uZXZ0LFxyXG4gICAgICByb3dJZDogdGhpcy5yb3dOdW1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNsaWNrQ2hpcEV2ZW50LmVtaXQoeyAuLi5ldnQsIHJvd0lkOiB0aGlzLnJvd051bSB9KTtcclxuICB9XHJcblxyXG4gIGxpbmtDbGlja2VkKCkge1xyXG4gICAgaWYgKHRoaXMucGFyYW1zLmNlbGxUeXBlICE9IFwiaW50ZXJhY3RpdmVcIikgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucGFyYW1zLmxpbmtDbGlja2VkICYmIHRoaXMucGFyYW1zLmxpbmtDbGlja2VkKHsgICAgICAgICBcclxuICAgICAgcm93SWQ6IHRoaXMucm93TnVtXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5wYXJhbXMuaW50ZXJhY3RpdmVMaW5rICE9IFwiXCIpIHtcclxuICAgICAgaWYgKHRoaXMucGFyYW1zLmludGVyYWN0aXZlTGlua1RhcmdldCA9PSBcImJsYW5rXCIpIHtcclxuICAgICAgICB3aW5kb3cub3Blbih0aGlzLnBhcmFtcy5pbnRlcmFjdGl2ZUxpbmspITtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmICh0aGlzLnBhcmFtcy5pbnRlcmFjdGl2ZUxpbmtUYXJnZXQgPT0gXCJzZWxmXCIpIHtcclxuICAgICAgICBsb2NhdGlvbi5ocmVmID0gdGhpcy5wYXJhbXMuaW50ZXJhY3RpdmVMaW5rITtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5vbkNsaWNrTGlua0V2ZW50LmVtaXQoeyByb3dJZDogdGhpcy5yb3dOdW0gfSk7XHJcbiAgfVxyXG5cclxuICBhdmF0YXJDbGlja2VkKGV2dDogRXZlbnQpIHtcclxuICAgIHRoaXMucGFyYW1zLmF2YXRhckNsaWNrZWQgJiYgdGhpcy5wYXJhbXMuYXZhdGFyQ2xpY2tlZCh7XHJcbiAgICAgIC4uLmV2dCxcclxuICAgICAgcm93SWQ6IHRoaXMucm93TnVtXHJcbiAgICB9KTtcclxuICAgIHRoaXMub25DbGlja0F2YXRhckV2ZW50LmVtaXQoeyAuLi5ldnQsIHJvd0lkOiB0aGlzLnJvd051bSB9KTtcclxuICB9XHJcblxyXG4gIHNob3dUb29sdGlwKGNvbmZpZzogYW55LCBldmVudD86IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaG92ZXJlZENoaXAgPSBjb25maWc7IFxyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50LmN1cnJlbnRUYXJnZXQpIHtcclxuICAgICAgY29uc3QgY2hpcENvbnRhaW5lciA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IGNoaXBFbGVtZW50ID0gY2hpcENvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdzYS1jaGlwJykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmIChjaGlwRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHJlY3QgPSBjaGlwRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb25zdCB0b3BQb3NpdGlvbiA9IHJlY3QuYm90dG9tICsgODtcclxuICAgICAgICBjb25zdCBsZWZ0UG9zaXRpb24gPSByZWN0LmxlZnQgKyByZWN0LndpZHRoIC8gMjtcclxuICAgICAgICB0aGlzLmNyZWF0ZVRvb2x0aXBDb21wb25lbnQodG9wUG9zaXRpb24sIGxlZnRQb3NpdGlvbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhpZGVUb29sdGlwKCkge1xyXG4gICAgdGhpcy5ob3ZlcmVkQ2hpcCA9IG51bGw7XHJcbiAgICB0aGlzLmRlc3Ryb3lUb29sdGlwQ29tcG9uZW50KCk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUb29sdGlwQ29tcG9uZW50KHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuZGVzdHJveVRvb2x0aXBDb21wb25lbnQoKTtcclxuICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZiA9IHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoVG9vbFRpcENvbXBvbmVudCk7ICAgIFxyXG4gICAgdGhpcy50b29sdGlwQ29tcG9uZW50UmVmLmluc3RhbmNlLm1lc3NhZ2VzID0gdGhpcy5nZXRUb29sdGlwVGV4dCgpOyBcclxuICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5pbnN0YW5jZS5zaW1wbGVNb2RlID0gdHJ1ZTtcclxuICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5pbnN0YW5jZS5wb2ludGVyUG9zaXRpb24gPSAndG9wJztcclxuICAgIFxyXG4gICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcclxuICAgIHRvb2x0aXBFbGVtZW50LnN0eWxlLmNzc1RleHQgPSBgXHJcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgdG9wOiAke3RvcH1weDtcclxuICAgICAgbGVmdDogJHtsZWZ0fXB4O1xyXG4gICAgICB6LWluZGV4OiA5OTk5OTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcclxuICAgIGA7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2x0aXBFbGVtZW50KTtcclxuICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBkZXN0cm95VG9vbHRpcENvbXBvbmVudCgpIHtcclxuICAgIGlmICh0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYpIHtcclxuICAgICAgY29uc3QgdG9vbHRpcEVsZW1lbnQgPSB0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudDtcclxuICAgICAgaWYgKHRvb2x0aXBFbGVtZW50LnBhcmVudE5vZGUpIHtcclxuICAgICAgICB0b29sdGlwRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBFbGVtZW50KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYuZGVzdHJveSgpO1xyXG4gICAgICB0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VG9vbHRpcFRleHQoKTogc3RyaW5nW10ge1xyXG4gICAgaWYgKCF0aGlzLnBhcmFtcz8uY2hpcENvbmZpZykgcmV0dXJuIFtdO1xyXG4gICAgcmV0dXJuIHRoaXMucGFyYW1zLmNoaXBDb25maWcubWFwKGNoaXAgPT4gY2hpcC50ZXh0KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5oaWRlVG9vbHRpcCgpO1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZ3JpZC1jZWxsIHt7cGFyYW1zLmNlbGxUeXBlfX1cIj5cclxuXHJcbiAgPGltZyBjbGFzcz1cImljb25zXCIgc3JjPXt7cGFyYW1zLmljb25QYXRofX0gW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3TGVhZGluZ0ljb24pID8gJ2Jsb2NrJyA6ICdub25lJ1wiIGFsdD1cIlwiPlxyXG5cclxuICA8c2EtYXZhdGFyIFtpZF09XCJwYXJhbXMuYXZhdGFyQ29uZmlnPy5pZFwiIFthbHRUZXh0XT1cInBhcmFtcy5hdmF0YXJDb25maWc/LmFsdFRleHRcIlxyXG4gICAgW2ltYWdlUGF0aF09XCJwYXJhbXMuYXZhdGFyQ29uZmlnPy5pbWFnZVBhdGhcIiBbc2l6ZV09XCJwYXJhbXMuYXZhdGFyQ29uZmlnPy5zaXplXCJcclxuICAgIFtzdHlsZS5kaXNwbGF5XT1cIihwYXJhbXMudmlld0F2YXRhcikgPyAnYmxvY2snIDogJ25vbmUnXCIgKG9uQ2xpY2tFdmVudCk9XCJhdmF0YXJDbGlja2VkKCRldmVudClcIj5cclxuICA8L3NhLWF2YXRhcj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImdyaWQtdGV4dFwiIFtzdHlsZS5kaXNwbGF5XT1cIihwYXJhbXMudmlld1RleHQpID8gJ2Jsb2NrJyA6ICdub25lJ1wiPlxyXG4gICAgPGRpdiBbc3R5bGUuZGlzcGxheV09XCIocGFyYW1zLnRleHQpID8gJ2Jsb2NrJyA6ICdub25lJ1wiIChjbGljayk9XCJsaW5rQ2xpY2tlZCgpXCIgY2xhc3M9XCJtYWluLXRleHRcIj57e3BhcmFtcy50ZXh0fX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy5zdWJUZXh0KSA/ICdibG9jaycgOiAnbm9uZSdcIiBjbGFzcz1cInN1Yi10ZXh0XCI+e3twYXJhbXMuc3ViVGV4dH19PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxpbWcgY2xhc3M9XCJpY29uc1wiIHNyYz17e3BhcmFtcy5pY29uUGF0aH19IFtzdHlsZS5kaXNwbGF5XT1cIihwYXJhbXMudmlld1RyYWlsaW5nSWNvbikgPyAnYmxvY2snIDogJ25vbmUnXCIgYWx0PVwiXCI+XHJcbiAgPGRpdiBjbGFzcz1cImNoaXBzLWNvbnRhaW5lclwiIFtzdHlsZS5kaXNwbGF5XT1cIihwYXJhbXMudmlld0NoaXApID8gJ2ZsZXgnIDogJ25vbmUnXCI+XHJcblxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IGNvbmZpZyBvZiBkaXNwbGF5ZWRDaGlwc1wiPlxyXG4gICAgPHNhLWNoaXAgW2lkXT1cImNvbmZpZy5pZFwiIFtmaWxsaW5nXT1cImNvbmZpZy5maWxsaW5nXCIgaWQ9XCJjaGlwX3t7cm93TnVtfX1fe3tjb25maWcuaWR9fVwiIFtpY29uUGF0aF09XCJjb25maWcuaWNvblBhdGhcIlxyXG4gICAgICBbaWNvblBvc2l0aW9uXT1cImNvbmZpZy5pY29uUG9zaXRpb25cIiBbbGFyZ2VTdGF0ZUljb25dPVwiY29uZmlnLmxhcmdlU3RhdGVJY29uXCIgW3N0YXRlXT1cImNvbmZpZy5zdGF0ZVwiXHJcbiAgICAgIFt0eXBlXT1cImNvbmZpZy50eXBlXCIgW3RleHRdPVwiY29uZmlnLnRleHRcIiBbY2xhc3Muc21hbGxdPVwiY29uZmlnLnR5cGUgPT09ICdzbWFsbCdcIlxyXG4gICAgICBbY2xhc3MubmV1dHJhbF09XCJjb25maWcuc3RhdGUgPT09ICduZXV0cmFsJ1wiIChvbkNsaWNrRXZlbnQpPVwiY2hpcENsaWNrZWQoJGV2ZW50KVwiPjwvc2EtY2hpcD5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY2hpcC10b29sdGlwLWNvbnRhaW5lclwiICpuZ0lmPVwicmVtYWluaW5nQ2hpcHNDb3VudCA+IDBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIlxyXG4gICAgKG1vdXNlZW50ZXIpPVwic2hvd1Rvb2x0aXAocmVtYWluaW5nQ2hpcHNDb3VudCwgJGV2ZW50KVwiIChtb3VzZWxlYXZlKT1cImhpZGVUb29sdGlwKClcIj5cclxuICAgIDxzYS1jaGlwIFtpZF09XCInY2hpcF8nICsgcm93TnVtICsgJ19tb3JlJ1wiIFt0ZXh0XT1cIicrJyArIHJlbWFpbmluZ0NoaXBzQ291bnRcIiBbZmlsbGluZ109XCJkaXNwbGF5ZWRDaGlwc1swXT8uZmlsbGluZ1wiXHJcbiAgICAgIFt0eXBlXT1cImRpc3BsYXllZENoaXBzWzBdPy50eXBlXCIgW3N0YXRlXT1cImRpc3BsYXllZENoaXBzWzBdPy5zdGF0ZVwiIChvbkNsaWNrRXZlbnQpPVwiY2hpcENsaWNrZWQoJGV2ZW50KVwiPjwvc2EtY2hpcD5cclxuPC9kaXY+XHJcblxyXG4gIDxzYS1idXR0b24gW2ljb25Qb3NpdGlvbl09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5pY29uUG9zaXRpb25cIiBbSW1hZ2VQYXRoXT1cInBhcmFtcy5idXR0b25Db25maWc/LmltYWdlUGF0aFwiXHJcbiAgICBbaWRdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8uaWRcIiBbc2l6ZV09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5zaXplXCIgW3N0YXRlXT1cInBhcmFtcy5idXR0b25Db25maWc/LnN0YXRlXCJcclxuICAgIFt0eXBlXT1cInBhcmFtcy5idXR0b25Db25maWc/LnR5cGVcIiBbdGV4dF09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy50ZXh0XCIgW2hyZWZdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8uaHJlZlwiXHJcbiAgICBbaHJlZlRhcmdldF09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5ocmVmVGFyZ2V0XCIgW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3QnV0dG9uKSA/ICdibG9jaycgOiAnbm9uZSdcIlxyXG4gICAgKG9uQ2xpY2tFdmVudCk9XCJidXR0b25DbGlja2VkKCRldmVudClcIj48L3NhLWJ1dHRvbj5cclxuXHJcbjwvZGl2PlxyXG5cclxuICA8ZGl2ICpuZ0lmPVwicGFyYW1zLmNlbGxUeXBlID09PSAnYWN0aW9ucydcIiBjbGFzcz1cImFjdGlvbnMtY29udGFpbmVyXCI+XHJcbiAgICA8aW1nIFtzcmNdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8uaW1hZ2VQYXRoXCIgYWx0PVwiYWN0aW9uc1wiIGNsYXNzPVwiYWN0aW9ucy1pY29uXCIgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duKGFjdGlvbnNCdXR0b24pXCJcclxuICAgICAgI2FjdGlvbnNCdXR0b24gLz5cclxuICBcclxuICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cclxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnMtZHJvcGRvd25cIj5cclxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgcGFyYW1zLmFjdGlvbnNcIiBjbGFzcz1cImFjdGlvbi1pdGVtXCIgKGNsaWNrKT1cImhhbmRsZUFjdGlvbkNsaWNrKGFjdGlvbiwgJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPGltZyAqbmdJZj1cImFjdGlvbi5pY29uXCIgW3NyY109XCJhY3Rpb24uaWNvblwiIGNsYXNzPVwiYWN0aW9uLWljb25cIiAvPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJhY3Rpb24tbGFiZWxcIj57e2FjdGlvbi5sYWJlbH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1jZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvZ3JpZC1jZWxsL2dyaWQtY2VsbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2dyaWQtY2VsbC9ncmlkLWNlbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFpQyxTQUFTLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ25JLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBd0JyRCxNQUFNLE9BQU8saUJBQWlCO0lBZ0I1QixZQUFvQixHQUFzQixFQUFVLE9BQWdCLEVBQVUsZ0JBQWtDO1FBQTVGLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFaaEgsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDWixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDL0IsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO1FBQ3JDLHdCQUFtQixHQUFHLENBQUMsQ0FBQztRQUV4QixXQUFN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YjsySUFLOEIsZ0JBQWdCO3NCQUE5QyxTQUFTO3VCQUFDLGtCQUFrQjtnQkFFRSxnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQVFuQixrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBNEdQLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJQ2VsbFJlbmRlcmVyQW5ndWxhckNvbXAsIElIZWFkZXJBbmd1bGFyQ29tcCB9IGZyb20gJ2FnLWdyaWQtYW5ndWxhcic7XHJcbmltcG9ydCB7IEdyaWRJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2dyaWQtaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUb29sVGlwQ29tcG9uZW50IH0gZnJvbSAnLi4vdG9vbC10aXAvdG9vbC10aXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hpcEludGVyZmFjZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY2hpcC1pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IElDZWxsUmVuZGVyZXJQYXJhbXMgfSBmcm9tICdhZy1ncmlkLWNvbW11bml0eSc7XHJcblxyXG5pbnRlcmZhY2UgQ2VsbFBhcmFtcyBleHRlbmRzIElDZWxsUmVuZGVyZXJQYXJhbXMge1xyXG4gIHJvd0luZGV4OiBudW1iZXI7XHJcbiAgdmFsdWU6IGFueTtcclxuICBkYXRhOiB7IHlvdT86IGJvb2xlYW4gfTtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzYS1ncmlkLWNlbGwnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQXZhdGFyQ29tcG9uZW50LFxyXG4gICAgQ2hpcHNDb21wb25lbnQsXHJcbiAgICBCdXR0b25Db21wb25lbnQsXHJcbiAgICBOZ0ZvcixcclxuICAgIE5nSWYsXHJcbiAgICBUb29sVGlwQ29tcG9uZW50LFxyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1jZWxsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vZ3JpZC1jZWxsLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcmlkQ2VsbENvbXBvbmVudCBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCwgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJykgZHJvcGRvd25UZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgb3ZlcmxheVJlZiE6IE92ZXJsYXlSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYWN0aW9uc0NvbnRhaW5lcicpIGFjdGlvbnNDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIHNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gIHJlYWRvbmx5IE1BWF9WSVNJQkxFX0NISVBTID0gMTsgXHJcbiAgZGlzcGxheWVkQ2hpcHM6IENoaXBJbnRlcmZhY2VbXSA9IFtdO1xyXG4gIHJlbWFpbmluZ0NoaXBzQ291bnQgPSAwO1xyXG4gIHBhcmFtcyE6IEdyaWRJbnRlcmZhY2U7XHJcbiAgcm93TnVtID0gMDtcclxuXHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tCdXR0b25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyByb3dJZDogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2xpY2tDaGlwRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93SWQ6IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrTGlua0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkNsaWNrQXZhdGFyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcm93SWQ6IG51bWJlciB9PigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxyXG5cclxuICBob3ZlcmVkQ2hpcDogYW55ID0gbnVsbDtcclxuICBwcml2YXRlIHRvb2x0aXBDb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUb29sVGlwQ29tcG9uZW50PiB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhZ0luaXQocGFyYW1zOiBDZWxsUGFyYW1zKTogdm9pZCB7XHJcbiAgICB0aGlzLnJvd051bSA9IHBhcmFtcy5yb3dJbmRleDtcclxuICAgIFxyXG4gICAgLy8gQ2hlY2sgZm9yIGRpcmVjdCBmaWVsZCB2YWx1ZSBmaXJzdCwgdGhlbiBmYWxsYmFjayB0byBfY2VsbFBhcmFtc1xyXG4gICAgbGV0IGNlbGxEYXRhID0gcGFyYW1zLnZhbHVlO1xyXG4gICAgaWYgKCFjZWxsRGF0YSAmJiBwYXJhbXMuZGF0YSAmJiBwYXJhbXMuY29sRGVmPy5maWVsZCkge1xyXG4gICAgICBjb25zdCBjZWxsUGFyYW1zS2V5ID0gYCR7cGFyYW1zLmNvbERlZi5maWVsZH1fY2VsbFBhcmFtc2A7XHJcbiAgICAgIGNlbGxEYXRhID0gcGFyYW1zLmRhdGFbY2VsbFBhcmFtc0tleV07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMucGFyYW1zID0ge1xyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICAgIC4uLihjZWxsRGF0YSA/PyB7fSlcclxuICAgIH07XHJcbiAgICBcclxuICAgIGlmICh0aGlzLnBhcmFtcy5jaGlwQ29uZmlnICYmIEFycmF5LmlzQXJyYXkodGhpcy5wYXJhbXMuY2hpcENvbmZpZykpIHtcclxuICAgICAgdGhpcy5kaXNwbGF5ZWRDaGlwcyA9IHRoaXMucGFyYW1zLmNoaXBDb25maWcuc2xpY2UoMCwgdGhpcy5NQVhfVklTSUJMRV9DSElQUyk7XHJcbiAgICAgIHRoaXMucmVtYWluaW5nQ2hpcHNDb3VudCA9IE1hdGgubWF4KDAsIHRoaXMucGFyYW1zLmNoaXBDb25maWcubGVuZ3RoIC0gdGhpcy5NQVhfVklTSUJMRV9DSElQUyk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgIHRoaXMuZGlzcGxheWVkQ2hpcHMgPSB0aGlzLnBhcmFtcy5jaGlwQ29uZmlnO1xyXG4gICAgICAgdGhpcy5yZW1haW5pbmdDaGlwc0NvdW50ID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZnJlc2gocGFyYW1zOiBDZWxsUGFyYW1zKTogYm9vbGVhbiB7XHJcbiAgICB0aGlzLmFnSW5pdChwYXJhbXMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICB0eXBlT2YodmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZTtcclxuICB9XHJcbiAgXHJcbiAgYnV0dG9uQ2xpY2tlZChldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXMuYnV0dG9uQ29uZmlnPy5vbkNsaWNrKSB7XHJcbiAgICAgIHRoaXMucGFyYW1zLmJ1dHRvbkNvbmZpZy5vbkNsaWNrKGV2ZW50KTtcclxuICAgIH1cclxuICAgIHRoaXMucGFyYW1zLmJ1dHRvbkNsaWNrZWQgJiYgdGhpcy5wYXJhbXMuYnV0dG9uQ2xpY2tlZCh7ICAgICAgICAgICAgXHJcbiAgICAgIC4uLmV2ZW50LFxyXG4gICAgICByb3dJZDogdGhpcy5yb3dOdW1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNsaWNrQnV0dG9uRXZlbnQuZW1pdCh7IC4uLmV2ZW50LCByb3dJZDogdGhpcy5yb3dOdW0gfSk7ICAgICAgXHJcbiAgfVxyXG5cclxuICB0b2dnbGVEcm9wZG93bihlbGVtZW50OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICB0aGlzLm92ZXJsYXlSZWYgPSBudWxsIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnBvc2l0aW9uKClcclxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oZWxlbWVudClcclxuICAgICAgLndpdGhQdXNoKHRydWUpIFxyXG4gICAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyh0cnVlKSBcclxuICAgICAgLndpdGhWaWV3cG9ydE1hcmdpbig4KSBcclxuICAgICAgLndpdGhQb3NpdGlvbnMoW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG9yaWdpblg6ICdlbmQnLFxyXG4gICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXHJcbiAgICAgICAgICBvdmVybGF5WDogJ2VuZCcsXHJcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICBvZmZzZXRZOiA0LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcclxuICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXHJcbiAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXHJcbiAgICAgICAgICBvZmZzZXRZOiA0LFxyXG4gICAgICAgIH1cclxuICAgICAgXSk7XHJcblxyXG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XHJcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcENsYXNzOiAnY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLFxyXG4gICAgICBwYW5lbENsYXNzOiAnYWN0aW9ucy1kcm9wZG93bi1wYW5lbCcsXHJcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCkgXHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5kcm9wZG93blRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xyXG5cclxuICAgIHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcENsaWNrKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMub3ZlcmxheVJlZikge1xyXG4gICAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQWN0aW9uQ2xpY2soYWN0aW9uOiBhbnksIGV2ZW50OiBFdmVudCkge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgaWYgKGFjdGlvbi5vbkNsaWNrKSB7XHJcbiAgICAgIGFjdGlvbi5vbkNsaWNrKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25Eb2N1bWVudENsaWNrKGV2ZW50OiBFdmVudCkge1xyXG4gICAgaWYgKHRoaXMuYWN0aW9uc0NvbnRhaW5lciAmJiAhdGhpcy5hY3Rpb25zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICB0aGlzLnNob3dEcm9wZG93biA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hpcENsaWNrZWQoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5wYXJhbXMuY2hpcENsaWNrZWQgJiYgdGhpcy5wYXJhbXMuY2hpcENsaWNrZWQoe1xyXG4gICAgICAuLi5ldnQsXHJcbiAgICAgIHJvd0lkOiB0aGlzLnJvd051bVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLm9uQ2xpY2tDaGlwRXZlbnQuZW1pdCh7IC4uLmV2dCwgcm93SWQ6IHRoaXMucm93TnVtIH0pO1xyXG4gIH1cclxuXHJcbiAgbGlua0NsaWNrZWQoKSB7XHJcbiAgICBpZiAodGhpcy5wYXJhbXMuY2VsbFR5cGUgIT0gXCJpbnRlcmFjdGl2ZVwiKSByZXR1cm47XHJcblxyXG4gICAgdGhpcy5wYXJhbXMubGlua0NsaWNrZWQgJiYgdGhpcy5wYXJhbXMubGlua0NsaWNrZWQoeyAgICAgICAgIFxyXG4gICAgICByb3dJZDogdGhpcy5yb3dOdW1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmICh0aGlzLnBhcmFtcy5pbnRlcmFjdGl2ZUxpbmsgIT0gXCJcIikge1xyXG4gICAgICBpZiAodGhpcy5wYXJhbXMuaW50ZXJhY3RpdmVMaW5rVGFyZ2V0ID09IFwiYmxhbmtcIikge1xyXG4gICAgICAgIHdpbmRvdy5vcGVuKHRoaXMucGFyYW1zLmludGVyYWN0aXZlTGluaykhO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMucGFyYW1zLmludGVyYWN0aXZlTGlua1RhcmdldCA9PSBcInNlbGZcIikge1xyXG4gICAgICAgIGxvY2F0aW9uLmhyZWYgPSB0aGlzLnBhcmFtcy5pbnRlcmFjdGl2ZUxpbmshO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLm9uQ2xpY2tMaW5rRXZlbnQuZW1pdCh7IHJvd0lkOiB0aGlzLnJvd051bSB9KTtcclxuICB9XHJcblxyXG4gIGF2YXRhckNsaWNrZWQoZXZ0OiBFdmVudCkge1xyXG4gICAgdGhpcy5wYXJhbXMuYXZhdGFyQ2xpY2tlZCAmJiB0aGlzLnBhcmFtcy5hdmF0YXJDbGlja2VkKHtcclxuICAgICAgLi4uZXZ0LFxyXG4gICAgICByb3dJZDogdGhpcy5yb3dOdW1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5vbkNsaWNrQXZhdGFyRXZlbnQuZW1pdCh7IC4uLmV2dCwgcm93SWQ6IHRoaXMucm93TnVtIH0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd1Rvb2x0aXAoY29uZmlnOiBhbnksIGV2ZW50PzogTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5ob3ZlcmVkQ2hpcCA9IGNvbmZpZzsgXHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuY3VycmVudFRhcmdldCkge1xyXG4gICAgICBjb25zdCBjaGlwQ29udGFpbmVyID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgY29uc3QgY2hpcEVsZW1lbnQgPSBjaGlwQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJ3NhLWNoaXAnKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKGNoaXBFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgcmVjdCA9IGNoaXBFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHRvcFBvc2l0aW9uID0gcmVjdC5ib3R0b20gKyA4O1xyXG4gICAgICAgIGNvbnN0IGxlZnRQb3NpdGlvbiA9IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyO1xyXG4gICAgICAgIHRoaXMuY3JlYXRlVG9vbHRpcENvbXBvbmVudCh0b3BQb3NpdGlvbiwgbGVmdFBvc2l0aW9uKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZVRvb2x0aXAoKSB7XHJcbiAgICB0aGlzLmhvdmVyZWRDaGlwID0gbnVsbDtcclxuICAgIHRoaXMuZGVzdHJveVRvb2x0aXBDb21wb25lbnQoKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVRvb2x0aXBDb21wb25lbnQodG9wOiBudW1iZXIsIGxlZnQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5kZXN0cm95VG9vbHRpcENvbXBvbmVudCgpO1xyXG4gICAgdGhpcy50b29sdGlwQ29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChUb29sVGlwQ29tcG9uZW50KTsgICAgXHJcbiAgICB0aGlzLnRvb2x0aXBDb21wb25lbnRSZWYuaW5zdGFuY2UubWVzc2FnZXMgPSB0aGlzLmdldFRvb2x0aXBUZXh0KCk7IFxyXG4gICAgdGhpcy50b29sdGlwQ29tcG9uZW50UmVmLmluc3RhbmNlLnNpbXBsZU1vZGUgPSB0cnVlO1xyXG4gICAgdGhpcy50b29sdGlwQ29tcG9uZW50UmVmLmluc3RhbmNlLnBvaW50ZXJQb3NpdGlvbiA9ICd0b3AnO1xyXG4gICAgXHJcbiAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgdG9vbHRpcEVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6ICR7dG9wfXB4O1xyXG4gICAgICBsZWZ0OiAke2xlZnR9cHg7XHJcbiAgICAgIHotaW5kZXg6IDk5OTk5O1xyXG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xyXG4gICAgYDtcclxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9vbHRpcEVsZW1lbnQpO1xyXG4gICAgdGhpcy50b29sdGlwQ29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGRlc3Ryb3lUb29sdGlwQ29tcG9uZW50KCkge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcENvbXBvbmVudFJlZikge1xyXG4gICAgICBjb25zdCB0b29sdGlwRWxlbWVudCA9IHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5sb2NhdGlvbi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICBpZiAodG9vbHRpcEVsZW1lbnQucGFyZW50Tm9kZSkge1xyXG4gICAgICAgIHRvb2x0aXBFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodG9vbHRpcEVsZW1lbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMudG9vbHRpcENvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRUb29sdGlwVGV4dCgpOiBzdHJpbmdbXSB7XHJcbiAgICBpZiAoIXRoaXMucGFyYW1zPy5jaGlwQ29uZmlnKSByZXR1cm4gW107XHJcbiAgICByZXR1cm4gdGhpcy5wYXJhbXMuY2hpcENvbmZpZy5tYXAoY2hpcCA9PiBjaGlwLnRleHQpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmhpZGVUb29sdGlwKCk7XHJcbiAgICBpZiAodGhpcy5vdmVybGF5UmVmKSB7XHJcbiAgICAgIHRoaXMub3ZlcmxheVJlZi5kaXNwb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJncmlkLWNlbGwge3twYXJhbXMuY2VsbFR5cGV9fVwiPlxyXG5cclxuICA8aW1nIGNsYXNzPVwiaWNvbnNcIiBzcmM9e3twYXJhbXMuaWNvblBhdGh9fSBbc3R5bGUuZGlzcGxheV09XCIocGFyYW1zLnZpZXdMZWFkaW5nSWNvbikgPyAnYmxvY2snIDogJ25vbmUnXCIgYWx0PVwiXCI+XHJcblxyXG4gIDxzYS1hdmF0YXIgW2lkXT1cInBhcmFtcy5hdmF0YXJDb25maWc/LmlkXCIgW2FsdFRleHRdPVwicGFyYW1zLmF2YXRhckNvbmZpZz8uYWx0VGV4dFwiXHJcbiAgICBbaW1hZ2VQYXRoXT1cInBhcmFtcy5hdmF0YXJDb25maWc/LmltYWdlUGF0aFwiIFtzaXplXT1cInBhcmFtcy5hdmF0YXJDb25maWc/LnNpemVcIlxyXG4gICAgW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3QXZhdGFyKSA/ICdibG9jaycgOiAnbm9uZSdcIiAob25DbGlja0V2ZW50KT1cImF2YXRhckNsaWNrZWQoJGV2ZW50KVwiPlxyXG4gIDwvc2EtYXZhdGFyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZ3JpZC10ZXh0XCIgW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3VGV4dCkgPyAnYmxvY2snIDogJ25vbmUnXCI+XHJcbiAgICA8ZGl2IFtzdHlsZS5kaXNwbGF5XT1cIihwYXJhbXMudGV4dCkgPyAnYmxvY2snIDogJ25vbmUnXCIgKGNsaWNrKT1cImxpbmtDbGlja2VkKClcIiBjbGFzcz1cIm1haW4tdGV4dFwiPnt7cGFyYW1zLnRleHR9fVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBbc3R5bGUuZGlzcGxheV09XCIocGFyYW1zLnN1YlRleHQpID8gJ2Jsb2NrJyA6ICdub25lJ1wiIGNsYXNzPVwic3ViLXRleHRcIj57e3BhcmFtcy5zdWJUZXh0fX08L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGltZyBjbGFzcz1cImljb25zXCIgc3JjPXt7cGFyYW1zLmljb25QYXRofX0gW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3VHJhaWxpbmdJY29uKSA/ICdibG9jaycgOiAnbm9uZSdcIiBhbHQ9XCJcIj5cclxuICA8ZGl2IGNsYXNzPVwiY2hpcHMtY29udGFpbmVyXCIgW3N0eWxlLmRpc3BsYXldPVwiKHBhcmFtcy52aWV3Q2hpcCkgPyAnZmxleCcgOiAnbm9uZSdcIj5cclxuXHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgY29uZmlnIG9mIGRpc3BsYXllZENoaXBzXCI+XHJcbiAgICA8c2EtY2hpcCBbaWRdPVwiY29uZmlnLmlkXCIgW2ZpbGxpbmddPVwiY29uZmlnLmZpbGxpbmdcIiBpZD1cImNoaXBfe3tyb3dOdW19fV97e2NvbmZpZy5pZH19XCIgW2ljb25QYXRoXT1cImNvbmZpZy5pY29uUGF0aFwiXHJcbiAgICAgIFtpY29uUG9zaXRpb25dPVwiY29uZmlnLmljb25Qb3NpdGlvblwiIFtsYXJnZVN0YXRlSWNvbl09XCJjb25maWcubGFyZ2VTdGF0ZUljb25cIiBbc3RhdGVdPVwiY29uZmlnLnN0YXRlXCJcclxuICAgICAgW3R5cGVdPVwiY29uZmlnLnR5cGVcIiBbdGV4dF09XCJjb25maWcudGV4dFwiIFtjbGFzcy5zbWFsbF09XCJjb25maWcudHlwZSA9PT0gJ3NtYWxsJ1wiXHJcbiAgICAgIFtjbGFzcy5uZXV0cmFsXT1cImNvbmZpZy5zdGF0ZSA9PT0gJ25ldXRyYWwnXCIgKG9uQ2xpY2tFdmVudCk9XCJjaGlwQ2xpY2tlZCgkZXZlbnQpXCI+PC9zYS1jaGlwPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjaGlwLXRvb2x0aXAtY29udGFpbmVyXCIgKm5nSWY9XCJyZW1haW5pbmdDaGlwc0NvdW50ID4gMFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiXHJcbiAgICAobW91c2VlbnRlcik9XCJzaG93VG9vbHRpcChyZW1haW5pbmdDaGlwc0NvdW50LCAkZXZlbnQpXCIgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiPlxyXG4gICAgPHNhLWNoaXAgW2lkXT1cIidjaGlwXycgKyByb3dOdW0gKyAnX21vcmUnXCIgW3RleHRdPVwiJysnICsgcmVtYWluaW5nQ2hpcHNDb3VudFwiIFtmaWxsaW5nXT1cImRpc3BsYXllZENoaXBzWzBdPy5maWxsaW5nXCJcclxuICAgICAgW3R5cGVdPVwiZGlzcGxheWVkQ2hpcHNbMF0/LnR5cGVcIiBbc3RhdGVdPVwiZGlzcGxheWVkQ2hpcHNbMF0/LnN0YXRlXCIgKG9uQ2xpY2tFdmVudCk9XCJjaGlwQ2xpY2tlZCgkZXZlbnQpXCI+PC9zYS1jaGlwPlxyXG48L2Rpdj5cclxuXHJcbiAgPHNhLWJ1dHRvbiBbaWNvblBvc2l0aW9uXT1cInBhcmFtcy5idXR0b25Db25maWc/Lmljb25Qb3NpdGlvblwiIFtJbWFnZVBhdGhdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8uaW1hZ2VQYXRoXCJcclxuICAgIFtpZF09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5pZFwiIFtzaXplXT1cInBhcmFtcy5idXR0b25Db25maWc/LnNpemVcIiBbc3RhdGVdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8uc3RhdGVcIlxyXG4gICAgW3R5cGVdPVwicGFyYW1zLmJ1dHRvbkNvbmZpZz8udHlwZVwiIFt0ZXh0XT1cInBhcmFtcy5idXR0b25Db25maWc/LnRleHRcIiBbaHJlZl09XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5ocmVmXCJcclxuICAgIFtocmVmVGFyZ2V0XT1cInBhcmFtcy5idXR0b25Db25maWc/LmhyZWZUYXJnZXRcIiBbc3R5bGUuZGlzcGxheV09XCIocGFyYW1zLnZpZXdCdXR0b24pID8gJ2Jsb2NrJyA6ICdub25lJ1wiXHJcbiAgICAob25DbGlja0V2ZW50KT1cImJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvc2EtYnV0dG9uPlxyXG5cclxuPC9kaXY+XHJcblxyXG4gIDxkaXYgKm5nSWY9XCJwYXJhbXMuY2VsbFR5cGUgPT09ICdhY3Rpb25zJ1wiIGNsYXNzPVwiYWN0aW9ucy1jb250YWluZXJcIj5cclxuICAgIDxpbWcgW3NyY109XCJwYXJhbXMuYnV0dG9uQ29uZmlnPy5pbWFnZVBhdGhcIiBhbHQ9XCJhY3Rpb25zXCIgY2xhc3M9XCJhY3Rpb25zLWljb25cIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oYWN0aW9uc0J1dHRvbilcIlxyXG4gICAgICAjYWN0aW9uc0J1dHRvbiAvPlxyXG4gIFxyXG4gICAgPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9ucy1kcm9wZG93blwiPlxyXG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBwYXJhbXMuYWN0aW9uc1wiIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIiAoY2xpY2spPVwiaGFuZGxlQWN0aW9uQ2xpY2soYWN0aW9uLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8aW1nICpuZ0lmPVwiYWN0aW9uLmljb25cIiBbc3JjXT1cImFjdGlvbi5pY29uXCIgY2xhc3M9XCJhY3Rpb24taWNvblwiIC8+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFjdGlvbi1sYWJlbFwiPnt7YWN0aW9uLmxhYmVsfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -36,11 +36,11 @@ export class HeaderComponent {
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: HeaderComponent, isStandalone: true, selector: "sa-header", inputs: { header: "header", chipConfig: "chipConfig", info: "info", buttonHelper: "buttonHelper", buttonMain: "buttonMain" }, outputs: { buttonClick: "buttonClick" }, providers: [IconService], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\r\n <div class=\"header-content\">\r\n @if (header?.text || header?.html || header.icon?.iconUrl) {\r\n <div class=\"heading\">\r\n <div class=\"header-name-container\">\r\n @if (header.icon?.iconUrl) {\r\n <sa-icon [iconUrl]=\"header?.icon?.iconUrl\" [size]=\"header?.icon?.size || '24px'\" />\r\n }\r\n <div class=\"header-name\" [innerHTML]=\"header?.html || header?.text\"></div>\r\n </div>\r\n @for(chip of chipConfig; track chip.text) {\r\n <div>\r\n <sa-chip \r\n [id]=\"chip.id\"\r\n [type]=\"chip.type\"\r\n [state]=\"chip.state\"\r\n [filling]=\"chip.filling\"\r\n [text]=\"chip.text\"\r\n [iconPosition]=\"chip.iconPosition\"\r\n [iconPath]=\"chip.iconPath\"\r\n [largeStateIcon]=\"chip.largeStateIcon\"\r\n [largeStateText]=\"chip.largeStateText\"\r\n ></sa-chip>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"header-info\">\r\n @for(item of info; track item.text) {\r\n <div class=\"info-item\">\r\n @if(item.icon) {\r\n <img [src]=\"item.icon\" alt=\"\">\r\n }\r\n {{item.text}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n @if(buttonHelper) {\r\n <sa-button \r\n (onClickEvent)=\"onButtonClick('secondary', $event)\"\r\n [id]=\"buttonHelper.id\"\r\n [text]=\"buttonHelper.text\"\r\n [type]=\"buttonHelper.type\"\r\n [size]=\"buttonHelper.size\"\r\n [state]=\"buttonHelper.state\"\r\n [ImagePath]=\"buttonHelper.imagePath\"\r\n [iconPosition]=\"buttonHelper.iconPosition\"\r\n [href]=\"buttonHelper.href\"\r\n [hrefTarget]=\"buttonHelper.hrefTarget\"\r\n [isSubmit]=\"buttonHelper.isSubmit\">\r\n </sa-button>\r\n }\r\n @if(buttonMain) {\r\n <sa-button\r\n (onClickEvent)=\"onButtonClick('primary', $event)\"\r\n [id]=\"buttonMain.id\"\r\n [text]=\"buttonMain.text\"\r\n [type]=\"buttonMain.type\"\r\n [size]=\"buttonMain.size\"\r\n [state]=\"buttonMain.state\"\r\n [ImagePath]=\"buttonMain.imagePath\"\r\n [iconPosition]=\"buttonMain.iconPosition\"\r\n [href]=\"buttonMain.href\"\r\n [hrefTarget]=\"buttonMain.hrefTarget\"\r\n [isSubmit]=\"buttonMain.isSubmit\">\r\n </sa-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".header{width:100%;height:96px;font-family:var(--font);padding:var(--medium-20px, 20px) var(--medium-32px, 32px);display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:var(--small-8px, 8px);border:1px solid var(--grey-50, #E9EAEB);background:var(--Structural-White, #FFF)}.header-content{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.heading{display:flex;justify-content:flex-start;align-items:center;gap:var(--small-8px, 8px)}.header-name-container{display:flex;flex-direction:row;gap:var(--small-8px, 8px);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);align-items:center}.header-name-container sa-icon{line-height:0}.header-name{font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px)}::ng-deep .header-name span{color:var(--primary-500)}.header-info{display:flex;gap:var(--small-12px, 12px)}.info-item{display:flex;justify-content:center;align-items:center;gap:var(--small-4px, 4px);font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:var(--text-mediumemphasis)}.info-item img{width:20px;height:20px}.actions{display:flex;gap:var(--small-12px, 12px)}::ng-deep .header-name .custom-header{margin:0}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget"], outputs: ["onClickEvent"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: HttpClientModule }] }); }
|
|
39
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: HeaderComponent, isStandalone: true, selector: "sa-header", inputs: { header: "header", chipConfig: "chipConfig", info: "info", buttonHelper: "buttonHelper", buttonMain: "buttonMain" }, outputs: { buttonClick: "buttonClick" }, providers: [IconService], usesOnChanges: true, ngImport: i0, template: "<div class=\"header\">\r\n <div class=\"header-content\">\r\n @if (header?.text || header?.html || header.icon?.iconUrl) {\r\n <div class=\"heading\">\r\n <div class=\"header-name-container\" [class.icon-left]=\"!header?.icon?.iconPosition || header?.icon?.iconPosition === 'left'\" \r\n [class.icon-right]=\"header?.icon?.iconPosition === 'right'\">\r\n @if (header.icon?.iconUrl) {\r\n <sa-icon [iconUrl]=\"header?.icon?.iconUrl\" [iconPosition]=\"header?.icon?.iconPosition\" [size]=\"header?.icon?.size || '24px'\" />\r\n }\r\n <div class=\"header-name\" [innerHTML]=\"header?.html || header?.text\"></div>\r\n </div>\r\n @for(chip of chipConfig; track chip.text) {\r\n <div>\r\n <sa-chip \r\n [id]=\"chip.id\"\r\n [type]=\"chip.type\"\r\n [state]=\"chip.state\"\r\n [filling]=\"chip.filling\"\r\n [text]=\"chip.text\"\r\n [iconPosition]=\"chip.iconPosition\"\r\n [iconPath]=\"chip.iconPath\"\r\n [largeStateIcon]=\"chip.largeStateIcon\"\r\n [largeStateText]=\"chip.largeStateText\"\r\n ></sa-chip>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"header-info\">\r\n @for(item of info; track item.text) {\r\n <div class=\"info-item\">\r\n @if(item.icon) {\r\n <img [src]=\"item.icon\" alt=\"\">\r\n }\r\n {{item.text}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n @if(buttonHelper) {\r\n <sa-button \r\n (onClickEvent)=\"onButtonClick('secondary', $event)\"\r\n [id]=\"buttonHelper.id\"\r\n [text]=\"buttonHelper.text\"\r\n [type]=\"buttonHelper.type\"\r\n [size]=\"buttonHelper.size\"\r\n [state]=\"buttonHelper.state\"\r\n [ImagePath]=\"buttonHelper.imagePath\"\r\n [iconPosition]=\"buttonHelper.iconPosition\"\r\n [href]=\"buttonHelper.href\"\r\n [hrefTarget]=\"buttonHelper.hrefTarget\"\r\n [isSubmit]=\"buttonHelper.isSubmit\">\r\n </sa-button>\r\n }\r\n @if(buttonMain) {\r\n <sa-button\r\n (onClickEvent)=\"onButtonClick('primary', $event)\"\r\n [id]=\"buttonMain.id\"\r\n [text]=\"buttonMain.text\"\r\n [type]=\"buttonMain.type\"\r\n [size]=\"buttonMain.size\"\r\n [state]=\"buttonMain.state\"\r\n [ImagePath]=\"buttonMain.imagePath\"\r\n [iconPosition]=\"buttonMain.iconPosition\"\r\n [href]=\"buttonMain.href\"\r\n [hrefTarget]=\"buttonMain.hrefTarget\"\r\n [isSubmit]=\"buttonMain.isSubmit\">\r\n </sa-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".header{width:100%;height:96px;font-family:var(--font);padding:var(--medium-20px, 20px) var(--medium-32px, 32px);display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:var(--small-8px, 8px);border:1px solid var(--grey-50, #E9EAEB);background:var(--Structural-White, #FFF)}.header-content{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.heading{display:flex;justify-content:flex-start;align-items:center;gap:var(--small-8px, 8px)}.header-name-container{display:flex;flex-direction:row;gap:var(--small-8px, 8px);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);align-items:center}.header-name-container.icon-left{flex-direction:row}.header-name-container.icon-right{flex-direction:row-reverse}.header-name-container sa-icon{line-height:0}.header-name{font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px)}::ng-deep .header-name span{color:var(--primary-500)}.header-info{display:flex;gap:var(--small-12px, 12px)}.info-item{display:flex;justify-content:center;align-items:center;gap:var(--small-4px, 4px);font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:var(--text-mediumemphasis)}.info-item img{width:20px;height:20px}.actions{display:flex;gap:var(--small-12px, 12px)}::ng-deep .header-name .custom-header{margin:0}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "sa-icon", inputs: ["img", "icon", "size", "color", "iconPath", "iconUrl", "customClass", "href", "hrefTarget", "iconPosition"], outputs: ["onClickEvent"] }, { kind: "component", type: ChipsComponent, selector: "sa-chip", inputs: ["id", "iconPath", "text", "type", "state", "filling", "iconPosition", "largeStateIcon", "largeStateText", "tooltip", "className"], outputs: ["onClickEvent"] }, { kind: "component", type: ButtonComponent, selector: "sa-button", inputs: ["id", "type", "state", "size", "text", "ImagePath", "icon", "iconPosition", "href", "hrefTarget", "width", "isSubmit", "buttonIconSize", "showSpinner"], outputs: ["onClickEvent", "onMouseInEvent", "onMouseOutEvent"] }, { kind: "ngmodule", type: HttpClientModule }] }); }
|
|
40
40
|
}
|
|
41
41
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
42
42
|
type: Component,
|
|
43
|
-
args: [{ selector: 'sa-header', standalone: true, imports: [IconComponent, ChipsComponent, ButtonComponent, HttpClientModule], providers: [IconService], template: "<div class=\"header\">\r\n <div class=\"header-content\">\r\n @if (header?.text || header?.html || header.icon?.iconUrl) {\r\n <div class=\"heading\">\r\n <div class=\"header-name-container\">\r\n @if (header.icon?.iconUrl) {\r\n <sa-icon [iconUrl]=\"header?.icon?.iconUrl\" [size]=\"header?.icon?.size || '24px'\" />\r\n }\r\n <div class=\"header-name\" [innerHTML]=\"header?.html || header?.text\"></div>\r\n </div>\r\n @for(chip of chipConfig; track chip.text) {\r\n <div>\r\n <sa-chip \r\n [id]=\"chip.id\"\r\n [type]=\"chip.type\"\r\n [state]=\"chip.state\"\r\n [filling]=\"chip.filling\"\r\n [text]=\"chip.text\"\r\n [iconPosition]=\"chip.iconPosition\"\r\n [iconPath]=\"chip.iconPath\"\r\n [largeStateIcon]=\"chip.largeStateIcon\"\r\n [largeStateText]=\"chip.largeStateText\"\r\n ></sa-chip>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"header-info\">\r\n @for(item of info; track item.text) {\r\n <div class=\"info-item\">\r\n @if(item.icon) {\r\n <img [src]=\"item.icon\" alt=\"\">\r\n }\r\n {{item.text}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n @if(buttonHelper) {\r\n <sa-button \r\n (onClickEvent)=\"onButtonClick('secondary', $event)\"\r\n [id]=\"buttonHelper.id\"\r\n [text]=\"buttonHelper.text\"\r\n [type]=\"buttonHelper.type\"\r\n [size]=\"buttonHelper.size\"\r\n [state]=\"buttonHelper.state\"\r\n [ImagePath]=\"buttonHelper.imagePath\"\r\n [iconPosition]=\"buttonHelper.iconPosition\"\r\n [href]=\"buttonHelper.href\"\r\n [hrefTarget]=\"buttonHelper.hrefTarget\"\r\n [isSubmit]=\"buttonHelper.isSubmit\">\r\n </sa-button>\r\n }\r\n @if(buttonMain) {\r\n <sa-button\r\n (onClickEvent)=\"onButtonClick('primary', $event)\"\r\n [id]=\"buttonMain.id\"\r\n [text]=\"buttonMain.text\"\r\n [type]=\"buttonMain.type\"\r\n [size]=\"buttonMain.size\"\r\n [state]=\"buttonMain.state\"\r\n [ImagePath]=\"buttonMain.imagePath\"\r\n [iconPosition]=\"buttonMain.iconPosition\"\r\n [href]=\"buttonMain.href\"\r\n [hrefTarget]=\"buttonMain.hrefTarget\"\r\n [isSubmit]=\"buttonMain.isSubmit\">\r\n </sa-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".header{width:100%;height:96px;font-family:var(--font);padding:var(--medium-20px, 20px) var(--medium-32px, 32px);display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:var(--small-8px, 8px);border:1px solid var(--grey-50, #E9EAEB);background:var(--Structural-White, #FFF)}.header-content{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.heading{display:flex;justify-content:flex-start;align-items:center;gap:var(--small-8px, 8px)}.header-name-container{display:flex;flex-direction:row;gap:var(--small-8px, 8px);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);align-items:center}.header-name-container sa-icon{line-height:0}.header-name{font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px)}::ng-deep .header-name span{color:var(--primary-500)}.header-info{display:flex;gap:var(--small-12px, 12px)}.info-item{display:flex;justify-content:center;align-items:center;gap:var(--small-4px, 4px);font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:var(--text-mediumemphasis)}.info-item img{width:20px;height:20px}.actions{display:flex;gap:var(--small-12px, 12px)}::ng-deep .header-name .custom-header{margin:0}\n"] }]
|
|
43
|
+
args: [{ selector: 'sa-header', standalone: true, imports: [IconComponent, ChipsComponent, ButtonComponent, HttpClientModule], providers: [IconService], template: "<div class=\"header\">\r\n <div class=\"header-content\">\r\n @if (header?.text || header?.html || header.icon?.iconUrl) {\r\n <div class=\"heading\">\r\n <div class=\"header-name-container\" [class.icon-left]=\"!header?.icon?.iconPosition || header?.icon?.iconPosition === 'left'\" \r\n [class.icon-right]=\"header?.icon?.iconPosition === 'right'\">\r\n @if (header.icon?.iconUrl) {\r\n <sa-icon [iconUrl]=\"header?.icon?.iconUrl\" [iconPosition]=\"header?.icon?.iconPosition\" [size]=\"header?.icon?.size || '24px'\" />\r\n }\r\n <div class=\"header-name\" [innerHTML]=\"header?.html || header?.text\"></div>\r\n </div>\r\n @for(chip of chipConfig; track chip.text) {\r\n <div>\r\n <sa-chip \r\n [id]=\"chip.id\"\r\n [type]=\"chip.type\"\r\n [state]=\"chip.state\"\r\n [filling]=\"chip.filling\"\r\n [text]=\"chip.text\"\r\n [iconPosition]=\"chip.iconPosition\"\r\n [iconPath]=\"chip.iconPath\"\r\n [largeStateIcon]=\"chip.largeStateIcon\"\r\n [largeStateText]=\"chip.largeStateText\"\r\n ></sa-chip>\r\n </div>\r\n }\r\n </div>\r\n }\r\n <div class=\"header-info\">\r\n @for(item of info; track item.text) {\r\n <div class=\"info-item\">\r\n @if(item.icon) {\r\n <img [src]=\"item.icon\" alt=\"\">\r\n }\r\n {{item.text}}\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"actions\">\r\n @if(buttonHelper) {\r\n <sa-button \r\n (onClickEvent)=\"onButtonClick('secondary', $event)\"\r\n [id]=\"buttonHelper.id\"\r\n [text]=\"buttonHelper.text\"\r\n [type]=\"buttonHelper.type\"\r\n [size]=\"buttonHelper.size\"\r\n [state]=\"buttonHelper.state\"\r\n [ImagePath]=\"buttonHelper.imagePath\"\r\n [iconPosition]=\"buttonHelper.iconPosition\"\r\n [href]=\"buttonHelper.href\"\r\n [hrefTarget]=\"buttonHelper.hrefTarget\"\r\n [isSubmit]=\"buttonHelper.isSubmit\">\r\n </sa-button>\r\n }\r\n @if(buttonMain) {\r\n <sa-button\r\n (onClickEvent)=\"onButtonClick('primary', $event)\"\r\n [id]=\"buttonMain.id\"\r\n [text]=\"buttonMain.text\"\r\n [type]=\"buttonMain.type\"\r\n [size]=\"buttonMain.size\"\r\n [state]=\"buttonMain.state\"\r\n [ImagePath]=\"buttonMain.imagePath\"\r\n [iconPosition]=\"buttonMain.iconPosition\"\r\n [href]=\"buttonMain.href\"\r\n [hrefTarget]=\"buttonMain.hrefTarget\"\r\n [isSubmit]=\"buttonMain.isSubmit\">\r\n </sa-button>\r\n }\r\n </div>\r\n</div>\r\n", styles: [".header{width:100%;height:96px;font-family:var(--font);padding:var(--medium-20px, 20px) var(--medium-32px, 32px);display:flex;justify-content:space-between;align-items:center;box-sizing:border-box;border-radius:var(--small-8px, 8px);border:1px solid var(--grey-50, #E9EAEB);background:var(--Structural-White, #FFF)}.header-content{display:flex;flex-direction:column;gap:var(--small-8px, 8px)}.heading{display:flex;justify-content:flex-start;align-items:center;gap:var(--small-8px, 8px)}.header-name-container{display:flex;flex-direction:row;gap:var(--small-8px, 8px);font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px);align-items:center}.header-name-container.icon-left{flex-direction:row}.header-name-container.icon-right{flex-direction:row-reverse}.header-name-container sa-icon{line-height:0}.header-name{font-size:var(--medium-22px, 22px);font-style:normal;font-weight:500;line-height:var(--medium-28px, 28px)}::ng-deep .header-name span{color:var(--primary-500)}.header-info{display:flex;gap:var(--small-12px, 12px)}.info-item{display:flex;justify-content:center;align-items:center;gap:var(--small-4px, 4px);font-size:12px;font-style:normal;font-weight:400;line-height:16px;color:var(--text-mediumemphasis)}.info-item img{width:20px;height:20px}.actions{display:flex;gap:var(--small-12px, 12px)}::ng-deep .header-name .custom-header{margin:0}\n"] }]
|
|
44
44
|
}], ctorParameters: () => [], propDecorators: { header: [{
|
|
45
45
|
type: Input
|
|
46
46
|
}], chipConfig: [{
|
|
@@ -54,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
54
54
|
}], buttonClick: [{
|
|
55
55
|
type: Output
|
|
56
56
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudC1saWJyYXJ5L3NyYy9saWIvaGVhZGVyL2hlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnQtbGlicmFyeS9zcmMvbGliL2hlYWRlci9oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQVluRCxNQUFNLE9BQU8sZUFBZTtJQVMxQjtRQVJTLFdBQU0sR0FBaUIsRUFBRSxDQUFDO1FBQzFCLGVBQVUsR0FBdUIsRUFBRSxDQUFDO1FBQ3BDLFNBQUksR0FBcUIsRUFBRSxDQUFDO1FBSTNCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFN0MsQ0FBQztJQUVqQixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDL0MsQ0FBQzthQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ3ZELENBQUM7YUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQztRQUMzQyxDQUFDO2FBQU0sSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxZQUFZLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQTZCLEVBQUUsS0FBWTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFFLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7OEdBOUJVLGVBQWU7a0dBQWYsZUFBZSwrTkFGZixDQUFDLFdBQVcsQ0FBQywrQ0NqQjFCLDB1RkF3RUEsczdDRHhEWSxhQUFhLHFNQUFFLGNBQWMsMk5BQUUsZUFBZSx1UkFBRSxnQkFBZ0I7OzJGQUcvRCxlQUFlO2tCQVIzQixTQUFTOytCQUNFLFdBQVcsY0FHVCxJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxhQUNoRSxDQUFDLFdBQVcsQ0FBQzt3REFHZixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNsaWNrRXZlbnQsIEJ1dHRvbkludGVyZmFjZSwgQnV0dG9uU2l6ZSwgQnV0dG9uVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYnV0dG9uLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hpcHNDb21wb25lbnQgfSBmcm9tICcuLi9jaGlwcy9jaGlwcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL2ljb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENoaXBJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoaXAtaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgSGVhZGVyQ2hpcENvbmZpZywgSGVhZGVyQ29uZmlnLCBIZWFkZXJJbmZvSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaGVhZGVyLWludGVyZmFjZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NhLWhlYWRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGVhZGVyLmNvbXBvbmVudC5jc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtJY29uQ29tcG9uZW50LCBDaGlwc0NvbXBvbmVudCwgQnV0dG9uQ29tcG9uZW50LCBIdHRwQ2xpZW50TW9kdWxlXSxcclxuICBwcm92aWRlcnM6IFtJY29uU2VydmljZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgaGVhZGVyOiBIZWFkZXJDb25maWcgPSB7fTtcclxuICBASW5wdXQoKSBjaGlwQ29uZmlnOiBIZWFkZXJDaGlwQ29uZmlnW10gPSBbXTtcclxuICBASW5wdXQoKSBpbmZvOiBIZWFkZXJJbmZvSXRlbVtdID0gW107XHJcbiAgQElucHV0KCkgYnV0dG9uSGVscGVyPzogQnV0dG9uSW50ZXJmYWNlO1xyXG4gIEBJbnB1dCgpIGJ1dHRvbk1haW4/OiBCdXR0b25JbnRlcmZhY2U7XHJcblxyXG4gIEBPdXRwdXQoKSBidXR0b25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8QnV0dG9uQ2xpY2tFdmVudD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXNbJ2hlYWRlciddKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyID0gY2hhbmdlc1snaGVhZGVyJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzWydjaGlwQ29uZmlnJ10pIHtcclxuICAgICAgdGhpcy5jaGlwQ29uZmlnID0gY2hhbmdlc1snY2hpcENvbmZpZyddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH0gZWxzZSBpZiAoY2hhbmdlc1snaW5mbyddKSB7XHJcbiAgICAgIHRoaXMuaW5mbyA9IGNoYW5nZXNbJ2luZm8nXS5jdXJyZW50VmFsdWU7XHJcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2J1dHRvbkhlbHBlciddKSB7XHJcbiAgICAgIHRoaXMuYnV0dG9uSGVscGVyID0gY2hhbmdlc1snYnV0dG9uSGVscGVyJ10uY3VycmVudFZhbHVlO1xyXG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzWydidXR0b25NYWluJ10pIHtcclxuICAgICAgdGhpcy5idXR0b25NYWluID0gY2hhbmdlc1snYnV0dG9uTWFpbiddLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQnV0dG9uQ2xpY2sodHlwZTogJ3ByaW1hcnknIHwgJ3NlY29uZGFyeScsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgY29uc3QgYnV0dG9uID0gdHlwZSA9PT0gJ3NlY29uZGFyeScgPyB0aGlzLmJ1dHRvbkhlbHBlciA6IHRoaXMuYnV0dG9uTWFpbjtcclxuICAgIGlmIChidXR0b24pIHtcclxuICAgICAgdGhpcy5idXR0b25DbGljay5lbWl0KHsgdHlwZSwgYnV0dG9uLCBvcmlnaW5hbEV2ZW50OiBldmVudCB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gIDxkaXYgY2xhc3M9XCJoZWFkZXItY29udGVudFwiPlxyXG4gICAgQGlmIChoZWFkZXI/LnRleHQgfHwgaGVhZGVyPy5odG1sIHx8IGhlYWRlci5pY29uPy5pY29uVXJsKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1uYW1lLWNvbnRhaW5lclwiIFtjbGFzcy5pY29uLWxlZnRdPVwiIWhlYWRlcj8uaWNvbj8uaWNvblBvc2l0aW9uIHx8IGhlYWRlcj8uaWNvbj8uaWNvblBvc2l0aW9uID09PSAnbGVmdCdcIiBcclxuICAgICAgICAgICAgIFtjbGFzcy5pY29uLXJpZ2h0XT1cImhlYWRlcj8uaWNvbj8uaWNvblBvc2l0aW9uID09PSAncmlnaHQnXCI+XHJcbiAgICAgICAgICBAaWYgKGhlYWRlci5pY29uPy5pY29uVXJsKSB7XHJcbiAgICAgICAgICAgIDxzYS1pY29uIFtpY29uVXJsXT1cImhlYWRlcj8uaWNvbj8uaWNvblVybFwiIFtpY29uUG9zaXRpb25dPVwiaGVhZGVyPy5pY29uPy5pY29uUG9zaXRpb25cIiBbc2l6ZV09XCJoZWFkZXI/Lmljb24/LnNpemUgfHwgJzI0cHgnXCIgLz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXItbmFtZVwiIFtpbm5lckhUTUxdPVwiaGVhZGVyPy5odG1sIHx8IGhlYWRlcj8udGV4dFwiPjwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIEBmb3IoY2hpcCBvZiBjaGlwQ29uZmlnOyB0cmFjayBjaGlwLnRleHQpIHtcclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzYS1jaGlwIFxyXG4gICAgICAgICAgICAgIFtpZF09XCJjaGlwLmlkXCJcclxuICAgICAgICAgICAgICBbdHlwZV09XCJjaGlwLnR5cGVcIlxyXG4gICAgICAgICAgICAgIFtzdGF0ZV09XCJjaGlwLnN0YXRlXCJcclxuICAgICAgICAgICAgICBbZmlsbGluZ109XCJjaGlwLmZpbGxpbmdcIlxyXG4gICAgICAgICAgICAgIFt0ZXh0XT1cImNoaXAudGV4dFwiXHJcbiAgICAgICAgICAgICAgW2ljb25Qb3NpdGlvbl09XCJjaGlwLmljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgW2ljb25QYXRoXT1cImNoaXAuaWNvblBhdGhcIlxyXG4gICAgICAgICAgICAgIFtsYXJnZVN0YXRlSWNvbl09XCJjaGlwLmxhcmdlU3RhdGVJY29uXCJcclxuICAgICAgICAgICAgICBbbGFyZ2VTdGF0ZVRleHRdPVwiY2hpcC5sYXJnZVN0YXRlVGV4dFwiXHJcbiAgICAgICAgICAgID48L3NhLWNoaXA+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRlci1pbmZvXCI+XHJcbiAgICAgIEBmb3IoaXRlbSBvZiBpbmZvOyB0cmFjayBpdGVtLnRleHQpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1pdGVtXCI+XHJcbiAgICAgICAgICBAaWYoaXRlbS5pY29uKSB7XHJcbiAgICAgICAgICAgIDxpbWcgW3NyY109XCJpdGVtLmljb25cIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHt7aXRlbS50ZXh0fX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cclxuICAgIEBpZihidXR0b25IZWxwZXIpIHtcclxuICAgICAgPHNhLWJ1dHRvbiBcclxuICAgICAgICAob25DbGlja0V2ZW50KT1cIm9uQnV0dG9uQ2xpY2soJ3NlY29uZGFyeScsICRldmVudClcIlxyXG4gICAgICAgIFtpZF09XCJidXR0b25IZWxwZXIuaWRcIlxyXG4gICAgICAgIFt0ZXh0XT1cImJ1dHRvbkhlbHBlci50ZXh0XCJcclxuICAgICAgICBbdHlwZV09XCJidXR0b25IZWxwZXIudHlwZVwiXHJcbiAgICAgICAgW3NpemVdPVwiYnV0dG9uSGVscGVyLnNpemVcIlxyXG4gICAgICAgIFtzdGF0ZV09XCJidXR0b25IZWxwZXIuc3RhdGVcIlxyXG4gICAgICAgIFtJbWFnZVBhdGhdPVwiYnV0dG9uSGVscGVyLmltYWdlUGF0aFwiXHJcbiAgICAgICAgW2ljb25Qb3NpdGlvbl09XCJidXR0b25IZWxwZXIuaWNvblBvc2l0aW9uXCJcclxuICAgICAgICBbaHJlZl09XCJidXR0b25IZWxwZXIuaHJlZlwiXHJcbiAgICAgICAgW2hyZWZUYXJnZXRdPVwiYnV0dG9uSGVscGVyLmhyZWZUYXJnZXRcIlxyXG4gICAgICAgIFtpc1N1Ym1pdF09XCJidXR0b25IZWxwZXIuaXNTdWJtaXRcIj5cclxuICAgICAgPC9zYS1idXR0b24+XHJcbiAgICB9XHJcbiAgICBAaWYoYnV0dG9uTWFpbikge1xyXG4gICAgICA8c2EtYnV0dG9uXHJcbiAgICAgICAgKG9uQ2xpY2tFdmVudCk9XCJvbkJ1dHRvbkNsaWNrKCdwcmltYXJ5JywgJGV2ZW50KVwiXHJcbiAgICAgICAgW2lkXT1cImJ1dHRvbk1haW4uaWRcIlxyXG4gICAgICAgIFt0ZXh0XT1cImJ1dHRvbk1haW4udGV4dFwiXHJcbiAgICAgICAgW3R5cGVdPVwiYnV0dG9uTWFpbi50eXBlXCJcclxuICAgICAgICBbc2l6ZV09XCJidXR0b25NYWluLnNpemVcIlxyXG4gICAgICAgIFtzdGF0ZV09XCJidXR0b25NYWluLnN0YXRlXCJcclxuICAgICAgICBbSW1hZ2VQYXRoXT1cImJ1dHRvbk1haW4uaW1hZ2VQYXRoXCJcclxuICAgICAgICBbaWNvblBvc2l0aW9uXT1cImJ1dHRvbk1haW4uaWNvblBvc2l0aW9uXCJcclxuICAgICAgICBbaHJlZl09XCJidXR0b25NYWluLmhyZWZcIlxyXG4gICAgICAgIFtocmVmVGFyZ2V0XT1cImJ1dHRvbk1haW4uaHJlZlRhcmdldFwiXHJcbiAgICAgICAgW2lzU3VibWl0XT1cImJ1dHRvbk1haW4uaXNTdWJtaXRcIj5cclxuICAgICAgPC9zYS1idXR0b24+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|