solar-ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
774 lines • 64.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import * as tslib_1 from "tslib";
import { BACKSPACE } from '@angular/cdk/keycodes';
import { ConnectionPositionPair, Overlay, OverlayConfig } from '@angular/cdk/overlay';
import { TemplatePortal } from '@angular/cdk/portal';
import { DOCUMENT } from '@angular/common';
import { forwardRef, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, Renderer2, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { merge, of as observableOf } from 'rxjs';
import { filter, tap } from 'rxjs/operators';
import { selectDropDownAnimation } from '../core/animation/select-dropdown-animations';
import { selectTagAnimation } from '../core/animation/select-tag-animations';
import { InputBoolean } from '../core/util/convert';
import { NzTreeComponent } from '../tree/nz-tree.component';
var NzTreeSelectComponent = /** @class */ (function () {
function NzTreeSelectComponent(document, // tslint:disable-line:no-any
// tslint:disable-line:no-any
element, renderer, cdr, overlay, viewContainerRef) {
this.document = document;
this.element = element;
this.renderer = renderer;
this.cdr = cdr;
this.overlay = overlay;
this.viewContainerRef = viewContainerRef;
this.nodes = [];
this.isComposing = false;
this.isDestroy = true;
this.inputValue = '';
this.dropDownPosition = 'bottom';
this.selectedNodes = [];
this.value = [];
this.nzAllowClear = true;
this.nzShowExpand = true;
this.nzDropdownMatchSelectWidth = true;
this.nzCheckable = false;
this.nzShowSearch = false;
this.nzDisabled = false;
this.nzShowLine = false;
this.nzAsyncData = false;
this.nzMultiple = false;
this.nzDefaultExpandAll = false;
this.nzOpen = false;
this.nzSize = 'default';
this.nzPlaceHolder = '';
this.nzDefaultExpandedKeys = [];
this.nzDisplayWith = function (node) { return node.title; };
this.nzOpenChange = new EventEmitter();
this.nzCleared = new EventEmitter();
this.nzRemoved = new EventEmitter();
this.nzExpandChange = new EventEmitter();
this.nzTreeClick = new EventEmitter();
this.nzTreeCheckBoxChange = new EventEmitter();
this.onTouched = function () { return null; };
}
Object.defineProperty(NzTreeSelectComponent.prototype, "nzNodes", {
get: /**
* @return {?}
*/
function () {
return this.nodes;
},
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
this.nodes = value;
setTimeout(function () { return _this.updateSelectedNodes(); }, 0);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeSelectComponent.prototype, "placeHolderDisplay", {
get: /**
* @return {?}
*/
function () {
return this.inputValue || this.isComposing || this.selectedNodes.length ? 'none' : 'block';
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeSelectComponent.prototype, "searchDisplay", {
get: /**
* @return {?}
*/
function () {
return this.nzOpen ? 'block' : 'none';
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeSelectComponent.prototype, "isMultiple", {
get: /**
* @return {?}
*/
function () {
return this.nzMultiple || this.nzCheckable;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NzTreeSelectComponent.prototype, "selectedValueDisplay", {
get: /**
* @return {?}
*/
function () {
/** @type {?} */
var showSelectedValue = false;
/** @type {?} */
var opacity = 1;
if (!this.nzShowSearch) {
showSelectedValue = true;
}
else {
if (this.nzOpen) {
showSelectedValue = !(this.inputValue || this.isComposing);
if (showSelectedValue) {
opacity = 0.4;
}
}
else {
showSelectedValue = true;
}
}
return {
display: showSelectedValue ? 'block' : 'none',
opacity: "" + opacity
};
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.trigger = /**
* @return {?}
*/
function () {
if (this.nzDisabled || (!this.nzDisabled && this.nzOpen)) {
this.closeDropDown();
}
else {
this.openDropdown();
if (this.nzShowSearch) {
this.focusOnInput();
}
}
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.openDropdown = /**
* @return {?}
*/
function () {
if (!this.nzDisabled) {
this.nzOpen = true;
this.nzOpenChange.emit(this.nzOpen);
this.updateCdkConnectedOverlayStatus();
this.updatePosition();
this.updateDropDownClassMap();
}
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.closeDropDown = /**
* @return {?}
*/
function () {
this.onTouched();
this.nzOpen = false;
this.nzOpenChange.emit(this.nzOpen);
this.updateCdkConnectedOverlayStatus();
this.cdr.markForCheck();
};
/**
* @param {?} e
* @return {?}
*/
NzTreeSelectComponent.prototype.onKeyDownInput = /**
* @param {?} e
* @return {?}
*/
function (e) {
/** @type {?} */
var keyCode = e.keyCode;
/** @type {?} */
var eventTarget = /** @type {?} */ (e.target);
if (this.isMultiple &&
!eventTarget.value &&
keyCode === BACKSPACE) {
e.preventDefault();
if (this.selectedNodes.length) {
this.removeSelected(this.selectedNodes[this.selectedNodes.length - 1]);
}
}
};
/**
* @param {?} value
* @return {?}
*/
NzTreeSelectComponent.prototype.setInputValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
this.inputValue = value;
this.updateInputWidth();
this.updatePosition();
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.detachOverlay = /**
* @return {?}
*/
function () {
if (this.overlayRef && this.overlayRef.hasAttached()) {
this.overlayRef.detach();
this.overlayBackdropClickSubscription.unsubscribe();
this.onTouched();
this.nzOpen = false;
this.nzOpenChange.emit(this.nzOpen);
}
};
/**
* @param {?} node
* @param {?=} emit
* @param {?=} event
* @return {?}
*/
NzTreeSelectComponent.prototype.removeSelected = /**
* @param {?} node
* @param {?=} emit
* @param {?=} event
* @return {?}
*/
function (node, emit, event) {
if (emit === void 0) { emit = true; }
node.isSelected = false;
node.isChecked = false;
if (this.nzCheckable) {
this.treeRef.nzTreeService.conduct(node);
this.treeRef.nzTreeService.setCheckedNodeList(node);
}
else {
this.treeRef.nzTreeService.setSelectedNodeList(node, this.nzMultiple);
}
if (emit) {
this.nzRemoved.emit(node);
}
// Do not trigger the popup
if (event && event.stopPropagation) {
event.stopPropagation();
}
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.focusOnInput = /**
* @return {?}
*/
function () {
var _this = this;
setTimeout(function () {
if (_this.inputElement) {
_this.inputElement.nativeElement.focus();
}
});
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.attachOverlay = /**
* @return {?}
*/
function () {
this.portal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);
this.overlayRef = this.overlay.create(this.getOverlayConfig());
this.overlayRef.attach(this.portal);
this.cdr.detectChanges();
this.overlayBackdropClickSubscription = this.subscribeOverlayBackdropClick();
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.getOverlayConfig = /**
* @return {?}
*/
function () {
var _a;
/** @type {?} */
var overlayWidth = this.treeSelect.nativeElement.getBoundingClientRect().width;
return new OverlayConfig((_a = {
positionStrategy: this.getOverlayPosition(),
scrollStrategy: this.overlay.scrollStrategies.reposition()
},
_a[this.nzDropdownMatchSelectWidth ? 'width' : 'minWidth'] = overlayWidth,
_a.hasBackdrop = true,
_a));
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.getOverlayPosition = /**
* @return {?}
*/
function () {
/** @type {?} */
var positions = [
new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }),
new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' })
];
this.positionStrategy = this.overlay.position()
.flexibleConnectedTo(this.treeSelect)
.withPositions(positions)
.withFlexibleDimensions(false)
.withPush(false);
return this.positionStrategy;
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.subscribeOverlayBackdropClick = /**
* @return {?}
*/
function () {
var _this = this;
return this.overlayRef.backdropClick()
.subscribe(function () {
_this.closeDropDown();
});
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.subscribeSelectionChange = /**
* @return {?}
*/
function () {
var _this = this;
return merge(this.nzTreeClick.pipe(tap(function (event) {
/** @type {?} */
var node = event.node;
if (_this.nzCheckable && !node.isDisabled && !node.isDisableCheckbox) {
node.isChecked = !node.isChecked;
_this.treeRef.nzTreeService.conduct(node);
_this.treeRef.nzTreeService.setCheckedNodeList(node);
}
if (_this.nzCheckable) {
node.isSelected = false;
}
}), filter(function (event) {
return _this.nzCheckable ? (!event.node.isDisabled && !event.node.isDisableCheckbox) : !event.node.isDisabled;
})), this.nzCheckable ? this.nzTreeCheckBoxChange : observableOf(), this.nzCleared, this.nzRemoved).subscribe(function () {
_this.updateSelectedNodes();
/** @type {?} */
var value = _this.selectedNodes.map(function (node) { return node.key; });
_this.value = tslib_1.__spread(value);
if (_this.nzShowSearch) {
_this.inputValue = '';
}
if (_this.isMultiple) {
_this.onChange(value);
if (_this.nzShowSearch) {
_this.focusOnInput();
}
}
else {
_this.closeDropDown();
_this.onChange(value.length ? value[0] : null);
}
});
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.updateSelectedNodes = /**
* @return {?}
*/
function () {
if (this.treeRef) {
this.selectedNodes = tslib_1.__spread((this.nzCheckable ? this.treeRef.getCheckedNodeList() : this.treeRef.getSelectedNodeList()));
}
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.updatePosition = /**
* @return {?}
*/
function () {
this.overlayRef.updatePosition();
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.updateInputWidth = /**
* @return {?}
*/
function () {
if (this.isMultiple && this.inputElement) {
if (this.inputValue || this.isComposing) {
this.renderer.setStyle(this.inputElement.nativeElement, 'width', this.inputElement.nativeElement.scrollWidth + "px");
}
else {
this.renderer.removeStyle(this.inputElement.nativeElement, 'width');
}
}
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.onClearSelection = /**
* @return {?}
*/
function () {
var _this = this;
this.selectedNodes.forEach(function (node) {
_this.removeSelected(node, false);
});
this.nzCleared.emit();
this.closeDropDown();
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.updateDropDownClassMap = /**
* @return {?}
*/
function () {
var _a, _b;
if (this.treeRef && !this.treeRef.nzTreeClass['ant-select-tree']) {
this.treeRef.nzTreeClass = tslib_1.__assign({}, this.treeRef.nzTreeClass, (_a = {}, _a['ant-select-tree'] = true, _a));
}
this.dropDownClassMap = (_b = {},
_b['ant-select-dropdown'] = true,
_b['ant-select-tree-dropdown'] = true,
_b["ant-select-dropdown--single"] = !this.nzMultiple,
_b["ant-select-dropdown--multiple"] = this.nzMultiple,
_b["ant-select-dropdown-placement-bottomLeft"] = this.dropDownPosition === 'bottom',
_b["ant-select-dropdown-placement-topLeft"] = this.dropDownPosition === 'top',
_b);
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.updateCdkConnectedOverlayStatus = /**
* @return {?}
*/
function () {
/** @type {?} */
var overlayWidth = this.treeSelect.nativeElement.getBoundingClientRect().width;
if (this.nzDropdownMatchSelectWidth) {
this.overlayRef.updateSize({ width: overlayWidth });
}
else {
this.overlayRef.updateSize({ minWidth: overlayWidth });
}
if (this.nzOpen) {
this.renderer.removeStyle(this.overlayRef.backdropElement, 'display');
}
else {
this.renderer.setStyle(this.overlayRef.backdropElement, 'display', 'none');
}
};
/**
* @param {?} value
* @return {?}
*/
NzTreeSelectComponent.prototype.writeValue = /**
* @param {?} value
* @return {?}
*/
function (value) {
var _this = this;
if (value) {
if (this.isMultiple && Array.isArray(value)) {
this.value = value;
}
else {
this.value = [(/** @type {?} */ (value))];
}
this.updateSelectedNodes();
}
else {
this.value = [];
this.selectedNodes.forEach(function (node) {
_this.removeSelected(node, false);
});
this.selectedNodes = [];
}
this.cdr.markForCheck();
};
/**
* @param {?} fn
* @return {?}
*/
NzTreeSelectComponent.prototype.registerOnChange = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
this.onChange = fn;
};
/**
* @param {?} fn
* @return {?}
*/
NzTreeSelectComponent.prototype.registerOnTouched = /**
* @param {?} fn
* @return {?}
*/
function (fn) {
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.isDestroy = false;
this.selectionChangeSubscription = this.subscribeSelectionChange();
Promise.resolve().then(function () {
_this.updateDropDownClassMap();
_this.updateCdkConnectedOverlayStatus();
});
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.isDestroy = true;
this.detachOverlay();
this.selectionChangeSubscription.unsubscribe();
this.overlayBackdropClickSubscription.unsubscribe();
};
/**
* @return {?}
*/
NzTreeSelectComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.attachOverlay();
};
/**
* @param {?} isDisabled
* @return {?}
*/
NzTreeSelectComponent.prototype.setDisabledState = /**
* @param {?} isDisabled
* @return {?}
*/
function (isDisabled) {
this.nzDisabled = isDisabled;
this.closeDropDown();
};
NzTreeSelectComponent.decorators = [
{ type: Component, args: [{
selector: 'nz-tree-select',
animations: [selectDropDownAnimation, selectTagAnimation],
template: "<ng-template #inputTemplate>\n <input\n #inputElement\n autocomplete=\"off\"\n class=\"ant-select-search__field\"\n (compositionstart)=\"isComposing = true\"\n (compositionend)=\"isComposing = false\"\n (keydown)=\"onKeyDownInput($event)\"\n [ngModel]=\"inputValue\"\n (ngModelChange)=\"setInputValue($event)\"\n [disabled]=\"nzDisabled\">\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <div [ngClass]=\"dropDownClassMap\" [@selectDropDownAnimation]=\"nzOpen ? dropDownPosition : 'hidden'\"\n [ngStyle]=\"nzDropdownStyle\">\n <nz-tree\n #treeRef\n [nzData]=\"nzNodes\"\n [nzMultiple]=\"nzMultiple\"\n [nzSearchValue]=\"inputValue\"\n [nzCheckable]=\"nzCheckable\"\n [nzAsyncData]=\"nzAsyncData\"\n [nzShowExpand]=\"nzShowExpand\"\n [nzShowLine]=\"nzShowLine\"\n [nzExpandAll]=\"nzDefaultExpandAll\"\n [nzExpandedKeys]=\"nzDefaultExpandedKeys\"\n [nzCheckedKeys]=\"nzCheckable ? value : []\"\n [nzSelectedKeys]=\"!nzCheckable ? value : []\"\n (nzExpandChange)=\"nzExpandChange.emit($event)\"\n (nzClick)=\"nzTreeClick.emit($event)\"\n (nzCheckedKeysChange)=\"updateSelectedNodes()\"\n (nzSelectedKeysChange)=\"updateSelectedNodes()\"\n (nzCheckBoxChange)=\"nzTreeCheckBoxChange.emit($event)\">\n </nz-tree>\n </div>\n</ng-template>\n\n<div\n #treeSelect\n class=\"ant-select-selection\"\n [class.ant-select-selection--single]=\"!isMultiple\"\n [class.ant-select-selection--multiple]=\"isMultiple\"\n tabindex=\"0\">\n <ng-container *ngIf=\"!isMultiple\">\n <div class=\"ant-select-selection__rendered\">\n <div\n *ngIf=\"nzPlaceHolder && selectedNodes.length === 0\"\n [style.display]=\"placeHolderDisplay\"\n class=\"ant-select-selection__placeholder\">\n {{ nzPlaceHolder }}\n </div>\n\n <div\n *ngIf=\"selectedNodes.length === 1\"\n class=\"ant-select-selection-selected-value\"\n [attr.title]=\"nzDisplayWith(selectedNodes[0])\"\n [ngStyle]=\"selectedValueDisplay\">\n {{ nzDisplayWith(selectedNodes[0]) }}\n </div>\n\n <div\n *ngIf=\"nzShowSearch\"\n [style.display]=\"searchDisplay\"\n class=\"ant-select-search ant-select-search--inline\">\n <div class=\"ant-select-search__field__wrap\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n <span class=\"ant-select-search__field__mirror\">{{inputValue}} </span>\n </div>\n </div>\n\n </div>\n </ng-container>\n <ng-container *ngIf=\"isMultiple\">\n <ul class=\"ant-select-selection__rendered\">\n <div\n *ngIf=\"nzPlaceHolder && selectedNodes.length === 0\"\n [style.display]=\"placeHolderDisplay\"\n class=\"ant-select-selection__placeholder\">\n {{ nzPlaceHolder }}\n </div>\n <ng-container *ngFor=\"let node of selectedNodes\">\n <li\n [@selectTagAnimation]\n (@selectTagAnimation.done)=\"updatePosition()\"\n [attr.title]=\"nzDisplayWith(node)\"\n [class.ant-select-selection__choice__disabled]=\"node.isDisabled\"\n class=\"ant-select-selection__choice\">\n <span *ngIf=\"!node.isDisabled\" class=\"ant-select-selection__choice__remove\" (click)=\"removeSelected(node, true, $event)\">\n <i nz-icon type=\"close\" class=\"ant-select-remove-icon\"></i>\n </span>\n <span class=\"ant-select-selection__choice__content\">{{ nzDisplayWith(node) }}</span>\n </li>\n </ng-container>\n <li class=\"ant-select-search ant-select-search--inline\">\n <ng-template [ngTemplateOutlet]=\"inputTemplate\"></ng-template>\n </li>\n </ul>\n </ng-container>\n <span *ngIf=\"nzAllowClear\" class=\"ant-select-selection__clear\" (click)=\"onClearSelection()\">\n <i nz-icon type=\"close-circle\" class=\"ant-select-clear-icon\" theme=\"fill\"></i>\n </span>\n <span *ngIf=\"!isMultiple\" class=\"ant-select-arrow\">\n <i nz-icon type=\"down\" class=\"ant-select-arrow-icon\"></i>\n </span>\n</div>",
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(function () { return NzTreeSelectComponent; }),
multi: true
}
],
host: {
'[class.ant-select]': 'true',
'[class.ant-select-lg]': 'nzSize==="large"',
'[class.ant-select-sm]': 'nzSize==="small"',
'[class.ant-select-enabled]': '!nzDisabled',
'[class.ant-select-disabled]': 'nzDisabled',
'[class.ant-select-allow-clear]': 'nzAllowClear',
'[class.ant-select-open]': 'nzOpen'
},
styles: ["\n .ant-select-dropdown {\n top: 100%;\n left: 0;\n position: relative;\n width: 100%;\n margin-top: 4px;\n margin-bottom: 4px;\n overflow: auto;\n }\n "]
}] }
];
/** @nocollapse */
NzTreeSelectComponent.ctorParameters = function () { return [
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },
{ type: ElementRef, decorators: [{ type: Optional }] },
{ type: Renderer2 },
{ type: ChangeDetectorRef },
{ type: Overlay },
{ type: ViewContainerRef }
]; };
NzTreeSelectComponent.propDecorators = {
nzAllowClear: [{ type: Input }],
nzShowExpand: [{ type: Input }],
nzDropdownMatchSelectWidth: [{ type: Input }],
nzCheckable: [{ type: Input }],
nzShowSearch: [{ type: Input }],
nzDisabled: [{ type: Input }],
nzShowLine: [{ type: Input }],
nzAsyncData: [{ type: Input }],
nzMultiple: [{ type: Input }],
nzDefaultExpandAll: [{ type: Input }],
nzOpen: [{ type: Input }],
nzSize: [{ type: Input }],
nzPlaceHolder: [{ type: Input }],
nzDropdownStyle: [{ type: Input }],
nzDefaultExpandedKeys: [{ type: Input }],
nzDisplayWith: [{ type: Input }],
nzOpenChange: [{ type: Output }],
nzCleared: [{ type: Output }],
nzRemoved: [{ type: Output }],
nzExpandChange: [{ type: Output }],
nzTreeClick: [{ type: Output }],
nzTreeCheckBoxChange: [{ type: Output }],
nzNodes: [{ type: Input }],
inputElement: [{ type: ViewChild, args: ['inputElement',] }],
treeSelect: [{ type: ViewChild, args: ['treeSelect',] }],
dropdownTemplate: [{ type: ViewChild, args: ['dropdownTemplate', { read: TemplateRef },] }],
treeRef: [{ type: ViewChild, args: ['treeRef',] }],
trigger: [{ type: HostListener, args: ['click',] }]
};
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzAllowClear", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzShowExpand", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzDropdownMatchSelectWidth", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzCheckable", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzShowSearch", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzDisabled", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzShowLine", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzAsyncData", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzMultiple", void 0);
tslib_1.__decorate([
InputBoolean(),
tslib_1.__metadata("design:type", Object)
], NzTreeSelectComponent.prototype, "nzDefaultExpandAll", void 0);
return NzTreeSelectComponent;
}());
export { NzTreeSelectComponent };
function NzTreeSelectComponent_tsickle_Closure_declarations() {
/** @type {?} */
NzTreeSelectComponent.prototype.nodes;
/** @type {?} */
NzTreeSelectComponent.prototype.isComposing;
/** @type {?} */
NzTreeSelectComponent.prototype.isDestroy;
/** @type {?} */
NzTreeSelectComponent.prototype.inputValue;
/** @type {?} */
NzTreeSelectComponent.prototype.dropDownClassMap;
/** @type {?} */
NzTreeSelectComponent.prototype.dropDownPosition;
/** @type {?} */
NzTreeSelectComponent.prototype.overlayRef;
/** @type {?} */
NzTreeSelectComponent.prototype.portal;
/** @type {?} */
NzTreeSelectComponent.prototype.positionStrategy;
/** @type {?} */
NzTreeSelectComponent.prototype.overlayBackdropClickSubscription;
/** @type {?} */
NzTreeSelectComponent.prototype.selectionChangeSubscription;
/** @type {?} */
NzTreeSelectComponent.prototype.selectedNodes;
/** @type {?} */
NzTreeSelectComponent.prototype.value;
/** @type {?} */
NzTreeSelectComponent.prototype.nzAllowClear;
/** @type {?} */
NzTreeSelectComponent.prototype.nzShowExpand;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDropdownMatchSelectWidth;
/** @type {?} */
NzTreeSelectComponent.prototype.nzCheckable;
/** @type {?} */
NzTreeSelectComponent.prototype.nzShowSearch;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDisabled;
/** @type {?} */
NzTreeSelectComponent.prototype.nzShowLine;
/** @type {?} */
NzTreeSelectComponent.prototype.nzAsyncData;
/** @type {?} */
NzTreeSelectComponent.prototype.nzMultiple;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDefaultExpandAll;
/** @type {?} */
NzTreeSelectComponent.prototype.nzOpen;
/** @type {?} */
NzTreeSelectComponent.prototype.nzSize;
/** @type {?} */
NzTreeSelectComponent.prototype.nzPlaceHolder;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDropdownStyle;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDefaultExpandedKeys;
/** @type {?} */
NzTreeSelectComponent.prototype.nzDisplayWith;
/** @type {?} */
NzTreeSelectComponent.prototype.nzOpenChange;
/** @type {?} */
NzTreeSelectComponent.prototype.nzCleared;
/** @type {?} */
NzTreeSelectComponent.prototype.nzRemoved;
/** @type {?} */
NzTreeSelectComponent.prototype.nzExpandChange;
/** @type {?} */
NzTreeSelectComponent.prototype.nzTreeClick;
/** @type {?} */
NzTreeSelectComponent.prototype.nzTreeCheckBoxChange;
/** @type {?} */
NzTreeSelectComponent.prototype.inputElement;
/** @type {?} */
NzTreeSelectComponent.prototype.treeSelect;
/** @type {?} */
NzTreeSelectComponent.prototype.dropdownTemplate;
/** @type {?} */
NzTreeSelectComponent.prototype.treeRef;
/** @type {?} */
NzTreeSelectComponent.prototype.onChange;
/** @type {?} */
NzTreeSelectComponent.prototype.onTouched;
/** @type {?} */
NzTreeSelectComponent.prototype.document;
/** @type {?} */
NzTreeSelectComponent.prototype.element;
/** @type {?} */
NzTreeSelectComponent.prototype.renderer;
/** @type {?} */
NzTreeSelectComponent.prototype.cdr;
/** @type {?} */
NzTreeSelectComponent.prototype.overlay;
/** @type {?} */
NzTreeSelectComponent.prototype.viewContainerRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnotdHJlZS1zZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc29sYXItbmctem9ycm8tYW50ZC8iLCJzb3VyY2VzIjpbInRyZWUtc2VsZWN0L256LXRyZWUtc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsc0JBQXNCLEVBRXRCLE9BQU8sRUFDUCxhQUFhLEVBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQ0wsS0FBSyxFQUNMLEVBQUUsSUFBSSxZQUFZLEVBRW5CLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztJQTZIMUQsK0JBQ3dDLFFBQWEs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QUFTLFNBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFOzBCQUNuRCxTQUFTLFNBQUMsU0FBUzswQkErQ25CLFlBQVksU0FBQyxPQUFPOzs7UUFuRlgsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7O1FBQ2QsWUFBWSxFQUFFOzs7Z0NBeEcxQjs7U0E4RWEscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQkFDS1NQQUNFIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsXG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgUG9zaXRpb25TdHJhdGVneVxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgZm9yd2FyZFJlZixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIG1lcmdlLFxuICBvZiBhcyBvYnNlcnZhYmxlT2YsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBzZWxlY3REcm9wRG93bkFuaW1hdGlvbiB9IGZyb20gJy4uL2NvcmUvYW5pbWF0aW9uL3NlbGVjdC1kcm9wZG93bi1hbmltYXRpb25zJztcbmltcG9ydCB7IHNlbGVjdFRhZ0FuaW1hdGlvbiB9IGZyb20gJy4uL2NvcmUvYW5pbWF0aW9uL3NlbGVjdC10YWctYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi9jb3JlL3V0aWwvY29udmVydCc7XG5pbXBvcnQgeyBOekZvcm1hdEVtaXRFdmVudCB9IGZyb20gJy4uL3RyZWUvaW50ZXJmYWNlJztcbmltcG9ydCB7IE56VHJlZU5vZGUgfSBmcm9tICcuLi90cmVlL256LXRyZWUtbm9kZSc7XG5pbXBvcnQgeyBOelRyZWVDb21wb25lbnQgfSBmcm9tICcuLi90cmVlL256LXRyZWUuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yICAgOiAnbnotdHJlZS1zZWxlY3QnLFxuICBhbmltYXRpb25zIDogWyBzZWxlY3REcm9wRG93bkFuaW1hdGlvbiwgc2VsZWN0VGFnQW5pbWF0aW9uIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9uei10cmVlLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVycyAgOiBbXG4gICAge1xuICAgICAgcHJvdmlkZSAgICA6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTnpUcmVlU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpICAgICAgOiB0cnVlXG4gICAgfVxuICBdLFxuICBob3N0ICAgICAgIDoge1xuICAgICdbY2xhc3MuYW50LXNlbGVjdF0nICAgICAgICAgICAgOiAndHJ1ZScsXG4gICAgJ1tjbGFzcy5hbnQtc2VsZWN0LWxnXScgICAgICAgICA6ICduelNpemU9PT1cImxhcmdlXCInLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC1zbV0nICAgICAgICAgOiAnbnpTaXplPT09XCJzbWFsbFwiJyxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtZW5hYmxlZF0nICAgIDogJyFuekRpc2FibGVkJyxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtZGlzYWJsZWRdJyAgIDogJ256RGlzYWJsZWQnLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC1hbGxvdy1jbGVhcl0nOiAnbnpBbGxvd0NsZWFyJyxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3Qtb3Blbl0nICAgICAgIDogJ256T3BlbidcbiAgfSxcbiAgc3R5bGVzICAgICA6IFsgYFxuICAgIC5hbnQtc2VsZWN0LWRyb3Bkb3duIHtcbiAgICAgIHRvcDogMTAwJTtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgIH1cbiAgYCBdXG59KVxuZXhwb3J0IGNsYXNzIE56VHJlZVNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBub2RlcyA9IFtdO1xuICBpc0NvbXBvc2luZyA9IGZhbHNlO1xuICBpc0Rlc3Ryb3kgPSB0cnVlO1xuICBpbnB1dFZhbHVlID0gJyc7XG4gIGRyb3BEb3duQ2xhc3NNYXA6IHsgWyBjbGFzc05hbWU6IHN0cmluZyBdOiBib29sZWFuIH07XG4gIGRyb3BEb3duUG9zaXRpb246ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJyA9ICdib3R0b20nO1xuICBvdmVybGF5UmVmOiBPdmVybGF5UmVmO1xuICBwb3J0YWw6IFRlbXBsYXRlUG9ydGFsPHt9PjtcbiAgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuICBvdmVybGF5QmFja2Ryb3BDbGlja1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBzZWxlY3Rpb25DaGFuZ2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBzZWxlY3RlZE5vZGVzOiBOelRyZWVOb2RlW10gPSBbXTtcbiAgdmFsdWU6IHN0cmluZ1tdID0gW107XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56QWxsb3dDbGVhciA9IHRydWU7XG4gIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSBuelNob3dFeHBhbmQgPSB0cnVlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpEcm9wZG93bk1hdGNoU2VsZWN0V2lkdGggPSB0cnVlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpDaGVja2FibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd1NlYXJjaCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpEaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpTaG93TGluZSA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpBc3luY0RhdGEgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56TXVsdGlwbGUgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56RGVmYXVsdEV4cGFuZEFsbCA9IGZhbHNlO1xuICBASW5wdXQoKSBuek9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbnpTaXplID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBuelBsYWNlSG9sZGVyID0gJyc7XG4gIEBJbnB1dCgpIG56RHJvcGRvd25TdHlsZTogeyBbIGtleTogc3RyaW5nIF06IHN0cmluZzsgfTtcbiAgQElucHV0KCkgbnpEZWZhdWx0RXhwYW5kZWRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICBASW5wdXQoKSBuekRpc3BsYXlXaXRoOiAobm9kZTogTnpUcmVlTm9kZSkgPT4gc3RyaW5nID0gKG5vZGU6IE56VHJlZU5vZGUpID0+IG5vZGUudGl0bGU7XG4gIEBPdXRwdXQoKSBuek9wZW5DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBuekNsZWFyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBuelJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE56VHJlZU5vZGU+KCk7XG4gIEBPdXRwdXQoKSBuekV4cGFuZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBuelRyZWVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBuelRyZWVDaGVja0JveENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8TnpGb3JtYXRFbWl0RXZlbnQ+KCk7XG5cbiAgQElucHV0KClcbiAgc2V0IG56Tm9kZXModmFsdWU6IE56VHJlZU5vZGVbXSkge1xuICAgIHRoaXMubm9kZXMgPSB2YWx1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlU2VsZWN0ZWROb2RlcygpLCAwKTtcbiAgfVxuXG4gIGdldCBuek5vZGVzKCk6IE56VHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZXM7XG4gIH1cblxuICBAVmlld0NoaWxkKCdpbnB1dEVsZW1lbnQnKSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVTZWxlY3QnKSB0cmVlU2VsZWN0OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KSBkcm9wZG93blRlbXBsYXRlO1xuICBAVmlld0NoaWxkKCd0cmVlUmVmJykgdHJlZVJlZjogTnpUcmVlQ29tcG9uZW50O1xuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKSA9PiB2b2lkO1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiBudWxsO1xuXG4gIGdldCBwbGFjZUhvbGRlckRpc3BsYXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dFZhbHVlIHx8IHRoaXMuaXNDb21wb3NpbmcgfHwgdGhpcy5zZWxlY3RlZE5vZGVzLmxlbmd0aCA/ICdub25lJyA6ICdibG9jayc7XG4gIH1cblxuICBnZXQgc2VhcmNoRGlzcGxheSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm56T3BlbiA/ICdibG9jaycgOiAnbm9uZSc7XG4gIH1cblxuICBnZXQgaXNNdWx0aXBsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uek11bHRpcGxlIHx8IHRoaXMubnpDaGVja2FibGU7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWRWYWx1ZURpc3BsYXkoKTogeyBbIGtleTogc3RyaW5nIF06IHN0cmluZyB9IHtcbiAgICBsZXQgc2hvd1NlbGVjdGVkVmFsdWUgPSBmYWxzZTtcbiAgICBsZXQgb3BhY2l0eSA9IDE7XG4gICAgaWYgKCF0aGlzLm56U2hvd1NlYXJjaCkge1xuICAgICAgc2hvd1NlbGVjdGVkVmFsdWUgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5uek9wZW4pIHtcbiAgICAgICAgc2hvd1NlbGVjdGVkVmFsdWUgPSAhKHRoaXMuaW5wdXRWYWx1ZSB8fCB0aGlzLmlzQ29tcG9zaW5nKTtcbiAgICAgICAgaWYgKHNob3dTZWxlY3RlZFZhbHVlKSB7XG4gICAgICAgICAgb3BhY2l0eSA9IDAuNDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hvd1NlbGVjdGVkVmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZGlzcGxheTogc2hvd1NlbGVjdGVkVmFsdWUgPyAnYmxvY2snIDogJ25vbmUnLFxuICAgICAgb3BhY2l0eTogYCR7b3BhY2l0eX1gXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSwgLy8gdHNsaW50OmRpc2FibGUtbGluZTpuby1hbnlcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycpXG4gIHRyaWdnZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubnpEaXNhYmxlZCB8fCAoIXRoaXMubnpEaXNhYmxlZCAmJiB0aGlzLm56T3BlbikpIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wRG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgaWYgKHRoaXMubnpTaG93U2VhcmNoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNPbklucHV0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5uekRpc2FibGVkKSB7XG4gICAgICB0aGlzLm56T3BlbiA9IHRydWU7XG4gICAgICB0aGlzLm56T3BlbkNoYW5nZS5lbWl0KHRoaXMubnpPcGVuKTtcbiAgICAgIHRoaXMudXBkYXRlQ2RrQ29ubmVjdGVkT3ZlcmxheVN0YXR1cygpO1xuICAgICAgdGhpcy51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgdGhpcy51cGRhdGVEcm9wRG93bkNsYXNzTWFwKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VEcm9wRG93bigpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMubnpPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5uek9wZW5DaGFuZ2UuZW1pdCh0aGlzLm56T3Blbik7XG4gICAgdGhpcy51cGRhdGVDZGtDb25uZWN0ZWRPdmVybGF5U3RhdHVzKCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBvbktleURvd25JbnB1dChlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGUua2V5Q29kZTtcbiAgICBjb25zdCBldmVudFRhcmdldCA9IGUudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5pc011bHRpcGxlICYmXG4gICAgICAhZXZlbnRUYXJnZXQudmFsdWUgJiZcbiAgICAgIGtleUNvZGUgPT09IEJBQ0tTUEFDRVxuICAgICkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZCh0aGlzLnNlbGVjdGVkTm9kZXNbIHRoaXMuc2VsZWN0ZWROb2Rlcy5sZW5ndGggLSAxIF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldElucHV0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlSW5wdXRXaWR0aCgpO1xuICAgIHRoaXMudXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIGRldGFjaE92ZXJsYXkoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3ZlcmxheVJlZiAmJiB0aGlzLm92ZXJsYXlSZWYuaGFzQXR0YWNoZWQoKSkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLmRldGFjaCgpO1xuICAgICAgdGhpcy5vdmVybGF5QmFja2Ryb3BDbGlja1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMubnpPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLm56T3BlbkNoYW5nZS5lbWl0KHRoaXMubnpPcGVuKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZChub2RlOiBOelRyZWVOb2RlLCBlbWl0OiBib29sZWFuID0gdHJ1ZSwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgbm9kZS5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgbm9kZS5pc0NoZWNrZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5uekNoZWNrYWJsZSkge1xuICAgICAgdGhpcy50cmVlUmVmLm56VHJlZVNlcnZpY2UuY29uZHVjdChub2RlKTtcbiAgICAgIHRoaXMudHJlZVJlZi5uelRyZWVTZXJ2aWNlLnNldENoZWNrZWROb2RlTGlzdChub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmVlUmVmLm56VHJlZVNlcnZpY2Uuc2V0U2VsZWN0ZWROb2RlTGlzdChub2RlLCB0aGlzLm56TXVsdGlwbGUpO1xuICAgIH1cbiAgICBpZiAoZW1pdCkge1xuICAgICAgdGhpcy5uelJlbW92ZWQuZW1pdChub2RlKTtcbiAgICB9XG5cbiAgICAvLyBEbyBub3QgdHJpZ2dlciB0aGUgcG9wdXBcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBmb2N1c09uSW5wdXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXR0YWNoT3ZlcmxheSgpOiB2b2lkIHtcbiAgICB0aGlzLnBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLmRyb3Bkb3duVGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh0aGlzLmdldE92ZXJsYXlDb25maWcoKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCh0aGlzLnBvcnRhbCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRoaXMub3ZlcmxheUJhY2tkcm9wQ2xpY2tTdWJzY3JpcHRpb24gPSB0aGlzLnN1YnNjcmliZU92ZXJsYXlCYWNrZHJvcENsaWNrKCk7XG4gIH1cblxuICBnZXRPdmVybGF5Q29uZmlnKCk6IE92ZXJsYXlDb25maWcge1xuICAgIGNvbnN0IG92ZXJsYXlXaWR0aCA9IHRoaXMudHJlZVNlbGVjdC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoO1xuICAgIHJldHVybiBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmdldE92ZXJsYXlQb3NpdGlvbigpLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3kgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpLFxuICAgICAgWyB0aGlzLm56RHJvcGRvd25NYXRjaFNlbGVjdFdpZHRoID8gJ3dpZHRoJyA6ICdtaW5XaWR0aCcgXTogb3ZlcmxheVdpZHRoLFxuICAgICAgaGFzQmFja2Ryb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgZ2V0T3ZlcmxheVBvc2l0aW9uKCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xuICAgIGNvbnN0IHBvc2l0aW9ucyA9IFtcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogJ3N0YXJ0Jywgb3JpZ2luWTogJ2JvdHRvbScgfSwgeyBvdmVybGF5WDogJ3N0YXJ0Jywgb3ZlcmxheVk6ICd0b3AnIH0pLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiAnc3RhcnQnLCBvcmlnaW5ZOiAndG9wJyB9LCB7IG92ZXJsYXlYOiAnc3RhcnQnLCBvdmVybGF5WTogJ2JvdHRvbScgfSlcbiAgICBdO1xuICAgIHRoaXMucG9zaXRpb25TdHJhdGVneSA9IHRoaXMub3ZlcmxheS5wb3NpdGlvbigpXG4gICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy50cmVlU2VsZWN0KVxuICAgIC53aXRoUG9zaXRpb25zKHBvc2l0aW9ucylcbiAgICAud2l0aEZsZXhpYmxlRGltZW5zaW9ucyhmYWxzZSlcbiAgICAud2l0aFB1c2goZmFsc2UpO1xuICAgIHJldHVybiB0aGlzLnBvc2l0aW9uU3RyYXRlZ3k7XG4gIH1cblxuICBzdWJzY3JpYmVPdmVybGF5QmFja2Ryb3BDbGljaygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlSZWYuYmFja2Ryb3BDbGljaygpXG4gICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlRHJvcERvd24oKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN1YnNjcmliZVNlbGVjdGlvbkNoYW5nZSgpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiBtZXJnZShcbiAgICAgIHRoaXMubnpUcmVlQ2xpY2sucGlwZShcbiAgICAgICAgdGFwKChldmVudDogTnpGb3JtYXRFbWl0RXZlbnQpID0+IHtcbiAgICAgICAgICBjb25zdCBub2RlID0gZXZlbnQubm9kZTtcbiAgICAgICAgICBpZiAodGhpcy5uekNoZWNrYWJsZSAmJiAhbm9kZS5pc0Rpc2FibGVkICYmICFub2RlLmlzRGlzYWJsZUNoZWNrYm94KSB7XG4gICAgICAgICAgICBub2RlLmlzQ2hlY2tlZCA9ICFub2RlLmlzQ2hlY2tlZDtcbiAgICAgICAgICAgIHRoaXMudHJlZVJlZi5uelRyZWVTZXJ2aWNlLmNvbmR1Y3Qobm9kZSk7XG4gICAgICAgICAgICB0aGlzLnRyZWVSZWYubnpUcmVlU2VydmljZS5zZXRDaGVja2VkTm9kZUxpc3Qobm9kZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLm56Q2hlY2thYmxlKSB7XG4gICAgICAgICAgICBub2RlLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBmaWx0ZXIoKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLm56Q2hlY2thYmxlID8gKCFldmVudC5ub2RlLmlzRGlzYWJsZWQgJiYgIWV2ZW50Lm5vZGUuaXNEaXNhYmxlQ2hlY2tib3gpIDogIWV2ZW50Lm5vZGUuaXNEaXNhYmxlZDtcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICB0aGlzLm56Q2hlY2thYmxlID8gdGhpcy5uelRyZWVDaGVja0JveENoYW5nZSA6IG9ic2VydmFibGVPZigpLFxuICAgICAgdGhpcy5uekNsZWFyZWQsXG4gICAgICB0aGlzLm56UmVtb3ZlZFxuICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWROb2RlcygpO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnNlbGVjdGVkTm9kZXMubWFwKG5vZGUgPT4gbm9kZS5rZXkpO1xuICAgICAgdGhpcy52YWx1ZSA9IFsgLi4udmFsdWUgXTtcbiAgICAgIGlmICh0aGlzLm56U2hvd1NlYXJjaCkge1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzTXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLm56U2hvd1NlYXJjaCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNPbklucHV0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wRG93bigpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlLmxlbmd0aCA/IHZhbHVlWyAwIF0gOiBudWxsKTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWROb2RlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmVlUmVmKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbIC4uLih0aGlzLm56Q2hlY2thYmxlID8gdGhpcy50cmVlUmVmLmdldENoZWNrZWROb2RlTGlzdCgpIDogdGhpcy50cmVlUmVmLmdldFNlbGVjdGVkTm9kZUxpc3QoKSkgXTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlUG9zaXRpb24oKTtcbiAgfVxuXG4gIHVwZGF0ZUlucHV0V2lkdGgoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNNdWx0aXBsZSAmJiB0aGlzLmlucHV0RWxlbWVudCkge1xuICAgICAgaWYgKHRoaXMuaW5wdXRWYWx1ZSB8fCB0aGlzLmlzQ29tcG9zaW5nKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7dGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5zY3JvbGxXaWR0aH1weGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVTdHlsZSh0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNsZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWROb2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZChub2RlLCBmYWxzZSk7XG4gICAgfSk7XG4gICAgdGhpcy5uekNsZWFyZWQuZW1pdCgpO1xuICAgIHRoaXMuY2xvc2VEcm9wRG93bigpO1xuICB9XG5cbiAgdXBkYXRlRHJvcERvd25DbGFzc01hcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50cmVlUmVmICYmICF0aGlzLnRyZWVSZWYubnpUcmVlQ2xhc3NbICdhbnQtc2VsZWN0LXRyZWUnIF0pIHtcbiAgICAgIHRoaXMudHJlZVJlZi5uelRyZWVDbGFzcyA9IHsgLi4udGhpcy50cmVlUmVmLm56VHJlZUNsYXNzLCBbICdhbnQtc2VsZWN0LXRyZWUnIF06IHRydWUgfTtcbiAgICB9XG4gICAgdGhpcy5kcm9wRG93bkNsYXNzTWFwID0ge1xuICAgICAgWyAnYW50LXNlbGVjdC1kcm9wZG93bicgXSAgICAgICAgICAgICAgICAgICAgIDogdHJ1ZSxcbiAgICAgIFsgJ2FudC1zZWxlY3QtdHJlZS1kcm9wZG93bicgXSAgICAgICAgICAgICAgICA6IHRydWUsXG4gICAgICBbIGBhbnQtc2VsZWN0LWRyb3Bkb3duLS1zaW5nbGVgIF0gICAgICAgICAgICAgOiAhdGhpcy5uek11bHRpcGxlLFxuICAgICAgWyBgYW50LXNlbGVjdC1kcm9wZG93bi0tbXVsdGlwbGVgIF0gICAgICAgICAgIDogdGhpcy5uek11bHRpcGxlLFxuICAgICAgWyBgYW50LXNlbGVjdC1kcm9wZG93bi1wbGFjZW1lbnQtYm90dG9tTGVmdGAgXTogdGhpcy5kcm9wRG93blBvc2l0aW9uID09PSAnYm90dG9tJyxcbiAgICAgIFsgYGFudC1zZWxlY3QtZHJvcGRvd24tcGxhY2VtZW50LXRvcExlZnRgIF0gICA6IHRoaXMuZHJvcERvd25Qb3NpdGlvbiA9PT0gJ3RvcCdcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlQ2RrQ29ubmVjdGVkT3ZlcmxheVN0YXR1cygpOiB2b2lkIHtcbiAgICBjb25zdCBvdmVybGF5V2lkdGggPSB0aGlzLnRyZWVTZWxlY3QubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICBpZiAodGhpcy5uekRyb3Bkb3duTWF0Y2hTZWxlY3RXaWR0aCkge1xuICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogb3ZlcmxheVdpZHRoIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm92ZXJsYXlSZWYudXBkYXRlU2l6ZSh7IG1pbldpZHRoOiBvdmVybGF5V2lkdGggfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubnpPcGVuKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKHRoaXMub3ZlcmxheVJlZi5iYWNrZHJvcEVsZW1lbnQsICdkaXNwbGF5Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZ1tdIHwgc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5pc011bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBbICh2YWx1ZSBhcyBzdHJpbmcpIF07XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkTm9kZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgICAgdGhpcy5zZWxlY3RlZE5vZGVzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQobm9kZSwgZmFsc2UpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnNlbGVjdGVkTm9kZXMgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogc3RyaW5nW10gfCBzdHJpbmcpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rlc3Ryb3kgPSBmYWxzZTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZVN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaWJlU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZURyb3BEb3duQ2xhc3NNYXAoKTtcbiAgICAgIHRoaXMudXBkYXRlQ2RrQ29ubmVjdGVkT3ZlcmxheVN0YXR1cygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pc0Rlc3Ryb3kgPSB0cnVlO1xuICAgIHRoaXMuZGV0YWNoT3ZlcmxheSgpO1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vdmVybGF5QmFja2Ryb3BDbGlja1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYXR0YWNoT3ZlcmxheSgpO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5uekRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNsb3NlRHJvcERvd24oKTtcbiAgfVxufVxuIl19