@alfresco/aca-shared 4.4.0-7841531026 → 4.4.0-7873758674

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,7 +26,7 @@ import { Store } from '@ngrx/store';
26
26
  import { MatIconRegistry } from '@angular/material/icon';
27
27
  import { DomSanitizer } from '@angular/platform-browser';
28
28
  import { getRuleContext } from '@alfresco/aca-shared/store';
29
- import { ContentActionType, ExtensionLoaderService, sortByOrder, reduceSeparators, reduceEmptyMenus, ExtensionService, mergeObjects, mergeArrays } from '@alfresco/adf-extensions';
29
+ import { ContentActionType, ExtensionLoaderService, ExtensionService, mergeArrays, mergeObjects, reduceEmptyMenus, reduceSeparators, sortByOrder } from '@alfresco/adf-extensions';
30
30
  import { AppConfigService, AuthenticationService, LogService } from '@alfresco/adf-core';
31
31
  import { BehaviorSubject } from 'rxjs';
32
32
  import { NodePermissionService } from '../services/node-permission.service';
@@ -382,6 +382,9 @@ export class AppExtensionService {
382
382
  }
383
383
  filterVisible(action) {
384
384
  if (action?.rules?.visible) {
385
+ if (Array.isArray(action.rules.visible)) {
386
+ return action.rules.visible.every((rule) => this.extensions.evaluateRule(rule, this));
387
+ }
385
388
  return this.extensions.evaluateRule(action.rules.visible, this);
386
389
  }
387
390
  return true;
@@ -462,4 +465,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
462
465
  providedIn: 'root'
463
466
  }]
464
467
  }], ctorParameters: function () { return [{ type: i1.AuthenticationService }, { type: i2.Store }, { type: i3.ExtensionLoaderService }, { type: i3.ExtensionService }, { type: i4.NodePermissionService }, { type: i1.AppConfigService }, { type: i5.MatIconRegistry }, { type: i6.DomSanitizer }, { type: i1.LogService }]; } });
