@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
717 lines • 61.2 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tree-select.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, forwardRef, Input, Output, Renderer2, ViewChild, TemplateRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { OperableTreeComponent } from '@duoduo-oba/ng-devui/tree';
import DefaultIcons from './tree-default-icons';
import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
import { I18nService } from '@duoduo-oba/ng-devui/i18n';
export class TreeSelectComponent {
/**
* @param {?} renderer
* @param {?} changeDetectorRef
* @param {?} i18n
*/
constructor(renderer, changeDetectorRef, i18n) {
this.renderer = renderer;
this.changeDetectorRef = changeDetectorRef;
this.i18n = i18n;
this.placeholder = '';
this.disabled = false;
this.expandTree = false;
this.multiple = false;
this.treeNodeIdKey = 'id';
this.treeNodeChildrenKey = 'children';
this.disabledKey = 'disabled';
this.leafOnly = false;
this.delimiter = ', ';
this.iconParentOpen = DefaultIcons.iconParentOpen;
this.iconParentClose = DefaultIcons.iconParentClose;
this.iconLeaf = DefaultIcons.iconLeaf;
this.closeOnNodeSelected = true;
this.width = null;
this.searchable = false;
this.appendTo = 'body';
this.treeNodeTitleKey = 'title';
this.allowUnselect = true;
this.valueChanged = new EventEmitter();
this._treeData = [];
this.searchString = null;
this.noRecord = false;
this._isOpen = false;
this._sourceTree = [];
this.readyEvent = (/**
* @param {?} treeSelect
* @return {?}
*/
(treeSelect) => {
});
this.onChange = (/**
* @param {?} _
* @return {?}
*/
(_) => null);
this.onTouch = (/**
* @return {?}
*/
() => null);
}
/**
* @param {?} allowClear
* @return {?}
*/
set allowClear(allowClear) {
this._allowClear = allowClear;
}
/**
* @return {?}
*/
get allowClear() {
return !this.disabled && !this.multiple && this.allowUnselect && this._allowClear && !!this.selectedValue;
}
/**
* @param {?} treeData
* @return {?}
*/
set treeData(treeData) {
this._sourceTree = treeData;
this.refreshTree(treeData);
}
/**
* @return {?}
*/
get treeData() {
return this._treeData;
}
/**
* @return {?}
*/
get isOpen() {
return this._isOpen;
}
/**
* @param {?} value
* @return {?}
*/
set isOpen(value) {
if (this._isOpen !== value) {
this._isOpen = value;
this.changeDetectorRef.detectChanges();
}
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.changeDetectorRef.detectChanges();
this.readyEvent(this);
if (this.searchable) {
this.registerSearchListener();
}
}
/**
* @param {?} changes
* @return {?}
*/
ngOnChanges(changes) {
}
/**
* @return {?}
*/
ngOnDestroy() {
if (this.i18nSubscription) {
this.i18nSubscription.unsubscribe();
}
}
/**
* @return {?}
*/
ngOnInit() {
this.setI18nText();
}
/**
* @param {?} fn
* @return {?}
*/
registerOnChange(fn) {
this.onChange = fn;
}
/**
* @param {?} fn
* @return {?}
*/
registerOnTouched(fn) {
this.onTouch = fn;
}
/**
* @param {?} isDisabled
* @return {?}
*/
setDisabledState(isDisabled) {
this.disabled = isDisabled;
}
/**
* @param {?} value
* @return {?}
*/
writeValue(value) {
this.value = this.multiple ? Object.assign([], value) : value;
this.refreshTree(this.treeData);
// Trigger visualization after tree data is fulfilled.
this.changeDetectorRef.detectChanges();
this.visualizeSelectedItems();
}
/**
* @return {?}
*/
toggle() {
if (this.timer) {
clearTimeout(this.timer);
}
/** @type {?} */
const applyNow = !this.timer;
this.timer = setTimeout((/**
* @return {?}
*/
() => { this.timer = null; }), 200);
if (applyNow) {
this.isOpen = !this.isOpen;
}
}
/**
* @private
* @return {?}
*/
setI18nText() {
this.i18nCommonText = this.i18n.getI18nText().common;
this.i18nSubscription = this.i18n.langChange().subscribe((/**
* @param {?} data
* @return {?}
*/
(data) => {
this.i18nCommonText = data.common;
}));
}
/**
* @private
* @param {?} treeNode
* @return {?}
*/
expandAllNodes(treeNode) {
if (Array.isArray(treeNode)) {
return treeNode.map((/**
* @param {?} node
* @return {?}
*/
node => this.expandAllNodes(node)));
}
else if (treeNode instanceof Object) {
if (treeNode.hasOwnProperty(this.treeNodeChildrenKey)) {
treeNode.open = true;
treeNode[this.treeNodeChildrenKey] = this.expandAllNodes(treeNode[this.treeNodeChildrenKey]);
}
return treeNode;
}
}
/**
* @private
* @param {?} treeNode
* @param {?=} expandTree
* @return {?}
*/
prepareTree(treeNode, expandTree = false) {
if (Array.isArray(treeNode)) {
return treeNode.map((/**
* @param {?} node
* @return {?}
*/
node => this.prepareTree(node, expandTree)));
}
else if (treeNode) {
/** @type {?} */
let parentCheckedByChildren = false;
if (treeNode.hasOwnProperty(this.treeNodeChildrenKey)) {
treeNode.open = expandTree ? true : treeNode.open;
treeNode[this.treeNodeChildrenKey] = this.prepareTree(treeNode[this.treeNodeChildrenKey], expandTree);
if (this.multiple) {
[parentCheckedByChildren, treeNode.halfChecked] = this.resolveParentNode(treeNode[this.treeNodeChildrenKey]);
}
}
if (treeNode.hasOwnProperty(this.treeNodeIdKey)) {
/** @type {?} */
const nodeId = treeNode[this.treeNodeIdKey];
if (this.multiple) {
/** @type {?} */
const selectedByValue = this.nodeSelected(nodeId);
treeNode.isActive = false;
treeNode.isChecked = selectedByValue || parentCheckedByChildren;
if (!this.leafOnly && !selectedByValue && parentCheckedByChildren) {
/** @type {?} */
const insertObject = {};
insertObject[this.treeNodeIdKey] = treeNode[this.treeNodeIdKey];
insertObject[this.treeNodeTitleKey] = treeNode[this.treeNodeTitleKey];
((/** @type {?} */ (this.value))).push(insertObject);
}
}
else {
treeNode.isChecked = false;
treeNode.isActive = this.nodeSelected(nodeId);
if (treeNode.isActive) {
this.currentActiveNode = treeNode;
}
}
}
return treeNode;
}
}
/**
* @private
* @param {?} treeNodeId
* @return {?}
*/
nodeSelected(treeNodeId) {
if (!this.value) {
return false;
}
if (this.multiple && Array.isArray(this.value)) {
// polyfill Array.prototype.includes()
return this.value.map((/**
* @param {?} _
* @return {?}
*/
_ => _[this.treeNodeIdKey])).indexOf(treeNodeId) > -1;
}
else {
return this.value[this.treeNodeIdKey] && treeNodeId === this.value[this.treeNodeIdKey];
}
}
/**
* @private
* @param {?} treeNodes
* @return {?}
*/
resolveParentNode(treeNodes) {
/** @type {?} */
const childrenFullCheckedCount = treeNodes.filter((/**
* @param {?} _
* @return {?}
*/
_ => _.isChecked)).length;
/** @type {?} */
const childrenCheckedCount = treeNodes.filter((/**
* @param {?} _
* @return {?}
*/
_ => _.isChecked || _.halfChecked)).length;
return [
childrenFullCheckedCount > 0 && treeNodes.length === childrenFullCheckedCount,
childrenCheckedCount > 0 && treeNodes.length > childrenFullCheckedCount
];
}
/**
* @private
* @param {?} treeData
* @return {?}
*/
refreshTree(treeData) {
this._treeData = Object.assign([], this.prepareTree(treeData, this.expandTree));
}
/**
* @param {?} selectedNodes
* @return {?}
*/
onOperableNodeChecked(selectedNodes) {
/** @type {?} */
const selectedValueExtractor = (/**
* @param {?} _selectedNodes
* @return {?}
*/
(_selectedNodes) => {
return this.leafOnly ?
_selectedNodes.filter((/**
* @param {?} _
* @return {?}
*/
_ => !_.data.isParent)).map((/**
* @param {?} _
* @return {?}
*/
_ => _.data.originItem)) :
_selectedNodes.map((/**
* @param {?} _
* @return {?}
*/
_ => _.data.originItem));
});
if (this.multiple) {
this.value = selectedValueExtractor(selectedNodes);
this.emitEvents();
}
}
/**
* @param {?} selectedNode
* @return {?}
*/
onOperableNodeSelected(selectedNode) {
if (!this.multiple) {
if (this.leafOnly && selectedNode.data.isParent) {
return;
}
if (selectedNode.data.isActive) {
this.currentActiveNode = selectedNode.data.originItem;
this.value = selectedNode.data.originItem;
// Configurable close on node selected
if (this.closeOnNodeSelected) {
this.isOpen = false;
}
}
else {
if (this.allowUnselect) {
this.currentActiveNode = null;
this.value = null;
}
else {
selectedNode.data.isActive = true;
if (this.closeOnNodeSelected) {
this.isOpen = false;
}
}
}
this.emitEvents();
}
}
/**
* @return {?}
*/
emitEvents() {
this.visualizeSelectedItems();
this.onChange(this.value);
this.valueChanged.emit(this.selectedValue());
this.onTouch();
}
/**
* @return {?}
*/
visualizeSelectedItems() {
if (this.multiple) {
this.visualizeMultipleValue();
}
else {
this.visualizeSingleValue();
}
}
/**
* @return {?}
*/
visualizeMultipleValue() {
if (this.tree && this.tree.treeFactory) {
/** @type {?} */
const selectedNodes = (/** @type {?} */ (this.selectedValue()));
/** @type {?} */
const valueText = selectedNodes.map((/**
* @param {?} _
* @return {?}
*/
_ => _[this.treeNodeTitleKey])).join(this.delimiter);
this.renderer.setAttribute(this.selectHost.nativeElement, 'value', valueText);
}
else {
this.emptyInput();
}
}
/**
* @return {?}
*/
visualizeSingleValue() {
if (this.value && this.value[this.treeNodeTitleKey]) {
/** @type {?} */
const valueText = this.value[this.treeNodeTitleKey];
this.renderer.setAttribute(this.selectHost.nativeElement, 'value', valueText);
}
else {
this.emptyInput();
}
}
/**
* @return {?}
*/
emptyInput() {
this.renderer.setAttribute(this.selectHost.nativeElement, 'value', '');
}
/**
* @return {?}
*/
selectedValue() {
return this.value;
}
/**
* @param {?} popperState
* @return {?}
*/
responsePopperChange(popperState) {
if (popperState && this.searchable) {
this.focusSearchInput();
}
}
/**
* @private
* @return {?}
*/
focusSearchInput() {
if (this.searchInput.nativeElement) {
this.searchInput.nativeElement.focus();
}
}
/**
* @param {?} searchString
* @return {?}
*/
search(searchString) {
/** @type {?} */
const searchRes = this.tree.treeFactory.searchTree(searchString, true);
if (typeof searchRes === 'boolean') {
this.noRecord = searchRes;
}
else if (Array.isArray(searchRes)) {
this.noRecord = searchRes.every((/**
* @param {?} res
* @return {?}
*/
res => !res));
}
this.popper.update();
}
/**
* @private
* @return {?}
*/
registerSearchListener() {
this.searchInputModel.valueChanges.pipe(debounceTime(500), distinctUntilChanged()).subscribe((/**
* @param {?} searchString
* @return {?}
*/
searchString => {
this.search(searchString);
}));
}
/**
* @private
* @return {?}
*/
scrollToSelected() {
if (this.multiple) {
return;
}
/** @type {?} */
const selectedNode = this.optionsContainer.nativeElement.querySelector('.tree-node.operable-tree-node.selected');
/** @type {?} */
const scrollableContainer = this.optionsContainer.nativeElement.parentNode;
if (!selectedNode || !scrollableContainer) {
return;
}
/** @type {?} */
const scrollOffset = selectedNode.offsetTop;
scrollableContainer.scrollTo({ top: (scrollOffset - scrollableContainer.scrollTop) });
}
/**
* @return {?}
*/
clearValue() {
if (this.treeData && this.treeData.length > 0 && !this.disabled && !this.multiple && !!this.selectedValue) {
this.tree.treeFactory.deactivateAllNodes();
this.currentActiveNode = null;
this.value = null;
this.emitEvents();
}
}
/**
* @return {?}
*/
onNodeToggled() {
if (this.popper) {
this.popper.update();
}
}
}
TreeSelectComponent.decorators = [
{ type: Component, args: [{
selector: 'd-tree-select',
template: "<div class=\"devui-tree-select\">\r\n <popper-component [(open)]=\"isOpen\" [fluidPopper]=\"!width\" (openChange)=\"responsePopperChange($event)\" [appendTo]=\"appendTo\" #popper>\r\n <input\r\n #selectHost\r\n class=\"devui-select-input devui-input devui-form-control devui-tree-select-input\"\r\n (click)=\"toggle()\"\r\n [placeholder]=\"placeholder\"\r\n autocomplete=\"off\"\r\n [disabled]=\"disabled\"\r\n readonly\r\n popper-activator\r\n />\r\n <div popper-prepend class=\"devui-tree-select devui-search-container\" *ngIf=\"searchable\">\r\n <input class=\"devui-input\" [(ngModel)]=\"searchString\" #searchInputModel=\"ngModel\" #searchInput />\r\n </div>\r\n <div class=\"devui-tree-select devui-options-container\" #optionsContainer popper-container [ngStyle]=\"{ width: width }\">\r\n <d-operable-tree\r\n #tree\r\n [style.display]=\"treeData && treeData.length > 0 && !noRecord ? 'block' : 'none'\"\r\n [tree]=\"treeData\"\r\n [treeNodeIdKey]=\"treeNodeIdKey\"\r\n [treeNodeChildrenKey]=\"treeNodeChildrenKey\"\r\n [checkboxDisabledKey]=\"disabledKey\"\r\n [checkboxInput]=\"checkboxInput\"\r\n [checkable]=\"multiple\"\r\n [canActivateNode]=\"!multiple\"\r\n [canActivateParentNode]=\"!leafOnly\"\r\n (nodeChecked)=\"onOperableNodeChecked($event)\"\r\n (nodeSelected)=\"onOperableNodeSelected($event)\"\r\n (nodeToggled)=\"onNodeToggled()\"\r\n [iconParentOpen]=\"iconParentOpen\"\r\n [iconParentClose]=\"iconParentClose\"\r\n [iconLeaf]=\"iconLeaf\"\r\n [treeNodeTitleKey]=\"treeNodeTitleKey\"\r\n [iconTemplatePosition]=\"iconTemplatePosition\"\r\n class=\"devui-tree\"\r\n >\r\n <ng-template *ngIf=\"iconTemplateInput || iconTemplatePassThrough\" #iconTemplate let-node=\"node\">\r\n <ng-template [ngTemplateOutlet]=\"iconTemplateInput || iconTemplatePassThrough\" [ngTemplateOutletContext]=\"{ node: node }\">\r\n </ng-template>\r\n </ng-template>\r\n </d-operable-tree>\r\n <div *ngIf=\"!treeData || treeData.length <= 0\" class=\"devui-no-data-tip\">\r\n {{ i18nCommonText?.noData }}\r\n </div>\r\n <div *ngIf=\"noRecord\" class=\"devui-no-data-tip\">\r\n {{ i18nCommonText?.noRecordsFound }}\r\n </div>\r\n </div>\r\n </popper-component>\r\n <div\r\n [ngClass]=\"{ disabled: disabled, clear: allowClear }\"\r\n (click)=\"$event.stopPropagation(); $event.preventDefault(); clearValue()\"\r\n ></div>\r\n <span class=\"devui-select-chevron-icon\" [class.open]=\"isOpen\" [ngClass]=\"{ disabled: disabled, clear: allowClear }\">\r\n <svg width=\"14px\" height=\"14px\" viewBox=\"0 0 16 16\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g id=\"chevron_down\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n <polygon id=\"chevron_down\" points=\"4.5 5 8 8.76923077 11.5 5 13 6.61538462 8 12 3 6.61538462\"></polygon>\r\n </g>\r\n </svg>\r\n </span>\r\n</div>\r\n",
exportAs: 'select',
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef((/**
* @return {?}
*/
() => TreeSelectComponent)),
multi: true
}
],
styles: [".devui-tree-select{position:relative;width:100%}.devui-tree-select input.devui-select-input{cursor:pointer;display:inline-block;width:100%;color:#252b3a;text-overflow:ellipsis}.devui-tree-select input.devui-select-input.devui-tree-select-input{padding:5px 2em 5px 10px}.devui-tree-select:hover .clear{position:absolute;height:14px;width:14px;right:12px;top:calc((100% - 14px)/ 2);cursor:pointer}.devui-tree-select:hover .clear::after,.devui-tree-select:hover .clear::before{position:absolute;content:'';height:14px;width:1px;background-color:#252b3a;left:50%}.devui-tree-select:hover .clear::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.devui-tree-select:hover .clear::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.devui-tree-select:hover .clear:hover::after,.devui-tree-select:hover .clear:hover::before{background-color:#252b3a}.devui-tree-select .devui-select-chevron-icon{right:12px;top:calc((100% - 14px)/ 2);position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}.devui-tree-select .devui-select-chevron-icon svg{-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.devui-tree-select .devui-select-chevron-icon.open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.devui-tree-select .devui-select-chevron-icon.clear{opacity:0}.devui-tree-select .devui-select-chevron-icon.disabled{opacity:.3}.devui-tree-select .devui-select-chevron-icon ::ng-deep g{fill:#252b3a}.devui-tree-select:not(:hover) .devui-select-chevron-icon:not(.disabled){opacity:1;-webkit-transition:opacity .1s linear;transition:opacity .1s linear}.devui-tree-select.devui-options-container{width:100%;color:#252b3a;padding:5px 0}.devui-tree-select.devui-options-container .devui-tree ::ng-deep .devui-tree-node.devui-operable-tree-node .devui-tree-node__content{margin-left:10px}.devui-tree-select.devui-options-container .devui-tree ::ng-deep .devui-tree-node.devui-operable-tree-node .active{background-color:transparent}.devui-tree-select.devui-options-container .devui-tree ::ng-deep .devui-tree-node.devui-operable-tree-node.selected{position:relative;-webkit-width:-webkit-fit-content;-moz-width:-moz-fit-content;width:fit-content;min-width:calc(100% - 1.2em)}.devui-tree-select.devui-options-container .devui-tree ::ng-deep .devui-tree-node.devui-operable-tree-node.selected::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:#f2f5fc;z-index:-1}.devui-tree-select.devui-options-container .devui-no-data-tip{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:not-allowed;padding:5px 12px;opacity:.3}.devui-tree-select.devui-search-container{padding:5px}:host{display:inline-block;width:100%}"]
}] }
];
/** @nocollapse */
TreeSelectComponent.ctorParameters = () => [
{ type: Renderer2 },
{ type: ChangeDetectorRef },
{ type: I18nService }
];
TreeSelectComponent.propDecorators = {
allowClear: [{ type: Input }],
treeData: [{ type: Input }],
placeholder: [{ type: Input }],
disabled: [{ type: Input }],
expandTree: [{ type: Input }],
multiple: [{ type: Input }],
treeNodeIdKey: [{ type: Input }],
treeNodeChildrenKey: [{ type: Input }],
disabledKey: [{ type: Input }],
leafOnly: [{ type: Input }],
delimiter: [{ type: Input }],
iconParentOpen: [{ type: Input }],
iconParentClose: [{ type: Input }],
iconLeaf: [{ type: Input }],
closeOnNodeSelected: [{ type: Input }],
width: [{ type: Input }],
searchable: [{ type: Input }],
appendTo: [{ type: Input }],
treeNodeTitleKey: [{ type: Input }],
allowUnselect: [{ type: Input }],
iconTemplatePosition: [{ type: Input }],
iconTemplateInput: [{ type: Input }],
selectHost: [{ type: ViewChild, args: ['selectHost', { static: true },] }],
optionsContainer: [{ type: ViewChild, args: ['optionsContainer', { static: true },] }],
tree: [{ type: ViewChild, args: ['tree', { static: true },] }],
searchInput: [{ type: ViewChild, args: ['searchInput', { static: false },] }],
searchInputModel: [{ type: ViewChild, args: ['searchInputModel', { static: false },] }],
popper: [{ type: ViewChild, args: ['popper', { static: true },] }],
iconTemplatePassThrough: [{ type: ContentChild, args: ['iconTemplate', { static: false },] }],
valueChanged: [{ type: Output }],
readyEvent: [{ type: Input }]
};
if (false) {
/** @type {?} */
TreeSelectComponent.prototype.placeholder;
/** @type {?} */
TreeSelectComponent.prototype.disabled;
/** @type {?} */
TreeSelectComponent.prototype.expandTree;
/** @type {?} */
TreeSelectComponent.prototype.multiple;
/** @type {?} */
TreeSelectComponent.prototype.treeNodeIdKey;
/** @type {?} */
TreeSelectComponent.prototype.treeNodeChildrenKey;
/** @type {?} */
TreeSelectComponent.prototype.disabledKey;
/** @type {?} */
TreeSelectComponent.prototype.leafOnly;
/** @type {?} */
TreeSelectComponent.prototype.delimiter;
/** @type {?} */
TreeSelectComponent.prototype.iconParentOpen;
/** @type {?} */
TreeSelectComponent.prototype.iconParentClose;
/** @type {?} */
TreeSelectComponent.prototype.iconLeaf;
/** @type {?} */
TreeSelectComponent.prototype.closeOnNodeSelected;
/** @type {?} */
TreeSelectComponent.prototype.width;
/** @type {?} */
TreeSelectComponent.prototype.searchable;
/** @type {?} */
TreeSelectComponent.prototype.appendTo;
/** @type {?} */
TreeSelectComponent.prototype.treeNodeTitleKey;
/** @type {?} */
TreeSelectComponent.prototype.allowUnselect;
/** @type {?} */
TreeSelectComponent.prototype.iconTemplatePosition;
/** @type {?} */
TreeSelectComponent.prototype.iconTemplateInput;
/** @type {?} */
TreeSelectComponent.prototype.selectHost;
/** @type {?} */
TreeSelectComponent.prototype.optionsContainer;
/** @type {?} */
TreeSelectComponent.prototype.tree;
/** @type {?} */
TreeSelectComponent.prototype.searchInput;
/** @type {?} */
TreeSelectComponent.prototype.searchInputModel;
/** @type {?} */
TreeSelectComponent.prototype.popper;
/** @type {?} */
TreeSelectComponent.prototype.iconTemplatePassThrough;
/** @type {?} */
TreeSelectComponent.prototype.valueChanged;
/** @type {?} */
TreeSelectComponent.prototype.checkboxInput;
/** @type {?} */
TreeSelectComponent.prototype._treeData;
/** @type {?} */
TreeSelectComponent.prototype.value;
/** @type {?} */
TreeSelectComponent.prototype.currentActiveNode;
/** @type {?} */
TreeSelectComponent.prototype.searchString;
/** @type {?} */
TreeSelectComponent.prototype.i18nCommonText;
/** @type {?} */
TreeSelectComponent.prototype.i18nSubscription;
/** @type {?} */
TreeSelectComponent.prototype.noRecord;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype._isOpen;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype._sourceTree;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype._allowClear;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype.timer;
/** @type {?} */
TreeSelectComponent.prototype.readyEvent;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype.onChange;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype.onTouch;
/**
* @type {?}
* @protected
*/
TreeSelectComponent.prototype.renderer;
/**
* @type {?}
* @protected
*/
TreeSelectComponent.prototype.changeDetectorRef;
/**
* @type {?}
* @private
*/
TreeSelectComponent.prototype.i18n;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZGV2dWkvdHJlZS1zZWxlY3QvIiwic291cmNlcyI6WyJ0cmVlLXNlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVQsU0FBUyxFQUNULFdBQVcsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUE2QixxQkFBcUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRixPQUFPLFlBQVksTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEUsT0FBTyxFQUFFLFdBQVcsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFpQjNELE1BQU0sT0FBTyxtQkFBbUI7Ozs7OztJQTZCOUIsWUFDWSxRQUFtQixFQUNuQixpQkFBb0MsRUFDdEMsSUFBaUI7UUFGZixhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ25CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDdEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUlsQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUNyQix3QkFBbUIsR0FBRyxVQUFVLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxVQUFVLENBQUM7UUFDekIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1CQUFjLEdBQVcsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUNyRCxvQkFBZSxHQUFXLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFDdkQsYUFBUSxHQUFXLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDekMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFVBQUssR0FBVyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLHFCQUFnQixHQUFHLE9BQU8sQ0FBQztRQUMzQixrQkFBYSxHQUFHLElBQUksQ0FBQztRQVdwQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFNUMsY0FBUyxHQUFxQixFQUFFLENBQUM7UUFHakMsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFHNUIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNULFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFJaEIsZUFBVTs7OztRQUFHLENBQUMsVUFBK0IsRUFBRSxFQUFFO1FBQzFELENBQUMsRUFBQTtRQUVPLGFBQVE7Ozs7UUFBRyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFDO1FBQzVCLFlBQU87OztRQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBQztJQWhEN0IsQ0FBQzs7Ozs7SUFqQ0QsSUFBYSxVQUFVLENBQUMsVUFBVTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUNoQyxDQUFDOzs7O0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1RyxDQUFDOzs7OztJQUVELElBQWEsUUFBUSxDQUFDLFFBQVE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7O0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Ozs7SUFFRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQzs7Ozs7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLO1FBQ2QsSUFBSSxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7O0lBeURELGVBQWU7UUFDYixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7SUFDSCxDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxPQUFzQjtJQUNsQyxDQUFDOzs7O0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNyQztJQUNILENBQUM7Ozs7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7O0lBRUQsZ0JBQWdCLENBQUMsRUFBTztRQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7OztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7Ozs7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs7OztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxzREFBc0Q7UUFDdEQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUFFOztjQUN2QyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSztRQUM1QixJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVU7OztRQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksUUFBUSxFQUFFO1lBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FBRTtJQUMvQyxDQUFDOzs7OztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNyRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDcEMsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7SUFFTyxjQUFjLENBQUMsUUFBUTtRQUM3QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxRQUFRLENBQUMsR0FBRzs7OztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDO1NBQ3hEO2FBQU0sSUFBSSxRQUFRLFlBQVksTUFBTSxFQUFFO1lBQ3JDLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDckQsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2FBQzlGO1lBQ0QsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDOzs7Ozs7O0lBRU8sV0FBVyxDQUFDLFFBQWEsRUFBRSxVQUFVLEdBQUcsS0FBSztRQUNuRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDM0IsT0FBTyxRQUFRLENBQUMsR0FBRzs7OztZQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUMsQ0FBQztTQUNqRTthQUFNLElBQUksUUFBUSxFQUFFOztnQkFDZix1QkFBdUIsR0FBRyxLQUFLO1lBQ25DLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRTtnQkFDckQsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDbEQsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUN0RyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2pCLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztpQkFDOUc7YUFDRjtZQUNELElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7O3NCQUN6QyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQzNDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTs7MEJBQ1gsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO29CQUNqRCxRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDMUIsUUFBUSxDQUFDLFNBQVMsR0FBRyxlQUFlLElBQUksdUJBQXVCLENBQUM7b0JBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsZUFBZSxJQUFJLHVCQUF1QixFQUFFOzs4QkFDM0QsWUFBWSxHQUFHLEVBQUU7d0JBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDaEUsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDdEUsQ0FBQyxtQkFBQSxJQUFJLENBQUMsS0FBSyxFQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7cUJBQzFDO2lCQUNGO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO29CQUMzQixRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzlDLElBQUksUUFBUSxDQUFDLFFBQVEsRUFBRTt3QkFDckIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztxQkFDbkM7aUJBQ0Y7YUFDRjtZQUVELE9BQU8sUUFBUSxDQUFDO1NBQ2pCO0lBQ0gsQ0FBQzs7Ozs7O0lBRU8sWUFBWSxDQUFDLFVBQWU7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzlDLHNDQUFzQztZQUN0QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRzs7OztZQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1RTthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDeEY7SUFDSCxDQUFDOzs7Ozs7SUFFTyxpQkFBaUIsQ0FBQyxTQUFzQjs7Y0FDeEMsd0JBQXdCLEdBQUcsU0FBUyxDQUFDLE1BQU07Ozs7UUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxNQUFNOztjQUNwRSxvQkFBb0IsR0FBRyxTQUFTLENBQUMsTUFBTTs7OztRQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFDLENBQUMsTUFBTTtRQUN2RixPQUFPO1lBQ0wsd0JBQXdCLEdBQUcsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssd0JBQXdCO1lBQzdFLG9CQUFvQixHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLHdCQUF3QjtTQUN4RSxDQUFDO0lBQ0osQ0FBQzs7Ozs7O0lBRU8sV0FBVyxDQUFDLFFBQW9CO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7Ozs7SUFFRCxxQkFBcUIsQ0FBQyxhQUEwQjs7Y0FDeEMsc0JBQXNCOzs7O1FBQUcsQ0FBQyxjQUFjLEVBQUUsRUFBRTtZQUNoRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEIsY0FBYyxDQUFDLE1BQU07Ozs7Z0JBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUMsR0FBRzs7OztnQkFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQztnQkFDMUUsY0FBYyxDQUFDLEdBQUc7Ozs7Z0JBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQTtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7O0lBRUQsc0JBQXNCLENBQUMsWUFBdUI7UUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUMvQyxPQUFPO2FBQ1I7WUFDRCxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzFDLHNDQUFzQztnQkFDdEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7b0JBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2lCQUNyQjthQUNGO2lCQUFNO2dCQUNMLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztvQkFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQ25CO3FCQUFNO29CQUNMLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztvQkFDbEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7d0JBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7cUJBQUU7aUJBQ3ZEO2FBQ0Y7WUFFRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs7O0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDOzs7O0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztTQUMvQjthQUFNO1lBQ0wsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7SUFDSCxDQUFDOzs7O0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTs7a0JBQ2hDLGFBQWEsR0FBRyxtQkFBQSxJQUFJLENBQUMsYUFBYSxFQUFFLEVBQVM7O2tCQUM3QyxTQUFTLEdBQUcsYUFBYSxDQUFDLEdBQUc7Ozs7WUFBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3ZGLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUMvRTthQUFNO1lBQ0wsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQzs7OztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTs7a0JBQzdDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztZQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUM7U0FDL0U7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7Ozs7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Ozs7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Ozs7O0lBRUQsb0JBQW9CLENBQUMsV0FBZ0I7UUFDbkMsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7Ozs7O0lBRU8sZ0JBQWdCO1FBQ3RCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEM7SUFDSCxDQUFDOzs7OztJQUVELE1BQU0sQ0FBQyxZQUFZOztjQUNYLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztRQUN0RSxJQUFJLE9BQU8sU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztTQUMzQjthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLOzs7O1lBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN2QixDQUFDOzs7OztJQUVPLHNCQUFzQjtRQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDckMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixvQkFBb0IsRUFBRSxDQUN2QixDQUFDLFNBQVM7Ozs7UUFBQyxZQUFZLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVCLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFFTyxnQkFBZ0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQUUsT0FBTztTQUFFOztjQUN4QixZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsd0NBQXdDLENBQUM7O2NBQzFHLG1CQUFtQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsVUFBVTtRQUMxRSxJQUFJLENBQUMsWUFBWSxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFBRSxPQUFPO1NBQUU7O2NBQ2hELFlBQVksR0FBRyxZQUFZLENBQUMsU0FBUztRQUMzQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxZQUFZLEdBQUcsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7Ozs7SUFDRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3pHLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOzs7O0lBRUQsYUFBYTtRQUNYLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDOzs7WUF4V0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxlQUFlO2dCQUN6Qix1a0dBQTJDO2dCQUUzQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVOzs7d0JBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLEVBQUM7d0JBQ2xELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGOzthQUNGOzs7O1lBeEJDLFNBQVM7WUFYVCxpQkFBaUI7WUFvQlYsV0FBVzs7O3lCQWtCakIsS0FBSzt1QkFRTCxLQUFLOzBCQTJCTCxLQUFLO3VCQUNMLEtBQUs7eUJBQ0wsS0FBSzt1QkFDTCxLQUFLOzRCQUNMLEtBQUs7a0NBQ0wsS0FBSzswQkFDTCxLQUFLO3VCQUNMLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLOzhCQUNMLEtBQUs7dUJBQ0wsS0FBSztrQ0FDTCxLQUFLO29CQUNMLEtBQUs7eUJBQ0wsS0FBSzt1QkFDTCxLQUFLOytCQUNMLEtBQUs7NEJBQ0wsS0FBSzttQ0FDTCxLQUFLO2dDQUNMLEtBQUs7eUJBQ0wsU0FBUyxTQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7K0JBQ3hDLFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7bUJBQzlDLFNBQVMsU0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzBCQUNsQyxTQUFTLFNBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTsrQkFDMUMsU0FBUyxTQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtxQkFDL0MsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7c0NBQ3BDLFlBQVksU0FBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOzJCQUU5QyxNQUFNO3lCQWNOLEtBQUs7Ozs7SUExQ04sMENBQTBCOztJQUMxQix1Q0FBMEI7O0lBQzFCLHlDQUE0Qjs7SUFDNUIsdUNBQTBCOztJQUMxQiw0Q0FBOEI7O0lBQzlCLGtEQUEwQzs7SUFDMUMsMENBQWtDOztJQUNsQyx1Q0FBMEI7O0lBQzFCLHdDQUEwQjs7SUFDMUIsNkNBQThEOztJQUM5RCw4Q0FBZ0U7O0lBQ2hFLHVDQUFrRDs7SUFDbEQsa0RBQW9DOztJQUNwQyxvQ0FBOEI7O0lBQzlCLHlDQUE0Qjs7SUFDNUIsdUNBQTJCOztJQUMzQiwrQ0FBb0M7O0lBQ3BDLDRDQUE4Qjs7SUFDOUIsbURBQXNDOztJQUN0QyxnREFBNkM7O0lBQzdDLHlDQUFrRTs7SUFDbEUsK0NBQThFOztJQUM5RSxtQ0FBaUU7O0lBQ2pFLDBDQUF5RDs7SUFDekQsK0NBQW1FOztJQUNuRSxxQ0FBOEM7O0lBQzlDLHNEQUF5RTs7SUFFekUsMkNBQTRDOztJQUM1Qyw0Q0FBOEI7O0lBQzlCLHdDQUFpQzs7SUFDakMsb0NBQTJCOztJQUMzQixnREFBNkI7O0lBQzdCLDJDQUE0Qjs7SUFDNUIsNkNBQXdDOztJQUN4QywrQ0FBK0I7O0lBQy9CLHVDQUFpQjs7Ozs7SUFDakIsc0NBQXdCOzs7OztJQUN4QiwwQ0FBeUI7Ozs7O0lBQ3pCLDBDQUE2Qjs7Ozs7SUFDN0Isb0NBQW1COztJQUVuQix5Q0FDQzs7Ozs7SUFFRCx1Q0FBb0M7Ozs7O0lBQ3BDLHNDQUE2Qjs7Ozs7SUFwRDNCLHVDQUE2Qjs7Ozs7SUFDN0IsZ0RBQThDOzs7OztJQUM5QyxtQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBSZW5kZXJlcjIsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgVGVtcGxhdGVSZWZcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBJQ2hlY2tib3hJbnB1dCwgSVRyZWVJdGVtLCBPcGVyYWJsZVRyZWVDb21wb25lbnQgfSBmcm9tICduZy1kZXZ1aS90cmVlJztcclxuaW1wb3J0IERlZmF1bHRJY29ucyBmcm9tICcuL3RyZWUtZGVmYXVsdC1pY29ucyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEkxOG5TZXJ2aWNlLCBJMThuSW50ZXJmYWNlIH0gZnJvbSAnbmctZGV2dWkvaTE4bic7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkLXRyZWUtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW2AuL3RyZWUtc2VsZWN0LmNvbXBvbmVudC5zY3NzYF0sXHJcbiAgZXhwb3J0QXM6ICdzZWxlY3QnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gVHJlZVNlbGVjdENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9XHJcbiAgXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRyZWVTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgc2V0IGFsbG93Q2xlYXIoYWxsb3dDbGVhcikge1xyXG4gICAgdGhpcy5fYWxsb3dDbGVhciA9IGFsbG93Q2xlYXI7XHJcbiAgfVxyXG5cclxuICBnZXQgYWxsb3dDbGVhcigpIHtcclxuICAgIHJldHVybiAhdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLmFsbG93VW5zZWxlY3QgJiYgdGhpcy5fYWxsb3dDbGVhciAmJiAhIXRoaXMuc2VsZWN0ZWRWYWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCB0cmVlRGF0YSh0cmVlRGF0YSkge1xyXG4gICAgdGhpcy5fc291cmNlVHJlZSA9IHRyZWVEYXRhO1xyXG4gICAgdGhpcy5yZWZyZXNoVHJlZSh0cmVlRGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXQgdHJlZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fdHJlZURhdGE7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNPcGVuKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzT3BlbjtcclxuICB9XHJcblxyXG4gIHNldCBpc09wZW4odmFsdWUpIHtcclxuICAgIGlmICh0aGlzLl9pc09wZW4gIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lzT3BlbiA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXHJcbiAgICBwcm90ZWN0ZWQgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBpMThuOiBJMThuU2VydmljZVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGV4cGFuZFRyZWUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRyZWVOb2RlSWRLZXkgPSAnaWQnO1xyXG4gIEBJbnB1dCgpIHRyZWVOb2RlQ2hpbGRyZW5LZXkgPSAnY2hpbGRyZW4nO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkS2V5ID0gJ2Rpc2FibGVkJztcclxuICBASW5wdXQoKSBsZWFmT25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRlbGltaXRlciA9ICcsICc7XHJcbiAgQElucHV0KCkgaWNvblBhcmVudE9wZW46IHN0cmluZyA9IERlZmF1bHRJY29ucy5pY29uUGFyZW50T3BlbjtcclxuICBASW5wdXQoKSBpY29uUGFyZW50Q2xvc2U6IHN0cmluZyA9IERlZmF1bHRJY29ucy5pY29uUGFyZW50Q2xvc2U7XHJcbiAgQElucHV0KCkgaWNvbkxlYWY6IHN0cmluZyA9IERlZmF1bHRJY29ucy5pY29uTGVhZjtcclxuICBASW5wdXQoKSBjbG9zZU9uTm9kZVNlbGVjdGVkID0gdHJ1ZTtcclxuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWFyY2hhYmxlID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXBwZW5kVG8gPSAnYm9keSc7XHJcbiAgQElucHV0KCkgdHJlZU5vZGVUaXRsZUtleSA9ICd0aXRsZSc7XHJcbiAgQElucHV0KCkgYWxsb3dVbnNlbGVjdCA9IHRydWU7XHJcbiAgQElucHV0KCkgaWNvblRlbXBsYXRlUG9zaXRpb246IHN0cmluZztcclxuICBASW5wdXQoKSBpY29uVGVtcGxhdGVJbnB1dDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdzZWxlY3RIb3N0JywgeyBzdGF0aWM6IHRydWUgfSkgc2VsZWN0SG9zdDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdvcHRpb25zQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSkgb3B0aW9uc0NvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCd0cmVlJywgeyBzdGF0aWM6IHRydWUgfSkgdHJlZTogT3BlcmFibGVUcmVlQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlYXJjaElucHV0O1xyXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0TW9kZWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VhcmNoSW5wdXRNb2RlbDtcclxuICBAVmlld0NoaWxkKCdwb3BwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBwb3BwZXI7XHJcbiAgQENvbnRlbnRDaGlsZCgnaWNvblRlbXBsYXRlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGljb25UZW1wbGF0ZVBhc3NUaHJvdWdoO1xyXG5cclxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGNoZWNrYm94SW5wdXQ6IElDaGVja2JveElucHV0O1xyXG4gIF90cmVlRGF0YTogQXJyYXk8SVRyZWVJdGVtPiA9IFtdO1xyXG4gIHZhbHVlOiBvYmplY3QgfCBBcnJheTxhbnk+O1xyXG4gIGN1cnJlbnRBY3RpdmVOb2RlOiBJVHJlZUl0ZW07XHJcbiAgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBudWxsO1xyXG4gIGkxOG5Db21tb25UZXh0OiBJMThuSW50ZXJmYWNlWydjb21tb24nXTtcclxuICBpMThuU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgbm9SZWNvcmQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc09wZW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zb3VyY2VUcmVlID0gW107XHJcbiAgcHJpdmF0ZSBfYWxsb3dDbGVhcjogYm9vbGVhbjtcclxuICBwcml2YXRlIHRpbWVyOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIHJlYWR5RXZlbnQgPSAodHJlZVNlbGVjdDogVHJlZVNlbGVjdENvbXBvbmVudCkgPT4ge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9IChfOiBhbnkpID0+IG51bGw7XHJcbiAgcHJpdmF0ZSBvblRvdWNoID0gKCkgPT4gbnVsbDtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB0aGlzLnJlYWR5RXZlbnQodGhpcyk7XHJcbiAgICBpZiAodGhpcy5zZWFyY2hhYmxlKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJTZWFyY2hMaXN0ZW5lcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pMThuU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuaTE4blN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEkxOG5UZXh0KCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIH