qms-angular 1.1.48 → 1.1.49

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. package/bundles/qms-angular.umd.js +23 -17
  2. package/bundles/qms-angular.umd.js.map +1 -1
  3. package/esm2015/lib/components/select-department/model/select-department-popup-data.model.js +2 -1
  4. package/esm2015/lib/components/select-department/select-department.component.js +2 -2
  5. package/esm2015/lib/components/select-department-tree/select-department-tree.component.js +2 -2
  6. package/esm2015/lib/model/en.js +3 -1
  7. package/esm2015/lib/model/no.js +3 -1
  8. package/esm2015/lib/qms-ckeditor-components/common/functions/common.function.js +3 -3
  9. package/esm2015/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.js +5 -3
  10. package/esm2015/lib/qms-ckeditor-components/models/document-tree-node-data.model.js +3 -0
  11. package/esm2015/lib/qms-ckeditor-components/qms-ckeditor.component.js +3 -2
  12. package/esm2015/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.js +9 -11
  13. package/fesm2015/qms-angular.js +23 -16
  14. package/fesm2015/qms-angular.js.map +1 -1
  15. package/lib/components/select-department/model/select-department-popup-data.model.d.ts +1 -0
  16. package/lib/model/en.d.ts +2 -0
  17. package/lib/model/no.d.ts +2 -0
  18. package/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.d.ts +4 -3
  19. package/lib/qms-ckeditor-components/models/{process-document-tree-node-data.model.d.ts → document-tree-node-data.model.d.ts} +1 -1
  20. package/lib/qms-ckeditor-components/services/qms-ckeditor-bpmn.service.d.ts +1 -1
  21. package/package.json +1 -1
  22. package/qms-angular.metadata.json +1 -1
  23. package/src/lib/qms-ckeditor-components/components/qms-ckeditor-bpmn/qms-ckeditor-bpmn.component.scss +11 -0
  24. package/esm2015/lib/qms-ckeditor-components/models/process-document-tree-node-data.model.js +0 -3
@@ -4,6 +4,7 @@ export class SelectDepartmentPopupData {
4
4
  this.headerName = '';
5
5
  this.config = new QMSSelectDepartmentTreeConfig;
6
6
  this.hidePanelResult = false;
7
+ this.resultTitle = '';
7
8
  }
