e5core-angular-ui
Version:
e5 Anywhere Angular UI
194 lines • 20.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input, ChangeDetectorRef, Output, EventEmitter } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { UiSearchDefinitionService } from 'e5core-angular-services';
import { FieldDataType } from '../../enums/field-data-type';
import { UiStyleService } from '../../services/ui-style.service';
import { SearchDeliveryService } from '../../services/search-delivery.service';
var E5coreUiSearchFormComponent = /** @class */ (function () {
function E5coreUiSearchFormComponent(style, searchDeliveryService, search, cd) {
this.style = style;
this.searchDeliveryService = searchDeliveryService;
this.search = search;
this.cd = cd;
this.queryChange = new EventEmitter();
}
/**
* @return {?}
*/
E5coreUiSearchFormComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (this.searchForm$ == null) {
console.error('e5core-ui-search-form [searchForm$] must have a BehaviorSubject<SearchFormModel>');
return;
}
if (this.searchDefinitionId) {
this.searchDeliveryService.getSearchDefinition(this.searchForm$, this.searchDefinitionId).subscribe(function (s) {
_this.applyDefaultValues(_this.defaultValues);
}, function (error) {
_this.errorMessage = error.message || "Unable to get data from server.";
console.error(error);
_this.cd.markForCheck();
});
}
else {
console.warn("e5core-ui-search-form searchId is missing. Expecting one later...");
}
this.searchForm$.subscribe(function (searchModel) {
_this.errorMessage = "";
_this.zones = (searchModel) ? searchModel.zones : undefined;
_this.zoneTemplateId = (searchModel && searchModel.zoneTemplateId) ? searchModel.zoneTemplateId.toUpperCase() : "";
_this.cd.markForCheck();
_this.queryChange.emit(_this.createDataSourceQuery(searchModel));
});
};
/**
* @private
* @param {?} model
* @return {?}
*/
E5coreUiSearchFormComponent.prototype.createDataSourceQuery = /**
* @private
* @param {?} model
* @return {?}
*/
function (model) {
/** @type {?} */
var query = null;
if (model && model.properties && model.properties.length > 0) {
query = {
Expressions: model.properties
.filter(function (p) { return p.value; })
.map(function (p) { return (/** @type {?} */ ({
Field: p.propertyId,
Value: p.value
})); })
};
}
return (query);
};
/**
* If there are any default values on the form, then set them.
* @param values the default values to use on the form
*/
/**
* If there are any default values on the form, then set them.
* @private
* @param {?} values the default values to use on the form
* @param {?=} reset
* @return {?}
*/
E5coreUiSearchFormComponent.prototype.applyDefaultValues = /**
* If there are any default values on the form, then set them.
* @private
* @param {?} values the default values to use on the form
* @param {?=} reset
* @return {?}
*/
function (values, reset) {
/** @type {?} */
var searchForm = (/** @type {?} */ (tslib_1.__assign({}, this.searchForm$.getValue())));
/** @type {?} */
var updated = false;
if (reset) {
searchForm.properties.forEach(function (p) {
p.value = undefined;
p.resolvedValue = undefined;
});
updated = true;
}
if (values) {
if (searchForm.properties) {
Object.keys(values).forEach(function (key) {
/** @type {?} */
var property = searchForm.properties.find(function (p) { return p.propertyId == key; });
if (property) {
updated = true;
/** @type {?} */
var value = values[key];
property.value = value; // will be set to undefined if not specified
if (property.fieldDataType != FieldDataType.List && property.fieldDataType != FieldDataType.Lookup) // if it's not a list or lookup
property.resolvedValue = value;
}
});
}
}
if (updated)
this.searchForm$.next(searchForm);
};
/**
* Reset the serch form to the original default values, or clear it.
*/
/**
* Reset the serch form to the original default values, or clear it.
* @return {?}
*/
E5coreUiSearchFormComponent.prototype.reset = /**
* Reset the serch form to the original default values, or clear it.
* @return {?}
*/
function () {
this.applyDefaultValues(this.defaultValues, true /* reset */);
this.cd.markForCheck();
};
E5coreUiSearchFormComponent.decorators = [
{ type: Component, args: [{
selector: 'e5core-ui-search-form',
template: "\n <span *ngIf=\"searchForm$\" [ngSwitch]=\"style.current()\">\n <e5core-ui-search-form-box *ngSwitchCase='0' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-box>\n <e5core-ui-search-form-bootstrap *ngSwitchCase='1' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-bootstrap>\n <e5core-ui-search-form-material *ngSwitchCase='2' [searchForm$]='searchForm$' [zones]='zones' [zoneTemplateId]='zoneTemplateId'></e5core-ui-search-form-material>\n </span>\n <div *ngIf=\"!searchForm$\" class=\"e5core-component-error\"><e5core-ui-search-form> [searchForm$] must have a BehaviorSubject<SearchModel></div>\n <div *ngIf=\"errorMessage\" class=\"e5core-component-error\"><e5core-ui-search-form> error : {{errorMessage}}</div>",
styles: [".e5core-component-error{border-left:5px solid red;background-color:#ffbaba;color:#d8000c;padding:12px;box-sizing:content-box;border-radius:4pt;display:inline-block;font-family:Arial,Helvetica,sans-serif;margin:5pt 0}.e5-component{margin:5pt;border:solid #00f;box-sizing:content-box;padding:5pt}.e5-component .e5-title{color:#00f;font-weight:700}"]
}] }
];
/** @nocollapse */
E5coreUiSearchFormComponent.ctorParameters = function () { return [
{ type: UiStyleService },
{ type: SearchDeliveryService },
{ type: UiSearchDefinitionService },
{ type: ChangeDetectorRef }
]; };
E5coreUiSearchFormComponent.propDecorators = {
searchForm$: [{ type: Input }],
searchDefinitionId: [{ type: Input }],
defaultValues: [{ type: Input }],
queryChange: [{ type: Output }]
};
return E5coreUiSearchFormComponent;
}());
export { E5coreUiSearchFormComponent };
if (false) {
/** @type {?} */
E5coreUiSearchFormComponent.prototype.searchForm$;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.searchDefinitionId;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.defaultValues;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.queryChange;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.zones;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.errorMessage;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.zoneTemplateId;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.style;
/**
* @type {?}
* @private
*/
E5coreUiSearchFormComponent.prototype.searchDeliveryService;
/** @type {?} */
E5coreUiSearchFormComponent.prototype.search;
/**
* @type {?}
* @private
*/
E5coreUiSearchFormComponent.prototype.cd;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlYXJjaC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLXNlYXJjaC1mb3JtL2U1Y29yZS11aS1zZWFyY2gtZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBMkIsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBcUIseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRS9FO0lBd0JDLHFDQUNRLEtBQXFCLEVBQ3BCLHFCQUE0QyxFQUM3QyxNQUFnQyxFQUMvQixFQUFxQjtRQUh0QixVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNwQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzdDLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBQy9CLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBVnBCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUE7SUFXM0QsQ0FBQzs7OztJQUVELDhDQUFROzs7SUFBUjtRQUFBLGlCQTZCQztRQTVCQSxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQztZQUNsRyxPQUFPO1NBQ1A7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZ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bURBQXFCOztJQUNyQixxREFBdUI7O0lBR3RCLDRDQUE0Qjs7Ozs7SUFDNUIsNERBQW9EOztJQUNwRCw2Q0FBdUM7Ozs7O0lBQ3ZDLHlDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVSVNlYXJjaFpvbmVNb2RlbCwgVWlTZWFyY2hEZWZpbml0aW9uU2VydmljZSB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFNlYXJjaEZvcm1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy9zZWFyY2gtZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBGaWVsZERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZmllbGQtZGF0YS10eXBlJztcbmltcG9ydCB7IERhdGFTb3VyY2VRdWVyeSwgUXVlcnlFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZS1xdWVyeSc7XG5pbXBvcnQgeyBVaVN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLXN0eWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VhcmNoRGVsaXZlcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2VhcmNoLWRlbGl2ZXJ5LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdlNWNvcmUtdWktc2VhcmNoLWZvcm0nLFxuXHRzdHlsZVVybHM6IFsnLi8uLi8uLi9jc3MvZGVmYXVsdC5jc3MnXSxcblx0dGVtcGxhdGU6IGBcbiAgPHNwYW4gKm5nSWY9XCJzZWFyY2hGb3JtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgICA8ZTVjb3JlLXVpLXNlYXJjaC1mb3JtLWJveCAqbmdTd2l0Y2hDYXNlPScwJyBbc2VhcmNoRm9ybSRdPSdzZWFyY2hGb3JtJCcgW3pvbmVzXT0nem9uZXMnIFt6b25lVGVtcGxhdGVJZF09J3pvbmVUZW1wbGF0ZUlkJz48L2U1Y29yZS11aS1zZWFyY2gtZm9ybS1ib3g+XG4gICAgPGU1Y29yZS11aS1zZWFyY2gtZm9ybS1ib290c3RyYXAgKm5nU3dpdGNoQ2FzZT0nMScgW3NlYXJjaEZvcm0kXT0nc2VhcmNoRm9ybSQnIFt6b25lc109J3pvbmVzJyBbem9uZVRlbXBsYXRlSWRdPSd6b25lVGVtcGxhdGVJZCc+PC9lNWNvcmUtdWktc2VhcmNoLWZvcm0tYm9vdHN0cmFwPlxuICAgIDxlNWNvcmUtdWktc2VhcmNoLWZvcm0tbWF0ZXJpYWwgKm5nU3dpdGNoQ2FzZT0nMicgW3NlYXJjaEZvcm0kXT0nc2VhcmNoRm9ybSQnIFt6b25lc109J3pvbmVzJyBbem9uZVRlbXBsYXRlSWRdPSd6b25lVGVtcGxhdGVJZCc+PC9lNWNvcmUtdWktc2VhcmNoLWZvcm0tbWF0ZXJpYWw+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIiFzZWFyY2hGb3JtJFwiIGNsYXNzPVwiZTVjb3JlLWNvbXBvbmVudC1lcnJvclwiPiZsdDtlNWNvcmUtdWktc2VhcmNoLWZvcm0mZ3Q7IFtzZWFyY2hGb3JtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0Jmx0O1NlYXJjaE1vZGVsJmd0OzwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCIgY2xhc3M9XCJlNWNvcmUtY29tcG9uZW50LWVycm9yXCI+Jmx0O2U1Y29yZS11aS1zZWFyY2gtZm9ybSZndDsgZXJyb3IgOiB7e2Vycm9yTWVzc2FnZX19PC9kaXY+YCxcblx0Ly9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFNWNvcmVVaVNlYXJjaEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cdEBJbnB1dCgpIHNlYXJjaEZvcm0kOiBCZWhhdmlvclN1YmplY3Q8U2VhcmNoRm9ybU1vZGVsPjtcblx0QElucHV0KCkgc2VhcmNoRGVmaW5pdGlvbklkOiBudW1iZXI7XG5cdEBJbnB1dCgpIGRlZmF1bHRWYWx1ZXM6IHsgW3M6IHN0cmluZ106IHN0cmluZzsgfTtcblx0QE91dHB1dCgpIHF1ZXJ5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRhU291cmNlUXVlcnk+KClcblxuXHR6b25lczogVUlTZWFyY2hab25lTW9kZWxbXTtcblx0ZXJyb3JNZXNzYWdlOiBzdHJpbmc7XG5cdHpvbmVUZW1wbGF0ZUlkOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHVibGljIHN0eWxlOiBVaVN0eWxlU2VydmljZSwgXG5cdFx0cHJpdmF0ZSBzZWFyY2hEZWxpdmVyeVNlcnZpY2U6IFNlYXJjaERlbGl2ZXJ5U2VydmljZSwgXG5cdFx0cHVibGljIHNlYXJjaDpVaVNlYXJjaERlZmluaXRpb25TZXJ2aWNlLFxuXHRcdHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHRpZiAodGhpcy5zZWFyY2hGb3JtJCA9PSBudWxsKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKCdlNWNvcmUtdWktc2VhcmNoLWZvcm0gW3NlYXJjaEZvcm0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3Q8U2VhcmNoRm9ybU1vZGVsPicpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zZWFyY2hEZWZpbml0aW9uSWQpIHtcblx0XHRcdHRoaXMuc2VhcmNoRGVsaXZlcnlTZXJ2aWNlLmdldFNlYXJjaERlZmluaXRpb24odGhpcy5zZWFyY2hGb3JtJCwgdGhpcy5zZWFyY2hEZWZpbml0aW9uSWQpLnN1YnNjcmliZShcblx0XHRcdFx0cyA9PiB7XG5cdFx0XHRcdFx0dGhpcy5hcHBseURlZmF1bHRWYWx1ZXModGhpcy5kZWZhdWx0VmFsdWVzKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZXJyb3IgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZSB8fCBcIlVuYWJsZSB0byBnZXQgZGF0YSBmcm9tIHNlcnZlci5cIjtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zb2xlLndhcm4oXCJlNWNvcmUtdWktc2VhcmNoLWZvcm0gc2VhcmNoSWQgaXMgbWlzc2luZy4gRXhwZWN0aW5nIG9uZSBsYXRlci4uLlwiKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlYXJjaEZvcm0kLnN1YnNjcmliZShcblx0XHRcdHNlYXJjaE1vZGVsID0+IHtcblx0XHRcdFx0dGhpcy5lcnJvck1lc3NhZ2UgPSBcIlwiO1xuXHRcdFx0XHR0aGlzLnpvbmVzID0gKHNlYXJjaE1vZGVsKSA/IHNlYXJjaE1vZGVsLnpvbmVzIDogdW5kZWZpbmVkO1xuXHRcdFx0XHR0aGlzLnpvbmVUZW1wbGF0ZUlkID0gKHNlYXJjaE1vZGVsICYmIHNlYXJjaE1vZGVsLnpvbmVUZW1wbGF0ZUlkKSA/IHNlYXJjaE1vZGVsLnpvbmVUZW1wbGF0ZUlkLnRvVXBwZXJDYXNlKCkgOiBcIlwiO1xuXHRcdFx0XHR0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuXHRcdFx0XHR0aGlzLnF1ZXJ5Q2hhbmdlLmVtaXQodGhpcy5jcmVhdGVEYXRhU291cmNlUXVlcnkoc2VhcmNoTW9kZWwpKTtcblx0XHRcdH1cblx0XHQpXG5cdH1cblxuXHRwcml2YXRlIGNyZWF0ZURhdGFTb3VyY2VRdWVyeShtb2RlbDogU2VhcmNoRm9ybU1vZGVsKTogRGF0YVNvdXJjZVF1ZXJ5IHtcblx0XHRsZXQgcXVlcnk6IERhdGFTb3VyY2VRdWVyeSA9IG51bGw7XG5cdFx0aWYgKG1vZGVsICYmIG1vZGVsLnByb3BlcnRpZXMgJiYgbW9kZWwucHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRxdWVyeSA9IHtcblx0XHRcdFx0RXhwcmVzc2lvbnM6IG1vZGVsLnByb3BlcnRpZXNcblx0XHRcdFx0XHQuZmlsdGVyKHAgPT4gcC52YWx1ZSlcblx0XHRcdFx0XHQubWFwPFF1ZXJ5RXhwcmVzc2lvbj4ocCA9PiA8UXVlcnlFeHByZXNzaW9uPntcblx0XHRcdFx0XHRcdEZpZWxkOiBwLnByb3BlcnR5SWQsXG5cdFx0XHRcdFx0XHRWYWx1ZTogcC52YWx1ZVxuXHRcdFx0XHRcdH0pXG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAocXVlcnkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIElmIHRoZXJlIGFyZSBhbnkgZGVmYXVsdCB2YWx1ZXMgb24gdGhlIGZvcm0sIHRoZW4gc2V0IHRoZW0uXG5cdCAqIEBwYXJhbSB2YWx1ZXMgdGhlIGRlZmF1bHQgdmFsdWVzIHRvIHVzZSBvbiB0aGUgZm9ybVxuXHQgKi9cblx0cHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZXModmFsdWVzOiB7IFtzOiBzdHJpbmddOiBzdHJpbmc7IH0sIHJlc2V0PzogYm9vbGVhbikge1xuXHRcdGxldCBzZWFyY2hGb3JtID0gPFNlYXJjaEZvcm1Nb2RlbD57IC4uLnRoaXMuc2VhcmNoRm9ybSQuZ2V0VmFsdWUoKSB9O1xuXHRcdGxldCB1cGRhdGVkID0gZmFsc2U7XG5cdFx0aWYgKHJlc2V0KSB7XG5cdFx0XHRzZWFyY2hGb3JtLnByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcblx0XHRcdFx0cC52YWx1ZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0cC5yZXNvbHZlZFZhbHVlID0gdW5kZWZpbmVkO1xuXHRcdFx0fSlcblx0XHRcdHVwZGF0ZWQgPSB0cnVlO1xuXHRcdH1cblx0XHRpZiAodmFsdWVzKSB7XG5cdFx0XHRpZiAoc2VhcmNoRm9ybS5wcm9wZXJ0aWVzKSB7XG5cdFx0XHRcdE9iamVjdC5rZXlzKHZhbHVlcykuZm9yRWFjaChrZXkgPT4ge1xuXHRcdFx0XHRcdGxldCBwcm9wZXJ0eSA9IHNlYXJjaEZvcm0ucHJvcGVydGllcy5maW5kKHAgPT4gcC5wcm9wZXJ0eUlkID09IGtleSlcblx0XHRcdFx0XHRpZiAocHJvcGVydHkpIHtcblx0XHRcdFx0XHRcdHVwZGF0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gdmFsdWVzW2tleV1cblx0XHRcdFx0XHRcdHByb3BlcnR5LnZhbHVlID0gdmFsdWU7IC8vIHdpbGwgYmUgc2V0IHRvIHVuZGVmaW5lZCBpZiBub3Qgc3BlY2lmaWVkXG5cdFx0XHRcdFx0XHRpZiAocHJvcGVydHkuZmllbGREYXRhVHlwZSAhPSBGaWVsZERhdGFUeXBlLkxpc3QgJiYgcHJvcGVydHkuZmllbGREYXRhVHlwZSAhPSBGaWVsZERhdGFUeXBlLkxvb2t1cCkgLy8gaWYgaXQncyBub3QgYSBsaXN0IG9yIGxvb2t1cFxuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eS5yZXNvbHZlZFZhbHVlID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHVwZGF0ZWQpXG5cdFx0XHR0aGlzLnNlYXJjaEZvcm0kLm5leHQoc2VhcmNoRm9ybSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVzZXQgdGhlIHNlcmNoIGZvcm0gdG8gdGhlIG9yaWdpbmFsIGRlZmF1bHQgdmFsdWVzLCBvciBjbGVhciBpdC5cblx0ICovXG5cdHB1YmxpYyByZXNldCgpIHtcblx0XHR0aGlzLmFwcGx5RGVmYXVsdFZhbHVlcyh0aGlzLmRlZmF1bHRWYWx1ZXMsIHRydWUgLyogcmVzZXQgKi8pO1xuXHRcdHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cdH1cbn1cbiJdfQ==