UNPKG

ng-devui

Version:

DevUI components based on Angular

425 lines 72.1 kB
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, TemplateRef, ViewChild, } from '@angular/core'; import { I18nService } from 'ng-devui/i18n'; import { fadeInOut } from 'ng-devui/utils'; import * as i0 from "@angular/core"; import * as i1 from "ng-devui/i18n"; import * as i2 from "@angular/common"; import * as i3 from "@angular/forms"; import * as i4 from "ng-devui/checkbox"; import * as i5 from "ng-devui/utils"; import * as i6 from "ng-devui/loading"; import * as i7 from "@angular/cdk/scrolling"; export class ToggleMenuListComponent { /** * 【可选】下拉菜单高度,建议使用px作为高度单位 */ set scrollHeight(value) { this._scrollHeight = `${parseInt(value, 10)}px`; } get scrollHeight() { return this._scrollHeight; } get realVirtualScrollItemSize() { const itemSize = (this.templateItemSize || this.virtualScrollItemSize[this.size || 'normal']) + this.virtualScrollItemSize.space; const num = Math.round(this.scrollHeightNum / itemSize) || 10; this.minBuffer = num * 1.5 * itemSize; this.maxBuffer = num * 2.5 * itemSize; return itemSize; } constructor(changeDetectorRef, i18n) { this.changeDetectorRef = changeDetectorRef; this.i18n = i18n; /** * 【必选】下拉选项资源,支持Array<string>, Array<{key: value}> */ this.options = []; /** * 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段做禁用操作的key */ this.optionDisabledKey = ''; /** * 【当传入资源(options)类型为Array<{key: value},必选】针对传入资源options的每项对应字段禁止变更的key */ this.optionImmutableKey = ''; /** * 【当传入资源(options)类型为Array<{key: value},可选】如使用分组需设置 */ this.optionGroupKey = ''; /** * 【可选】是否在搜索过滤状态中 */ this.isFiltering = false; /** * 【可选】启用数据懒加载,默认不启用 */ this.enableLazyLoad = false; /** * 【可选】是否虚拟滚动 */ this.virtualScroll = false; /** * customViewTemplate的方向,支持下方和右方 */ this.customViewDirection = 'bottom'; this.selectIndex = -1; this.multiItems = []; /** * 【可选】是否支持全选 */ this.isSelectAll = false; /** * 【可选】配置多选的时候是否维持原数组排序还是用户选择的顺序排序,默认是用户顺序 */ this.keepMultipleOrder = 'user-select'; this.closeScope = 'all'; /** * select下拉toggle事件,值为true或false */ this.toggleChange = new EventEmitter(); this.valueChange = new EventEmitter(); this.loadMore = new EventEmitter(); this._scrollHeight = '300px'; this.availableOptions = []; this.activeIndex = -1; this.allChecked = false; this.halfChecked = false; this.showLoading = false; this.virtualScrollViewportSizeMightChange = false; this.virtualScrollItemSize = { sm: 30, normal: 36, lg: 50, space: 4, }; // 容器边距,虚拟滚动设置高度需考虑上下边距 this.CONTAINER_MARGINS = 12; this.choose = ({ option, index, event }) => { if (event) { event.preventDefault(); event.stopPropagation(); } if (typeof option === 'object' && Object.keys(option).length === 0) { this.toggleChange.emit(false); return; } if (this.optionDisabledKey && option[this.optionDisabledKey]) { return; } if (this.optionImmutableKey && option[this.optionImmutableKey]) { return; } if (this.optionGroupKey && option[this.optionGroupKey]) { return; } if (this.multiple) { const indexOfOption = this.multiItems.findIndex((item) => JSON.stringify(item.option) === JSON.stringify(option)); if (indexOfOption === -1) { this.multiItems.push({ id: index, option }); } else { this.multiItems.splice(indexOfOption, 1); } if (this.keepMultipleOrder === 'origin') { this.multiItems.sort((a, b) => a.id - b.id); } this.value = this.multiItems.map((item) => item.option); } else { this.value = option; this.activeIndex = index; this.selectIndex = index; if (this.closeScope === 'all') { this.toggleChange.emit(false); } if (this.virtualScrollViewportSizeMightChange) { // 解决虚拟滚动更新options长度展开前无法获取正确高度影响 setTimeout(() => { if (this.virtualScrollViewportSizeMightChange && this.virtualScrollViewport) { this.virtualScrollViewportSizeMightChange = false; this.virtualScrollViewport.checkViewportSize(); } }, 0); } } this.valueChange.emit({ value: this.value, multiItems: this.multiItems, option, event, index }); this.setAvailableOptions(); this.setChecked(this.value); }; } ngOnInit() { this.setI18nText(); } ngOnChanges(changes) { const { options, value, eventHandle } = changes; if (options) { this.availableOptions = this.options; this.setAvailableOptions(); // 显示数据变更,需要判断全选半选状态 if (this.isSelectAll) { const selectedItemForFilterOptions = []; this.multiItems.forEach((item) => { this.availableOptions.forEach((option) => { if (item.id === option.id) { selectedItemForFilterOptions.push(item); } }); }); this.setChecked(selectedItemForFilterOptions); } if (!this.hasSelectIndex && !this.multiple && (!this.value || (this.availableOptions && !this.availableOptions.find((option) => option.option === this.value)))) { this.selectIndex = this.isFiltering && this.availableOptions && this.availableOptions.length > 0 ? 0 : -1; } if (this.virtualScroll && this.virtualScrollViewport) { this.virtualScrollViewportSizeMightChange = true; this.virtualScrollViewport.checkViewportSize(); } this.changeDetectorRef.markForCheck(); } if (value) { this.setAvailableOptions(); } if (eventHandle?.currentValue) { const evt = eventHandle.currentValue; const { event, type } = evt; switch (type) { case 'keydown.esc': this.onEscKeyup(event); break; case 'keydown.ArrowUp': this.handleKeyUpEvent(event); break; case 'keydown.ArrowDown': this.handleKeyDownEvent(event); break; case 'keydown.enter': this.handleKeyEnterEvent(event); break; default: } } } ngOnDestroy() { if (this.i18nSubscription) { this.i18nSubscription.unsubscribe(); } } setI18nText() { this.i18nCommonText = this.i18n.getI18nText().common; this.i18nSubscription = this.i18n.langChange().subscribe((data) => { this.i18nCommonText = data.common; }); } setAvailableOptions() { if (!Array.isArray(this.availableOptions)) { return; } const result = this.multiple ? this.value : [this.value]; const _value = this.value ? result : []; this.availableOptions = this.availableOptions.map((item, index) => item.id >= 0 && item.option ? { isChecked: _value.findIndex((i) => JSON.stringify(i) === JSON.stringify(item.option)) > -1, id: item.id, option: item.option, } : { isChecked: _value.findIndex((i) => JSON.stringify(i) === JSON.stringify(item)) > -1, id: index, option: item }); } setChecked(selectedItem) { if (!selectedItem) { return; } if (!this.isSelectAll) { return; } this.halfChecked = false; if (selectedItem.length === this.availableOptions.length) { this.allChecked = true; } else if (selectedItem.length === 0) { this.allChecked = false; } else { this.halfChecked = true; } } selectAll() { const mutableOption = this.optionImmutableKey ? this.availableOptions.filter((item) => !item.option[this.optionImmutableKey]) : this.availableOptions; const selectedImmutableOption = this.optionImmutableKey ? this.multiItems.filter((item) => item.option[this.optionImmutableKey]) : []; if (mutableOption && mutableOption.length > this.multiItems.length - selectedImmutableOption.length) { mutableOption.forEach((item) => { const indexOfOption = this.multiItems.findIndex((i) => JSON.stringify(i.option) === JSON.stringify(item.option)); if (indexOfOption === -1) { this.multiItems.push({ id: item.id, option: item.option }); } }); } else { this.multiItems = [...selectedImmutableOption]; } this.value = this.multiItems.map((item) => item.option); this.valueChange.emit({ value: this.value, multiItems: this.multiItems }); this.setChecked(this.value); } trackByFn(index, item) { return index; } onEscKeyup(event) { if (event) { event.stopPropagation(); } this.toggleChange.emit(false); } handleKeyUpEvent(event) { if (event) { event.preventDefault(); event.stopPropagation(); } this.selectIndex = this.selectIndex === 0 || this.selectIndex === -1 ? this.availableOptions.length - 1 : this.selectIndex - 1; this.scrollToActive(); } handleKeyDownEvent(event) { if (event) { event.preventDefault(); event.stopPropagation(); } this.selectIndex = this.selectIndex === this.availableOptions.length - 1 ? 0 : this.selectIndex + 1; this.scrollToActive(); } handleKeyEnterEvent(event) { if (event) { event.preventDefault(); event.stopPropagation(); } const item = this.availableOptions[this.selectIndex]; if (item) { this.choose({ option: item.option, index: item.id, event: null }); } else if (this.closeScope === 'all') { this.toggleChange.emit(false); } } scrollToActive() { const that = this; setTimeout(() => { try { const selectIndex = that.selectIndex + (that.isSelectAll ? 1 : 0); // 多了个全选会导致问题,index需要加1 const scrollPane = that.dropdownUl.nativeElement.children[selectIndex]; if (scrollPane.scrollIntoViewIfNeeded) { scrollPane.scrollIntoViewIfNeeded(false); } else { const containerInfo = that.dropdownUl.nativeElement.getBoundingClientRect(); const elementInfo = scrollPane.getBoundingClientRect(); if (elementInfo.bottom > containerInfo.bottom || elementInfo.top < containerInfo.top) { scrollPane.scrollIntoView(false); } } } catch (e) { } }); } resetIndex(resetSelectIndex = true) { this.selectIndex = resetSelectIndex ? -1 : 0; this.activeIndex = -1; this.changeDetectorRef.markForCheck(); } showSelectAll() { return this.isSelectAll && this.multiple && this.availableOptions.length > 0; } getVirtualScrollHeight(len, size) { if (len > 0) { let height = (this.templateItemSize || this.virtualScrollItemSize[size || 'normal']) * len + this.virtualScrollItemSize.space * (len - 1); if (this.isSelectAll && this.multiple) { height += this.virtualScrollItemSize[size ? size : 'normal'] + this.virtualScrollItemSize.space; } const scrollHeight = parseInt(this.scrollHeight, 10); this.scrollHeightNum = height > scrollHeight ? scrollHeight : height; return `${this.scrollHeightNum + this.CONTAINER_MARGINS * 2}px`; } } loadMoreEvent(event) { this.showLoading = true; this.loadMore.emit({ instance: this, event }); } loadStart() { this.showLoading = true; this.changeDetectorRef.detectChanges(); } loadFinish() { this.showLoading = false; this.changeDetectorRef.detectChanges(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleMenuListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.I18nService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToggleMenuListComponent, selector: "d-toggle-menu-list", inputs: { options: "options", optionDisabledKey: "optionDisabledKey", optionImmutableKey: "optionImmutableKey", optionGroupKey: "optionGroupKey", size: "size", keyword: "keyword", isFiltering: "isFiltering", enableLazyLoad: "enableLazyLoad", virtualScroll: "virtualScroll", listItemTemplate: "listItemTemplate", loadingTemplateRef: "loadingTemplateRef", noResultItemTemplate: "noResultItemTemplate", customViewTemplate: "customViewTemplate", customViewDirection: "customViewDirection", templateItemSize: "templateItemSize", scrollHeight: "scrollHeight", selectIndex: "selectIndex", hasSelectIndex: "hasSelectIndex", multiple: "multiple", multiItems: "multiItems", value: "value", isSelectAll: "isSelectAll", keepMultipleOrder: "keepMultipleOrder", eventHandle: "eventHandle", closeScope: "closeScope" }, outputs: { toggleChange: "toggleChange", valueChange: "valueChange", loadMore: "loadMore" }, viewQueries: [{ propertyName: "dropdownUl", first: true, predicate: ["dropdownUl"], descendants: true }, { propertyName: "virtualScrollViewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ul\n class=\"devui-dropdown-menu-wrap {{ size ? 'devui-dropdown-menu-' + size : '' }}\"\n dLoading\n positionType=\"relative\"\n [showLoading]=\"showLoading\"\n [message]=\"i18nCommonText?.loading\"\n [loadingTemplateRef]=\"loadingTemplateRef\"\n [backdrop]=\"true\"\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\n>\n <ng-content></ng-content>\n <ul\n #dropdownUl\n *ngIf=\"!virtualScroll || enableLazyLoad; else scrollViewTpl\"\n class=\"devui-select-list-unstyled devui-scrollbar\"\n [ngStyle]=\"{ 'max-height': scrollHeight, width: '100%' }\"\n dLazyLoad\n [enableLazyLoad]=\"enableLazyLoad\"\n (loadMore)=\"loadMoreEvent($event)\"\n >\n <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n <ng-container *ngFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n <!--list-item \u5355\u4E2A\u9009\u9879\u6A21\u677F-->\n <ng-template\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item,\n index: index,\n selectIndex: selectIndex,\n activeIndex: activeIndex,\n choose: choose\n }\"\n ></ng-template>\n </ng-container>\n <div *ngIf=\"availableOptions?.length === 0\" class=\"devui-no-data-tip\">\n <ng-container *ngIf=\"noResultItemTemplate; else noResultDefaultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultItemTemplate\" [ngTemplateOutletContext]=\"{ options: options }\"></ng-template>\n </ng-container>\n </div>\n </ul>\n</ul>\n<ng-container *ngIf=\"customViewTemplate\">\n <div class=\"devui-select-custom-area\">\n <ng-template [ngTemplateOutlet]=\"customViewTemplate\" [ngTemplateOutletContext]=\"{ $implicit: this, choose: choose }\"></ng-template>\n </div>\n</ng-container>\n\n<!--\u865A\u62DF\u6EDA\u52A8\u6A21\u677F-->\n<ng-template #scrollViewTpl>\n <cdk-virtual-scroll-viewport\n [ngStyle]=\"{\n height: getVirtualScrollHeight(availableOptions.length, size),\n width: '100%',\n 'max-height': scrollHeight\n }\"\n [itemSize]=\"realVirtualScrollItemSize\"\n [minBufferPx]=\"minBuffer\"\n [maxBufferPx]=\"maxBuffer\"\n class=\"viewport-wrapper devui-select-list-unstyled devui-scrollbar\"\n #dropdownUl\n >\n <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n <ng-container *cdkVirtualFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item,\n index: index,\n selectIndex: selectIndex,\n activeIndex: activeIndex,\n choose: choose\n }\"\n ></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<!--\u5168\u9009\u6A21\u677F-->\n<ng-template #selectAllTpl>\n <li class=\"devui-dropdown-item\" *ngIf=\"showSelectAll()\" (click)=\"selectAll()\">\n <span>\n <d-checkbox [label]=\"i18nCommonText.checkAll\" [isShowTitle]=\"false\" [halfchecked]=\"halfChecked\" [(ngModel)]=\"allChecked\"></d-checkbox>\n </span>\n </li>\n</ng-template>\n\n<!--\u65E0\u5185\u5BB9\u6A21\u677F-->\n<ng-template #noResultDefaultTpl>{{ isFiltering ? i18nCommonText?.noRecordsFound : i18nCommonText?.noData }}</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host li{font-size:var(--devui-font-size-lg, 14px);min-height:40px;line-height:28px;padding:8px 12px;width:100%;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:0;background-color:transparent;color:var(--devui-text, #191919);cursor:pointer}:host li:hover{background-color:var(--devui-list-item-hover-bg, #f2f2f3);color:var(--devui-list-item-hover-text, #000000)}:host ::ng-deep d-toggle-menu-search .devui-toggle-menu-search>input{background-color:var(--devui-embed-search-bg, #f2f2f3)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.CheckBoxComponent, selector: "d-checkbox", inputs: ["name", "label", "cssClass", "color", "disabled", "isShowTitle", "title", "labelTemplate", "halfchecked", "showAnimation", "showGlowStyle", "beforeChange"], outputs: ["change"] }, { kind: "directive", type: i5.LazyLoadDirective, selector: "[dLazyLoad]", inputs: ["enableLazyLoad", "contentMode", "target", "imgLoadSrc", "direction"], outputs: ["loadMore"] }, { kind: "directive", type: i6.LoadingDirective, selector: "[dLoading]", inputs: ["backdrop", "message", "positionType", "showLoading", "view", "zIndex", "loading", "loadingStyle", "loadingTemplateRef"], exportAs: ["dLoading"] }, { kind: "directive", type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i7.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], animations: [fadeInOut], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToggleMenuListComponent, decorators: [{ type: Component, args: [{ selector: 'd-toggle-menu-list', animations: [fadeInOut], changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, template: "<ul\n class=\"devui-dropdown-menu-wrap {{ size ? 'devui-dropdown-menu-' + size : '' }}\"\n dLoading\n positionType=\"relative\"\n [showLoading]=\"showLoading\"\n [message]=\"i18nCommonText?.loading\"\n [loadingTemplateRef]=\"loadingTemplateRef\"\n [backdrop]=\"true\"\n (click)=\"$event.stopPropagation(); $event.preventDefault()\"\n>\n <ng-content></ng-content>\n <ul\n #dropdownUl\n *ngIf=\"!virtualScroll || enableLazyLoad; else scrollViewTpl\"\n class=\"devui-select-list-unstyled devui-scrollbar\"\n [ngStyle]=\"{ 'max-height': scrollHeight, width: '100%' }\"\n dLazyLoad\n [enableLazyLoad]=\"enableLazyLoad\"\n (loadMore)=\"loadMoreEvent($event)\"\n >\n <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n <ng-container *ngFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n <!--list-item \u5355\u4E2A\u9009\u9879\u6A21\u677F-->\n <ng-template\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item,\n index: index,\n selectIndex: selectIndex,\n activeIndex: activeIndex,\n choose: choose\n }\"\n ></ng-template>\n </ng-container>\n <div *ngIf=\"availableOptions?.length === 0\" class=\"devui-no-data-tip\">\n <ng-container *ngIf=\"noResultItemTemplate; else noResultDefaultTpl\">\n <ng-template [ngTemplateOutlet]=\"noResultItemTemplate\" [ngTemplateOutletContext]=\"{ options: options }\"></ng-template>\n </ng-container>\n </div>\n </ul>\n</ul>\n<ng-container *ngIf=\"customViewTemplate\">\n <div class=\"devui-select-custom-area\">\n <ng-template [ngTemplateOutlet]=\"customViewTemplate\" [ngTemplateOutletContext]=\"{ $implicit: this, choose: choose }\"></ng-template>\n </div>\n</ng-container>\n\n<!--\u865A\u62DF\u6EDA\u52A8\u6A21\u677F-->\n<ng-template #scrollViewTpl>\n <cdk-virtual-scroll-viewport\n [ngStyle]=\"{\n height: getVirtualScrollHeight(availableOptions.length, size),\n width: '100%',\n 'max-height': scrollHeight\n }\"\n [itemSize]=\"realVirtualScrollItemSize\"\n [minBufferPx]=\"minBuffer\"\n [maxBufferPx]=\"maxBuffer\"\n class=\"viewport-wrapper devui-select-list-unstyled devui-scrollbar\"\n #dropdownUl\n >\n <ng-template [ngTemplateOutlet]=\"selectAllTpl\"></ng-template>\n <ng-container *cdkVirtualFor=\"let item of availableOptions; let index = index; trackBy: trackByFn\">\n <ng-template\n [ngTemplateOutlet]=\"listItemTemplate\"\n [ngTemplateOutletContext]=\"{\n item: item,\n index: index,\n selectIndex: selectIndex,\n activeIndex: activeIndex,\n choose: choose\n }\"\n ></ng-template>\n </ng-container>\n </cdk-virtual-scroll-viewport>\n</ng-template>\n\n<!--\u5168\u9009\u6A21\u677F-->\n<ng-template #selectAllTpl>\n <li class=\"devui-dropdown-item\" *ngIf=\"showSelectAll()\" (click)=\"selectAll()\">\n <span>\n <d-checkbox [label]=\"i18nCommonText.checkAll\" [isShowTitle]=\"false\" [halfchecked]=\"halfChecked\" [(ngModel)]=\"allChecked\"></d-checkbox>\n </span>\n </li>\n</ng-template>\n\n<!--\u65E0\u5185\u5BB9\u6A21\u677F-->\n<ng-template #noResultDefaultTpl>{{ isFiltering ? i18nCommonText?.noRecordsFound : i18nCommonText?.noData }}</ng-template>\n", styles: [".devui-font-size-base{font-size:var(--devui-font-size, 12px)}.devui-font-base{font-size:var(--devui-font-size, 12px);font-weight:var(--devui-font-content-weight, normal);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-modal-title{font-size:var(--devui-font-size-modal-title, 18px)}.devui-font-modal-title{font-size:var(--devui-font-size-modal-title, 18px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-page-title{font-size:var(--devui-font-size-page-title, 16px)}.devui-font-page-title{font-size:var(--devui-font-size-page-title, 16px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}.devui-font-size-secondary-title{font-size:var(--devui-font-size-card-title, 14px)}.devui-font-secondary-title{font-size:var(--devui-font-size-card-title, 14px);font-weight:var(--devui-font-title-weight, bold);line-height:var(--devui-line-height-base, 1.5)}:host li{font-size:var(--devui-font-size-lg, 14px);min-height:40px;line-height:28px;padding:8px 12px;width:100%;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;border:0;background-color:transparent;color:var(--devui-text, #191919);cursor:pointer}:host li:hover{background-color:var(--devui-list-item-hover-bg, #f2f2f3);color:var(--devui-list-item-hover-text, #000000)}:host ::ng-deep d-toggle-menu-search .devui-toggle-menu-search>input{background-color:var(--devui-embed-search-bg, #f2f2f3)}\n"] }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.I18nService }], propDecorators: { options: [{ type: Input }], optionDisabledKey: [{ type: Input }], optionImmutableKey: [{ type: Input }], optionGroupKey: [{ type: Input }], size: [{ type: Input }], keyword: [{ type: Input }], isFiltering: [{ type: Input }], enableLazyLoad: [{ type: Input }], virtualScroll: [{ type: Input }], listItemTemplate: [{ type: Input }], loadingTemplateRef: [{ type: Input }], noResultItemTemplate: [{ type: Input }], customViewTemplate: [{ type: Input }], customViewDirection: [{ type: Input }], templateItemSize: [{ type: Input }], scrollHeight: [{ type: Input }], selectIndex: [{ type: Input }], hasSelectIndex: [{ type: Input }], multiple: [{ type: Input }], multiItems: [{ type: Input }], value: [{ type: Input }], isSelectAll: [{ type: Input }], keepMultipleOrder: [{ type: Input }], eventHandle: [{ type: Input }], closeScope: [{ type: Input }], toggleChange: [{ type: Output }], valueChange: [{ type: Output }], loadMore: [{ type: Output }], dropdownUl: [{ type: ViewChild, args: ['dropdownUl'] }], virtualScrollViewport: [{ type: ViewChild, args: [CdkVirtualScrollViewport] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLW1lbnUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9kZXZ1aS90b2dnbGUtbWVudS90b2dnbGUtbWVudS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL2RldnVpL3RvZ2dsZS1tZW51L3RvZ2dsZS1tZW51LWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7O0FBWTNDLE1BQU0sT0FBTyx1QkFBdUI7SUEyRGxDOztPQUVHO0lBQ0gsSUFBYSxZQUFZLENBQUMsS0FBSztRQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQWdDRCxJQUFJLHlCQUF5QjtRQUMzQixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFDakksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUM7UUFDdEMsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQXVCRCxZQUFvQixpQkFBb0MsRUFBVSxJQUFpQjtRQUEvRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBYTtRQWhJbkY7O1dBRUc7UUFDTSxZQUFPLEdBQThCLEVBQUUsQ0FBQztRQUNqRDs7V0FFRztRQUNNLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUNoQzs7V0FFRztRQUNNLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUNqQzs7V0FFRztRQUNNLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBTTdCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDN0I7O1dBRUc7UUFDTSxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUNoQzs7V0FFRztRQUNNLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBa0IvQjs7V0FFRztRQUNNLHdCQUFtQixHQUF3QyxRQUFRLENBQUM7UUFnQnBFLGdCQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFTakIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUV6Qjs7V0FFRztRQUNNLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzdCOztXQUVHO1FBQ00sc0JBQWlCLEdBQTZCLGFBQWEsQ0FBQztRQUU1RCxlQUFVLEdBQTZCLEtBQUssQ0FBQztRQUN0RDs7V0FFRztRQUNPLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN2QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFZN0Msa0JBQWEsR0FBRyxPQUFPLENBQUM7UUFHeEIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDakIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUlwQix5Q0FBb0MsR0FBRyxLQUFLLENBQUM7UUFDN0MsMEJBQXFCLEdBQVE7WUFDM0IsRUFBRSxFQUFFLEVBQUU7WUFDTixNQUFNLEVBQUUsRUFBRTtZQUNWLEVBQUUsRUFBRSxFQUFFO1lBQ04sS0FBSyxFQUFFLENBQUM7U0FDVCxDQUFDO1FBQ0YsdUJBQXVCO1FBQ3ZCLHNCQUFpQixHQUFHLEVBQUUsQ0FBQztRQXFNdkIsV0FBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ25FLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM5QixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUM3RCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUMvRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZELE9BQU87WUFDVCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2xILElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDO2dCQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDekIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO29CQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxvQ0FBb0MsRUFBRSxDQUFDO29CQUM5QyxpQ0FBaUM7b0JBQ2pDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7d0JBQ2QsSUFBSSxJQUFJLENBQUMsb0NBQW9DLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7NEJBQzVFLElBQUksQ0FBQyxvQ0FBb0MsR0FBRyxLQUFLLENBQUM7NEJBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO3dCQUNqRCxDQUFDO29CQUNILENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ2hHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztJQXBQb0YsQ0FBQztJQUV2RixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ2hELElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNyQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUMzQixvQkFBb0I7WUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sNEJBQTRCLEdBQUcsRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUMvQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7d0JBQ3ZDLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7NEJBQzFCLDRCQUE0QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDMUMsQ0FBQztvQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFDaEQsQ0FBQztZQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFDcEIsQ0FBQyxJQUFJLENBQUMsUUFBUTtnQkFDZCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDakgsQ0FBQztnQkFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVHLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxvQ0FBb0MsR0FBRyxJQUFJLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELENBQUM7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxXQUFXLEVBQUUsWUFBWSxFQUFFLENBQUM7WUFDOUIsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLFlBQVksQ0FBQztZQUNyQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQztZQUM1QixRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNmLEtBQUssYUFBYTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDdkIsTUFBTTtnQkFDUixLQUFLLGlCQUFpQjtvQkFDcEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM3QixNQUFNO2dCQUNSLEtBQUssbUJBQW1CO29CQUN0QixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9CLE1BQU07Z0JBQ1IsS0FBSyxlQUFlO29CQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2hDLE1BQU07Z0JBQ1IsUUFBUTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQ2hFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ3pCLENBQUMsQ0FBQztnQkFDQSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUYsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTthQUNwQjtZQUNELENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FDckgsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVLENBQUMsWUFBWTtRQUNyQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN6QixDQUFDO2FBQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQy9FLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDMUIsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUV0SSxJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pILElBQUksYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLHVCQUF1QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJO1FBQ25CLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFhO1FBQ3RCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzVCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFCLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUMvSCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDSCxDQUFDO0lBRUQsY0FBYztRQUNaLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCO2dCQUMxRixNQUFNLFVBQVUsR0FBUSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzVFLElBQUksVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7b0JBQ3RDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzVFLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO29CQUN2RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sSUFBSSxXQUFXLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDckYsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkMsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJO1FBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQXFERCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELHNCQUFzQixDQUFDLEdBQUcsRUFBRSxJQUFJO1FBQzlCLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osSUFBSSxNQUFNLEdBQ1IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQy9ILElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDbEcsQ0FBQztZQUNELE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDckUsT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUs7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQzsrR0FyWlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsNmtDQWtHdkIsd0JBQXdCLHFFQy9IckMsaXlHQXdGQSxzOUdEL0RjLENBQUMsU0FBUyxDQUFDOzs0RkFJWix1QkFBdUI7a0JBUm5DLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLENBQUMsU0FBUyxDQUFDLG1CQUNOLHVCQUF1QixDQUFDLE1BQU0sdUJBQzFCLEtBQUs7Z0hBTWpCLE9BQU87c0JBQWYsS0FBSztnQkFJRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxXQUFXO3NCQUFuQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBSUcsYUFBYTtzQkFBckIsS0FBSztnQkFLRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBSUcsa0JBQWtCO3NCQUExQixLQUFLO2dCQUlHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFJRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUlHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJTyxZQUFZO3NCQUF4QixLQUFLO2dCQVFHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFJSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDa0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNjLHFCQUFxQjtzQkFBekQsU0FBUzt1QkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJMThuSW50ZXJmYWNlLCBJMThuU2VydmljZSB9IGZyb20gJ25nLWRldnVpL2kxOG4nO1xyXG5pbXBvcnQgeyBmYWRlSW5PdXQgfSBmcm9tICduZy1kZXZ1aS91dGlscyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBUb2dnbGVNZW51TGlzdEl0ZW0gfSBmcm9tICcuL3RvZ2dsZS1tZW51LnR5cGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLXRvZ2dsZS1tZW51LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90b2dnbGUtbWVudS1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtgLi90b2dnbGUtbWVudS1saXN0LmNvbXBvbmVudC5zY3NzYF0sXHJcbiAgYW5pbWF0aW9uczogW2ZhZGVJbk91dF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb2dnbGVNZW51TGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIC8qKlxyXG4gICAqIOOAkOW/hemAieOAkeS4i+aLiemAiemhuei1hOa6kO+8jOaUr+aMgUFycmF5PHN0cmluZz4sIEFycmF5PHtrZXk6IHZhbHVlfT5cclxuICAgKi9cclxuICBASW5wdXQoKSBvcHRpb25zOiBBcnJheTxUb2dnbGVNZW51TGlzdEl0ZW0+ID0gW107XHJcbiAgLyoqXHJcbiAgICog44CQ5b2T5Lyg5YWl6LWE5rqQ77yIb3B0aW9uc++8ieexu+Wei+S4ukFycmF5PHtrZXk6IHZhbHVlfe+8jOW/hemAieOAkemSiOWvueS8oOWFpei1hOa6kG9wdGlvbnPnmoTmr4/pobnlr7nlupTlrZfmrrXlgZrnpoHnlKjmk43kvZznmoRrZXlcclxuICAgKi9cclxuICBASW5wdXQoKSBvcHRpb25EaXNhYmxlZEtleSA9ICcnO1xyXG4gIC8qKlxyXG4gICAqIOOAkOW9k+S8oOWFpei1hOa6kO+8iG9wdGlvbnPvvInnsbvlnovkuLpBcnJheTx7a2V5OiB2YWx1ZX3vvIzlv4XpgInjgJHpkojlr7nkvKDlhaXotYTmupBvcHRpb25z55qE5q+P6aG55a+55bqU5a2X5q6156aB5q2i5Y+Y5pu055qEa2V5XHJcbiAgICovXHJcbiAgQElucHV0KCkgb3B0aW9uSW1tdXRhYmxlS2V5ID0gJyc7XHJcbiAgLyoqXHJcbiAgICog44CQ5b2T5Lyg5YWl6LWE5rqQ77yIb3B0aW9uc++8ieexu+Wei+S4ukFycmF5PHtrZXk6IHZhbHVlfe+8jOWPr+mAieOAkeWmguS9v+eUqOWIhue7hOmcgOiuvue9rlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wdGlvbkdyb3VwS2V5ID0gJyc7XHJcbiAgLyoqXHJcbiAgICog44CQ5Y+v6YCJ44CR5LiL5ouJ6YCJ5qGG5bC65a+4XHJcbiAgICovXHJcbiAgQElucHV0KCkgc2l6ZTogJycgfCAnc20nIHwgJ2xnJztcclxuICBASW5wdXQoKSBrZXl3b3JkOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICog44CQ5Y+v6YCJ44CR5piv5ZCm5Zyo5pCc57Si6L+H5ruk54q25oCB5LitXHJcbiAgICovXHJcbiAgQElucHV0KCkgaXNGaWx0ZXJpbmcgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiAg44CQ5Y+v6YCJ44CR5ZCv55So5pWw5o2u5oeS5Yqg6L2977yM6buY6K6k5LiN5ZCv55SoXHJcbiAgICovXHJcbiAgQElucHV0KCkgZW5hYmxlTGF6eUxvYWQgPSBmYWxzZTtcclxuICAvKipcclxuICAgKiDjgJDlj6/pgInjgJHmmK/lkKbomZrmi5/mu5rliqhcclxuICAgKi9cclxuICBASW5wdXQoKSB2aXJ0dWFsU2Nyb2xsID0gZmFsc2U7XHJcblxyXG4gIC8qKlxyXG4gICAqIOOAkOW/hemAieOAkeS4i+aLieWIl+ihqOWNlemhueaooeadv1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxpc3RJdGVtVGVtcG