8
9
  }
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQtcG9wdXAtZGF0YS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtZGVwYXJ0bWVudC9tb2RlbC9zZWxlY3QtZGVwYXJ0bWVudC1wb3B1cC1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdFLE1BQU0sT0FBTyx5QkFBeUI7SUFLcEM7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksNkJBQTZCLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsXCI7XG5pbXBvcnQgeyBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlXCI7XG5leHBvcnQgY2xhc3MgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSB7XG4gIGhlYWRlck5hbWU6IHN0cmluZztcbiAgY29uZmlnOiBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZztcbiAgZm9ybWF0VG9vbHRpcEl0ZW1SZXN1bHQ/OiAobm9kZTogUU1TVHJlZU5vZGUpID0+IHN0cmluZztcbiAgaGlkZVBhbmVsUmVzdWx0PzogYm9vbGVhbjtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5oZWFkZXJOYW1lID0gJyc7XG4gICAgdGhpcy5jb25maWcgPSBuZXcgUU1TU2VsZWN0RGVwYXJ0bWVudFRyZWVDb25maWc7XG4gICAgdGhpcy5oaWRlUGFuZWxSZXN1bHQgPSBmYWxzZTtcbiAgfVxufVxuIl19
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQtcG9wdXAtZGF0YS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Ftcy1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3QtZGVwYXJ0bWVudC9tb2RlbC9zZWxlY3QtZGVwYXJ0bWVudC1wb3B1cC1kYXRhLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdFLE1BQU0sT0FBTyx5QkFBeUI7SUFNcEM7UUFDRSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksNkJBQTZCLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUU1TVHJlZU5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsXCI7XG5pbXBvcnQgeyBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZyB9IGZyb20gXCIuLi8uLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlXCI7XG5leHBvcnQgY2xhc3MgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSB7XG4gIGhlYWRlck5hbWU6IHN0cmluZztcbiAgY29uZmlnOiBRTVNTZWxlY3REZXBhcnRtZW50VHJlZUNvbmZpZztcbiAgZm9ybWF0VG9vbHRpcEl0ZW1SZXN1bHQ/OiAobm9kZTogUU1TVHJlZU5vZGUpID0+IHN0cmluZztcbiAgaGlkZVBhbmVsUmVzdWx0PzogYm9vbGVhbjtcbiAgcmVzdWx0VGl0bGU6IHN0cmluZztcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5oZWFkZXJOYW1lID0gJyc7XG4gICAgdGhpcy5jb25maWcgPSBuZXcgUU1TU2VsZWN0RGVwYXJ0bWVudFRyZWVDb25maWc7XG4gICAgdGhpcy5oaWRlUGFuZWxSZXN1bHQgPSBmYWxzZTtcbiAgICB0aGlzLnJlc3VsdFRpdGxlID0gJyc7XG4gIH1cbn1cbiJdfQ==
@@ -244,7 +244,7 @@ export class SelectDepartmentComponent {
244
244
  SelectDepartmentComponent.decorators = [
245
245
  { type: Component, args: [{
246
246
  selector: 'qms-select-department',
247
- template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-department-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation] *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{LANG.RESULTS}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-list class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount || item.children.length}}/{{item.childCount}}\n </span>\n </span>\n </span>\n <ng-container *ngIf=\"isNodeLoading(item.id)\" [ngTemplateOutlet]=\"loadingSpinner\"></ng-container>\n <mat-icon *ngIf=\"!treeDepartment.isDisabledNode(item.id) && !isNodeLoading(item.id)\"\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n </div>\n </div>\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\" class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeDepartment.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n Cancel\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\" color=\"primary\"></mat-spinner>\n </div>\n </div>\n</ng-template>\n",
247
+ template: "<div class=\"qms-select-department\">\n <div class=\"header-dialog mb-2\">\n <span>{{popupData.headerName}}</span>\n <button matDialogClose class=\"btn-close-dialog\" color=\"light\" qms-btn-icon>\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div>\n <div class=\"qms-scrollbar\">\n <div>\n <qms-select-department-tree #treeDepartment customClass=\"custom-department-tree\"\n [height]=\"popupData.config.isMobile ? '38vh' : '50vh'\" [rowsSkeleton]=\"9\" [config]=\"popupData.config\"\n (onSearchEvent)=\"onSearchEvent.emit($event)\" (onValueChangeEvent)=\"onResultDepartmentChange($event)\"\n (onPagingSearchEvent)=\"onPagingEvent.emit($event)\" (onCheckNodeEvent)=\"onCheckNodeEvent.emit($event)\"\n (onExpandNodeEvent)=\"onExpandNodeEvent.emit($event)\" (onLoadMoreEvent)=\"onLoadMoreEvent.emit()\"\n (onCheckAllItemSearchEvent)=\"onCheckAllItemSearchEvent.emit($event)\"\n (onCheckItemSearchEvent)=\"onCheckItemSearchEvent.emit($event)\"\n (toggleIncludeChildEvent)=\"toggleIncludeChildEvent.emit($event)\">\n </qms-select-department-tree>\n </div>\n </div>\n <div class=\"line__divider\"></div>\n <div [@heightAnimation]\n *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\" class=\" pr-0 pe-0\">\n <div class=\"header-title\">{{popupData.resultTitle || LANG.RESULT}}</div>\n <div class=\"result-content pr-0 pe-0\">\n <mat-chip-list class=\"panel__item qms-scrollbar\">\n <div [@inOutAnimation_2] [id]=\"'item-result-'+item.id\" *ngFor=\"let item of treeDepartment.resultSelected\">\n <mat-chip [@updateItemAnimation] *qmsContentChanges=\"item.children?.length\"\n [qms-tool-tip]=\"generateTootip(item)\" position=\"top\" mode=\"dark\" qms-chip [removable]=\"true\">\n <span (click)=\"onScrollToNode(item)\" qms-chip-body>\n <span class=\"related__item__content_name\" #itemName>\n <span>{{item.name}}</span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && !popupData.config.lazy\">\n {{item.children.length}}/{{item.childCount}}\n </span>\n <span class=\"select__include-children__count\" *ngIf=\"!!item?.isGroup && popupData.config.lazy\">\n {{item.selectedChildCount || item.children.length}}/{{item.childCount}}\n </span>\n </span>\n </span>\n <ng-container *ngIf=\"isNodeLoading(item.id)\" [ngTemplateOutlet]=\"loadingSpinner\"></ng-container>\n <mat-icon *ngIf=\"!treeDepartment.isDisabledNode(item.id) && !isNodeLoading(item.id)\"\n (click)=\"onRemoveNode(item)\">cancel</mat-icon>\n </mat-chip>\n </div>\n </mat-chip-list>\n </div>\n </div>\n <mat-divider *ngIf=\"treeDepartment && !!treeDepartment.resultSelected.length && !popupData.hidePanelResult\"\n class=\"mx-auto\"></mat-divider>\n <div class=\"confirm__button__groups\">\n <button (click)=\"onCloseDialog()\" class=\"btn-add\"\n [disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\"\n [class.qms-btn-disabled]=\"!resultSelected.length && !popupData.config.canAddNullResult\" qms-btn>\n <span>{{LANG.ADD}}</span>\n <span>\n ({{treeDepartment.resultSelected.length}})\n </span>\n </button>\n <button qms-btn-text mat-dialog-close>\n {{LANG.CANCEL}}\n </button>\n </div>\n </div>\n</div>\n\n<!-- Loading spinner -->\n<ng-template #loadingSpinner>\n <div class=\"qms-spinner-wrapper\">\n <div class=\"qms-spinner center\">\n <mat-spinner [diameter]=\"20\" [strokeWidth]=\"2\" color=\"primary\"></mat-spinner>\n </div>\n </div>\n</ng-template>",
248
248
  providers: [
249
249
  {
250
250
  provide: MAT_CHECKBOX_DEFAULT_OPTIONS,
@@ -273,4 +273,4 @@ SelectDepartmentComponent.propDecorators = {
273
273
  toggleIncludeChildEvent: [{ type: Output }]
274
274
  };
275
275
  export { ɵ0 };
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1kZXBhcnRtZW50L3NlbGVjdC1kZXBhcnRtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztXQVN2RTtJQUNSLFdBQVcsRUFBRSxNQUFNO0NBQ1M7QUFLcEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFDVSxLQUF3QixFQUN4QixTQUFrRCxFQUN6QixJQUErQixFQUN6RCxLQUE4QjtRQUg3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF5QztRQUN6QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUN6RCxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQXhCdkMsa0JBQWEsR0FBRyxJQUFJ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QkFBdUI7Ozs2QkFzQjdCLFNBQVMsU0FBQyxnQkFBZ0I7NEJBQzFCLE1BQU07NEJBSU4sTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07OEJBQ04sTUFBTTtxQ0FDTixNQUFNO3dDQUNOLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnMsIE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCwgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1kZXBhcnRtZW50LXBvcHVwLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWRlcGFydG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZGVwYXJ0bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXG4gICAgfVxuICBdLFxuICBhbmltYXRpb25zOiBbU2VsZWN0RGVwYXJ0bWVudEFuaW1hdGlvblRyaWdnZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERlcGFydG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVEZXBhcnRtZW50JykgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBvblNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cGFuZE5vZGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TRmxhdE5vZGVUcmVlPigpO1xuICBAT3V0cHV0KCkgb25Mb2FkTW9yZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25DaGVja0l0ZW1TZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGF0ZTogYm9vbGVhbiwgaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsIH0+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlSW5jbHVkZUNoaWxkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIG9uVmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxRTVNUcmVlTm9kZVtdPigpO1xuICByZXN1bHRTZWFyY2g6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XG4gIGlzQWN0aXZlVmlld1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBnZXQgaXNJbmNsdWRlQ2hpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LmlzSW5jbHVkZUNoaWxkcmVuO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0RGVwYXJ0bWVudENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSxcbiAgICBwdWJsaWMgdHJhbnM6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudHJhbnMuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBJbml0IHBvcHVwIGRhdGFcbiAgICB0aGlzLnBvcHVwRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZGF0YSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DbG9zZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnRyZWVEZXBhcnRtZW50LnJlc3VsdFNlbGVjdGVkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VHJlZURhdGEoKTogUU1TVHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQgPyB0aGlzLnRyZWVEZXBhcnRtZW50LmN1cnJlbnRUcmVlRGF0YSA6IFtdO1xuICB9XG5cbiAgZGlzcGxheVdoZW5TZWxlY3REZXBhcnRtZW50T3B0aW9uKCRldmVudDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25TY3JvbGxUb05vZGUobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICAvLyB0aGlzLnRyZWVEZXBhcnRtZW50LnNjcm9sbFRvTm9kZShub2RlLmlkKTtcbiAgfVxuXG4gIG9uUmVtb3ZlTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiB0aGUgZGF0YSBub2RlJ3Mgc3VidHJlZSBvZiBkZXNjZW5kZW50IGRhdGEgbm9kZXMuXG4gKi9cbiAgZ2V0Q2hpbGRyZW5Ob2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExpc3RDaGlsZHJlbk9mTm9kZShub2RlKTtcbiAgfVxuXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShkYXRhOiBRTVNUcmVlTm9kZVtdKSB7XG4gICAgdGhpcy5yZXN1bHRTZWxlY3RlZCA9IGRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgdG9vbHRpcDogdGhpcy5nZW5lcmF0ZVRvb3RpcChpdGVtKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgZGVmYXVsdEZvcm1hdFRvb2x0aXBOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuaXNHcm91cCA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMucG9wdXBEYXRhLmNvbmZpZy50b29sdGlwSW5jbHVkZUxhYmVsID8gdGhpcy5wb3B1cERhdGEuY29uZmlnLnRvb2x0aXBJbmNsdWRlTGFiZWwgOiB0aGlzLkxBTkcuVE9PTFRJUF9JTkNMVURFX1NVQl9ERVBBUlRNRU5ULCBub2RlLm5hbWUsIG5vZGUuY2hpbGRyZW4ubGVuZ3RoLnRvU3RyaW5nKCkpIDogbm9kZS5uYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVUb290aXAobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICByZXR1cm4gISF0aGlzLnBvcHVwRGF0YS5mb3JtYXRUb29sdGlwSXRlbVJlc3VsdCA/IHRoaXMucG9wdXBEYXRhLmZvcm1hdFRvb2x0aXBJdGVtUmVzdWx0KG5vZGUpIDogdGhpcy5kZWZhdWx0Rm9ybWF0VG9vbHRpcE5vZGUobm9kZSlcbiAgfVxuXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaChkYXRhOiBRTVNEZXBhcnRtZW50UGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gdXNlIGZvciBsYXp5IGxvYWQgY2hpbGRyZW4gb2Ygbm9kZVxuICAgICAgICogQHBhcmFtIG5vZGUgbm9kZSB1cGRhdGVcbiAgICAgICAqIEBwYXJhbSBkYXRhIGxpc3QgY2hpbGRyZW4gdG8gdXBkYXRlIG5vZGUuXG4gICAgICAgKiBAcGFyYW0gbW9kZSBkZWZhdWx0IGlzIHVwZGF0ZSB0aGF0IHJlcGxhY2UgY3VycmVudCBsaXN0IGNoaWxkcmVuIGJ5IG5ldyBsaXN0IGNoaWxkcmVuICwgaWYgbW9kZSA9ICdpbnNlcnQnIHdpbGwgaW5zZXJ0IG5ldyB2YWx1ZSB0byBsaXN0IGNoaWxkcmVuIGV4aXN0ZWQgYmVmb3JlLlxuICAqL1xuICB1cGRhdGVDaGlsZE9mTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdLCBtb2RlOiAnaW5zZXJ0JyB8ICd1cGRhdGUnID0gJ3VwZGF0ZScpIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnVwZGF0ZUNoaWxkT2ZOb2RlKG5vZGUsIGRhdGEsIG1vZGUpO1xuICB9XG5cbiAgYWRkUm9vdFRyZWUoZGF0YTogUU1TRmxhdE5vZGVUcmVlW10gPSBbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuYWRkUm9vdFRyZWUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlIGNoZWNrIG5vZGUgb2YgdHJlZVxuICogQHBhcmFtIG5vZGUgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gY2FsbGJhY2sgZG8gc29tZXRoaW5nIGJlZm9yZSBoYW5kbGUgY2hlY2sgbm9kZVxuICogQHJldHVybnNcbiAqL1xuICBvbkJlZm9yZUNoZWNrTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGNhbGxiYWNrPzogKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUNoZWNrTm9kZShub2RlLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVDaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuaGFuZGxlQ2hlY2tOb2RlKG5vZGUpXG4gIH1cblxuICAvKipcbiAqIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBpbml0IGxpc3Qgbm9kZSBzZWxlY3RlZFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG4gIGFzeW5jIG9uQmVmb3JlSW5pdE5vZGVTZWxlY3RlZChjYWxsYmFjaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghIWNhbGxiYWNrKVxuICAgICAgYXdhaXQgdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUluaXROb2RlU2VsZWN0ZWQoY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBub2RlIGJ5IGlkIG9mIG5vZGVcbiAgICogQHBhcmFtIG5vZGVJZCBpZCBvZiBub2RlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTm9kZShub2RlSWQ6IHN0cmluZyk6IFFNU0ZsYXROb2RlVHJlZSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gKiBUaGlzIG1ldGhvZCB1c2UgZm9yIGxhenkgbW9kZSwgZG8gc29tZSB0aGluZyBiZWZvcmUgc2VsZWN0IGFsbCByZXN1bHQgc2VhcmNoXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjaz86IChkYXRhKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tBbGxTZWFyY2goY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4qIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBjaGVjayBpdGVtIHJlc3VsdFxuKiBAcGFyYW0gY2FsbGJhY2tcbiogQHJldHVybnNcbiovXG4gIG9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW06IERlcGFydG1lbnRTZWFyY2hSZXN1bHRNb2RlbCwgY2FsbGJhY2s/OiAoaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW0sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQ6IHN0cmluZykge1xuICAgICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LnNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQpO1xuICB9XG4gIC8qKlxuICAgKiBTZWxlY3QgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvblNlbGVjdE5vZGUoLi4ubm9kZUlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXNlbGVjdE5vZGUoLi4ubm9kZUlkcyk7XG4gIH1cblxuICAvKipcbiAgKiBUb2dnbGVzIGEgdmFsdWUgYmV0d2VlbiBzZWxlY3RlZCBhbmQgZGVzZWxlY3RlZC5cbiAgKi9cbiAgb25Ub2dnbGVOb2RlKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vblRvZ2dsZU5vZGUobm9kZUlkKTtcbiAgfVxuXG4gIGdldE5vZGVCeUlkKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgfVxuXG4gIGlzTm9kZUxvYWRpbmcobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICByZXR1cm4gISFub2RlICYmIG5vZGUuaXNMb2FkaW5nO1xuICB9XG5cbiAgc2V0TG9hZGluZ01vcmUoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRMb2FkaW5nTW9yZSQubmV4dChzdGF0ZSk7XG4gIH1cblxuICBzZXRMb2FkaW5nKHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0TG9hZGluZyQubmV4dChzdGF0ZSk7XG4gIH1cbiAgc2V0TG9hZGluZ05vZGUobm9kZUlkOiBzdHJpbmcsIHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVEZXBhcnRtZW50LmdldE5vZGVCeUlkKG5vZGVJZCk7XG4gICAgaWYgKCEhbm9kZSlcbiAgICAgIG5vZGUuaXNMb2FkaW5nID0gc3RhdGU7XG4gIH1cblxuICB1cGRhdGVUcmVlRGF0YShkYXRhOiBRTVNUcmVlTm9kZVtdID0gdGhpcy5jdXJyZW50VHJlZURhdGEpIHtcbiAgICAhIXRoaXMudHJlZURlcGFydG1lbnQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVEYXRhVHJlZShkYXRhKTtcbiAgfVxuXG4gIG9uRGVzdHJveUxvYWRNb3JlKCkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXN0cm95TG9hZE1vcmUoKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkTGlzdERhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wb3B1cERhdGEuY29uZmlnLnNlbGVjdGVkTGlzdCA9IGRhdGE7XG4gIH1cblxuICBnZXRDaGVja2VkU3RhdHVzTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRDaGVja2VkU3RhdHVzTm9kZShub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVOb2RlSW5mb3JtYXRpb24obm9kZSk7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQudXBkYXRlU2VsZWN0ZWRSZXN1bHREYXRhKG5vZGUpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50Tm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRBbGxQYXJlbnROb2RlKG5vZGUpO1xuICB9XG5cbiAgb25DaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlLCBmaXJlRXZlbnRDaGVja05vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQub25DaGVja05vZGUobm9kZSwgZmlyZUV2ZW50Q2hlY2tOb2RlKTtcbiAgfVxuXG4gIGdldENoaWxkcmVuU2VsZWN0ZWQobm9kZTogUU1TRmxhdE5vZGVUcmVlKTogUU1TRmxhdE5vZGVUcmVlW10ge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldENoaWxkcmVuU2VsZWN0ZWQobm9kZSk7XG4gIH1cbn1cbiJdfQ==
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcW1zLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC1kZXBhcnRtZW50L3NlbGVjdC1kZXBhcnRtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQTZCLDRCQUE0QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RSxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUV0RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztXQVN2RTtJQUNSLFdBQVcsRUFBRSxNQUFNO0NBQ1M7QUFLcEMsTUFBTSxPQUFPLHlCQUF5QjtJQXFCcEMsWUFDVSxLQUF3QixFQUN4QixTQUFrRCxFQUN6QixJQUErQixFQUN6RCxLQUE4QjtRQUg3QixVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUF5QztRQUN6QixTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUN6RCxVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQXhCdkMsa0JBQWEsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBRzFCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUN4RCxjQUFTLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQzVDLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUV6QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0MscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDdkQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDeEQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzNDLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUF5RCxDQUFDO1FBQ25HLDhCQUF5QixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDeEQsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNoRSxrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFpQixDQUFDO1FBQzdDLGlCQUFZLEdBQXNCLEVBQUUsQ0FBQztRQUNyQyx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFVbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ25GLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDM0M7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILGtCQUFrQjtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFoQkQsSUFBSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztJQUN4RSxDQUFDO0lBZUQsZUFBZTtRQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxRQUFRO0lBQ1IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVELGlDQUFpQyxDQUFDLE1BQVc7UUFDM0MsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWlCO1FBQzlCLDZDQUE2QztJQUMvQyxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQWlCO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7O0tBRUM7SUFDRCxlQUFlLENBQUMsSUFBcUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFtQjtRQUMxQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsdUNBQ0ssSUFBSSxLQUNQLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUNuQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFpQjtRQUN4QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNwTyxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQWlCO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN0SSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBK0M7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3RCLE9BQU87UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQUcsWUFBc0I7UUFDNUMsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQ0Q7Ozs7O01BS0U7SUFDRixpQkFBaUIsQ0FBQyxJQUFxQixFQUFFLElBQXVCLEVBQUUsT0FBNEIsUUFBUTtRQUNwRyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUEwQixFQUFFO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7S0FLQztJQUNELGlCQUFpQixDQUFDLElBQXFCLEVBQUUsUUFBMEQ7UUFDakcsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQXFCO1FBQ25DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUN0QixPQUFPO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztJQUVEOzs7O0tBSUM7SUFDSyx3QkFBd0IsQ0FBQyxRQUFxQzs7WUFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO2dCQUN0QixPQUFPO1lBQ1QsSUFBSSxDQUFDLENBQUMsUUFBUTtnQkFDWixNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakUsQ0FBQztLQUFBO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVEsQ0FBQyxNQUFjO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUN0QixPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQ7Ozs7S0FJQztJQUNLLHNCQUFzQixDQUFDLFFBQXlDOztZQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7Z0JBQ3RCLE9BQU87WUFDVCxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDN0QsQ0FBQztLQUFBO0lBRUQ7Ozs7SUFJQTtJQUNBLHVCQUF1QixDQUFDLElBQWlDLEVBQUUsUUFBc0U7UUFDL0gsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsU0FBUyxFQUFFLE1BQWM7UUFDM0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUNEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLEdBQUcsT0FBaUI7UUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsR0FBRyxPQUFpQjtRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7TUFFRTtJQUNGLFlBQVksQ0FBQyxNQUFjO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN4QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxhQUFhLENBQUMsTUFBYztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDdEIsT0FBTyxLQUFLLENBQUM7UUFDZixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3RCLE9BQU87UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFjO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUN0QixPQUFPO1FBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxjQUFjLENBQUMsTUFBYyxFQUFFLEtBQWM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjO1lBQ3RCLE9BQU87UUFDVCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsQ0FBQyxJQUFJO1lBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFzQixJQUFJLENBQUMsZUFBZTtRQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFTO1FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUVELG9CQUFvQixDQUFDLElBQXFCO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQscUJBQXFCLENBQUMsSUFBcUI7UUFDekMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFxQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQXFCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXFCLEVBQUUscUJBQThCLElBQUk7UUFDbkUsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7OztZQXpSRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsNjJIQUFpRDtnQkFFakQsU0FBUyxFQUFFO29CQUNUO3dCQUNFLE9BQU8sRUFBRSw0QkFBNEI7d0JBQ3JDLFFBQVEsSUFFc0I7cUJBQy9CO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxDQUFDLGdDQUFnQyxDQUFDOzthQUMvQzs7O1lBM0J1QixpQkFBaUI7WUFFaEMsWUFBWTtZQVVaLHlCQUF5Qix1QkF3QzdCLE1BQU0sU0FBQyxlQUFlO1lBM0NsQix1QkFBdUI7Ozs2QkFzQjdCLFNBQVMsU0FBQyxnQkFBZ0I7NEJBQzFCLE1BQU07NEJBSU4sTUFBTTsrQkFDTixNQUFNO2dDQUNOLE1BQU07OEJBQ04sTUFBTTtxQ0FDTixNQUFNO3dDQUNOLE1BQU07c0NBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdENoZWNrYm94RGVmYXVsdE9wdGlvbnMsIE1BVF9DSEVDS0JPWF9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXREaWFsb2dSZWYsIE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUU1TRmxhdE5vZGVUcmVlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtZmxhdC1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFFNU1RyZWVOb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9xbXMtdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24tcmVnaXN0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBEZXBhcnRtZW50U2VhcmNoUmVzdWx0TW9kZWwsIFFNU0RlcGFydG1lbnRQYWdpbmdNb2RlbCwgU2VsZWN0RGVwYXJ0bWVudFRyZWVDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3QtZGVwYXJ0bWVudC10cmVlJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRBbmltYXRpb25UcmlnZ2VyIH0gZnJvbSAnLi9jb21tb24vYW5pbWF0aW9uJztcbmltcG9ydCB7IFNlbGVjdERlcGFydG1lbnRQb3B1cERhdGEgfSBmcm9tICcuL21vZGVsL3NlbGVjdC1kZXBhcnRtZW50LXBvcHVwLWRhdGEubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxbXMtc2VsZWN0LWRlcGFydG1lbnQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWRlcGFydG1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtZGVwYXJ0bWVudC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBNQVRfQ0hFQ0tCT1hfREVGQVVMVF9PUFRJT05TLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgY2xpY2tBY3Rpb246ICdub29wJ1xuICAgICAgfSBhcyBNYXRDaGVja2JveERlZmF1bHRPcHRpb25zXG4gICAgfVxuICBdLFxuICBhbmltYXRpb25zOiBbU2VsZWN0RGVwYXJ0bWVudEFuaW1hdGlvblRyaWdnZXJdXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERlcGFydG1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBMQU5HOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3RyZWVEZXBhcnRtZW50JykgdHJlZURlcGFydG1lbnQ6IFNlbGVjdERlcGFydG1lbnRUcmVlQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgb25QYWdpbmdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnZUV2ZW50PigpO1xuICBwb3B1cERhdGEgPSBuZXcgU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSgpO1xuICByZXN1bHRTZWxlY3RlZDogUU1TVHJlZU5vZGVbXSA9IFtdO1xuXG4gIEBPdXRwdXQoKSBvblNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrTm9kZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxRTVNGbGF0Tm9kZVRyZWU+KCk7XG4gIEBPdXRwdXQoKSBvbkV4cGFuZE5vZGVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8UU1TRmxhdE5vZGVUcmVlPigpO1xuICBAT3V0cHV0KCkgb25Mb2FkTW9yZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25DaGVja0l0ZW1TZWFyY2hFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGF0ZTogYm9vbGVhbiwgaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsIH0+KCk7XG4gIEBPdXRwdXQoKSBvbkNoZWNrQWxsSXRlbVNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlSW5jbHVkZUNoaWxkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIG9uVmFsdWVDaGFuZ2UgPSBuZXcgU3ViamVjdDxRTVNUcmVlTm9kZVtdPigpO1xuICByZXN1bHRTZWFyY2g6IFFNU0ZsYXROb2RlVHJlZVtdID0gW107XG4gIGlzQWN0aXZlVmlld1NlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuICBnZXQgaXNJbmNsdWRlQ2hpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LmlzSW5jbHVkZUNoaWxkcmVuO1xuICB9XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8U2VsZWN0RGVwYXJ0bWVudENvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGF0YTogU2VsZWN0RGVwYXJ0bWVudFBvcHVwRGF0YSxcbiAgICBwdWJsaWMgdHJhbnM6IFRyYW5zbGF0ZUxpYnJhcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudHJhbnMuZ2V0TGFuZ3VhZ2VTdWJqZWN0JC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLkxBTkcgPSB0aGlzLnRyYW5zLmdldE9iamVjdExhbmcocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBJbml0IHBvcHVwIGRhdGFcbiAgICB0aGlzLnBvcHVwRGF0YSA9IF8uY2xvbmVEZWVwKHRoaXMuZGF0YSk7XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25DbG9zZURpYWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0aGlzLnRyZWVEZXBhcnRtZW50LnJlc3VsdFNlbGVjdGVkKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VHJlZURhdGEoKTogUU1TVHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQgPyB0aGlzLnRyZWVEZXBhcnRtZW50LmN1cnJlbnRUcmVlRGF0YSA6IFtdO1xuICB9XG5cbiAgZGlzcGxheVdoZW5TZWxlY3REZXBhcnRtZW50T3B0aW9uKCRldmVudDogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgb25TY3JvbGxUb05vZGUobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICAvLyB0aGlzLnRyZWVEZXBhcnRtZW50LnNjcm9sbFRvTm9kZShub2RlLmlkKTtcbiAgfVxuXG4gIG9uUmVtb3ZlTm9kZShub2RlOiBRTVNUcmVlTm9kZSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25SZW1vdmVOb2RlKG5vZGUuaWQpO1xuICB9XG5cbiAgLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiB0aGUgZGF0YSBub2RlJ3Mgc3VidHJlZSBvZiBkZXNjZW5kZW50IGRhdGEgbm9kZXMuXG4gKi9cbiAgZ2V0Q2hpbGRyZW5Ob2RlKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldExpc3RDaGlsZHJlbk9mTm9kZShub2RlKTtcbiAgfVxuXG4gIG9uUmVzdWx0RGVwYXJ0bWVudENoYW5nZShkYXRhOiBRTVNUcmVlTm9kZVtdKSB7XG4gICAgdGhpcy5yZXN1bHRTZWxlY3RlZCA9IGRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgdG9vbHRpcDogdGhpcy5nZW5lcmF0ZVRvb3RpcChpdGVtKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZS5uZXh0KHRoaXMucmVzdWx0U2VsZWN0ZWQpO1xuICB9XG5cbiAgZGVmYXVsdEZvcm1hdFRvb2x0aXBOb2RlKG5vZGU6IFFNU1RyZWVOb2RlKSB7XG4gICAgcmV0dXJuIG5vZGUuaXNHcm91cCA/IHRoaXMuZm9ybWF0U3RyaW5nKHRoaXMucG9wdXBEYXRhLmNvbmZpZy50b29sdGlwSW5jbHVkZUxhYmVsID8gdGhpcy5wb3B1cERhdGEuY29uZmlnLnRvb2x0aXBJbmNsdWRlTGFiZWwgOiB0aGlzLkxBTkcuVE9PTFRJUF9JTkNMVURFX1NVQl9ERVBBUlRNRU5ULCBub2RlLm5hbWUsIG5vZGUuY2hpbGRyZW4ubGVuZ3RoLnRvU3RyaW5nKCkpIDogbm9kZS5uYW1lO1xuICB9XG5cbiAgZ2VuZXJhdGVUb290aXAobm9kZTogUU1TVHJlZU5vZGUpIHtcbiAgICByZXR1cm4gISF0aGlzLnBvcHVwRGF0YS5mb3JtYXRUb29sdGlwSXRlbVJlc3VsdCA/IHRoaXMucG9wdXBEYXRhLmZvcm1hdFRvb2x0aXBJdGVtUmVzdWx0KG5vZGUpIDogdGhpcy5kZWZhdWx0Rm9ybWF0VG9vbHRpcE5vZGUobm9kZSlcbiAgfVxuXG4gIHVwZGF0ZVJlc3VsdFNlYXJjaChkYXRhOiBRTVNEZXBhcnRtZW50UGFnaW5nTW9kZWw8UU1TRmxhdE5vZGVUcmVlPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnNldFJlc3VsdFNlYXJjaChkYXRhKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RyaW5nKC4uLnJlcGxhY2VtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSBhcmd1bWVudHNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKGBcXFxceyR7aX1cXFxcfWAsICdnbScpO1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlcGxhY2UocmVnLCBhcmd1bWVudHNbaSArIDFdKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICAvKipcbiAgICAgICAqIFRoaXMgZnVuY3Rpb24gdXNlIGZvciBsYXp5IGxvYWQgY2hpbGRyZW4gb2Ygbm9kZVxuICAgICAgICogQHBhcmFtIG5vZGUgbm9kZSB1cGRhdGVcbiAgICAgICAqIEBwYXJhbSBkYXRhIGxpc3QgY2hpbGRyZW4gdG8gdXBkYXRlIG5vZGUuXG4gICAgICAgKiBAcGFyYW0gbW9kZSBkZWZhdWx0IGlzIHVwZGF0ZSB0aGF0IHJlcGxhY2UgY3VycmVudCBsaXN0IGNoaWxkcmVuIGJ5IG5ldyBsaXN0IGNoaWxkcmVuICwgaWYgbW9kZSA9ICdpbnNlcnQnIHdpbGwgaW5zZXJ0IG5ldyB2YWx1ZSB0byBsaXN0IGNoaWxkcmVuIGV4aXN0ZWQgYmVmb3JlLlxuICAqL1xuICB1cGRhdGVDaGlsZE9mTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGRhdGE6IFFNU0ZsYXROb2RlVHJlZVtdLCBtb2RlOiAnaW5zZXJ0JyB8ICd1cGRhdGUnID0gJ3VwZGF0ZScpIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50LnVwZGF0ZUNoaWxkT2ZOb2RlKG5vZGUsIGRhdGEsIG1vZGUpO1xuICB9XG5cbiAgYWRkUm9vdFRyZWUoZGF0YTogUU1TRmxhdE5vZGVUcmVlW10gPSBbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuYWRkUm9vdFRyZWUoZGF0YSk7XG4gIH1cblxuICAvKipcbiAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlIGNoZWNrIG5vZGUgb2YgdHJlZVxuICogQHBhcmFtIG5vZGUgbm9kZSBvZiB0cmVlXG4gKiBAcGFyYW0gY2FsbGJhY2sgZG8gc29tZXRoaW5nIGJlZm9yZSBoYW5kbGUgY2hlY2sgbm9kZVxuICogQHJldHVybnNcbiAqL1xuICBvbkJlZm9yZUNoZWNrTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUsIGNhbGxiYWNrPzogKG5vZGU6IFFNU0ZsYXROb2RlVHJlZSkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4pIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUNoZWNrTm9kZShub2RlLCBjYWxsYmFjayk7XG4gIH1cblxuICBoYW5kbGVDaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuaGFuZGxlQ2hlY2tOb2RlKG5vZGUpXG4gIH1cblxuICAvKipcbiAqIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBpbml0IGxpc3Qgbm9kZSBzZWxlY3RlZFxuICogQHBhcmFtIGNhbGxiYWNrXG4gKiBAcmV0dXJuc1xuICovXG4gIGFzeW5jIG9uQmVmb3JlSW5pdE5vZGVTZWxlY3RlZChjYWxsYmFjaz86ICgpID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghIWNhbGxiYWNrKVxuICAgICAgYXdhaXQgdGhpcy50cmVlRGVwYXJ0bWVudC5vbkJlZm9yZUluaXROb2RlU2VsZWN0ZWQoY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBub2RlIGJ5IGlkIG9mIG5vZGVcbiAgICogQHBhcmFtIG5vZGVJZCBpZCBvZiBub2RlXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBmaW5kTm9kZShub2RlSWQ6IHN0cmluZyk6IFFNU0ZsYXROb2RlVHJlZSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LnRyZWVDb250cm9sLmRhdGFOb2Rlcy5maW5kKG5vZGUgPT4gbm9kZS5pZCA9PT0gbm9kZUlkLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgLyoqXG4gKiBUaGlzIG1ldGhvZCB1c2UgZm9yIGxhenkgbW9kZSwgZG8gc29tZSB0aGluZyBiZWZvcmUgc2VsZWN0IGFsbCByZXN1bHQgc2VhcmNoXG4gKiBAcGFyYW0gY2FsbGJhY2tcbiAqIEByZXR1cm5zXG4gKi9cbiAgYXN5bmMgb25CZWZvcmVDaGVja0FsbFNlYXJjaChjYWxsYmFjaz86IChkYXRhKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIGlmICghdGhpcy50cmVlRGVwYXJ0bWVudClcbiAgICAgIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tBbGxTZWFyY2goY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4qIFRoaXMgbWV0aG9kIHVzZSBmb3IgbGF6eSBtb2RlLCBkbyBzb21lIHRoaW5nIGJlZm9yZSBjaGVjayBpdGVtIHJlc3VsdFxuKiBAcGFyYW0gY2FsbGJhY2tcbiogQHJldHVybnNcbiovXG4gIG9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW06IERlcGFydG1lbnRTZWFyY2hSZXN1bHRNb2RlbCwgY2FsbGJhY2s/OiAoaXRlbTogRGVwYXJ0bWVudFNlYXJjaFJlc3VsdE1vZGVsKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPikge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uQmVmb3JlQ2hlY2tJdGVtU2VhcmNoKGl0ZW0sIGNhbGxiYWNrKTtcbiAgfVxuXG4gIHNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQ6IHN0cmluZykge1xuICAgICEhdGhpcy50cmVlRGVwYXJ0bWVudCAmJiB0aGlzLnRyZWVEZXBhcnRtZW50LnNldExvYWRpbmdTdGF0ZU5vZGUoaXNMb2FkaW5nLCBub2RlSWQpO1xuICB9XG4gIC8qKlxuICAgKiBTZWxlY3QgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvblNlbGVjdE5vZGUoLi4ubm9kZUlkczogc3RyaW5nW10pIHtcbiAgICB0aGlzLnRyZWVEZXBhcnRtZW50Lm9uU2VsZWN0Tm9kZSguLi5ub2RlSWRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlbGVjdHMgYSB2YWx1ZSBvciBhbiBhcnJheSBvZiB2YWx1ZXMuXG4gICAqL1xuICBvbkRlc2VsZWN0Tm9kZSguLi5ub2RlSWRzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXNlbGVjdE5vZGUoLi4ubm9kZUlkcyk7XG4gIH1cblxuICAvKipcbiAgKiBUb2dnbGVzIGEgdmFsdWUgYmV0d2VlbiBzZWxlY3RlZCBhbmQgZGVzZWxlY3RlZC5cbiAgKi9cbiAgb25Ub2dnbGVOb2RlKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5vblRvZ2dsZU5vZGUobm9kZUlkKTtcbiAgfVxuXG4gIGdldE5vZGVCeUlkKG5vZGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgfVxuXG4gIGlzTm9kZUxvYWRpbmcobm9kZUlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMudHJlZURlcGFydG1lbnQuZ2V0Tm9kZUJ5SWQobm9kZUlkKTtcbiAgICByZXR1cm4gISFub2RlICYmIG5vZGUuaXNMb2FkaW5nO1xuICB9XG5cbiAgc2V0TG9hZGluZ01vcmUoc3RhdGU6IGJvb2xlYW4pIHtcbiAgICBpZiAoIXRoaXMudHJlZURlcGFydG1lbnQpXG4gICAgICByZXR1cm47XG4gICAgdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRMb2FkaW5nTW9yZSQubmV4dChzdGF0ZSk7XG4gIH1cblxuICBzZXRMb2FkaW5nKHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQuZ2V0TG9hZGluZyQubmV4dChzdGF0ZSk7XG4gIH1cbiAgc2V0TG9hZGluZ05vZGUobm9kZUlkOiBzdHJpbmcsIHN0YXRlOiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLnRyZWVEZXBhcnRtZW50KVxuICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLnRyZWVEZXBhcnRtZW50LmdldE5vZGVCeUlkKG5vZGVJZCk7XG4gICAgaWYgKCEhbm9kZSlcbiAgICAgIG5vZGUuaXNMb2FkaW5nID0gc3RhdGU7XG4gIH1cblxuICB1cGRhdGVUcmVlRGF0YShkYXRhOiBRTVNUcmVlTm9kZVtdID0gdGhpcy5jdXJyZW50VHJlZURhdGEpIHtcbiAgICAhIXRoaXMudHJlZURlcGFydG1lbnQgJiYgdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVEYXRhVHJlZShkYXRhKTtcbiAgfVxuXG4gIG9uRGVzdHJveUxvYWRNb3JlKCkge1xuICAgIHRoaXMudHJlZURlcGFydG1lbnQub25EZXN0cm95TG9hZE1vcmUoKTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkTGlzdERhdGEoZGF0YTogYW55KSB7XG4gICAgdGhpcy5wb3B1cERhdGEuY29uZmlnLnNlbGVjdGVkTGlzdCA9IGRhdGE7XG4gIH1cblxuICBnZXRDaGVja2VkU3RhdHVzTm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRDaGVja2VkU3RhdHVzTm9kZShub2RlKTtcbiAgfVxuXG4gIHVwZGF0ZU5vZGVJbmZvcm1hdGlvbihub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC51cGRhdGVOb2RlSW5mb3JtYXRpb24obm9kZSk7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZFJlc3VsdERhdGEobm9kZTogUU1TRmxhdE5vZGVUcmVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQudXBkYXRlU2VsZWN0ZWRSZXN1bHREYXRhKG5vZGUpO1xuICB9XG5cbiAgZ2V0QWxsUGFyZW50Tm9kZShub2RlOiBRTVNGbGF0Tm9kZVRyZWUpIHtcbiAgICByZXR1cm4gdGhpcy50cmVlRGVwYXJ0bWVudC5nZXRBbGxQYXJlbnROb2RlKG5vZGUpO1xuICB9XG5cbiAgb25DaGVja05vZGUobm9kZTogUU1TRmxhdE5vZGVUcmVlLCBmaXJlRXZlbnRDaGVja05vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIHRoaXMudHJlZURlcGFydG1lbnQub25DaGVja05vZGUobm9kZSwgZmlyZUV2ZW50Q2hlY2tOb2RlKTtcbiAgfVxuXG4gIGdldENoaWxkcmVuU2VsZWN0ZWQobm9kZTogUU1TRmxhdE5vZGVUcmVlKTogUU1TRmxhdE5vZGVUcmVlW10ge1xuICAgIHJldHVybiB0aGlzLnRyZWVEZXBhcnRtZW50LmdldENoaWxkcmVuU2VsZWN0ZWQobm9kZSk7XG4gIH1cbn1cbiJdfQ==