e5core-angular-ui
Version:
e5 Anywhere Angular UI
199 lines • 17.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ChangeDetectionStrategy, Input, ViewChild, Output, EventEmitter } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { E5ConfigurationService as e5Config } from 'e5core-angular-services';
import { E5coreUiSelectFromListMaterialComponent } from './component/e5core-ui-select-from-list-material.component';
import { UiStyleService } from '../../services/ui-style.service';
import { DataSourceQuery } from '../../datasource/data-source-query';
import { DocumentDataSourceService } from '../../datasource/document-data-source.service';
var E5coreUiSelectFromListComponent = /** @class */ (function () {
function E5coreUiSelectFromListComponent(config, style, datasource) {
this.config = config;
this.style = style;
this.datasource = datasource;
this.folderName = "";
this.fieldsToShow = null; //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields
//Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields
this.includeSelect = true;
this.query = null;
this.pagesizes = [5, 10, 25, 50];
this.autoSearch = true;
this.readonly = false;
this.listItemViewEvent = new EventEmitter();
this.listItemSelectEvent = new EventEmitter();
this.searchEvent = new EventEmitter();
}
/**
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
if (typeof this.workItem$ == 'undefined') {
console.error('e5core-ui-select-from-list [workItem$] must have a BehaviorSubject<WorkItemModel>');
return;
}
if (typeof this.workItem$ != 'undefined') {
this.workItem$.subscribe(function (w) {
_this.updateData();
});
}
if (this.libraryId == null) {
this.error = 'e5core-ui-search-results [searchDefinitionId] must be specified';
console.error(this.error);
return;
}
this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText);
/** @type {?} */
var options = this.datasource.defaultOptions();
this.datasource.setDefaultOptions(options);
};
/**
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
};
/**
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.refresh = /**
* @return {?}
*/
function () {
this.selectFromListMaterialComponent.refresh();
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.onListItemViewEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.listItemViewEvent.emit({ workId: null, type: "E5SharepointAttachment", attachmentId: null, fullUrl: event.element.fullUrl, name: event.element.fullUrl });
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.onListItemSelectEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.listItemSelectEvent.emit(event);
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.onSearchEvent = /**
* @param {?} event
* @return {?}
*/
function (event) {
debugger;
this.searchText = event;
this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText);
};
/**
* @private
* @return {?}
*/
E5coreUiSelectFromListComponent.prototype.updateData = /**
* @private
* @return {?}
*/
function () {
};
E5coreUiSelectFromListComponent.decorators = [
{ type: Component, args: [{
selector: 'e5core-ui-select-from-list',
template: "\n <span *ngIf=\"workItem$\" [ngSwitch]=\"style.current()\">\n <e5core-ui-select-from-list-material *ngSwitchCase='2' [datasource]='datasource' [pagesizes]=\"pagesizes\" [query]='query' [autoSearch]='autoSearch' (listItemViewEvent)='onListItemViewEvent($event)' (listItemSelectEvent)='onListItemSelectEvent($event)' (searchEvent)='onSearchEvent($event)'></e5core-ui-select-from-list-material>\n </span>\n <div *ngIf=\"!(workItem$)\" class=\"e5core-component-error\"><e5core-ui-select-from-list> [workItem$] must have a BehaviorSubject<WorkItemModel></div>\n ",
changeDetection: ChangeDetectionStrategy.OnPush,
//changeDetection: ChangeDetectionStrategy.OnPush
providers: [
DocumentDataSourceService
]
}] }
];
/** @nocollapse */
E5coreUiSelectFromListComponent.ctorParameters = function () { return [
{ type: e5Config },
{ type: UiStyleService },
{ type: DocumentDataSourceService }
]; };
E5coreUiSelectFromListComponent.propDecorators = {
workItem$: [{ type: Input }],
libraryId: [{ type: Input }],
folderName: [{ type: Input }],
fieldsToShow: [{ type: Input }],
includeSelect: [{ type: Input }],
query: [{ type: Input }],
pagesizes: [{ type: Input }],
autoSearch: [{ type: Input }],
readonly: [{ type: Input }],
listItemViewEvent: [{ type: Output }],
listItemSelectEvent: [{ type: Output }],
searchEvent: [{ type: Output }],
selectFromListMaterialComponent: [{ type: ViewChild, args: [E5coreUiSelectFromListMaterialComponent,] }]
};
return E5coreUiSelectFromListComponent;
}());
export { E5coreUiSelectFromListComponent };
if (false) {
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.workItem$;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.libraryId;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.folderName;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.fieldsToShow;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.includeSelect;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.query;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.pagesizes;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.autoSearch;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.readonly;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.listItemViewEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.listItemSelectEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.searchEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.workId;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.searchText;
/**
* @type {?}
* @private
*/
E5coreUiSelectFromListComponent.prototype.selectFromListMaterialComponent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.error;
/**
* @type {?}
* @private
*/
E5coreUiSelectFromListComponent.prototype.config;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.style;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.datasource;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBSTFGO0lBcUNFLHlDQUFvQixNQUFnQixFQUFTLEtBQW9CLEVBQVMsVUFBcUM7UUFBM0YsV0FBTSxHQUFOLE1BQU0sQ0FBVTtRQUFTLFVBQUssR0FBTCxLQUFLLENBQWU7UUFBUyxlQUFVLEdBQVYsVUFBVSxDQUEyQjtRQW5CdEcsZUFBVSxHQUFZLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUE0QixJQUFJLENBQUMsQ0FBSSwrRkFBK0Y7O1FBQ2hKLGtCQUFhLEdBQWEsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBcUIsSUFBSSxDQUFDO1FBQy9CLGNBQVMsR0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFD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K0JBQ0wsS0FBSztnQ0FDTCxLQUFLO3dCQUNMLEtBQUs7NEJBQ0wsS0FBSzs2QkFDTCxLQUFLOzJCQUNMLEtBQUs7b0NBRUwsTUFBTTtzQ0FDTixNQUFNOzhCQUNQLE1BQU07a0RBSUwsU0FBUyxTQUFDLHVDQUF1Qzs7SUFzRHBELHNDQUFDO0NBQUEsQUF0RkQsSUFzRkM7U0F4RVksK0JBQStCOzs7SUFFMUMsb0RBQW9EOztJQUNwRCxvREFBNEI7O0lBQzVCLHFEQUFrQzs7SUFDbEMsdURBQXNEOztJQUN0RCx3REFBd0M7O0lBQ3hDLGdEQUF3Qzs7SUFDeEMsb0RBQWdEOztJQUNoRCxxREFBcUM7O0lBQ3JDLG1EQUFvQzs7SUFFcEMsNERBQXFFOztJQUNyRSw4REFBbUQ7O0lBQ3BELHNEQUEyQzs7SUFDMUMsaURBQWlCOztJQUNqQixxREFBb0I7Ozs7O0lBRXBCLDBFQUNpRjs7SUFFbEYsZ0RBQWU7Ozs7O0lBRUYsaURBQXdCOztJQUFFLGdEQUEyQjs7SUFBRSxxREFBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEU1Q29uZmlndXJhdGlvblNlcnZpY2UgYXMgZTVDb25maWcgfSBmcm9tICdlNWNvcmUtYW5ndWxhci1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBXb3JrSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmstaXRlbSc7XG5pbXBvcnQgeyBFNWNvcmVVaVNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2V5VmFsdWVQYWlyIH0gZnJvbSAnLi4vLi4vdXRpbC9rZXktdmFsdWUtcGFpcic7XG5pbXBvcnQgeyBVaVN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLXN0eWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZU9wdGlvbnMgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLW9wdGlvbnMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZVF1ZXJ5IH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kYXRhLXNvdXJjZS1xdWVyeSc7XG5pbXBvcnQgeyBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZGF0YXNvdXJjZS9kb2N1bWVudC1kYXRhLXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkRGVmaW5pdGlvbk1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpZWxkLWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyRGlzcGxheUV2ZW50IH0gZnJvbSAnLi4vLi4vZXZlbnRzL3ZpZXdlci1kaXNwbGF5LWV2ZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QnLFxuICB0ZW1wbGF0ZTogYFxuICA8c3BhbiAqbmdJZj1cIndvcmtJdGVtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgICA8ZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QtbWF0ZXJpYWwgKm5nU3dpdGNoQ2FzZT0nMicgW2RhdGFzb3VyY2VdPSdkYXRhc291cmNlJyBbcGFnZXNpemVzXT1cInBhZ2VzaXplc1wiICBbcXVlcnldPSdxdWVyeScgW2F1dG9TZWFyY2hdPSdhdXRvU2VhcmNoJyAobGlzdEl0ZW1WaWV3RXZlbnQpPSdvbkxpc3RJdGVtVmlld0V2ZW50KCRldmVudCknIChsaXN0SXRlbVNlbGVjdEV2ZW50KT0nb25MaXN0SXRlbVNlbGVjdEV2ZW50KCRldmVudCknIChzZWFyY2hFdmVudCk9J29uU2VhcmNoRXZlbnQoJGV2ZW50KSc+PC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbD5cbiAgPC9zcGFuPlxuICA8ZGl2ICpuZ0lmPVwiISh3b3JrSXRlbSQpXCIgY2xhc3M9XCJlNWNvcmUtY29tcG9uZW50LWVycm9yXCI+Jmx0O2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0Jmd0OyBbd29ya0l0ZW0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3QmbHQ7V29ya0l0ZW1Nb2RlbCZndDs8L2Rpdj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgcHJvdmlkZXJzOiBbXG4gICAgRG9jdW1lbnREYXRhU291cmNlU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RDb21wb25lbnQgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcblxuICBASW5wdXQoKSB3b3JrSXRlbSQgOiBCZWhhdmlvclN1YmplY3Q8V29ya0l0ZW1Nb2RlbD47XG4gIEBJbnB1dCgpIGxpYnJhcnlJZCA6IG51bWJlcjtcbiAgQElucHV0KCkgZm9sZGVyTmFtZSA6IHN0cmluZyA9IFwiXCI7XG4gIEBJbnB1dCgpIGZpZWxkc1RvU2hvdyA6IEZpZWxkRGVmaW5pdGlvbk1vZGVsW10gPSBudWxsOyAgICAvL1JlZmVyIHRvIGh0dHA6Ly9ibG9nLnNvZnRhcnRpc2Fucy5jb20vMjAwOS8xMi8wOC9saXN0LW9mLWludGVybmFsLW5hbWVzLWZvci1zaGFyZXBvaW50LWZpZWxkc1xuICBASW5wdXQoKSBpbmNsdWRlU2VsZWN0IDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHF1ZXJ5IDogRGF0YVNvdXJjZVF1ZXJ5ID0gbnVsbDtcbiAgQElucHV0KCkgcGFnZXNpemVzIDogbnVtYmVyW10gPSBbNSwgMTAsIDI1LCA1MF07XG4gIEBJbnB1dCgpIGF1dG9TZWFyY2ggOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgOiBib29sZWFuID0gZmFsc2U7XG4gIFxuICBAT3V0cHV0KCkgbGlzdEl0ZW1WaWV3RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFZpZXdlckRpc3BsYXlFdmVudD4oKTtcbiAgQE91dHB1dCgpIGxpc3RJdGVtU2VsZWN0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cdEBPdXRwdXQoKSBzZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgd29ya0lkIDogc3RyaW5nIDtcbiAgc2VhcmNoVGV4dCA6IHN0cmluZztcbiAgXG4gIEBWaWV3Q2hpbGQoRTVjb3JlVWlTZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50KVxuICBwcml2YXRlIHNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQ6IEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudDtcblxuXHRlcnJvcjogc3RyaW5nIDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogZTVDb25maWcsIHB1YmxpYyBzdHlsZTpVaVN0eWxlU2VydmljZSwgcHVibGljIGRhdGFzb3VyY2U6IERvY3VtZW50RGF0YVNvdXJjZVNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCA9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJvcignZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QgW3dvcmtJdGVtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0PFdvcmtJdGVtTW9kZWw+Jyk7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMud29ya0l0ZW0kLnN1YnNjcmliZShcbiAgICAgICAgdyA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5SWQgPT0gbnVsbCkge1xuICAgICAgdGhpcy5lcnJvciA9ICdlNWNvcmUtdWktc2VhcmNoLXJlc3VsdHMgW3NlYXJjaERlZmluaXRpb25JZF0gbXVzdCBiZSBzcGVjaWZpZWQnIDtcbiAgICAgIGNvbnNvbGUuZXJyb3IodGhpcy5lcnJvcik7XG4gICAgICByZXR1cm4gO1xuICAgIH1cbiAgICB0aGlzLmRhdGFzb3VyY2Uuc2V0TGlicmFyeSh0aGlzLmxpYnJhcnlJZCwgdGhpcy5mb2xkZXJOYW1lLCB0aGlzLmluY2x1ZGVTZWxlY3QsIHRoaXMuZmllbGRzVG9TaG93LCB0aGlzLnNlYXJjaFRleHQpO1xuICAgIGxldCBvcHRpb25zOkRhdGFTb3VyY2VPcHRpb25zID0gdGhpcy5kYXRhc291cmNlLmRlZmF1bHRPcHRpb25zKCk7XG4gICAgdGhpcy5kYXRhc291cmNlLnNldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpO1xuICB9XG4gIFxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuc2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudC5yZWZyZXNoKCk7XG4gIH1cbiAgXG4gIG9uTGlzdEl0ZW1WaWV3RXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLmxpc3RJdGVtVmlld0V2ZW50LmVtaXQoe3dvcmtJZDogbnVsbCwgdHlwZTogXCJFNVNoYXJlcG9pbnRBdHRhY2htZW50XCIsIGF0dGFjaG1lbnRJZDogbnVsbCwgZnVsbFVybDogZXZlbnQuZWxlbWVudC5mdWxsVXJsLCBuYW1lOiBldmVudC5lbGVtZW50LmZ1bGxVcmx9KTtcbiAgfVxuICBcbiAgb25MaXN0SXRlbVNlbGVjdEV2ZW50KGV2ZW50KSB7XG4gICAgdGhpcy5saXN0SXRlbVNlbGVjdEV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgb25TZWFyY2hFdmVudChldmVudCkge1xuICAgIGRlYnVnZ2VyO1xuICAgIHRoaXMuc2VhcmNoVGV4dCA9IGV2ZW50O1xuICAgIHRoaXMuZGF0YXNvdXJjZS5zZXRMaWJyYXJ5KHRoaXMubGlicmFyeUlkLCB0aGlzLmZvbGRlck5hbWUsIHRoaXMuaW5jbHVkZVNlbGVjdCwgdGhpcy5maWVsZHNUb1Nob3csIHRoaXMuc2VhcmNoVGV4dCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGEoKTp2b2lkIHtcbiAgfVxufSJdfQ==