ngx-register-base 1.2.2 → 1.2.3

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.
package/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  Эта библиотека была создана с помощью [Angular CLI](https://github.com/angular/angular-cli) версия 18.2.0.
4
4
 
5
- ## Иконки
5
+ ## Подключение иконок
6
+
7
+ angular.json:
6
8
 
7
9
  ```json
8
10
  {
@@ -17,10 +19,56 @@
17
19
  }
18
20
  ```
19
21
 
20
- ## Стили
22
+ ## Подключение стилей
23
+
24
+ angular.json:
21
25
 
22
26
  ```json
23
27
  {
24
28
  "styles": [ ... , "ngx-register-base/styles/styles.less"]
25
29
  }
26
30
  ```
31
+
32
+ ## Сервисы
33
+
34
+ ### Сервис для управления аутентификацией пользователя:
35
+
36
+ ```ts
37
+ export enum EUserPermissions {}
38
+
39
+ @Injectable({
40
+ providedIn: 'root',
41
+ })
42
+ export class UserProfileService implements IUserProfileLoader {
43
+ // Имплементация методов IUserProfileLoader
44
+ }
45
+
46
+ // Подключение глобально в app.config.ts
47
+ { provide: USER_PROFILE_LOADER, useExisting: UserProfileService }
48
+ ```
49
+
50
+ ### Сервис управления пользовательскими настройками:
51
+
52
+ ```ts
53
+ @Injectable()
54
+ export class SmaTpUserSettingsStore implements IUserSettingsLoader {
55
+ // Имплементация методов IUserSettingsLoader
56
+ }
57
+
58
+ // Подключение по месту использования (компонент реестра)
59
+ { provide: USER_SETTINGS_LOADER, useClass: SmaTpUserSettingsStore }
60
+ ```
61
+
62
+ ### Сервис управления состоянием навигационного меню:
63
+
64
+ ```ts
65
+ @Injectable({
66
+ providedIn: 'root',
67
+ })
68
+ export class MenuStateService extends SprocAbstractMenuConstructorStore {
69
+ // Имплементация методов SprocAbstractMenuConstructorStore
70
+ }
71
+
72
+ // Подключение глобально в app.config.ts
73
+ { provide: PAGE_MENU_STATE, useExisting: MenuStateService }
74
+ ```
@@ -1,5 +1,3 @@
1
1
  export { RegisterTableFilterComponent } from './register-table-filter.component';
2
2
  export { RegisterTableFilterModule } from './register-table-filter.module';
3
- export * from './register-table-filter.consts';
4
- export * from './register-table-filter.types';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSZWdpc3RlclRhYmxlRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9yZWdpc3Rlci10YWJsZS1maWx0ZXIuY29tcG9uZW50JztcbmV4cG9ydCB7IFJlZ2lzdGVyVGFibGVGaWx0ZXJNb2R1bGUgfSBmcm9tICcuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlci10YWJsZS1maWx0ZXIuY29uc3RzJztcbmV4cG9ydCAqIGZyb20gJy4vcmVnaXN0ZXItdGFibGUtZmlsdGVyLnR5cGVzJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNqRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFJlZ2lzdGVyVGFibGVGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVnaXN0ZXJUYWJsZUZpbHRlck1vZHVsZSB9IGZyb20gJy4vcmVnaXN0ZXItdGFibGUtZmlsdGVyLm1vZHVsZSc7XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
2
2
  import { combineLatest, debounceTime, map, Subject, takeUntil, of } from 'rxjs';
3
3
  import { EInputsAction, EInputsState, } from '../../types';
4
- import { MENU_STATE_SERVICE } from './register-table-filter.consts';
4
+ import { PAGE_MENU_STATE } from '../page-menu';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "../../core";
7
7
  import * as i2 from "../../services";
@@ -28,7 +28,7 @@ export class RegisterTableFilterComponent {
28
28
  this.filterListHeaderTitle = 'Фильтр';
29
29
  this.footerApplyButtonLabel = 'Применить';
30
30
  this.clickApplyButton = new EventEmitter();
31
- this._menuState = inject(MENU_STATE_SERVICE);
31
+ this._menuState = inject(PAGE_MENU_STATE);
32
32
  this._unsubscribe$ = new Subject();
33
33
  this.FilterState = EInputsState;
34
34
  this.filterState$ = this._filterStateService.state$.pipe(map((filterState) => filterState.state));
@@ -152,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
152
152
  }], clickApplyButton: [{
153
153
  type: Output
154
154
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItdGFibGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9yZWdpc3Rlci10YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksR0FLYixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7Ozs7Ozs7O0FBUXBFLE1BQU0sT0FBTyw0QkFBNEI7SUFrQ3ZDLFlBQ21CLE1BQStCLEVBQy9CLG1CQUE4QyxFQUM5QyxrQkFBd0M7UUFGeEMsV0FBTSxHQUFOLE1BQU0sQ0FBeUI7UUFDL0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUEyQjtRQUM5Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQXNCO1FBaENsRCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixvQkFBZSxHQUFHLElBQUksQ0FBQztRQUN2Qix5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0Isd0JBQW1CLEdB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QU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIG1hcCwgU3ViamVjdCwgdGFrZVVudGlsLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRUlucHV0c0FjdGlvbixcbiAgRUlucHV0c1N0YXRlLFxuICBHcWxGaWVsZHMsXG4gIElJbnB1dHNTdGF0ZSxcbiAgSVRwVXNlclNldHRpbmdzLFxuICBJVHBVc2VyU2V0dGluZ3NTZXR0aW5nc0ZpbHRlcixcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UsIEZpbHRlcnNTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWdpc3RlckJhc2VTdG9yZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgTUVOVV9TVEFURV9TRVJWSUNFIH0gZnJvbSAnLi9yZWdpc3Rlci10YWJsZS1maWx0ZXIuY29uc3RzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtcmVnaXN0ZXItdGFibGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQubGVzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJUYWJsZUZpbHRlckNvbXBvbmVudDxUeXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj5cbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKiog0JLRi9GB0L7RgtCwINCy0YHQtdCz0L4g0LrQvtC80L/QvtC90LXQvdGC0LAg0YTQuNC70YzRgtGA0L7QsiAqL1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2hvd1RvdGFsID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1BpbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFjY2VwdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFwcGx5QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqINCU0L7Qvy4g0L7RgtGB0YLRg9C/INC00LvRjyDQstGL0YfQuNGB0LvQtdC90LjRjyDQstGL0YHQvtGC0Ysg0L/QsNC90LXQu9C4ICjQsiDQv9C40LrRgdC10LvRj9GFKSAqL1xuICBASW5wdXQoKSBzdWJPZmZzZXRIZWlnaHQgPSAwO1xuICBASW5wdXQoKSBmaWx0ZXJMaXN0SGVhZGVyVGl0bGUgPSAn0KTQuNC70YzRgtGAJztcbiAgQElucHV0KCkgZm9vdGVyQXBwbHlCdXR0b25MYWJlbCA9ICfQn9GA0LjQvNC10L3QuNGC0YwnO1xuXG4gIEBPdXRwdXQoKSBjbGlja0FwcGx5QnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lbnVTdGF0ZSA9IGluamVjdChNRU5VX1NUQVRFX1NFUlZJQ0UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZpbHRlclN0YXRlID0gRUlucHV0c1N0YXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGUkID0gdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoZmlsdGVyU3RhdGUpID0+IGZpbHRlclN0YXRlLnN0YXRlKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNPcGVuJCA9IHRoaXMuZmlsdGVyU3RhdGUkLnBpcGUobWFwKChzdGF0ZSkgPT4gc3RhdGUgIT09IEVJbnB1dHNTdGF0ZS5ISURERU4pKTtcbiAgcHVibGljIHJlYWRvbmx5IHRvdGFsJCA9IHRoaXMuX3N0b3JlLnRvdGFsJCA/PyBvZigwKTtcblxuICBwcml2YXRlIF9jdXJyZW50RmlsdGVyczogSVRwVXNlclNldHRpbmdzU2V0dGluZ3NGaWx0ZXJbXSA9IFtdO1xuICBwcml2YXRlIF9wcmV2aW91c1N0YXRlOiBJSW5wdXRzU3RhdGUgPSB7XG4gICAgc3RhdGU6IEVJbnB1dHNTdGF0ZS5ISURERU4sXG4gICAgYWN0aW9uOiBFSW5wdXRzQWN0aW9uLkNBTkNFTCxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZTogUmVnaXN0ZXJCYXNlU3RvcmU8VHlwZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyU3RhdGVTZXJ2aWNlOiBGaWx0ZXJzU3RhdGVTZXJ2aWNlPFR5cGU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlckxpc3RTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZTxUeXBlPlxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zdGF0ZSQsIHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zZWxlY3RlZFNhdmVkRmlsdGVyXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChbc3RhdGUsIHNlbGVjdGVkXSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5zdGF0ZSA9PT0gRUlucHV0c1N0YXRlLlNBVkVEX0xJU1QpIHtcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0QnV0dG9uRGlzYWJsZWQgPSAhc2VsZWN0ZWQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnN0YXRlID09PSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVIpIHtcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUuc3RhdGUgPT09IEVJbnB1dHNTdGF0ZS5PTl9TQVZFX0ZJTFRFUikge1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFjY2VwdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5pc1Bpbikge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdGU6IEVJbnB1dHNTdGF0ZS5GSUxURVJfTElTVCxcbiAgICAgICAgYWN0aW9uOiBFSW5wdXRzQWN0aW9uLk9QRU4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2VNZW51KGlzUGluOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzUGluKSB7XG4gICAgICB0aGlzLl9tZW51U3RhdGUuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXBwbHlGaWx0ZXIoZ3FsRmlsdGVyOiBHcWxGaWVsZHMsIHNhdmVQYWdlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghc2F2ZVBhZ2UpIHtcbiAgICAgIHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zZXRPZmZzZXQoMCk7XG4gICAgICB0aGlzLl9maWx0ZXJTdGF0ZVNlcnZpY2Uuc2V0UGFnZSgxKTtcbiAgICB9XG4gICAgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNldEdxbFZhbHVlcyhncWxGaWx0ZXIpO1xuICAgIHRoaXMuY2xpY2tBcHBseUJ1dHRvbi5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmliZU9uU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZU9uU3RhdGUoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnN0YXRlJCwgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNlbGVjdGVkU2F2ZWRGaWx0ZXJdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoW3N0YXRlLCBzZXR0aW5nc10pID0+IHtcbiAgICAgICAgdGhpcy5fc2V0RmlsdGVycyhzdGF0ZSwgc2V0dGluZ3MpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRGaWx0ZXJzKHN0YXRlOiBJSW5wdXRzU3RhdGUsIHNldHRpbmdzOiBJVHBVc2VyU2V0dGluZ3MgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgeyBzdGF0ZTogY3VycmVudFN0YXRlLCBhY3Rpb246IGN1cnJlbnRBY3Rpb24gfSA9IHN0YXRlO1xuICAgIGNvbnN0IHsgc3RhdGU6IHByZXZpb3VzU3RhdGUgfSA9IHRoaXMuX3ByZXZpb3VzU3RhdGU7XG5cbiAgICBzd2l0Y2ggKGN1cnJlbnRTdGF0ZSkge1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVI6XG4gICAgICAgIGlmIChwcmV2aW91c1N0YXRlICE9PSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVIpIHtcbiAgICAgICAgICB0aGlzLl9maWx0ZXJMaXN0U2VydmljZS5zZXRVc2VyU2V0dGluZ3NGaWx0ZXJWYWx1ZXMoc2V0dGluZ3M/LnNldHRpbmdzPy5maWx0ZXIgPz8gW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuU0FWRURfTElTVDpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZpb3VzU3RhdGUgIT09IEVJbnB1dHNTdGF0ZS5TQVZFRF9MSVNUICYmXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSAhPT0gRUlucHV0c1N0YXRlLk9OX0VESVRfRklMVEVSICYmXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSAhPT0gRUlucHV0c1N0YXRlLk9OX1NBVkVfRklMVEVSXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXJzID0gdGhpcy5fZmlsdGVyTGlzdFNlcnZpY2UudXNlclNldHRpbmdzRmlsdGVyO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuRklMVEVSX0xJU1Q6XG4gICAgICAgIGlmIChwcmV2aW91c1N0YXRlICE9PSBFSW5wdXRzU3RhdGUuRklMVEVSX0xJU1QpIHtcbiAgICAgICAgICBpZiAoY3VycmVudEFjdGlvbiA9PT0gRUlucHV0c0FjdGlvbi5DQU5DRUwpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlckxpc3RTZXJ2aWNlLnNldFVzZXJTZXR0aW5nc0ZpbHRlclZhbHVlcyh0aGlzLl9jdXJyZW50RmlsdGVycyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50QWN0aW9uID09PSBFSW5wdXRzQWN0aW9uLkFQUExZX1NBVkVEX0ZJTFRFUikge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEZpbHRlcnMgPSBzZXR0aW5ncz8uc2V0dGluZ3M/LmZpbHRlciA/PyBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ9Ch0L7RgdGC0L7Rj9C90LjQtSDRhNC40LvRjNGC0YDQsCcsIGN1cnJlbnRTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8c3Byb2Mtc2xpZGluZy1wYW5lbCBbaXNPcGVuXT1cImlzT3BlbiQgfCBhc3luY1wiIFtzdWJPZmZzZXRIZWlnaHRdPVwic3ViT2Zmc2V0SGVpZ2h0XCI+XG4gIDxzcHJvYy1maWx0ZXItbGlzdC1oZWFkZXJcbiAgICBoZWFkZXJcbiAgICBbc2hvd1RvdGFsXT1cInNob3dUb3RhbFwiXG4gICAgW3Nob3dQaW5dPVwic2hvd1BpblwiXG4gICAgW3Nob3dDbG9zZUJ1dHRvbl09XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgIFt0b3RhbF09XCJ0b3RhbCQgfCBhc3luY1wiXG4gICAgW2FjY2VwdEJ1dHRvbkRpc2FibGVkXT1cImFjY2VwdEJ1dHRvbkRpc2FibGVkXCJcbiAgICBbYXBwbHlCdXR0b25EaXNhYmxlZF09XCJhcHBseUJ1dHRvbkRpc2FibGVkXCJcbiAgICBbZmlsdGVyTGlzdEhlYWRlclRpdGxlXT1cImZpbHRlckxpc3RIZWFkZXJUaXRsZVwiXG4gICAgKHBpbm5lZENoYW5nZSk9XCJjbG9zZU1lbnUoJGV2ZW50KVwiXG4gICAgKGFwcGx5RmlsdGVyKT1cIm9uQXBwbHlGaWx0ZXIoJGV2ZW50KVwiXG4gID48L3Nwcm9jLWZpbHRlci1saXN0LWhlYWRlcj5cblxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWx0ZXJTdGF0ZSQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpbHRlclN0YXRlLkZJTFRFUl9MSVNUXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyc1RlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJGaWx0ZXJTdGF0ZS5TQVZFRF9MSVNUXCI+XG4gICAgICA8c3Byb2MtZmlsdGVyLWxpc3Qtc2F2ZWQ+PC9zcHJvYy1maWx0ZXItbGlzdC1zYXZlZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkZpbHRlclN0YXRlLk9OX0VESVRfRklMVEVSXCI+XG4gICAgICA8c3Byb2MtZmlsdGVyLWVkaXQ+PC9zcHJvYy1maWx0ZXItZWRpdD5cblxuICAgICAgPHNwcm9jLWRpdmlkZXI+PC9zcHJvYy1kaXZpZGVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlcnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRmlsdGVyU3RhdGUuT05fU0FWRV9GSUxURVJcIj5cbiAgICAgIDxzcHJvYy1maWx0ZXItZWRpdD48L3Nwcm9jLWZpbHRlci1lZGl0PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJzVGVtcGxhdGU+XG4gICAgICBAZGVmZXIgKG9uIHZpZXdwb3J0KSB7XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICB9IEBsb2FkaW5nIChtaW5pbXVtIDFzKSB7XG4gICAgICAgIDx0dWktbG9hZGVyIHNpemU9XCJtXCIgY2xhc3M9XCJsb2FkZXJcIj48L3R1aS1sb2FkZXI+XG4gICAgICB9IEBwbGFjZWhvbGRlciB7XG4gICAgICAgIDxzcGFuPi4uLjwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3Byb2MtZmlsdGVyLWxpc3QtZm9vdGVyXG4gICAgZm9vdGVyXG4gICAgW2FjY2VwdEJ1dHRvbkRpc2FibGVkXT1cImFjY2VwdEJ1dHRvbkRpc2FibGVkXCJcbiAgICBbYXBwbHlCdXR0b25EaXNhYmxlZF09XCJhcHBseUJ1dHRvbkRpc2FibGVkXCJcbiAgICAoYXBwbHkpPVwib25BcHBseUZpbHRlcigkZXZlbnQpXCJcbiAgICBbZm9vdGVyQXBwbHlCdXR0b25MYWJlbF09XCJmb290ZXJBcHBseUJ1dHRvbkxhYmVsXCJcbiAgPjwvc3Byb2MtZmlsdGVyLWxpc3QtZm9vdGVyPlxuPC9zcHJvYy1zbGlkaW5nLXBhbmVsPlxuIl19
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXItdGFibGUtZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZWdpc3Rlci1iYXNlL3NyYy9saWIvY29tcG9uZW50cy9maWx0ZXJzL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVnaXN0ZXItYmFzZS9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVycy9yZWdpc3Rlci10YWJsZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQ0wsYUFBYSxFQUNiLFlBQVksR0FLYixNQUFNLGFBQWEsQ0FBQztBQUdyQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDOzs7Ozs7Ozs7Ozs7QUFRL0MsTUFBTSxPQUFPLDRCQUE0QjtJQWtDdkMsWUFDbUIsTUFBK0IsRUFDL0IsbUJBQThDLEVBQzlDLGtCQUF3QztRQUZ4QyxXQUFNLEdBQU4sTUFBTSxDQUF5QjtRQUMvQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTJCO1FBQzlDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBc0I7UUFoQ2xELGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLHlCQUFvQixHQUFHLEtBQUssQ0FBQztRQUM3Qix3QkFBbUIsR0FBRyxL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QWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIG1hcCwgU3ViamVjdCwgdGFrZVVudGlsLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgRUlucHV0c0FjdGlvbixcbiAgRUlucHV0c1N0YXRlLFxuICBHcWxGaWVsZHMsXG4gIElJbnB1dHNTdGF0ZSxcbiAgSVRwVXNlclNldHRpbmdzLFxuICBJVHBVc2VyU2V0dGluZ3NTZXR0aW5nc0ZpbHRlcixcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UsIEZpbHRlcnNTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWdpc3RlckJhc2VTdG9yZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUEFHRV9NRU5VX1NUQVRFIH0gZnJvbSAnLi4vcGFnZS1tZW51JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3Byb2MtcmVnaXN0ZXItdGFibGUtZmlsdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlZ2lzdGVyLXRhYmxlLWZpbHRlci5jb21wb25lbnQubGVzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgUmVnaXN0ZXJUYWJsZUZpbHRlckNvbXBvbmVudDxUeXBlIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55Pj5cbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKiog0JLRi9GB0L7RgtCwINCy0YHQtdCz0L4g0LrQvtC80L/QvtC90LXQvdGC0LAg0YTQuNC70YzRgtGA0L7QsiAqL1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2hvd1RvdGFsID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1BpbiA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dDbG9zZUJ1dHRvbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFjY2VwdEJ1dHRvbkRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFwcGx5QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgLyoqINCU0L7Qvy4g0L7RgtGB0YLRg9C/INC00LvRjyDQstGL0YfQuNGB0LvQtdC90LjRjyDQstGL0YHQvtGC0Ysg0L/QsNC90LXQu9C4ICjQsiDQv9C40LrRgdC10LvRj9GFKSAqL1xuICBASW5wdXQoKSBzdWJPZmZzZXRIZWlnaHQgPSAwO1xuICBASW5wdXQoKSBmaWx0ZXJMaXN0SGVhZGVyVGl0bGUgPSAn0KTQuNC70YzRgtGAJztcbiAgQElucHV0KCkgZm9vdGVyQXBwbHlCdXR0b25MYWJlbCA9ICfQn9GA0LjQvNC10L3QuNGC0YwnO1xuXG4gIEBPdXRwdXQoKSBjbGlja0FwcGx5QnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21lbnVTdGF0ZSA9IGluamVjdChQQUdFX01FTlVfU1RBVEUpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Vuc3Vic2NyaWJlJDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZpbHRlclN0YXRlID0gRUlucHV0c1N0YXRlO1xuICBwdWJsaWMgcmVhZG9ubHkgZmlsdGVyU3RhdGUkID0gdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnN0YXRlJC5waXBlKFxuICAgIG1hcCgoZmlsdGVyU3RhdGUpID0+IGZpbHRlclN0YXRlLnN0YXRlKVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNPcGVuJCA9IHRoaXMuZmlsdGVyU3RhdGUkLnBpcGUobWFwKChzdGF0ZSkgPT4gc3RhdGUgIT09IEVJbnB1dHNTdGF0ZS5ISURERU4pKTtcbiAgcHVibGljIHJlYWRvbmx5IHRvdGFsJCA9IHRoaXMuX3N0b3JlLnRvdGFsJCA/PyBvZigwKTtcblxuICBwcml2YXRlIF9jdXJyZW50RmlsdGVyczogSVRwVXNlclNldHRpbmdzU2V0dGluZ3NGaWx0ZXJbXSA9IFtdO1xuICBwcml2YXRlIF9wcmV2aW91c1N0YXRlOiBJSW5wdXRzU3RhdGUgPSB7XG4gICAgc3RhdGU6IEVJbnB1dHNTdGF0ZS5ISURERU4sXG4gICAgYWN0aW9uOiBFSW5wdXRzQWN0aW9uLkNBTkNFTCxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZTogUmVnaXN0ZXJCYXNlU3RvcmU8VHlwZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZmlsdGVyU3RhdGVTZXJ2aWNlOiBGaWx0ZXJzU3RhdGVTZXJ2aWNlPFR5cGU+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZpbHRlckxpc3RTZXJ2aWNlOiBGaWx0ZXJzU2VydmljZTxUeXBlPlxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zdGF0ZSQsIHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zZWxlY3RlZFNhdmVkRmlsdGVyXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChbc3RhdGUsIHNlbGVjdGVkXSkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5zdGF0ZSA9PT0gRUlucHV0c1N0YXRlLlNBVkVEX0xJU1QpIHtcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0QnV0dG9uRGlzYWJsZWQgPSAhc2VsZWN0ZWQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnN0YXRlID09PSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVIpIHtcbiAgICAgICAgICAgIHRoaXMuYWNjZXB0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUuc3RhdGUgPT09IEVJbnB1dHNTdGF0ZS5PTl9TQVZFX0ZJTFRFUikge1xuICAgICAgICAgICAgdGhpcy5hY2NlcHRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFjY2VwdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5pc1Bpbikge1xuICAgICAgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNldFN0YXRlKHtcbiAgICAgICAgc3RhdGU6IEVJbnB1dHNTdGF0ZS5GSUxURVJfTElTVCxcbiAgICAgICAgYWN0aW9uOiBFSW5wdXRzQWN0aW9uLk9QRU4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY2xvc2VNZW51KGlzUGluOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGlzUGluKSB7XG4gICAgICB0aGlzLl9tZW51U3RhdGUuc2V0T3BlbihmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXBwbHlGaWx0ZXIoZ3FsRmlsdGVyOiBHcWxGaWVsZHMsIHNhdmVQYWdlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICghc2F2ZVBhZ2UpIHtcbiAgICAgIHRoaXMuX2ZpbHRlclN0YXRlU2VydmljZS5zZXRPZmZzZXQoMCk7XG4gICAgICB0aGlzLl9maWx0ZXJTdGF0ZVNlcnZpY2Uuc2V0UGFnZSgxKTtcbiAgICB9XG4gICAgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNldEdxbFZhbHVlcyhncWxGaWx0ZXIpO1xuICAgIHRoaXMuY2xpY2tBcHBseUJ1dHRvbi5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmliZU9uU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZU9uU3RhdGUoKTogdm9pZCB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnN0YXRlJCwgdGhpcy5fZmlsdGVyU3RhdGVTZXJ2aWNlLnNlbGVjdGVkU2F2ZWRGaWx0ZXJdKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDUwMCksIHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpKVxuICAgICAgLnN1YnNjcmliZSgoW3N0YXRlLCBzZXR0aW5nc10pID0+IHtcbiAgICAgICAgdGhpcy5fc2V0RmlsdGVycyhzdGF0ZSwgc2V0dGluZ3MpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9zZXRGaWx0ZXJzKHN0YXRlOiBJSW5wdXRzU3RhdGUsIHNldHRpbmdzOiBJVHBVc2VyU2V0dGluZ3MgfCBudWxsKTogdm9pZCB7XG4gICAgY29uc3QgeyBzdGF0ZTogY3VycmVudFN0YXRlLCBhY3Rpb246IGN1cnJlbnRBY3Rpb24gfSA9IHN0YXRlO1xuICAgIGNvbnN0IHsgc3RhdGU6IHByZXZpb3VzU3RhdGUgfSA9IHRoaXMuX3ByZXZpb3VzU3RhdGU7XG5cbiAgICBzd2l0Y2ggKGN1cnJlbnRTdGF0ZSkge1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVI6XG4gICAgICAgIGlmIChwcmV2aW91c1N0YXRlICE9PSBFSW5wdXRzU3RhdGUuT05fRURJVF9GSUxURVIpIHtcbiAgICAgICAgICB0aGlzLl9maWx0ZXJMaXN0U2VydmljZS5zZXRVc2VyU2V0dGluZ3NGaWx0ZXJWYWx1ZXMoc2V0dGluZ3M/LnNldHRpbmdzPy5maWx0ZXIgPz8gW10pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuU0FWRURfTElTVDpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByZXZpb3VzU3RhdGUgIT09IEVJbnB1dHNTdGF0ZS5TQVZFRF9MSVNUICYmXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSAhPT0gRUlucHV0c1N0YXRlLk9OX0VESVRfRklMVEVSICYmXG4gICAgICAgICAgcHJldmlvdXNTdGF0ZSAhPT0gRUlucHV0c1N0YXRlLk9OX1NBVkVfRklMVEVSXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRGaWx0ZXJzID0gdGhpcy5fZmlsdGVyTGlzdFNlcnZpY2UudXNlclNldHRpbmdzRmlsdGVyO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBFSW5wdXRzU3RhdGUuRklMVEVSX0xJU1Q6XG4gICAgICAgIGlmIChwcmV2aW91c1N0YXRlICE9PSBFSW5wdXRzU3RhdGUuRklMVEVSX0xJU1QpIHtcbiAgICAgICAgICBpZiAoY3VycmVudEFjdGlvbiA9PT0gRUlucHV0c0FjdGlvbi5DQU5DRUwpIHtcbiAgICAgICAgICAgIHRoaXMuX2ZpbHRlckxpc3RTZXJ2aWNlLnNldFVzZXJTZXR0aW5nc0ZpbHRlclZhbHVlcyh0aGlzLl9jdXJyZW50RmlsdGVycyk7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50QWN0aW9uID09PSBFSW5wdXRzQWN0aW9uLkFQUExZX1NBVkVEX0ZJTFRFUikge1xuICAgICAgICAgICAgdGhpcy5fY3VycmVudEZpbHRlcnMgPSBzZXR0aW5ncz8uc2V0dGluZ3M/LmZpbHRlciA/PyBbXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLndhcm4oJ9Ch0L7RgdGC0L7Rj9C90LjQtSDRhNC40LvRjNGC0YDQsCcsIGN1cnJlbnRTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlJC5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCI8c3Byb2Mtc2xpZGluZy1wYW5lbCBbaXNPcGVuXT1cImlzT3BlbiQgfCBhc3luY1wiIFtzdWJPZmZzZXRIZWlnaHRdPVwic3ViT2Zmc2V0SGVpZ2h0XCI+XG4gIDxzcHJvYy1maWx0ZXItbGlzdC1oZWFkZXJcbiAgICBoZWFkZXJcbiAgICBbc2hvd1RvdGFsXT1cInNob3dUb3RhbFwiXG4gICAgW3Nob3dQaW5dPVwic2hvd1BpblwiXG4gICAgW3Nob3dDbG9zZUJ1dHRvbl09XCJzaG93Q2xvc2VCdXR0b25cIlxuICAgIFt0b3RhbF09XCJ0b3RhbCQgfCBhc3luY1wiXG4gICAgW2FjY2VwdEJ1dHRvbkRpc2FibGVkXT1cImFjY2VwdEJ1dHRvbkRpc2FibGVkXCJcbiAgICBbYXBwbHlCdXR0b25EaXNhYmxlZF09XCJhcHBseUJ1dHRvbkRpc2FibGVkXCJcbiAgICBbZmlsdGVyTGlzdEhlYWRlclRpdGxlXT1cImZpbHRlckxpc3RIZWFkZXJUaXRsZVwiXG4gICAgKHBpbm5lZENoYW5nZSk9XCJjbG9zZU1lbnUoJGV2ZW50KVwiXG4gICAgKGFwcGx5RmlsdGVyKT1cIm9uQXBwbHlGaWx0ZXIoJGV2ZW50KVwiXG4gID48L3Nwcm9jLWZpbHRlci1saXN0LWhlYWRlcj5cblxuICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJmaWx0ZXJTdGF0ZSQgfCBhc3luY1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZpbHRlclN0YXRlLkZJTFRFUl9MSVNUXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZmlsdGVyc1RlbXBsYXRlXCI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJGaWx0ZXJTdGF0ZS5TQVZFRF9MSVNUXCI+XG4gICAgICA8c3Byb2MtZmlsdGVyLWxpc3Qtc2F2ZWQ+PC9zcHJvYy1maWx0ZXItbGlzdC1zYXZlZD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkZpbHRlclN0YXRlLk9OX0VESVRfRklMVEVSXCI+XG4gICAgICA8c3Byb2MtZmlsdGVyLWVkaXQ+PC9zcHJvYy1maWx0ZXItZWRpdD5cblxuICAgICAgPHNwcm9jLWRpdmlkZXI+PC9zcHJvYy1kaXZpZGVyPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbHRlcnNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiRmlsdGVyU3RhdGUuT05fU0FWRV9GSUxURVJcIj5cbiAgICAgIDxzcHJvYy1maWx0ZXItZWRpdD48L3Nwcm9jLWZpbHRlci1lZGl0PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLXRlbXBsYXRlICNmaWx0ZXJzVGVtcGxhdGU+XG4gICAgICBAZGVmZXIgKG9uIHZpZXdwb3J0KSB7XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICB9IEBsb2FkaW5nIChtaW5pbXVtIDFzKSB7XG4gICAgICAgIDx0dWktbG9hZGVyIHNpemU9XCJtXCIgY2xhc3M9XCJsb2FkZXJcIj48L3R1aS1sb2FkZXI+XG4gICAgICB9IEBwbGFjZWhvbGRlciB7XG4gICAgICAgIDxzcGFuPi4uLjwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8c3Byb2MtZmlsdGVyLWxpc3QtZm9vdGVyXG4gICAgZm9vdGVyXG4gICAgW2FjY2VwdEJ1dHRvbkRpc2FibGVkXT1cImFjY2VwdEJ1dHRvbkRpc2FibGVkXCJcbiAgICBbYXBwbHlCdXR0b25EaXNhYmxlZF09XCJhcHBseUJ1dHRvbkRpc2FibGVkXCJcbiAgICAoYXBwbHkpPVwib25BcHBseUZpbHRlcigkZXZlbnQpXCJcbiAgICBbZm9vdGVyQXBwbHlCdXR0b25MYWJlbF09XCJmb290ZXJBcHBseUJ1dHRvbkxhYmVsXCJcbiAgPjwvc3Byb2MtZmlsdGVyLWxpc3QtZm9vdGVyPlxuPC9zcHJvYy1zbGlkaW5nLXBhbmVsPlxuIl19