465
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2FwcC5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBTUwsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUd0QixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFFaEIsWUFBWSxFQUtaLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTTdDLE1BQU0sT0FBTyxtQkFBbUI7SUFvRDlCLFlBQ1MsSUFBMkIsRUFDeEIsS0FBc0IsRUFDdEIsTUFBOEIsRUFDOUIsVUFBNEIsRUFDL0IsV0FBa0MsRUFDbEMsU0FBMkIsRUFDeEIsZUFBZ0MsRUFDaEMsU0FBdUIsRUFDdkIsTUFBa0I7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Q0FBQztJQUNkLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFlO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFL0IsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLGNBQWMsRUFBRTtnQkFDbkIsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztnSEF6Z0JVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyMyBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvblxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24uXG4gKiBJZiB0aGUgc29mdHdhcmUgd2FzIHB1cmNoYXNlZCB1bmRlciBhIHBhaWQgQWxmcmVzY28gbGljZW5zZSwgdGhlIHRlcm1zIG9mXG4gKiB0aGUgcGFpZCBsaWNlbnNlIGFncmVlbWVudCB3aWxsIHByZXZhaWwuIE90aGVyd2lzZSwgdGhlIHNvZnR3YXJlIGlzXG4gKiBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIG9wZW4gc291cmNlIGxpY2Vuc2UgdGVybXM6XG4gKlxuICogVGhlIEFsZnJlc2NvIEV4YW1wbGUgQ29udGVudCBBcHBsaWNhdGlvbiBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogZnJvbSBIeWxhbmQgU29mdHdhcmUuIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IE1hdEljb25SZWdpc3RyeSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBBcHBTdG9yZSwgZ2V0UnVsZUNvbnRleHQgfSBmcm9tICdAYWxmcmVzY28vYWNhLXNoYXJlZC9zdG9yZSc7XG5pbXBvcnQge1xuICBTZWxlY3Rpb25TdGF0ZSxcbiAgTmF2aWdhdGlvblN0YXRlLFxuICBFeHRlbnNpb25Db25maWcsXG4gIFJ1bGVFdmFsdWF0b3IsXG4gIENvbnRlbnRBY3Rpb25SZWYsXG4gIENvbnRlbnRBY3Rpb25UeXBlLFxuICBFeHRlbnNpb25Mb2FkZXJTZXJ2aWNlLFxuICBTaWRlYmFyVGFiUmVmLFxuICBOYXZCYXJHcm91cFJlZixcbiAgc29ydEJ5T3JkZXIsXG4gIHJlZHVjZVNlcGFyYXRvcnMsXG4gIHJlZHVjZUVtcHR5TWVudXMsXG4gIEV4dGVuc2lvblNlcnZpY2UsXG4gIFByb2ZpbGVTdGF0ZSxcbiAgbWVyZ2VPYmplY3RzLFxuICBFeHRlbnNpb25SZWYsXG4gIFJ1bGVDb250ZXh0LFxuICBEb2N1bWVudExpc3RQcmVzZXRSZWYsXG4gIEljb25SZWYsXG4gIG1lcmdlQXJyYXlzXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBBcHBDb25maWdTZXJ2aWNlLCBBdXRoZW50aWNhdGlvblNlcnZpY2UsIExvZ1NlcnZpY2UgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5SW5mbywgTm9kZUVudHJ5IH0gZnJvbSAnQGFsZnJlc2NvL2pzLWFwaSc7XG5pbXBvcnQgeyBWaWV3ZXJSdWxlcyB9IGZyb20gJy4uL21vZGVscy92aWV3ZXIucnVsZXMnO1xuaW1wb3J0IHsgQmFkZ2UsIFNldHRpbmdzR3JvdXBSZWYgfSBmcm9tICcuLi9tb2RlbHMvdHlwZXMnO1xuaW1wb3J0IHsgTm9kZVBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbm9kZS1wZXJtaXNzaW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWFyY2hDYXRlZ29yeSB9IGZyb20gJ0BhbGZyZXNjby9hZGYtY29udGVudC1zZXJ2aWNlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcEV4dGVuc2lvblNlcnZpY2UgaW1wbGVtZW50cyBSdWxlQ29udGV4dCB7XG4gIHByaXZhdGUgX3JlZmVyZW5jZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEV4dGVuc2lvblJlZltdPihbXSk7XG5cbiAgbmF2YmFyOiBBcnJheTxOYXZCYXJHcm91cFJlZj4gPSBbXTtcbiAgc2lkZWJhclRhYnM6IEFycmF5PFNpZGViYXJUYWJSZWY+ID0gW107XG4gIGNvbnRlbnRNZXRhZGF0YTogYW55O1xuICBzZWFyY2g6IGFueTtcbiAgdmlld2VyUnVsZXM6IFZpZXdlclJ1bGVzID0ge307XG4gIHNldHRpbmdHcm91cHM6IEFycmF5PFNldHRpbmdzR3JvdXBSZWY+ID0gW107XG5cbiAgcHJpdmF0ZSBfaGVhZGVyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfdG9vbGJhckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX3ZpZXdlclRvb2xiYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9zaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX2NvbnRleHRNZW51QWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfb3BlbldpdGhBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9jcmVhdGVBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9tYWluQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29udGVudEFjdGlvblJlZj4obnVsbCk7XG4gIHByaXZhdGUgX3NpZGViYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9iYWRnZXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PEJhZGdlPj4oW10pO1xuICBwcml2YXRlIF9maWxlc0RvY3VtZW50TGlzdFByZXNldCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPj4oW10pO1xuICBwcml2YXRlIF9jdXN0b21NZXRhZGF0YVBhbmVscyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcblxuICBkb2N1bWVudExpc3RQcmVzZXRzOiB7XG4gICAgbGlicmFyaWVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIGZhdm9yaXRlTGlicmFyaWVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHNoYXJlZDogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICByZWNlbnQ6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gICAgZmF2b3JpdGVzOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHRyYXNoY2FuOiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIHNlYXJjaExpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgfSA9IHtcbiAgICBsaWJyYXJpZXM6IFtdLFxuICAgIGZhdm9yaXRlTGlicmFyaWVzOiBbXSxcbiAgICBzaGFyZWQ6IFtdLFxuICAgIHJlY2VudDogW10sXG4gICAgZmF2b3JpdGVzOiBbXSxcbiAgICB0cmFzaGNhbjogW10sXG4gICAgc2VhcmNoTGlicmFyaWVzOiBbXVxuICB9O1xuXG4gIHNlbGVjdGlvbjogU2VsZWN0aW9uU3RhdGU7XG4gIG5hdmlnYXRpb246IE5hdmlnYXRpb25TdGF0ZTtcbiAgcHJvZmlsZTogUHJvZmlsZVN0YXRlO1xuICByZXBvc2l0b3J5OiBSZXBvc2l0b3J5SW5mbztcbiAgd2l0aENyZWRlbnRpYWxzOiBib29sZWFuO1xuXG4gIHJlZmVyZW5jZXMkOiBPYnNlcnZhYmxlPEV4dGVuc2lvblJlZltdPjtcbiAgZmlsZXNEb2N1bWVudExpc3RQcmVzZXQkOiBPYnNlcnZhYmxlPERvY3VtZW50TGlzdFByZXNldFJlZltdPiA9IHRoaXMuX2ZpbGVzRG9jdW1lbnRMaXN0UHJlc2V0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBhdXRoOiBBdXRoZW50aWNhdGlvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxBcHBTdG9yZT4sXG4gICAgcHJvdGVjdGVkIGxvYWRlcjogRXh0ZW5zaW9uTG9hZGVyU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZXh0ZW5zaW9uczogRXh0ZW5zaW9uU2VydmljZSxcbiAgICBwdWJsaWMgcGVybWlzc2lvbnM6IE5vZGVQZXJtaXNzaW9uU2VydmljZSxcbiAgICBwdWJsaWMgYXBwQ29uZmlnOiBBcHBDb25maWdTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtYXRJY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSxcbiAgICBwcm90ZWN0ZWQgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJvdGVjdGVkIGxvZ2dlcjogTG9nU2VydmljZVxuICApIHtcbiAgICB0aGlzLnJlZmVyZW5jZXMkID0gdGhpcy5fcmVmZXJlbmNlcy5hc09ic2VydmFibGUoKTtcblxuICAgIHRoaXMuc3RvcmUuc2VsZWN0KGdldFJ1bGVDb250ZXh0KS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3Rpb24gPSByZXN1bHQuc2VsZWN0aW9uO1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uID0gcmVzdWx0Lm5hdmlnYXRpb247XG4gICAgICB0aGlzLnByb2ZpbGUgPSByZXN1bHQucHJvZmlsZTtcbiAgICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlc3VsdC5yZXBvc2l0b3J5O1xuXG4gICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgdGhpcy5zZXR1cCh0aGlzLmNvbmZpZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBsb2FkKCkge1xuICAgIHRoaXMuY29uZmlnID0gYXdhaXQgdGhpcy5leHRlbnNpb25zLmxvYWQoKTtcbiAgICB0aGlzLnNldHVwKHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIHNldHVwKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdFeHRlbnNpb24gY29uZmlndXJhdGlvbiBub3QgZm91bmQnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldHRpbmdHcm91cHMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxTZXR0aW5nc0dyb3VwUmVmPihjb25maWcsICdzZXR0aW5ncycpO1xuXG4gICAgdGhpcy5faGVhZGVyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLmhlYWRlcicpKTtcbiAgICB0aGlzLl9zaWRlYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnNpZGViYXIudG9vbGJhcicpKTtcbiAgICB0aGlzLl90b29sYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnRvb2xiYXInKSk7XG4gICAgdGhpcy5fdmlld2VyVG9vbGJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy52aWV3ZXIudG9vbGJhckFjdGlvbnMnKSk7XG4gICAgdGhpcy5fc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudmlld2VyLnNoYXJlZC50b29sYmFyQWN0aW9ucycpKTtcbiAgICB0aGlzLl9jb250ZXh0TWVudUFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy5jb250ZXh0TWVudScpKTtcbiAgICB0aGlzLl9vcGVuV2l0aEFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy52aWV3ZXIub3BlbldpdGgnKSk7XG4gICAgdGhpcy5fY3JlYXRlQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPENvbnRlbnRBY3Rpb25SZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLmNyZWF0ZScpKTtcbiAgICB0aGlzLl9tYWluQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldEZlYXR1cmVzKGNvbmZpZykubWFpbkFjdGlvbik7XG4gICAgdGhpcy5fYmFkZ2VzLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8QmFkZ2U+KGNvbmZpZywgJ2ZlYXR1cmVzLmJhZGdlcycpKTtcbiAgICB0aGlzLl9maWxlc0RvY3VtZW50TGlzdFByZXNldC5uZXh0KHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2ZpbGVzJykpO1xuICAgIHRoaXMuX2N1c3RvbU1ldGFkYXRhUGFuZWxzLm5leHQodGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8Q29udGVudEFjdGlvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuY3VzdG9tTWV0YWRhdGFQYW5lbHMnKSk7XG5cbiAgICB0aGlzLm5hdmJhciA9IHRoaXMubG9hZE5hdkJhcihjb25maWcpO1xuICAgIHRoaXMuc2lkZWJhclRhYnMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxTaWRlYmFyVGFiUmVmPihjb25maWcsICdmZWF0dXJlcy5zaWRlYmFyLnRhYnMnKTtcbiAgICB0aGlzLmNvbnRlbnRNZXRhZGF0YSA9IHRoaXMubG9hZENvbnRlbnRNZXRhZGF0YShjb25maWcpO1xuICAgIHRoaXMuc2VhcmNoID0gdGhpcy5sb2FkU2VhcmNoRm9ybXMoY29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaD8uZm9yRWFjaCgoc2VhcmNoU2V0KSA9PiB7XG4gICAgICBzZWFyY2hTZXQuY2F0ZWdvcmllcyA9IHNlYXJjaFNldC5jYXRlZ29yaWVzPy5maWx0ZXIoKGNhdGVnb3J5KSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2F0ZWdvcnkpKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9jdW1lbnRMaXN0UHJlc2V0cyA9IHtcbiAgICAgIGxpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnbGlicmFyaWVzJyksXG4gICAgICBmYXZvcml0ZUxpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnZmF2b3JpdGVMaWJyYXJpZXMnKSxcbiAgICAgIHNoYXJlZDogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnc2hhcmVkJyksXG4gICAgICByZWNlbnQ6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ3JlY2VudCcpLFxuICAgICAgZmF2b3JpdGVzOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdmYXZvcml0ZXMnKSxcbiAgICAgIHRyYXNoY2FuOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICd0cmFzaGNhbicpLFxuICAgICAgc2VhcmNoTGlicmFyaWVzOiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdzZWFyY2gtbGlicmFyaWVzJylcbiAgICB9O1xuXG4gICAgdGhpcy53aXRoQ3JlZGVudGlhbHMgPSB0aGlzLmFwcENvbmZpZy5nZXQ8Ym9vbGVhbj4oJ2F1dGgud2l0aENyZWRlbnRpYWxzJywgZmFsc2UpO1xuXG4gICAgaWYgKGNvbmZpZy5mZWF0dXJlcz8udmlld2VyKSB7XG4gICAgICB0aGlzLnZpZXdlclJ1bGVzID0gKGNvbmZpZy5mZWF0dXJlcy52aWV3ZXJbJ3J1bGVzJ10gYXMgVmlld2VyUnVsZXMpIHx8IHt9O1xuICAgIH1cblxuICAgIHRoaXMucmVnaXN0ZXJJY29ucyhjb25maWcpO1xuXG4gICAgY29uc3QgcmVmZXJlbmNlcyA9IChjb25maWcuJHJlZmVyZW5jZXMgfHwgW10pLmZpbHRlcigoZW50cnkpID0+IHR5cGVvZiBlbnRyeSA9PT0gJ29iamVjdCcpLm1hcCgoZW50cnkpID0+IGVudHJ5IGFzIEV4dGVuc2lvblJlZik7XG4gICAgdGhpcy5fcmVmZXJlbmNlcy5uZXh0KHJlZmVyZW5jZXMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlZ2lzdGVySWNvbnMoY29uZmlnOiBFeHRlbnNpb25Db25maWcpIHtcbiAgICBjb25zdCBpY29uczogQXJyYXk8SWNvblJlZj4gPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxJY29uUmVmPihjb25maWcsICdmZWF0dXJlcy5pY29ucycpLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZCk7XG5cbiAgICBmb3IgKGNvbnN0IGljb24gb2YgaWNvbnMpIHtcbiAgICAgIGNvbnN0IFtucywgaWRdID0gaWNvbi5pZC5zcGxpdCgnOicpO1xuICAgICAgY29uc3QgdmFsdWUgPSBpY29uLnZhbHVlO1xuXG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE1pc3NpbmcgaWNvbiB2YWx1ZSBmb3IgXCIke2ljb24uaWR9XCIuYCk7XG4gICAgICB9IGVsc2UgaWYgKCFucyB8fCAhaWQpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihgSW5jb3JyZWN0IGljb24gaWQgZm9ybWF0LmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tYXRJY29uUmVnaXN0cnkuYWRkU3ZnSWNvbkluTmFtZXNwYWNlKG5zLCBpZCwgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGxvYWROYXZCYXIoY29uZmlnOiBFeHRlbnNpb25Db25maWcpOiBBcnJheTxOYXZCYXJHcm91cFJlZj4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxOYXZCYXJHcm91cFJlZj4oY29uZmlnLCAnZmVhdHVyZXMubmF2YmFyJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnLCBrZXk6IHN0cmluZyk6IERvY3VtZW50TGlzdFByZXNldFJlZltdIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXJcbiAgICAgIC5nZXRFbGVtZW50czxEb2N1bWVudExpc3RQcmVzZXRSZWY+KGNvbmZpZywgYGZlYXR1cmVzLmRvY3VtZW50TGlzdC4ke2tleX1gKVxuICAgICAgLmZpbHRlcigoZ3JvdXApID0+IHRoaXMuZmlsdGVyVmlzaWJsZShncm91cCkpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgZW50cnkucmVzaXphYmxlID0gZW50cnkucmVzaXphYmxlID8/IHRydWU7XG4gICAgICAgIHJldHVybiBlbnRyeTtcbiAgICAgIH0pXG4gICAgICAuc29ydChzb3J0QnlPcmRlcik7XG4gIH1cblxuICBnZXRBcHBsaWNhdGlvbk5hdmlnYXRpb24oZWxlbWVudHMpOiBBcnJheTxOYXZCYXJHcm91cFJlZj4ge1xuICAgIHJldHVybiBlbGVtZW50c1xuICAgICAgLmZpbHRlcigoZ3JvdXApID0+IHRoaXMuZmlsdGVyVmlzaWJsZShncm91cCkpXG4gICAgICAubWFwKChncm91cCkgPT4gKHtcbiAgICAgICAgLi4uZ3JvdXAsXG4gICAgICAgIGl0ZW1zOiAoZ3JvdXAuaXRlbXMgfHwgW10pXG4gICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiB0aGlzLmZpbHRlclZpc2libGUoaXRlbSkpXG4gICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZCkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNoaWxkKSlcbiAgICAgICAgICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgICAgICAgICAubWFwKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGlmICghY2hpbGQuY2xpY2spIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRSb3V0ZVJlZiA9IHRoaXMuZXh0ZW5zaW9ucy5nZXRSb3V0ZUJ5SWQoY2hpbGQucm91dGUpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGlsZFVybCA9IGAvJHtjaGlsZFJvdXRlUmVmID8gY2hpbGRSb3V0ZVJlZi5wYXRoIDogY2hpbGQucm91dGV9YDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICB1cmw6IGNoaWxkVXJsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNoaWxkLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGNoaWxkLmNsaWNrXG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uaXRlbVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXRlbS5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWl0ZW0uY2xpY2spIHtcbiAgICAgICAgICAgICAgY29uc3Qgcm91dGVSZWYgPSB0aGlzLmV4dGVuc2lvbnMuZ2V0Um91dGVCeUlkKGl0ZW0ucm91dGUpO1xuICAgICAgICAgICAgICBjb25zdCB1cmwgPSBgLyR7cm91dGVSZWYgPyByb3V0ZVJlZi5wYXRoIDogaXRlbS5yb3V0ZX1gO1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgIGFjdGlvbjogaXRlbS5jbGlja1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICB9KSk7XG4gIH1cblxuICBsb2FkQ29udGVudE1ldGFkYXRhKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKTogYW55IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPGFueT4oY29uZmlnLCAnZmVhdHVyZXMuY29udGVudC1tZXRhZGF0YS1wcmVzZXRzJyk7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBwcmVzZXRzID0ge307XG4gICAgcHJlc2V0cyA9IHRoaXMuZmlsdGVyRGlzYWJsZWQobWVyZ2VPYmplY3RzKHByZXNldHMsIC4uLmVsZW1lbnRzKSk7XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuYXBwQ29uZmlnLmNvbmZpZ1snY29udGVudC1tZXRhZGF0YSddIHx8IHt9O1xuICAgIG1ldGFkYXRhLnByZXNldHMgPSBwcmVzZXRzO1xuXG4gICAgdGhpcy5hcHBDb25maWcuY29uZmlnWydjb250ZW50LW1ldGFkYXRhJ10gPSBtZXRhZGF0YTtcbiAgICByZXR1cm4geyBwcmVzZXRzIH07XG4gIH1cblxuICBsb2FkU2VhcmNoRm9ybXMoY29uZmlnOiBFeHRlbnNpb25Db25maWcpOiBhbnkge1xuICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8YW55Pihjb25maWcsICdmZWF0dXJlcy5zZWFyY2gnKTtcbiAgICBpZiAoIWVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoID0gbWVyZ2VBcnJheXMoW10sIGVsZW1lbnRzKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiB0aGlzLmZpbHRlclZpc2libGUoZW50cnkpKVxuICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpO1xuXG4gICAgdGhpcy5hcHBDb25maWcuY29uZmlnWydzZWFyY2gnXSA9IHNlYXJjaDtcbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG5cbiAgZmlsdGVyRGlzYWJsZWQob2JqZWN0OiBBcnJheTx7IGRpc2FibGVkOiBib29sZWFuIH0+IHwgeyBkaXNhYmxlZDogYm9vbGVhbiB9KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG9iamVjdC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmRpc2FibGVkKS5tYXAoKGl0ZW0pID0+IHRoaXMuZmlsdGVyRGlzYWJsZWQoaXRlbSkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICghb2JqZWN0LmRpc2FibGVkKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKG9iamVjdCkuZm9yRWFjaCgocHJvcCkgPT4ge1xuICAgICAgICAgIG9iamVjdFtwcm9wXSA9IHRoaXMuZmlsdGVyRGlzYWJsZWQob2JqZWN0W3Byb3BdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3Q7XG4gICAgfVxuICB9XG5cbiAgZ2V0TmF2aWdhdGlvbkdyb3VwcygpOiBBcnJheTxOYXZCYXJHcm91cFJlZj4ge1xuICAgIHJldHVybiB0aGlzLm5hdmJhcjtcbiAgfVxuXG4gIGdldFNpZGViYXJUYWJzKCk6IEFycmF5PFNpZGViYXJUYWJSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5zaWRlYmFyVGFicy5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbjogQ29udGVudEFjdGlvblJlZikge1xuICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGFjdGlvbj8ucnVsZXM/LmVuYWJsZWQpIHtcbiAgICAgIGRpc2FibGVkID0gIXRoaXMuZXh0ZW5zaW9ucy5ldmFsdWF0ZVJ1bGUoYWN0aW9uLnJ1bGVzLmVuYWJsZWQsIHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5hY3Rpb24sXG4gICAgICBkaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVTaWRlYmFyQWN0aW9ucygpIHtcbiAgICB0aGlzLl9zaWRlYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKHRoaXMuY29uZmlnLCAnZmVhdHVyZXMuc2lkZWJhci50b29sYmFyJykpO1xuICB9XG5cbiAgZ2V0Q3JlYXRlQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUFjdGlvbnMucGlwZShcbiAgICAgIG1hcCgoY3JlYXRlQWN0aW9ucykgPT5cbiAgICAgICAgY3JlYXRlQWN0aW9uc1xuICAgICAgICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmNvcHlBY3Rpb24oYWN0aW9uKSlcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuYnVpbGRNZW51KGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0TWFpbkFjdGlvbigpOiBPYnNlcnZhYmxlPENvbnRlbnRBY3Rpb25SZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fbWFpbkFjdGlvbnMucGlwZShcbiAgICAgIGZpbHRlcigobWFpbkFjdGlvbikgPT4gbWFpbkFjdGlvbiAmJiB0aGlzLmZpbHRlclZpc2libGUobWFpbkFjdGlvbikpLFxuICAgICAgbWFwKChtYWluQWN0aW9uKSA9PiB7XG4gICAgICAgIGxldCBhY3Rpb25Db3B5ID0gdGhpcy5jb3B5QWN0aW9uKG1haW5BY3Rpb24pO1xuICAgICAgICBhY3Rpb25Db3B5ID0gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbkNvcHkpO1xuICAgICAgICByZXR1cm4gYWN0aW9uQ29weTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldEJhZGdlcyhub2RlOiBOb2RlRW50cnkpOiBPYnNlcnZhYmxlPEFycmF5PEJhZGdlPj4ge1xuICAgIHJldHVybiB0aGlzLl9iYWRnZXMucGlwZShtYXAoKGJhZGdlcykgPT4gYmFkZ2VzLmZpbHRlcigoYmFkZ2UpID0+IHRoaXMuZXZhbHVhdGVSdWxlKGJhZGdlLnJ1bGVzLnZpc2libGUsIG5vZGUpKSkpO1xuICB9XG5cbiAgZ2V0Q3VzdG9tTWV0YWRhdGFQYW5lbHMobm9kZTogTm9kZUVudHJ5KTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21NZXRhZGF0YVBhbmVscy5waXBlKG1hcCgocGFuZWxzKSA9PiBwYW5lbHMuZmlsdGVyKChwYW5lbCkgPT4gdGhpcy5ldmFsdWF0ZVJ1bGUocGFuZWwucnVsZXMudmlzaWJsZSwgbm9kZSkpKSk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTWVudShhY3Rpb25SZWY6IENvbnRlbnRBY3Rpb25SZWYpOiBDb250ZW50QWN0aW9uUmVmIHtcbiAgICBpZiAoYWN0aW9uUmVmLnR5cGUgPT09IENvbnRlbnRBY3Rpb25UeXBlLm1lbnUgJiYgYWN0aW9uUmVmLmNoaWxkcmVuICYmIGFjdGlvblJlZi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGFjdGlvblJlZi5jaGlsZHJlbi5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmJ1aWxkTWVudShhY3Rpb24pKTtcblxuICAgICAgYWN0aW9uUmVmLmNoaWxkcmVuID0gY2hpbGRyZW5cbiAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLnNldEFjdGlvbkRpc2FibGVkRnJvbVJ1bGUoYWN0aW9uKSlcbiAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICAgIH1cblxuICAgIHJldHVybiBhY3Rpb25SZWY7XG4gIH1cblxuICBwcml2YXRlIGdldEFsbG93ZWRBY3Rpb25zKGFjdGlvbnM6IENvbnRlbnRBY3Rpb25SZWZbXSk6IENvbnRlbnRBY3Rpb25SZWZbXSB7XG4gICAgcmV0dXJuIChhY3Rpb25zIHx8IFtdKVxuICAgICAgLmZpbHRlcigoYWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoYWN0aW9uKSlcbiAgICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IENvbnRlbnRBY3Rpb25UeXBlLm1lbnUpIHtcbiAgICAgICAgICBjb25zdCBjb3B5ID0gdGhpcy5jb3B5QWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgaWYgKGNvcHkuY2hpbGRyZW4gJiYgY29weS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb3B5LmNoaWxkcmVuID0gY29weS5jaGlsZHJlblxuICAgICAgICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gIWVudHJ5LmRpc2FibGVkKVxuICAgICAgICAgICAgICAuZmlsdGVyKChjaGlsZEFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNoaWxkQWN0aW9uKSlcbiAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWN0aW9uO1xuICAgICAgfSlcbiAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gIH1cblxuICBnZXRBbGxvd2VkU2lkZWJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlYmFyQWN0aW9ucy5waXBlKG1hcCgoc2lkZWJhckFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMoc2lkZWJhckFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRBbGxvd2VkVG9vbGJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl90b29sYmFyQWN0aW9ucy5waXBlKG1hcCgodG9vbGJhckFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnModG9vbGJhckFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRWaWV3ZXJUb29sYmFyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3ZpZXdlclRvb2xiYXJBY3Rpb25zLnBpcGUobWFwKCh2aWV3ZXJUb29sYmFyQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyh2aWV3ZXJUb29sYmFyQWN0aW9ucykpKTtcbiAgfVxuXG4gIGdldE9wZW5XaXRoQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5XaXRoQWN0aW9ucy5waXBlKG1hcCgob3BlbldpdGhBY3Rpb25zKSA9PiB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKG9wZW5XaXRoQWN0aW9ucykpKTtcbiAgfVxuXG4gIGdldFNoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucy5waXBlKFxuICAgICAgbWFwKChzaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMpID0+ICghdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSA/IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMoc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zKSA6IFtdKSlcbiAgICApO1xuICB9XG5cbiAgZ2V0SGVhZGVyQWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2hlYWRlckFjdGlvbnMucGlwZShcbiAgICAgIG1hcCgoaGVhZGVyQWN0aW9ucykgPT5cbiAgICAgICAgaGVhZGVyQWN0aW9uc1xuICAgICAgICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgPT09IENvbnRlbnRBY3Rpb25UeXBlLm1lbnUpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29weSA9IHRoaXMuY29weUFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgICAgICBpZiAoY29weS5jaGlsZHJlbiAmJiBjb3B5LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBjb3B5LmNoaWxkcmVuID0gY29weS5jaGlsZHJlblxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoY2hpbGRBY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShjaGlsZEFjdGlvbikpXG4gICAgICAgICAgICAgICAgICAuc29ydChzb3J0QnlPcmRlcilcbiAgICAgICAgICAgICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKHJlZHVjZVNlcGFyYXRvcnMsIFtdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gY29weTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgLnJlZHVjZShyZWR1Y2VFbXB0eU1lbnVzLCBbXSlcbiAgICAgICAgICAucmVkdWNlKHJlZHVjZVNlcGFyYXRvcnMsIFtdKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBnZXRBbGxvd2VkQ29udGV4dE1lbnVBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fY29udGV4dE1lbnVBY3Rpb25zLnBpcGUobWFwKChjb250ZXh0TWVudUFjdGlvbnMpID0+ICghdGhpcy5zZWxlY3Rpb24uaXNFbXB0eSA/IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnMoY29udGV4dE1lbnVBY3Rpb25zKSA6IFtdKSkpO1xuICB9XG5cbiAgZ2V0U2V0dGluZ3NHcm91cHMoKTogQXJyYXk8U2V0dGluZ3NHcm91cFJlZj4ge1xuICAgIHJldHVybiB0aGlzLnNldHRpbmdHcm91cHMuZmlsdGVyKChncm91cCkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGdyb3VwKSk7XG4gIH1cblxuICBjb3B5QWN0aW9uKGFjdGlvbjogQ29udGVudEFjdGlvblJlZik6IENvbnRlbnRBY3Rpb25SZWYge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5hY3Rpb24sXG4gICAgICBjaGlsZHJlbjogKGFjdGlvbi5jaGlsZHJlbiB8fCBbXSkubWFwKChjaGlsZCkgPT4gdGhpcy5jb3B5QWN0aW9uKGNoaWxkKSlcbiAgICB9O1xuICB9XG5cbiAgZmlsdGVyVmlzaWJsZShhY3Rpb246IENvbnRlbnRBY3Rpb25SZWYgfCBTZXR0aW5nc0dyb3VwUmVmIHwgU2lkZWJhclRhYlJlZiB8IERvY3VtZW50TGlzdFByZXNldFJlZiB8IFNlYXJjaENhdGVnb3J5KTogYm9vbGVhbiB7XG4gICAgaWYgKGFjdGlvbj8ucnVsZXM/LnZpc2libGUpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGFjdGlvbi5ydWxlcy52aXNpYmxlLCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1ZpZXdlckV4dGVuc2lvbkRpc2FibGVkKGV4dGVuc2lvbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgaWYgKGV4dGVuc2lvbi5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGVuc2lvbi5ydWxlcz8uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5ldmFsdWF0ZVJ1bGUoZXh0ZW5zaW9uLnJ1bGVzLmRpc2FibGVkLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBydW5BY3Rpb25CeUlkKGlkOiBzdHJpbmcsIGFkZGl0aW9uYWxQYXlsb2FkPzogYW55KSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5leHRlbnNpb25zLmdldEFjdGlvbkJ5SWQoaWQpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCB9ID0gYWN0aW9uO1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvblxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmV4dGVuc2lvbnMucnVuRXhwcmVzc2lvbihwYXlsb2FkLCBjb250ZXh0KTtcblxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGV4cHJlc3Npb24sXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IGFkZGl0aW9uYWxQYXlsb2FkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IGlkLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBhZGRpdGlvbmFsUGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdG9kbzogbW92ZSB0byBBREYvUnVsZVNlcnZpY2VcbiAgaXNSdWxlRGVmaW5lZChydWxlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShydWxlSWQgJiYgdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKSk7XG4gIH1cblxuICAvLyB0b2RvOiBtb3ZlIHRvIEFERi9SdWxlU2VydmljZVxuICBldmFsdWF0ZVJ1bGUocnVsZUlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKTtcblxuICAgIGlmIChldmFsdWF0b3IpIHtcbiAgICAgIHJldHVybiBldmFsdWF0b3IodGhpcywgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0RXZhbHVhdG9yKGtleTogc3RyaW5nKTogUnVsZUV2YWx1YXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXRFdmFsdWF0b3Ioa2V5KTtcbiAgfVxuXG4gIGNhblByZXZpZXdOb2RlKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuY2FuUHJldmlldykpIHtcbiAgICAgIGNvbnN0IGNhblByZXZpZXcgPSB0aGlzLmV2YWx1YXRlUnVsZShydWxlcy5jYW5QcmV2aWV3LCBub2RlKTtcblxuICAgICAgaWYgKCFjYW5QcmV2aWV3KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuc2hvd05hdmlnYXRpb24pKSB7XG4gICAgICBjb25zdCBzaG93TmF2aWdhdGlvbiA9IHRoaXMuZXZhbHVhdGVSdWxlKHJ1bGVzLnNob3dOYXZpZ2F0aW9uLCBub2RlKTtcbiAgICAgIGlmICghc2hvd05hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
468
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmV4dGVuc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNhLXNoYXJlZC9zcmMvbGliL3NlcnZpY2VzL2FwcC5leHRlbnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBWSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RSxPQUFPLEVBRUwsaUJBQWlCLEVBR2pCLHNCQUFzQixFQUV0QixnQkFBZ0IsRUFFaEIsV0FBVyxFQUNYLFlBQVksRUFJWixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBS2hCLFdBQVcsRUFDWixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBSW5ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBTTdDLE1BQU0sT0FBTyxtQkFBbUI7SUFvRDlCLFlBQ1MsSUFBMkIsRUFDeEIsS0FBc0IsRUFDdEIsTUFBOEIsRUFDOUIsVUFBNEIsRUFDL0IsV0FBa0MsRUFDbEMsU0FBMkIsRUFDeEIsZUFBZ0MsRUFDaEMsU0FBdUIsRUFDdkIsTUFBa0I7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QUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTdELElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ2YsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsdUJBQXVCLENBQUMsSUFBZTtRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRS9CLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxjQUFjLEVBQUU7Z0JBQ25CLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Z0hBNWdCVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjMgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb25cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uLlxuICogSWYgdGhlIHNvZnR3YXJlIHdhcyBwdXJjaGFzZWQgdW5kZXIgYSBwYWlkIEFsZnJlc2NvIGxpY2Vuc2UsIHRoZSB0ZXJtcyBvZlxuICogdGhlIHBhaWQgbGljZW5zZSBhZ3JlZW1lbnQgd2lsbCBwcmV2YWlsLiBPdGhlcndpc2UsIHRoZSBzb2Z0d2FyZSBpc1xuICogcHJvdmlkZWQgdW5kZXIgdGhlIGZvbGxvd2luZyBvcGVuIHNvdXJjZSBsaWNlbnNlIHRlcm1zOlxuICpcbiAqIFRoZSBBbGZyZXNjbyBFeGFtcGxlIENvbnRlbnQgQXBwbGljYXRpb24gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGUgQWxmcmVzY28gRXhhbXBsZSBDb250ZW50IEFwcGxpY2F0aW9uIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGZyb20gSHlsYW5kIFNvZnR3YXJlLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgQXBwU3RvcmUsIGdldFJ1bGVDb250ZXh0IH0gZnJvbSAnQGFsZnJlc2NvL2FjYS1zaGFyZWQvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQ29udGVudEFjdGlvblJlZixcbiAgQ29udGVudEFjdGlvblR5cGUsXG4gIERvY3VtZW50TGlzdFByZXNldFJlZixcbiAgRXh0ZW5zaW9uQ29uZmlnLFxuICBFeHRlbnNpb25Mb2FkZXJTZXJ2aWNlLFxuICBFeHRlbnNpb25SZWYsXG4gIEV4dGVuc2lvblNlcnZpY2UsXG4gIEljb25SZWYsXG4gIG1lcmdlQXJyYXlzLFxuICBtZXJnZU9iamVjdHMsXG4gIE5hdkJhckdyb3VwUmVmLFxuICBOYXZpZ2F0aW9uU3RhdGUsXG4gIFByb2ZpbGVTdGF0ZSxcbiAgcmVkdWNlRW1wdHlNZW51cyxcbiAgcmVkdWNlU2VwYXJhdG9ycyxcbiAgUnVsZUNvbnRleHQsXG4gIFJ1bGVFdmFsdWF0b3IsXG4gIFNlbGVjdGlvblN0YXRlLFxuICBTaWRlYmFyVGFiUmVmLFxuICBzb3J0QnlPcmRlclxufSBmcm9tICdAYWxmcmVzY28vYWRmLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgQXV0aGVudGljYXRpb25TZXJ2aWNlLCBMb2dTZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTm9kZUVudHJ5LCBSZXBvc2l0b3J5SW5mbyB9IGZyb20gJ0BhbGZyZXNjby9qcy1hcGknO1xuaW1wb3J0IHsgVmlld2VyUnVsZXMgfSBmcm9tICcuLi9tb2RlbHMvdmlld2VyLnJ1bGVzJztcbmltcG9ydCB7IEJhZGdlLCBTZXR0aW5nc0dyb3VwUmVmIH0gZnJvbSAnLi4vbW9kZWxzL3R5cGVzJztcbmltcG9ydCB7IE5vZGVQZXJtaXNzaW9uU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vZGUtcGVybWlzc2lvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU2VhcmNoQ2F0ZWdvcnkgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvbnRlbnQtc2VydmljZXMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBFeHRlbnNpb25TZXJ2aWNlIGltcGxlbWVudHMgUnVsZUNvbnRleHQge1xuICBwcml2YXRlIF9yZWZlcmVuY2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxFeHRlbnNpb25SZWZbXT4oW10pO1xuXG4gIG5hdmJhcjogQXJyYXk8TmF2QmFyR3JvdXBSZWY+ID0gW107XG4gIHNpZGViYXJUYWJzOiBBcnJheTxTaWRlYmFyVGFiUmVmPiA9IFtdO1xuICBjb250ZW50TWV0YWRhdGE6IGFueTtcbiAgc2VhcmNoOiBhbnk7XG4gIHZpZXdlclJ1bGVzOiBWaWV3ZXJSdWxlcyA9IHt9O1xuICBzZXR0aW5nR3JvdXBzOiBBcnJheTxTZXR0aW5nc0dyb3VwUmVmPiA9IFtdO1xuXG4gIHByaXZhdGUgX2hlYWRlckFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX3Rvb2xiYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF92aWV3ZXJUb29sYmFyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4oW10pO1xuICBwcml2YXRlIF9jb250ZXh0TWVudUFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG4gIHByaXZhdGUgX29wZW5XaXRoQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfY3JlYXRlQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfbWFpbkFjdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbnRlbnRBY3Rpb25SZWY+KG51bGwpO1xuICBwcml2YXRlIF9zaWRlYmFyQWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfYmFkZ2VzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxCYWRnZT4+KFtdKTtcbiAgcHJpdmF0ZSBfZmlsZXNEb2N1bWVudExpc3RQcmVzZXQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj4+KFtdKTtcbiAgcHJpdmF0ZSBfY3VzdG9tTWV0YWRhdGFQYW5lbHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PihbXSk7XG5cbiAgZG9jdW1lbnRMaXN0UHJlc2V0czoge1xuICAgIGxpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBmYXZvcml0ZUxpYnJhcmllczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBzaGFyZWQ6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gICAgcmVjZW50OiBBcnJheTxEb2N1bWVudExpc3RQcmVzZXRSZWY+O1xuICAgIGZhdm9yaXRlczogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICB0cmFzaGNhbjogQXJyYXk8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPjtcbiAgICBzZWFyY2hMaWJyYXJpZXM6IEFycmF5PERvY3VtZW50TGlzdFByZXNldFJlZj47XG4gIH0gPSB7XG4gICAgbGlicmFyaWVzOiBbXSxcbiAgICBmYXZvcml0ZUxpYnJhcmllczogW10sXG4gICAgc2hhcmVkOiBbXSxcbiAgICByZWNlbnQ6IFtdLFxuICAgIGZhdm9yaXRlczogW10sXG4gICAgdHJhc2hjYW46IFtdLFxuICAgIHNlYXJjaExpYnJhcmllczogW11cbiAgfTtcblxuICBzZWxlY3Rpb246IFNlbGVjdGlvblN0YXRlO1xuICBuYXZpZ2F0aW9uOiBOYXZpZ2F0aW9uU3RhdGU7XG4gIHByb2ZpbGU6IFByb2ZpbGVTdGF0ZTtcbiAgcmVwb3NpdG9yeTogUmVwb3NpdG9yeUluZm87XG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbjtcblxuICByZWZlcmVuY2VzJDogT2JzZXJ2YWJsZTxFeHRlbnNpb25SZWZbXT47XG4gIGZpbGVzRG9jdW1lbnRMaXN0UHJlc2V0JDogT2JzZXJ2YWJsZTxEb2N1bWVudExpc3RQcmVzZXRSZWZbXT4gPSB0aGlzLl9maWxlc0RvY3VtZW50TGlzdFByZXNldC5hc09ic2VydmFibGUoKTtcblxuICBjb25maWc6IEV4dGVuc2lvbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYXV0aDogQXV0aGVudGljYXRpb25TZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzdG9yZTogU3RvcmU8QXBwU3RvcmU+LFxuICAgIHByb3RlY3RlZCBsb2FkZXI6IEV4dGVuc2lvbkxvYWRlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGV4dGVuc2lvbnM6IEV4dGVuc2lvblNlcnZpY2UsXG4gICAgcHVibGljIHBlcm1pc3Npb25zOiBOb2RlUGVybWlzc2lvblNlcnZpY2UsXG4gICAgcHVibGljIGFwcENvbmZpZzogQXBwQ29uZmlnU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbWF0SWNvblJlZ2lzdHJ5OiBNYXRJY29uUmVnaXN0cnksXG4gICAgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHByb3RlY3RlZCBsb2dnZXI6IExvZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5yZWZlcmVuY2VzJCA9IHRoaXMuX3JlZmVyZW5jZXMuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICB0aGlzLnN0b3JlLnNlbGVjdChnZXRSdWxlQ29udGV4dCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uID0gcmVzdWx0LnNlbGVjdGlvbjtcbiAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3VsdC5uYXZpZ2F0aW9uO1xuICAgICAgdGhpcy5wcm9maWxlID0gcmVzdWx0LnByb2ZpbGU7XG4gICAgICB0aGlzLnJlcG9zaXRvcnkgPSByZXN1bHQucmVwb3NpdG9yeTtcblxuICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgIHRoaXMuc2V0dXAodGhpcy5jb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGF3YWl0IHRoaXMuZXh0ZW5zaW9ucy5sb2FkKCk7XG4gICAgdGhpcy5zZXR1cCh0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBzZXR1cChjb25maWc6IEV4dGVuc2lvbkNvbmZpZykge1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignRXh0ZW5zaW9uIGNvbmZpZ3VyYXRpb24gbm90IGZvdW5kJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR0aW5nR3JvdXBzID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8U2V0dGluZ3NHcm91cFJlZj4oY29uZmlnLCAnc2V0dGluZ3MnKTtcblxuICAgIHRoaXMuX2hlYWRlckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy5oZWFkZXInKSk7XG4gICAgdGhpcy5fc2lkZWJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy5zaWRlYmFyLnRvb2xiYXInKSk7XG4gICAgdGhpcy5fdG9vbGJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyhjb25maWcsICdmZWF0dXJlcy50b29sYmFyJykpO1xuICAgIHRoaXMuX3ZpZXdlclRvb2xiYXJBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudmlld2VyLnRvb2xiYXJBY3Rpb25zJykpO1xuICAgIHRoaXMuX3NoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucy5uZXh0KHRoaXMubG9hZGVyLmdldENvbnRlbnRBY3Rpb25zKGNvbmZpZywgJ2ZlYXR1cmVzLnZpZXdlci5zaGFyZWQudG9vbGJhckFjdGlvbnMnKSk7XG4gICAgdGhpcy5fY29udGV4dE1lbnVBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMuY29udGV4dE1lbnUnKSk7XG4gICAgdGhpcy5fb3BlbldpdGhBY3Rpb25zLm5leHQodGhpcy5sb2FkZXIuZ2V0Q29udGVudEFjdGlvbnMoY29uZmlnLCAnZmVhdHVyZXMudmlld2VyLm9wZW5XaXRoJykpO1xuICAgIHRoaXMuX2NyZWF0ZUFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRFbGVtZW50czxDb250ZW50QWN0aW9uUmVmPihjb25maWcsICdmZWF0dXJlcy5jcmVhdGUnKSk7XG4gICAgdGhpcy5fbWFpbkFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRGZWF0dXJlcyhjb25maWcpLm1haW5BY3Rpb24pO1xuICAgIHRoaXMuX2JhZGdlcy5uZXh0KHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPEJhZGdlPihjb25maWcsICdmZWF0dXJlcy5iYWRnZXMnKSk7XG4gICAgdGhpcy5fZmlsZXNEb2N1bWVudExpc3RQcmVzZXQubmV4dCh0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdmaWxlcycpKTtcbiAgICB0aGlzLl9jdXN0b21NZXRhZGF0YVBhbmVscy5uZXh0KHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPENvbnRlbnRBY3Rpb25SZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLmN1c3RvbU1ldGFkYXRhUGFuZWxzJykpO1xuXG4gICAgdGhpcy5uYXZiYXIgPSB0aGlzLmxvYWROYXZCYXIoY29uZmlnKTtcbiAgICB0aGlzLnNpZGViYXJUYWJzID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8U2lkZWJhclRhYlJlZj4oY29uZmlnLCAnZmVhdHVyZXMuc2lkZWJhci50YWJzJyk7XG4gICAgdGhpcy5jb250ZW50TWV0YWRhdGEgPSB0aGlzLmxvYWRDb250ZW50TWV0YWRhdGEoY29uZmlnKTtcbiAgICB0aGlzLnNlYXJjaCA9IHRoaXMubG9hZFNlYXJjaEZvcm1zKGNvbmZpZyk7XG4gICAgdGhpcy5zZWFyY2g/LmZvckVhY2goKHNlYXJjaFNldCkgPT4ge1xuICAgICAgc2VhcmNoU2V0LmNhdGVnb3JpZXMgPSBzZWFyY2hTZXQuY2F0ZWdvcmllcz8uZmlsdGVyKChjYXRlZ29yeSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGNhdGVnb3J5KSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvY3VtZW50TGlzdFByZXNldHMgPSB7XG4gICAgICBsaWJyYXJpZXM6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2xpYnJhcmllcycpLFxuICAgICAgZmF2b3JpdGVMaWJyYXJpZXM6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ2Zhdm9yaXRlTGlicmFyaWVzJyksXG4gICAgICBzaGFyZWQ6IHRoaXMuZ2V0RG9jdW1lbnRMaXN0UHJlc2V0KGNvbmZpZywgJ3NoYXJlZCcpLFxuICAgICAgcmVjZW50OiB0aGlzLmdldERvY3VtZW50TGlzdFByZXNldChjb25maWcsICdyZWNlbnQnKSxcbiAgICAgIGZhdm9yaXRlczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnZmF2b3JpdGVzJyksXG4gICAgICB0cmFzaGNhbjogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAndHJhc2hjYW4nKSxcbiAgICAgIHNlYXJjaExpYnJhcmllczogdGhpcy5nZXREb2N1bWVudExpc3RQcmVzZXQoY29uZmlnLCAnc2VhcmNoLWxpYnJhcmllcycpXG4gICAgfTtcblxuICAgIHRoaXMud2l0aENyZWRlbnRpYWxzID0gdGhpcy5hcHBDb25maWcuZ2V0PGJvb2xlYW4+KCdhdXRoLndpdGhDcmVkZW50aWFscycsIGZhbHNlKTtcblxuICAgIGlmIChjb25maWcuZmVhdHVyZXM/LnZpZXdlcikge1xuICAgICAgdGhpcy52aWV3ZXJSdWxlcyA9IChjb25maWcuZmVhdHVyZXMudmlld2VyWydydWxlcyddIGFzIFZpZXdlclJ1bGVzKSB8fCB7fTtcbiAgICB9XG5cbiAgICB0aGlzLnJlZ2lzdGVySWNvbnMoY29uZmlnKTtcblxuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSAoY29uZmlnLiRyZWZlcmVuY2VzIHx8IFtdKS5maWx0ZXIoKGVudHJ5KSA9PiB0eXBlb2YgZW50cnkgPT09ICdvYmplY3QnKS5tYXAoKGVudHJ5KSA9PiBlbnRyeSBhcyBFeHRlbnNpb25SZWYpO1xuICAgIHRoaXMuX3JlZmVyZW5jZXMubmV4dChyZWZlcmVuY2VzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3Rlckljb25zKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKSB7XG4gICAgY29uc3QgaWNvbnM6IEFycmF5PEljb25SZWY+ID0gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8SWNvblJlZj4oY29uZmlnLCAnZmVhdHVyZXMuaWNvbnMnKS5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpO1xuXG4gICAgZm9yIChjb25zdCBpY29uIG9mIGljb25zKSB7XG4gICAgICBjb25zdCBbbnMsIGlkXSA9IGljb24uaWQuc3BsaXQoJzonKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gaWNvbi52YWx1ZTtcblxuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBNaXNzaW5nIGljb24gdmFsdWUgZm9yIFwiJHtpY29uLmlkfVwiLmApO1xuICAgICAgfSBlbHNlIGlmICghbnMgfHwgIWlkKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYEluY29ycmVjdCBpY29uIGlkIGZvcm1hdC5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubWF0SWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb25Jbk5hbWVzcGFjZShucywgaWQsIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBsb2FkTmF2QmFyKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKTogQXJyYXk8TmF2QmFyR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkZXIuZ2V0RWxlbWVudHM8TmF2QmFyR3JvdXBSZWY+KGNvbmZpZywgJ2ZlYXR1cmVzLm5hdmJhcicpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldERvY3VtZW50TGlzdFByZXNldChjb25maWc6IEV4dGVuc2lvbkNvbmZpZywga2V5OiBzdHJpbmcpOiBEb2N1bWVudExpc3RQcmVzZXRSZWZbXSB7XG4gICAgcmV0dXJuIHRoaXMubG9hZGVyXG4gICAgICAuZ2V0RWxlbWVudHM8RG9jdW1lbnRMaXN0UHJlc2V0UmVmPihjb25maWcsIGBmZWF0dXJlcy5kb2N1bWVudExpc3QuJHtrZXl9YClcbiAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiB0aGlzLmZpbHRlclZpc2libGUoZ3JvdXApKVxuICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgIC5tYXAoKGVudHJ5KSA9PiB7XG4gICAgICAgIGVudHJ5LnJlc2l6YWJsZSA9IGVudHJ5LnJlc2l6YWJsZSA/PyB0cnVlO1xuICAgICAgICByZXR1cm4gZW50cnk7XG4gICAgICB9KVxuICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpO1xuICB9XG5cbiAgZ2V0QXBwbGljYXRpb25OYXZpZ2F0aW9uKGVsZW1lbnRzKTogQXJyYXk8TmF2QmFyR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gZWxlbWVudHNcbiAgICAgIC5maWx0ZXIoKGdyb3VwKSA9PiB0aGlzLmZpbHRlclZpc2libGUoZ3JvdXApKVxuICAgICAgLm1hcCgoZ3JvdXApID0+ICh7XG4gICAgICAgIC4uLmdyb3VwLFxuICAgICAgICBpdGVtczogKGdyb3VwLml0ZW1zIHx8IFtdKVxuICAgICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGl0ZW0pKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgIC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICBpdGVtLmNoaWxkcmVuID0gaXRlbS5jaGlsZHJlblxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgLmZpbHRlcigoY2hpbGQpID0+IHRoaXMuZmlsdGVyVmlzaWJsZShjaGlsZCkpXG4gICAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgICAgLm1hcCgoY2hpbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5jb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkLmNsaWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkUm91dGVSZWYgPSB0aGlzLmV4dGVuc2lvbnMuZ2V0Um91dGVCeUlkKGNoaWxkLnJvdXRlKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRVcmwgPSBgLyR7Y2hpbGRSb3V0ZVJlZiA/IGNoaWxkUm91dGVSZWYucGF0aCA6IGNoaWxkLnJvdXRlfWA7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgLi4uY2hpbGQsXG4gICAgICAgICAgICAgICAgICAgICAgdXJsOiBjaGlsZFVybFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5jaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBjaGlsZC5jbGlja1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW1cbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGl0ZW0uY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0gfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFpdGVtLmNsaWNrKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJvdXRlUmVmID0gdGhpcy5leHRlbnNpb25zLmdldFJvdXRlQnlJZChpdGVtLnJvdXRlKTtcbiAgICAgICAgICAgICAgY29uc3QgdXJsID0gYC8ke3JvdXRlUmVmID8gcm91dGVSZWYucGF0aCA6IGl0ZW0ucm91dGV9YDtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIHVybFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICBhY3Rpb246IGl0ZW0uY2xpY2tcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSlcbiAgICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgfSkpO1xuICB9XG5cbiAgbG9hZENvbnRlbnRNZXRhZGF0YShjb25maWc6IEV4dGVuc2lvbkNvbmZpZyk6IGFueSB7XG4gICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLmxvYWRlci5nZXRFbGVtZW50czxhbnk+KGNvbmZpZywgJ2ZlYXR1cmVzLmNvbnRlbnQtbWV0YWRhdGEtcHJlc2V0cycpO1xuICAgIGlmICghZWxlbWVudHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcHJlc2V0cyA9IHt9O1xuICAgIHByZXNldHMgPSB0aGlzLmZpbHRlckRpc2FibGVkKG1lcmdlT2JqZWN0cyhwcmVzZXRzLCAuLi5lbGVtZW50cykpO1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmFwcENvbmZpZy5jb25maWdbJ2NvbnRlbnQtbWV0YWRhdGEnXSB8fCB7fTtcbiAgICBtZXRhZGF0YS5wcmVzZXRzID0gcHJlc2V0cztcblxuICAgIHRoaXMuYXBwQ29uZmlnLmNvbmZpZ1snY29udGVudC1tZXRhZGF0YSddID0gbWV0YWRhdGE7XG4gICAgcmV0dXJuIHsgcHJlc2V0cyB9O1xuICB9XG5cbiAgbG9hZFNlYXJjaEZvcm1zKGNvbmZpZzogRXh0ZW5zaW9uQ29uZmlnKTogYW55IHtcbiAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMubG9hZGVyLmdldEVsZW1lbnRzPGFueT4oY29uZmlnLCAnZmVhdHVyZXMuc2VhcmNoJyk7XG4gICAgaWYgKCFlbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaCA9IG1lcmdlQXJyYXlzKFtdLCBlbGVtZW50cylcbiAgICAgIC5maWx0ZXIoKGVudHJ5KSA9PiAhZW50cnkuZGlzYWJsZWQpXG4gICAgICAuZmlsdGVyKChlbnRyeSkgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGVudHJ5KSlcbiAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKTtcblxuICAgIHRoaXMuYXBwQ29uZmlnLmNvbmZpZ1snc2VhcmNoJ10gPSBzZWFyY2g7XG4gICAgcmV0dXJuIHNlYXJjaDtcbiAgfVxuXG4gIGZpbHRlckRpc2FibGVkKG9iamVjdDogQXJyYXk8eyBkaXNhYmxlZDogYm9vbGVhbiB9PiB8IHsgZGlzYWJsZWQ6IGJvb2xlYW4gfSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9iamVjdCkpIHtcbiAgICAgIHJldHVybiBvYmplY3QuZmlsdGVyKChpdGVtKSA9PiAhaXRlbS5kaXNhYmxlZCkubWFwKChpdGVtKSA9PiB0aGlzLmZpbHRlckRpc2FibGVkKGl0ZW0pKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAoIW9iamVjdC5kaXNhYmxlZCkge1xuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3QpLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBvYmplY3RbcHJvcF0gPSB0aGlzLmZpbHRlckRpc2FibGVkKG9iamVjdFtwcm9wXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gb2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cbiAgfVxuXG4gIGdldE5hdmlnYXRpb25Hcm91cHMoKTogQXJyYXk8TmF2QmFyR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5uYXZiYXI7XG4gIH1cblxuICBnZXRTaWRlYmFyVGFicygpOiBBcnJheTxTaWRlYmFyVGFiUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMuc2lkZWJhclRhYnMuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb246IENvbnRlbnRBY3Rpb25SZWYpIHtcbiAgICBsZXQgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGlmIChhY3Rpb24/LnJ1bGVzPy5lbmFibGVkKSB7XG4gICAgICBkaXNhYmxlZCA9ICF0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGFjdGlvbi5ydWxlcy5lbmFibGVkLCB0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWN0aW9uLFxuICAgICAgZGlzYWJsZWRcbiAgICB9O1xuICB9XG5cbiAgdXBkYXRlU2lkZWJhckFjdGlvbnMoKSB7XG4gICAgdGhpcy5fc2lkZWJhckFjdGlvbnMubmV4dCh0aGlzLmxvYWRlci5nZXRDb250ZW50QWN0aW9ucyh0aGlzLmNvbmZpZywgJ2ZlYXR1cmVzLnNpZGViYXIudG9vbGJhcicpKTtcbiAgfVxuXG4gIGdldENyZWF0ZUFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVBY3Rpb25zLnBpcGUoXG4gICAgICBtYXAoKGNyZWF0ZUFjdGlvbnMpID0+XG4gICAgICAgIGNyZWF0ZUFjdGlvbnNcbiAgICAgICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5jb3B5QWN0aW9uKGFjdGlvbikpXG4gICAgICAgICAgLm1hcCgoYWN0aW9uKSA9PiB0aGlzLmJ1aWxkTWVudShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIGdldE1haW5BY3Rpb24oKTogT2JzZXJ2YWJsZTxDb250ZW50QWN0aW9uUmVmPiB7XG4gICAgcmV0dXJuIHRoaXMuX21haW5BY3Rpb25zLnBpcGUoXG4gICAgICBmaWx0ZXIoKG1haW5BY3Rpb24pID0+IG1haW5BY3Rpb24gJiYgdGhpcy5maWx0ZXJWaXNpYmxlKG1haW5BY3Rpb24pKSxcbiAgICAgIG1hcCgobWFpbkFjdGlvbikgPT4ge1xuICAgICAgICBsZXQgYWN0aW9uQ29weSA9IHRoaXMuY29weUFjdGlvbihtYWluQWN0aW9uKTtcbiAgICAgICAgYWN0aW9uQ29weSA9IHRoaXMuc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb25Db3B5KTtcbiAgICAgICAgcmV0dXJuIGFjdGlvbkNvcHk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBnZXRCYWRnZXMobm9kZTogTm9kZUVudHJ5KTogT2JzZXJ2YWJsZTxBcnJheTxCYWRnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5fYmFkZ2VzLnBpcGUobWFwKChiYWRnZXMpID0+IGJhZGdlcy5maWx0ZXIoKGJhZGdlKSA9PiB0aGlzLmV2YWx1YXRlUnVsZShiYWRnZS5ydWxlcy52aXNpYmxlLCBub2RlKSkpKTtcbiAgfVxuXG4gIGdldEN1c3RvbU1ldGFkYXRhUGFuZWxzKG5vZGU6IE5vZGVFbnRyeSk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fY3VzdG9tTWV0YWRhdGFQYW5lbHMucGlwZShtYXAoKHBhbmVscykgPT4gcGFuZWxzLmZpbHRlcigocGFuZWwpID0+IHRoaXMuZXZhbHVhdGVSdWxlKHBhbmVsLnJ1bGVzLnZpc2libGUsIG5vZGUpKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZE1lbnUoYWN0aW9uUmVmOiBDb250ZW50QWN0aW9uUmVmKTogQ29udGVudEFjdGlvblJlZiB7XG4gICAgaWYgKGFjdGlvblJlZi50eXBlID09PSBDb250ZW50QWN0aW9uVHlwZS5tZW51ICYmIGFjdGlvblJlZi5jaGlsZHJlbiAmJiBhY3Rpb25SZWYuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBhY3Rpb25SZWYuY2hpbGRyZW4uZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKS5tYXAoKGFjdGlvbikgPT4gdGhpcy5idWlsZE1lbnUoYWN0aW9uKSk7XG5cbiAgICAgIGFjdGlvblJlZi5jaGlsZHJlbiA9IGNoaWxkcmVuXG4gICAgICAgIC5tYXAoKGFjdGlvbikgPT4gdGhpcy5zZXRBY3Rpb25EaXNhYmxlZEZyb21SdWxlKGFjdGlvbikpXG4gICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgICAucmVkdWNlKHJlZHVjZVNlcGFyYXRvcnMsIFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uUmVmO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbGxvd2VkQWN0aW9ucyhhY3Rpb25zOiBDb250ZW50QWN0aW9uUmVmW10pOiBDb250ZW50QWN0aW9uUmVmW10ge1xuICAgIHJldHVybiAoYWN0aW9ucyB8fCBbXSlcbiAgICAgIC5maWx0ZXIoKGFjdGlvbikgPT4gdGhpcy5maWx0ZXJWaXNpYmxlKGFjdGlvbikpXG4gICAgICAubWFwKChhY3Rpb24pID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb250ZW50QWN0aW9uVHlwZS5tZW51KSB7XG4gICAgICAgICAgY29uc3QgY29weSA9IHRoaXMuY29weUFjdGlvbihhY3Rpb24pO1xuICAgICAgICAgIGlmIChjb3B5LmNoaWxkcmVuICYmIGNvcHkuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgY29weS5jaGlsZHJlbiA9IGNvcHkuY2hpbGRyZW5cbiAgICAgICAgICAgICAgLmZpbHRlcigoZW50cnkpID0+ICFlbnRyeS5kaXNhYmxlZClcbiAgICAgICAgICAgICAgLmZpbHRlcigoY2hpbGRBY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShjaGlsZEFjdGlvbikpXG4gICAgICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgICAgICAucmVkdWNlKHJlZHVjZVNlcGFyYXRvcnMsIFtdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjdGlvbjtcbiAgICAgIH0pXG4gICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb24pKVxuICAgICAgLnJlZHVjZShyZWR1Y2VFbXB0eU1lbnVzLCBbXSlcbiAgICAgIC5yZWR1Y2UocmVkdWNlU2VwYXJhdG9ycywgW10pO1xuICB9XG5cbiAgZ2V0QWxsb3dlZFNpZGViYXJBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2lkZWJhckFjdGlvbnMucGlwZShtYXAoKHNpZGViYXJBY3Rpb25zKSA9PiB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKHNpZGViYXJBY3Rpb25zKSkpO1xuICB9XG5cbiAgZ2V0QWxsb3dlZFRvb2xiYXJBY3Rpb25zKCk6IE9ic2VydmFibGU8QXJyYXk8Q29udGVudEFjdGlvblJlZj4+IHtcbiAgICByZXR1cm4gdGhpcy5fdG9vbGJhckFjdGlvbnMucGlwZShtYXAoKHRvb2xiYXJBY3Rpb25zKSA9PiB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKHRvb2xiYXJBY3Rpb25zKSkpO1xuICB9XG5cbiAgZ2V0Vmlld2VyVG9vbGJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl92aWV3ZXJUb29sYmFyQWN0aW9ucy5waXBlKG1hcCgodmlld2VyVG9vbGJhckFjdGlvbnMpID0+IHRoaXMuZ2V0QWxsb3dlZEFjdGlvbnModmlld2VyVG9vbGJhckFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRPcGVuV2l0aEFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9vcGVuV2l0aEFjdGlvbnMucGlwZShtYXAoKG9wZW5XaXRoQWN0aW9ucykgPT4gdGhpcy5nZXRBbGxvd2VkQWN0aW9ucyhvcGVuV2l0aEFjdGlvbnMpKSk7XG4gIH1cblxuICBnZXRTaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9zaGFyZWRMaW5rVmlld2VyVG9vbGJhckFjdGlvbnMucGlwZShcbiAgICAgIG1hcCgoc2hhcmVkTGlua1ZpZXdlclRvb2xiYXJBY3Rpb25zKSA9PiAoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkgPyB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKHNoYXJlZExpbmtWaWV3ZXJUb29sYmFyQWN0aW9ucykgOiBbXSkpXG4gICAgKTtcbiAgfVxuXG4gIGdldEhlYWRlckFjdGlvbnMoKTogT2JzZXJ2YWJsZTxBcnJheTxDb250ZW50QWN0aW9uUmVmPj4ge1xuICAgIHJldHVybiB0aGlzLl9oZWFkZXJBY3Rpb25zLnBpcGUoXG4gICAgICBtYXAoKGhlYWRlckFjdGlvbnMpID0+XG4gICAgICAgIGhlYWRlckFjdGlvbnNcbiAgICAgICAgICAuZmlsdGVyKChhY3Rpb24pID0+IHRoaXMuZmlsdGVyVmlzaWJsZShhY3Rpb24pKVxuICAgICAgICAgIC5tYXAoKGFjdGlvbikgPT4ge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlID09PSBDb250ZW50QWN0aW9uVHlwZS5tZW51KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvcHkgPSB0aGlzLmNvcHlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgICAgaWYgKGNvcHkuY2hpbGRyZW4gJiYgY29weS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29weS5jaGlsZHJlbiA9IGNvcHkuY2hpbGRyZW5cbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKGNoaWxkQWN0aW9uKSA9PiB0aGlzLmZpbHRlclZpc2libGUoY2hpbGRBY3Rpb24pKVxuICAgICAgICAgICAgICAgICAgLnNvcnQoc29ydEJ5T3JkZXIpXG4gICAgICAgICAgICAgICAgICAucmVkdWNlKHJlZHVjZUVtcHR5TWVudXMsIFtdKVxuICAgICAgICAgICAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGNvcHk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY3Rpb247XG4gICAgICAgICAgfSlcbiAgICAgICAgICAubWFwKChhY3Rpb24pID0+IHRoaXMuc2V0QWN0aW9uRGlzYWJsZWRGcm9tUnVsZShhY3Rpb24pKVxuICAgICAgICAgIC5zb3J0KHNvcnRCeU9yZGVyKVxuICAgICAgICAgIC5yZWR1Y2UocmVkdWNlRW1wdHlNZW51cywgW10pXG4gICAgICAgICAgLnJlZHVjZShyZWR1Y2VTZXBhcmF0b3JzLCBbXSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgZ2V0QWxsb3dlZENvbnRleHRNZW51QWN0aW9ucygpOiBPYnNlcnZhYmxlPEFycmF5PENvbnRlbnRBY3Rpb25SZWY+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRleHRNZW51QWN0aW9ucy5waXBlKG1hcCgoY29udGV4dE1lbnVBY3Rpb25zKSA9PiAoIXRoaXMuc2VsZWN0aW9uLmlzRW1wdHkgPyB0aGlzLmdldEFsbG93ZWRBY3Rpb25zKGNvbnRleHRNZW51QWN0aW9ucykgOiBbXSkpKTtcbiAgfVxuXG4gIGdldFNldHRpbmdzR3JvdXBzKCk6IEFycmF5PFNldHRpbmdzR3JvdXBSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5zZXR0aW5nR3JvdXBzLmZpbHRlcigoZ3JvdXApID0+IHRoaXMuZmlsdGVyVmlzaWJsZShncm91cCkpO1xuICB9XG5cbiAgY29weUFjdGlvbihhY3Rpb246IENvbnRlbnRBY3Rpb25SZWYpOiBDb250ZW50QWN0aW9uUmVmIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uYWN0aW9uLFxuICAgICAgY2hpbGRyZW46IChhY3Rpb24uY2hpbGRyZW4gfHwgW10pLm1hcCgoY2hpbGQpID0+IHRoaXMuY29weUFjdGlvbihjaGlsZCkpXG4gICAgfTtcbiAgfVxuXG4gIGZpbHRlclZpc2libGUoYWN0aW9uOiBDb250ZW50QWN0aW9uUmVmIHwgU2V0dGluZ3NHcm91cFJlZiB8IFNpZGViYXJUYWJSZWYgfCBEb2N1bWVudExpc3RQcmVzZXRSZWYgfCBTZWFyY2hDYXRlZ29yeSk6IGJvb2xlYW4ge1xuICAgIGlmIChhY3Rpb24/LnJ1bGVzPy52aXNpYmxlKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShhY3Rpb24ucnVsZXMudmlzaWJsZSkpIHtcbiAgICAgICAgcmV0dXJuIGFjdGlvbi5ydWxlcy52aXNpYmxlLmV2ZXJ5KChydWxlKSA9PiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKHJ1bGUsIHRoaXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbnMuZXZhbHVhdGVSdWxlKGFjdGlvbi5ydWxlcy52aXNpYmxlLCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1ZpZXdlckV4dGVuc2lvbkRpc2FibGVkKGV4dGVuc2lvbjogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgaWYgKGV4dGVuc2lvbi5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV4dGVuc2lvbi5ydWxlcz8uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5ldmFsdWF0ZVJ1bGUoZXh0ZW5zaW9uLnJ1bGVzLmRpc2FibGVkLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBydW5BY3Rpb25CeUlkKGlkOiBzdHJpbmcsIGFkZGl0aW9uYWxQYXlsb2FkPzogYW55KSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5leHRlbnNpb25zLmdldEFjdGlvbkJ5SWQoaWQpO1xuICAgIGlmIChhY3Rpb24pIHtcbiAgICAgIGNvbnN0IHsgdHlwZSwgcGF5bG9hZCB9ID0gYWN0aW9uO1xuICAgICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgc2VsZWN0aW9uOiB0aGlzLnNlbGVjdGlvblxuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4cHJlc3Npb24gPSB0aGlzLmV4dGVuc2lvbnMucnVuRXhwcmVzc2lvbihwYXlsb2FkLCBjb250ZXh0KTtcblxuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBheWxvYWQ6IGV4cHJlc3Npb24sXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IGFkZGl0aW9uYWxQYXlsb2FkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh7XG4gICAgICAgIHR5cGU6IGlkLFxuICAgICAgICBjb25maWd1cmF0aW9uOiBhZGRpdGlvbmFsUGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLy8gdG9kbzogbW92ZSB0byBBREYvUnVsZVNlcnZpY2VcbiAgaXNSdWxlRGVmaW5lZChydWxlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShydWxlSWQgJiYgdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKSk7XG4gIH1cblxuICAvLyB0b2RvOiBtb3ZlIHRvIEFERi9SdWxlU2VydmljZVxuICBldmFsdWF0ZVJ1bGUocnVsZUlkOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXZhbHVhdG9yID0gdGhpcy5nZXRFdmFsdWF0b3IocnVsZUlkKTtcblxuICAgIGlmIChldmFsdWF0b3IpIHtcbiAgICAgIHJldHVybiBldmFsdWF0b3IodGhpcywgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZ2V0RXZhbHVhdG9yKGtleTogc3RyaW5nKTogUnVsZUV2YWx1YXRvciB7XG4gICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9ucy5nZXRFdmFsdWF0b3Ioa2V5KTtcbiAgfVxuXG4gIGNhblByZXZpZXdOb2RlKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuY2FuUHJldmlldykpIHtcbiAgICAgIGNvbnN0IGNhblByZXZpZXcgPSB0aGlzLmV2YWx1YXRlUnVsZShydWxlcy5jYW5QcmV2aWV3LCBub2RlKTtcblxuICAgICAgaWYgKCFjYW5QcmV2aWV3KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNhblNob3dWaWV3ZXJOYXZpZ2F0aW9uKG5vZGU6IE5vZGVFbnRyeSkge1xuICAgIGNvbnN0IHJ1bGVzID0gdGhpcy52aWV3ZXJSdWxlcztcblxuICAgIGlmICh0aGlzLmlzUnVsZURlZmluZWQocnVsZXMuc2hvd05hdmlnYXRpb24pKSB7XG4gICAgICBjb25zdCBzaG93TmF2aWdhdGlvbiA9IHRoaXMuZXZhbHVhdGVSdWxlKHJ1bGVzLnNob3dOYXZpZ2F0aW9uLCBub2RlKTtcbiAgICAgIGlmICghc2hvd05hdmlnYXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iXX0=
@@ -1561,6 +1561,9 @@ class AppExtensionService {
1561
1561
  filterVisible(action) {
1562
1562
  var _a;
1563
1563
  if ((_a = action === null || action === void 0 ? void 0 : action.rules) === null || _a === void 0 ? void 0 : _a.visible) {
1564
+ if (Array.isArray(action.rules.visible)) {
1565
+ return action.rules.visible.every((rule) => this.extensions.evaluateRule(rule, this));
1566
+ }
1564
1567
  return this.extensions.evaluateRule(action.rules.visible, this);
1565
1568
  }
1566
1569
  return true;