@solidev/data 0.0.1-dev.3 → 0.0.1-rc.1

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.
Files changed (104) hide show
  1. package/esm2020/lib/auth/auth-interceptor.service.mjs +13 -4
  2. package/esm2020/lib/auth/auth.service.mjs +20 -9
  3. package/esm2020/lib/data/data-backend.mjs +33 -5
  4. package/esm2020/lib/data/data-collection.mjs +17 -1
  5. package/esm2020/lib/data/data-model.mjs +5 -1
  6. package/esm2020/lib/data/data-query.mjs +32 -25
  7. package/esm2020/lib/data/fields/base.mjs +9 -8
  8. package/esm2020/lib/data/fields/computed.mjs +10 -0
  9. package/esm2020/lib/data/fields/index.mjs +2 -1
  10. package/esm2020/lib/dispedit/choice.pipe.mjs +44 -4
  11. package/esm2020/lib/dispedit/dispedit/dispedit.component.mjs +17 -6
  12. package/esm2020/lib/dispedit/factor.pipe.mjs +37 -4
  13. package/esm2020/lib/dispedit/factorc.pipe.mjs +59 -8
  14. package/esm2020/lib/dispedit/fkselect/fkselect.component.mjs +3 -3
  15. package/esm2020/lib/dispedit/flags/flags.component.mjs +140 -0
  16. package/esm2020/lib/dispedit/m2mselect/m2mselect.component.mjs +4 -4
  17. package/esm2020/lib/dispedit/richedit/richedit.component.mjs +103 -0
  18. package/esm2020/lib/dispedit/sdelete/sdelete.component.mjs +62 -15
  19. package/esm2020/lib/messages/message-zone/message-zone.component.mjs +3 -3
  20. package/esm2020/lib/messages/message.service.mjs +3 -3
  21. package/esm2020/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.mjs +5 -5
  22. package/esm2020/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.mjs +3 -3
  23. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.mjs +4 -4
  24. package/esm2020/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.mjs +4 -4
  25. package/esm2020/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.mjs +3 -3
  26. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.mjs +3 -3
  27. package/esm2020/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.mjs +3 -3
  28. package/esm2020/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.mjs +3 -3
  29. package/esm2020/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.mjs +4 -4
  30. package/esm2020/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.mjs +3 -3
  31. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.mjs +5 -6
  32. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.mjs +6 -1
  33. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.mjs +3 -3
  34. package/esm2020/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.mjs +7 -1
  35. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.mjs +7 -7
  36. package/esm2020/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.mjs +10 -7
  37. package/esm2020/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.mjs +3 -3
  38. package/esm2020/lib/modellist/model-list-filters/model-list-filter.mjs +11 -10
  39. package/esm2020/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.mjs +3 -3
  40. package/esm2020/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.mjs +3 -3
  41. package/esm2020/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.mjs +3 -3
  42. package/esm2020/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.mjs +3 -3
  43. package/esm2020/lib/modellist/model-list.service.mjs +21 -16
  44. package/esm2020/lib/routing/breadcrumb/breadcrumb.component.mjs +3 -3
  45. package/esm2020/lib/updates/update/update.component.mjs +17 -0
  46. package/esm2020/lib/updates/update.service.mjs +58 -0
  47. package/esm2020/lib/uploader/ng-file-drop.directive.mjs +3 -3
  48. package/esm2020/lib/uploader/ng-file-select.directive.mjs +3 -3
  49. package/esm2020/lib/uploader/ngx-uploader.module.mjs +4 -4
  50. package/esm2020/lib/utils/tab-memory.service.mjs +20 -11
  51. package/esm2020/public-api.mjs +5 -1
  52. package/fesm2015/solidev-data.mjs +807 -202
  53. package/fesm2015/solidev-data.mjs.map +1 -1
  54. package/fesm2020/solidev-data.mjs +788 -200
  55. package/fesm2020/solidev-data.mjs.map +1 -1
  56. package/lib/auth/auth.service.d.ts +6 -1
  57. package/lib/data/data-backend.d.ts +15 -0
  58. package/lib/data/data-collection.d.ts +23 -0
  59. package/lib/data/data-model.d.ts +1 -0
  60. package/lib/data/data-query.d.ts +14 -11
  61. package/lib/data/fields/base.d.ts +6 -5
  62. package/lib/data/fields/computed.d.ts +14 -0
  63. package/lib/data/fields/index.d.ts +1 -0
  64. package/lib/dispedit/choice.pipe.d.ts +5 -0
  65. package/lib/dispedit/dispedit/dispedit.component.d.ts +6 -1
  66. package/lib/dispedit/factor.pipe.d.ts +7 -0
  67. package/lib/dispedit/factorc.pipe.d.ts +8 -0
  68. package/lib/dispedit/fkselect/fkselect.component.d.ts +1 -1
  69. package/lib/dispedit/flags/flags.component.d.ts +40 -0
  70. package/lib/dispedit/m2mselect/m2mselect.component.d.ts +1 -1
  71. package/lib/dispedit/richedit/richedit.component.d.ts +36 -0
  72. package/lib/dispedit/sdelete/sdelete.component.d.ts +13 -4
  73. package/lib/messages/message-zone/message-zone.component.d.ts +1 -1
  74. package/lib/modellist/model-list-fields/model-list-field-header/model-list-field-header.component.d.ts +1 -1
  75. package/lib/modellist/model-list-fields/model-list-fields-selector/model-list-fields-selector.component.d.ts +1 -1
  76. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-filter/model-list-autocomplete-filter.component.d.ts +1 -1
  77. package/lib/modellist/model-list-filters/filters/model-list-autocomplete-multi-filter/model-list-autocomplete-multi-filter.component.d.ts +1 -1
  78. package/lib/modellist/model-list-filters/filters/model-list-date-filter/model-list-date-filter.component.d.ts +1 -1
  79. package/lib/modellist/model-list-filters/filters/model-list-datetime-filter/model-list-datetime-filter.component.d.ts +1 -1
  80. package/lib/modellist/model-list-filters/filters/model-list-datetimerange-filter/model-list-datetime-range-filter.component.d.ts +1 -1
  81. package/lib/modellist/model-list-filters/filters/model-list-flags-filter/model-list-flags-filter.component.d.ts +1 -1
  82. package/lib/modellist/model-list-filters/filters/model-list-geodistance-filter/model-list-geodistance-filter.component.d.ts +1 -1
  83. package/lib/modellist/model-list-filters/filters/model-list-number-filter/model-list-number-filter.component.d.ts +1 -1
  84. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.component.d.ts +2 -2
  85. package/lib/modellist/model-list-filters/filters/model-list-select-filter/model-list-select-filter.d.ts +1 -0
  86. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.component.d.ts +1 -1
  87. package/lib/modellist/model-list-filters/filters/model-list-select-multi-filter/model-list-select-multi-filter.d.ts +6 -1
  88. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.component.d.ts +3 -3
  89. package/lib/modellist/model-list-filters/filters/model-list-text-filter/model-list-text-filter.d.ts +1 -1
  90. package/lib/modellist/model-list-filters/filters/model-list-tree-filter/model-list-tree-filter.component.d.ts +1 -1
  91. package/lib/modellist/model-list-filters/model-list-filter.d.ts +4 -2
  92. package/lib/modellist/model-list-filters/model-list-filters/model-list-filters.component.d.ts +1 -1
  93. package/lib/modellist/model-list-filters/model-list-filters-select/model-list-filters-select.component.d.ts +1 -1
  94. package/lib/modellist/model-list-paginator/model-list-paginator/model-list-paginator.component.d.ts +1 -1
  95. package/lib/modellist/model-list-sorter/model-list-sorter/model-list-sorter.component.d.ts +1 -1
  96. package/lib/modellist/model-list.service.d.ts +6 -6
  97. package/lib/routing/breadcrumb/breadcrumb.component.d.ts +1 -1
  98. package/lib/updates/update/update.component.d.ts +8 -0
  99. package/lib/updates/update.service.d.ts +16 -0
  100. package/lib/uploader/ng-file-drop.directive.d.ts +1 -1
  101. package/lib/uploader/ng-file-select.directive.d.ts +1 -1
  102. package/lib/utils/tab-memory.service.d.ts +4 -3
  103. package/package.json +7 -4
  104. package/public-api.d.ts +4 -0
@@ -20,14 +20,21 @@ export class AuthInterceptor {
20
20
  if (!req.url.startsWith(this._apiUrl)) {
21
21
  return next.handle(req);
22
22
  }
23
+ if (req.url.startsWith(this._auth.refreshUrl) ||
24
+ req.url.startsWith(this._auth.loginUrl)) {
25
+ return next.handle(req);
26
+ }
23
27
  if (!this._auth.isAnonymous) {
24
28
  req = this._addToken(req, this._auth.accessToken);
25
29
  }
26
30
  return next.handle(req).pipe(catchError((error) => {
31
+ console.log('Catched http error', error);
27
32
  if (error instanceof HttpErrorResponse && error.status === 401) {
33
+ console.log('Passing to handle 401');
28
34
  return this._handle401Error(req, next);
29
35
  }
30
36
  else {
37
+ console.log('throwing error');
31
38
  return throwError(error);
32
39
  }
33
40
  }));
@@ -36,6 +43,7 @@ export class AuthInterceptor {
36
43
  if (!this._isRefreshing) {
37
44
  this._isRefreshing = true;
38
45
  this._refreshTokenSubject.next(null);
46
+ console.log('refreshing token');
39
47
  return this._auth.refresh().pipe(switchMap((token) => {
40
48
  if (token === null) {
41
49
  return throwError(() => new HttpErrorResponse({
@@ -53,6 +61,7 @@ export class AuthInterceptor {
53
61
  }));
54
62
  }
55
63
  else {
64
+ console.log('piping to refresh token subject');
56
65
  return this._refreshTokenSubject.pipe(filter((token) => token != null), take(1), switchMap((token) => next.handle(this._addToken(request, token.access))));
57
66
  }
58
67
  }
@@ -64,9 +73,9 @@ export class AuthInterceptor {
64
73
  });
65
74
  }
66
75
  }
67
- AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, deps: [{ token: DATA_AUTH_SERVICE }, { token: DATA_API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
68
- AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: AuthInterceptor, decorators: [{
76
+ AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: DATA_AUTH_SERVICE }, { token: DATA_API_URL }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AuthInterceptor, providedIn: 'root' });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: AuthInterceptor, decorators: [{
70
79
  type: Injectable,
71
80
  args: [{
72
81
  providedIn: 'root',
@@ -78,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
78
87
  type: Inject,
79
88
  args: [DATA_API_URL]
80
89
  }] }]; } });
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsaUJBQWlCLEdBSWxCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRXZELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUVqRCxtQkFBbUIsQ0FBQyxDQUFDO0FBS3ZCLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ3FDLEtBQXFDLEVBQzFDLE9BQWU7UUFEVixVQUFLLEdBQUwsS0FBSyxDQUFnQztRQUMxQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBTnZDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHlCQUFvQixHQUMxQixJQUFJLGVBQWUsQ0FBaUMsSUFBSSxDQUFDLENBQUM7SUFLekQsQ0FBQztJQUVKLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZ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blRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlQmFzZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbiB9IGZyb20gJy4vand0JztcbmltcG9ydCB7IERBVEFfQVBJX1VSTCB9IGZyb20gJy4uL2RhdGEvZGF0YS1wYXJhbWV0ZXJzJztcblxuZXhwb3J0IGNvbnN0IERBVEFfQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPFxuICBBdXRoU2VydmljZUJhc2U8YW55LCBhbnksIGFueT5cbj4oJ2RhdGEuYXV0aC5zZXJ2aWNlJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwcml2YXRlIF9pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuU3ViamVjdCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbiB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1NFUlZJQ0UpIHByaXZhdGUgX2F1dGg6IEF1dGhTZXJ2aWNlQmFzZTxhbnksIGFueSwgYW55PixcbiAgICBASW5qZWN0KERBVEFfQVBJX1VSTCkgcHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmdcbiAgKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMuX2F1dGguaXNBbm9ueW1vdXMpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbiAgICBpZiAoIXJlcS51cmwuc3RhcnRzV2l0aCh0aGlzLl9hcGlVcmwpKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9hdXRoLmlzQW5vbnltb3VzKSB7XG4gICAgICByZXEgPSB0aGlzLl9hZGRUb2tlbihyZXEsIHRoaXMuX2F1dGguYWNjZXNzVG9rZW4gYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlICYmIGVycm9yLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZTQwMUVycm9yKHJlcSwgbmV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGU0MDFFcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcikge1xuICAgIGlmICghdGhpcy5faXNSZWZyZXNoaW5nKSB7XG4gICAgICB0aGlzLl9pc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5fcmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KG51bGwpO1xuXG4gICAgICByZXR1cm4gdGhpcy5fYXV0aC5yZWZyZXNoKCkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCh0b2tlbikgPT4ge1xuICAgICAgICAgIGlmICh0b2tlbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgbmV3IEh0dHBFcnJvclJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICAgIGVycm9yOiAnRm9yYmlkZGVuLCBwbGVhc2UgbG9nIGluJyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1czogNDAzLFxuICAgICAgICAgICAgICAgICAgc3RhdHVzVGV4dDogJ1dhcm5pbmcnLFxuICAgICAgICAgICAgICAgICAgdXJsOiByZXF1ZXN0LnVybCxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQodG9rZW4pO1xuICAgICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHRoaXMuX2FkZFRva2VuKHJlcXVlc3QsIHRva2VuLmFjY2VzcykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9yZWZyZXNoVG9rZW5TdWJqZWN0LnBpcGUoXG4gICAgICAgIGZpbHRlcigodG9rZW4pID0+IHRva2VuICE9IG51bGwpLFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAoKHRva2VuKSA9PlxuICAgICAgICAgIG5leHQuaGFuZGxlKFxuICAgICAgICAgICAgdGhpcy5fYWRkVG9rZW4ocmVxdWVzdCwgKHRva2VuIGFzIElKd3RSZWZyZXNoUmVzcG9uc2VKc29uKS5hY2Nlc3MpXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2FkZFRva2VuKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIHRva2VuOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC1pbnRlcmNlcHRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQ0wsaUJBQWlCLEdBSWxCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRXZELE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUVqRCxtQkFBbUIsQ0FBQyxDQUFDO0FBS3ZCLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ3FDLEtBQXFDLEVBQzFDLE9BQWU7UUFEVixVQUFLLEdBQUwsS0FBSyxDQUFnQztRQUMxQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBTnZDLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLHlCQUFvQixHQUMxQixJQUFJLGVBQWUsQ0FBaUMsSUFBSSxDQUFDLENBQUM7SUFLekQsQ0FBQztJQUVKLFNBQVMsQ0FBQyxHQUFxQixFQUFFLElBQWlCO1FBQ2hELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDMUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZ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LEtBQWlDLENBQUMsTUFBTSxDQUFDLENBQ25FLENBQ0YsQ0FDRixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQXlCLEVBQUUsS0FBYTtRQUN4RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDbkIsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxVQUFVLEtBQUssRUFBRTthQUNqQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OzRHQXBGVSxlQUFlLGtCQU1oQixpQkFBaUIsYUFDakIsWUFBWTtnSEFQWCxlQUFlLGNBRmQsTUFBTTsyRkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBJbnRlcmNlcHRvcixcbiAgSHR0cFJlcXVlc3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlQmFzZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbiB9IGZyb20gJy4vand0JztcbmltcG9ydCB7IERBVEFfQVBJX1VSTCB9IGZyb20gJy4uL2RhdGEvZGF0YS1wYXJhbWV0ZXJzJztcblxuZXhwb3J0IGNvbnN0IERBVEFfQVVUSF9TRVJWSUNFID0gbmV3IEluamVjdGlvblRva2VuPFxuICBBdXRoU2VydmljZUJhc2U8YW55LCBhbnksIGFueT5cbj4oJ2RhdGEuYXV0aC5zZXJ2aWNlJyk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBwcml2YXRlIF9pc1JlZnJlc2hpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcmVmcmVzaFRva2VuU3ViamVjdCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbiB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoREFUQV9BVVRIX1NFUlZJQ0UpIHByaXZhdGUgX2F1dGg6IEF1dGhTZXJ2aWNlQmFzZTxhbnksIGFueSwgYW55PixcbiAgICBASW5qZWN0KERBVEFfQVBJX1VSTCkgcHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmdcbiAgKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMuX2F1dGguaXNBbm9ueW1vdXMpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbiAgICBpZiAoIXJlcS51cmwuc3RhcnRzV2l0aCh0aGlzLl9hcGlVcmwpKSB7XG4gICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgcmVxLnVybC5zdGFydHNXaXRoKHRoaXMuX2F1dGgucmVmcmVzaFVybCkgfHxcbiAgICAgIHJlcS51cmwuc3RhcnRzV2l0aCh0aGlzLl9hdXRoLmxvZ2luVXJsKVxuICAgICkge1xuICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fYXV0aC5pc0Fub255bW91cykge1xuICAgICAgcmVxID0gdGhpcy5fYWRkVG9rZW4ocmVxLCB0aGlzLl9hdXRoLmFjY2Vzc1Rva2VuIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygnQ2F0Y2hlZCBodHRwIGVycm9yJywgZXJyb3IpO1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSAmJiBlcnJvci5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdQYXNzaW5nIHRvIGhhbmRsZSA0MDEnKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5faGFuZGxlNDAxRXJyb3IocmVxLCBuZXh0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygndGhyb3dpbmcgZXJyb3InKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZTQwMUVycm9yKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKSB7XG4gICAgaWYgKCF0aGlzLl9pc1JlZnJlc2hpbmcpIHtcbiAgICAgIHRoaXMuX2lzUmVmcmVzaGluZyA9IHRydWU7XG4gICAgICB0aGlzLl9yZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICBjb25zb2xlLmxvZygncmVmcmVzaGluZyB0b2tlbicpO1xuICAgICAgcmV0dXJuIHRoaXMuX2F1dGgucmVmcmVzaCgpLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IHtcbiAgICAgICAgICBpZiAodG9rZW4gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgIG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7XG4gICAgICAgICAgICAgICAgICBlcnJvcjogJ0ZvcmJpZGRlbiwgcGxlYXNlIGxvZyBpbicsXG4gICAgICAgICAgICAgICAgICBzdGF0dXM6IDQwMyxcbiAgICAgICAgICAgICAgICAgIHN0YXR1c1RleHQ6ICdXYXJuaW5nJyxcbiAgICAgICAgICAgICAgICAgIHVybDogcmVxdWVzdC51cmwsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lzUmVmcmVzaGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRva2VuU3ViamVjdC5uZXh0KHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLl9hZGRUb2tlbihyZXF1ZXN0LCB0b2tlbi5hY2Nlc3MpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZygncGlwaW5nIHRvIHJlZnJlc2ggdG9rZW4gc3ViamVjdCcpO1xuICAgICAgcmV0dXJuIHRoaXMuX3JlZnJlc2hUb2tlblN1YmplY3QucGlwZShcbiAgICAgICAgZmlsdGVyKCh0b2tlbikgPT4gdG9rZW4gIT0gbnVsbCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgodG9rZW4pID0+XG4gICAgICAgICAgbmV4dC5oYW5kbGUoXG4gICAgICAgICAgICB0aGlzLl9hZGRUb2tlbihyZXF1ZXN0LCAodG9rZW4gYXMgSUp3dFJlZnJlc2hSZXNwb25zZUpzb24pLmFjY2VzcylcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkVG9rZW4ocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXF1ZXN0LmNsb25lKHtcbiAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgYXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __param } from "tslib";
2
2
  import { Inject, InjectionToken } from '@angular/core';
3
3
  import { Jwt, } from './jwt';
4
- import { catchError, switchMap, tap, map } from 'rxjs/operators';
4
+ import { catchError, map, switchMap, tap } from 'rxjs/operators';
5
5
  import { of, ReplaySubject, throwError } from 'rxjs';
6
6
  /**
7
7
  * DATA_API_URL: stores data api base url
@@ -9,10 +9,12 @@ import { of, ReplaySubject, throwError } from 'rxjs';
9
9
  export const DATA_AUTH_PARAMS = new InjectionToken('data.auth.params');
10
10
  export const DATA_AUTH_USER_SERVICE = new InjectionToken('data.auth.user.service');
11
11
  let AuthServiceBase = class AuthServiceBase {
12
- constructor(userService, _params, _http) {
12
+ constructor(userService, _params, _router, _http, _msgs) {
13
13
  this.userService = userService;
14
14
  this._params = _params;
15
+ this._router = _router;
15
16
  this._http = _http;
17
+ this._msgs = _msgs;
16
18
  this._user$ = new ReplaySubject(1);
17
19
  this.autoLogin();
18
20
  }
@@ -89,6 +91,7 @@ let AuthServiceBase = class AuthServiceBase {
89
91
  }
90
92
  }
91
93
  refresh() {
94
+ console.log('service token refresh');
92
95
  if (!this._token.refresh) {
93
96
  this.logout();
94
97
  return of(null);
@@ -97,12 +100,20 @@ let AuthServiceBase = class AuthServiceBase {
97
100
  .post(this.refreshUrl, {
98
101
  refresh: this._token.refresh,
99
102
  })
100
- .pipe(tap((tok) => {
101
- this._token = new Jwt({
102
- access: tok.access,
103
- refresh: this._token.refresh,
104
- });
105
- this.saveAuth();
103
+ .pipe(catchError((err, caught) => {
104
+ console.error('Token refresh error', err, caught);
105
+ this.logout();
106
+ this._msgs.warning('Vous devez vous reconnecter');
107
+ this._router.navigate(this._params.loginRoute);
108
+ return of(null);
109
+ }), tap((tok) => {
110
+ if (tok) {
111
+ this._token = new Jwt({
112
+ access: tok.access,
113
+ refresh: this._token.refresh,
114
+ });
115
+ this.saveAuth();
116
+ }
106
117
  }));
107
118
  }
108
119
  };
@@ -111,4 +122,4 @@ AuthServiceBase = __decorate([
111
122
  __param(1, Inject(DATA_AUTH_PARAMS))
112
123
  ], AuthServiceBase);
113
124
  export { AuthServiceBase };
114
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFjLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBSUwsR0FBRyxHQUNKLE1BQU0sT0FBTyxDQUFDO0FBRWYsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVdqRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUNoRCxrQkFBa0IsQ0FDbkIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDekIsQ0FBQztBQUVLLElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFTMUIsWUFDeUMsV0FBd0IsRUFDN0IsT0FBbUIsRUFDN0MsS0FBaUI7UUFGYyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFZO1FBQzdDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFObkIsV0FBTSxHQUFHLElBQUksYUFBYSxDQUFjLENBQUMsQ0FBQyxDQUFDO1FBUWpELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUks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QUEwQixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQWlCO1NBQ3ZDLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksR0FBRyxDQUFDO2dCQUNwQixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07Z0JBQ2xCLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQVE7YUFDOUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0NBQ0YsQ0FBQTtBQTlIWSxlQUFlO0lBVXZCLFdBQUEsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFDOUIsV0FBQSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtHQVhoQixlQUFlLENBOEgzQjtTQTlIWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUp3dEJhc2VEYXRhLFxuICBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbixcbiAgSUp3dFJlc3BvbnNlSnNvbixcbiAgSnd0LFxufSBmcm9tICcuL2p3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBBdXRoUGFyYW1zIHtcbiAgdG9rZW5Vcmw6IHN0cmluZztcbiAgdG9rZW5SZWZyZXNoVXJsOiBzdHJpbmc7XG4gIGxvZ2luRmllbGQ6IHN0cmluZztcbiAgcGFzc3dvcmRGaWVsZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIERBVEFfQVBJX1VSTDogc3RvcmVzIGRhdGEgYXBpIGJhc2UgdXJsXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX0FVVEhfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQYXJhbXM+KFxuICAnZGF0YS5hdXRoLnBhcmFtcydcbik7XG5leHBvcnQgY29uc3QgREFUQV9BVVRIX1VTRVJfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb2xsZWN0aW9uPGFueT4+KFxuICAnZGF0YS5hdXRoLnVzZXIuc2VydmljZSdcbik7XG5cbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZUJhc2U8XG4gIFVzZXIgZXh0ZW5kcyBEYXRhTW9kZWwsXG4gIFVzZXJTZXJ2aWNlIGV4dGVuZHMgQ29sbGVjdGlvbjxVc2VyPixcbiAgVXNlckRhdGEgZXh0ZW5kcyBJSnd0QmFzZURhdGFcbj4ge1xuICBwcml2YXRlIF91c2VyITogVXNlcjtcbiAgcHJpdmF0ZSBfdXNlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VyIHwgbnVsbD4oMSk7XG4gIHByaXZhdGUgX3Rva2VuITogSnd0PFVzZXJEYXRhPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERBVEFfQVVUSF9VU0VSX1NFUlZJQ0UpIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgQEluamVjdChEQVRBX0FVVEhfUEFSQU1TKSBwcml2YXRlIF9wYXJhbXM6IEF1dGhQYXJhbXMsXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudFxuICApIHtcbiAgICB0aGlzLmF1dG9Mb2dpbigpO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0Fub255bW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuX3Rva2VuLmFjY2VzcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWNjZXNzVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLmFjY2VzcyA/IHRoaXMuX3Rva2VuLmFjY2VzcyA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlZnJlc2hUb2tlbigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW4ucmVmcmVzaCA/IHRoaXMuX3Rva2VuLnJlZnJlc2ggOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50VXNlcigpOiBVc2VyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3VzZXIgJiYgdGhpcy5fdXNlci5pZCA/IHRoaXMuX3VzZXIgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50VXNlciQoKTogT2JzZXJ2YWJsZTxVc2VyIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl91c2VyJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVmcmVzaFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9wYXJhbXMudG9rZW5SZWZyZXNoVXJsfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvZ2luVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3BhcmFtcy50b2tlblVybH1gO1xuICB9XG5cbiAgcHVibGljIGxvZ291dCgpOiB2b2lkIHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCgpO1xuICAgIHRoaXMuX3VzZXIgPSB0aGlzLnVzZXJTZXJ2aWNlLmNyZWF0ZSgpO1xuICAgIHRoaXMuX3VzZXIkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b0xvZ2luKCk6IHZvaWQge1xuICAgIGNvbnN0IGxvY2FsQXV0aCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdhdXRoJyk7XG4gICAgaWYgKCFsb2NhbEF1dGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmxvZ291dCgpO1xuICAgIH1cbiAgICBjb25zdCB7IHVzZXIsIHRva2VuIH0gPSBKU09OLnBhcnNlKGxvY2FsQXV0aCk7XG4gICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHRva2VuKTtcbiAgICB0aGlzLl91c2VyID0gdGhpcy51c2VyU2VydmljZS5jcmVhdGUodXNlcik7XG4gICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGF5bG9hZDogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLmxvZ2luRmllbGRdID0gdXNlcm5hbWU7XG4gICAgcGF5bG9hZFt0aGlzLl9wYXJhbXMucGFzc3dvcmRGaWVsZF0gPSBwYXNzd29yZDtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PElKd3RSZXNwb25zZUpzb24+KHRoaXMubG9naW5VcmwsIHBheWxvYWQpLnBpcGUoXG4gICAgICB0YXAoKHRvaykgPT4ge1xuICAgICAgICB0aGlzLl90b2tlbiA9IG5ldyBKd3QodG9rKTtcbiAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fdG9rZW4uZGF0YSAmJiB0aGlzLl90b2tlbi5kYXRhLnVzZXJfaWQpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5mZXRjaCh0aGlzLl90b2tlbi5kYXRhIS51c2VyX2lkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiAnSW52YWxpZCB0b2tlbicpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRhcCgodXNlcjogVXNlcikgPT4ge1xuICAgICAgICB0aGlzLl91c2VyID0gdXNlcjtcbiAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2F2ZUF1dGgoKSB7XG4gICAgaWYgKHRoaXMuaXNBbm9ueW1vdXMpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdhdXRoJyk7XG4gICAgICB0aGlzLl91c2VyJC5uZXh0KG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgJ2F1dGgnLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgdXNlcjogdGhpcy5fdXNlci50b0pzb24oKSxcbiAgICAgICAgICB0b2tlbjogdGhpcy5fdG9rZW4udG9Kc29uKCksXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgdGhpcy5fdXNlciQubmV4dCh0aGlzLl91c2VyKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaCgpOiBPYnNlcnZhYmxlPElKd3RSZWZyZXNoUmVzcG9uc2VKc29uIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5fdG9rZW4ucmVmcmVzaCkge1xuICAgICAgdGhpcy5sb2dvdXQoKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2h0dHBcbiAgICAgIC5wb3N0PElKd3RSZWZyZXNoUmVzcG9uc2VKc29uPih0aGlzLnJlZnJlc2hVcmwsIHtcbiAgICAgICAgcmVmcmVzaDogdGhpcy5fdG9rZW4ucmVmcmVzaCBhcyBzdHJpbmcsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgodG9rKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHtcbiAgICAgICAgICAgIGFjY2VzczogdG9rLmFjY2VzcyxcbiAgICAgICAgICAgIHJlZnJlc2g6IHRoaXMuX3Rva2VuLnJlZnJlc2ghLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMuc2F2ZUF1dGgoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2F1dGgvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBSUwsR0FBRyxHQUNKLE1BQU0sT0FBTyxDQUFDO0FBRWYsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxFQUFFLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWNqRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUNoRCxrQkFBa0IsQ0FDbkIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDekIsQ0FBQztBQUVLLElBQU0sZUFBZSxHQUFyQixNQUFNLGVBQWU7SUFTMUIsWUFDeUMsV0FBd0IsRUFDN0IsT0FBbUIsRUFDN0MsT0FBZSxFQUNmLEtBQWlCLEVBQ2pCLEtBQXlCO1FBSk0sZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDN0IsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUM3QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUFvQjtRQVIzQixXQUFNLEdBQUcsSUFBSSxhQUFhLENBQWMsQ0FBQyxDQUFDLENBQUM7UUFVakQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzdCLENB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QUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSUp3dEJhc2VEYXRhLFxuICBJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbixcbiAgSUp3dFJlc3BvbnNlSnNvbixcbiAgSnd0LFxufSBmcm9tICcuL2p3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuLi9kYXRhL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RhdGEvZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEYXRhTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlcy9tZXNzYWdlLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhQYXJhbXMge1xuICB0b2tlblVybDogc3RyaW5nO1xuICB0b2tlblJlZnJlc2hVcmw6IHN0cmluZztcbiAgbG9naW5GaWVsZDogc3RyaW5nO1xuICBwYXNzd29yZEZpZWxkOiBzdHJpbmc7XG4gIGxvZ2luUm91dGU6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIERBVEFfQVBJX1VSTDogc3RvcmVzIGRhdGEgYXBpIGJhc2UgdXJsXG4gKi9cbmV4cG9ydCBjb25zdCBEQVRBX0FVVEhfUEFSQU1TID0gbmV3IEluamVjdGlvblRva2VuPEF1dGhQYXJhbXM+KFxuICAnZGF0YS5hdXRoLnBhcmFtcydcbik7XG5leHBvcnQgY29uc3QgREFUQV9BVVRIX1VTRVJfU0VSVklDRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb2xsZWN0aW9uPGFueT4+KFxuICAnZGF0YS5hdXRoLnVzZXIuc2VydmljZSdcbik7XG5cbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZUJhc2U8XG4gIFVzZXIgZXh0ZW5kcyBEYXRhTW9kZWwsXG4gIFVzZXJTZXJ2aWNlIGV4dGVuZHMgQ29sbGVjdGlvbjxVc2VyPixcbiAgVXNlckRhdGEgZXh0ZW5kcyBJSnd0QmFzZURhdGFcbj4ge1xuICBwcml2YXRlIF91c2VyITogVXNlcjtcbiAgcHJpdmF0ZSBfdXNlciQgPSBuZXcgUmVwbGF5U3ViamVjdDxVc2VyIHwgbnVsbD4oMSk7XG4gIHByaXZhdGUgX3Rva2VuITogSnd0PFVzZXJEYXRhPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERBVEFfQVVUSF9VU0VSX1NFUlZJQ0UpIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgQEluamVjdChEQVRBX0FVVEhfUEFSQU1TKSBwcml2YXRlIF9wYXJhbXM6IEF1dGhQYXJhbXMsXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIF9tc2dzOiBEYXRhTWVzc2FnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5hdXRvTG9naW4oKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNBbm9ueW1vdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLl90b2tlbi5hY2Nlc3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFjY2Vzc1Rva2VuKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5hY2Nlc3MgPyB0aGlzLl90b2tlbi5hY2Nlc3MgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIGdldCByZWZyZXNoVG9rZW4oKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnJlZnJlc2ggPyB0aGlzLl90b2tlbi5yZWZyZXNoIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFVzZXIoKTogVXNlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl91c2VyICYmIHRoaXMuX3VzZXIuaWQgPyB0aGlzLl91c2VyIDogbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFVzZXIkKCk6IE9ic2VydmFibGU8VXNlciB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fdXNlciQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlZnJlc2hVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5fcGFyYW1zLnRva2VuUmVmcmVzaFVybH1gO1xuICB9XG5cbiAgcHVibGljIGdldCBsb2dpblVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLl9wYXJhbXMudG9rZW5Vcmx9YDtcbiAgfVxuXG4gIHB1YmxpYyBsb2dvdXQoKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2F1dGgnKTtcbiAgICB0aGlzLl90b2tlbiA9IG5ldyBKd3QoKTtcbiAgICB0aGlzLl91c2VyID0gdGhpcy51c2VyU2VydmljZS5jcmVhdGUoKTtcbiAgICB0aGlzLl91c2VyJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGF1dG9Mb2dpbigpOiB2b2lkIHtcbiAgICBjb25zdCBsb2NhbEF1dGggPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYXV0aCcpO1xuICAgIGlmICghbG9jYWxBdXRoKSB7XG4gICAgICByZXR1cm4gdGhpcy5sb2dvdXQoKTtcbiAgICB9XG4gICAgY29uc3QgeyB1c2VyLCB0b2tlbiB9ID0gSlNPTi5wYXJzZShsb2NhbEF1dGgpO1xuICAgIHRoaXMuX3Rva2VuID0gbmV3IEp3dCh0b2tlbik7XG4gICAgdGhpcy5fdXNlciA9IHRoaXMudXNlclNlcnZpY2UuY3JlYXRlKHVzZXIpO1xuICAgIHRoaXMuX3VzZXIkLm5leHQodGhpcy5fdXNlcik7XG4gIH1cblxuICBwdWJsaWMgbG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBheWxvYWQ6IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBwYXlsb2FkW3RoaXMuX3BhcmFtcy5sb2dpbkZpZWxkXSA9IHVzZXJuYW1lO1xuICAgIHBheWxvYWRbdGhpcy5fcGFyYW1zLnBhc3N3b3JkRmllbGRdID0gcGFzc3dvcmQ7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxJSnd0UmVzcG9uc2VKc29uPih0aGlzLmxvZ2luVXJsLCBwYXlsb2FkKS5waXBlKFxuICAgICAgdGFwKCh0b2spID0+IHtcbiAgICAgICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHRvayk7XG4gICAgICAgIHRoaXMuc2F2ZUF1dGgoKTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3Rva2VuLmRhdGEgJiYgdGhpcy5fdG9rZW4uZGF0YS51c2VyX2lkKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UuZmV0Y2godGhpcy5fdG9rZW4uZGF0YSEudXNlcl9pZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gJ0ludmFsaWQgdG9rZW4nKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKHVzZXI6IFVzZXIpID0+IHtcbiAgICAgICAgdGhpcy5fdXNlciA9IHVzZXI7XG4gICAgICAgIHRoaXMuc2F2ZUF1dGgoKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IHRydWUpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmVBdXRoKCkge1xuICAgIGlmICh0aGlzLmlzQW5vbnltb3VzKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnYXV0aCcpO1xuICAgICAgdGhpcy5fdXNlciQubmV4dChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICdhdXRoJyxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHVzZXI6IHRoaXMuX3VzZXIudG9Kc29uKCksXG4gICAgICAgICAgdG9rZW46IHRoaXMuX3Rva2VuLnRvSnNvbigpLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMuX3VzZXIkLm5leHQodGhpcy5fdXNlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZnJlc2goKTogT2JzZXJ2YWJsZTxJSnd0UmVmcmVzaFJlc3BvbnNlSnNvbiB8IG51bGw+IHtcbiAgICBjb25zb2xlLmxvZygnc2VydmljZSB0b2tlbiByZWZyZXNoJyk7XG4gICAgaWYgKCF0aGlzLl90b2tlbi5yZWZyZXNoKSB7XG4gICAgICB0aGlzLmxvZ291dCgpO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faHR0cFxuICAgICAgLnBvc3Q8SUp3dFJlZnJlc2hSZXNwb25zZUpzb24+KHRoaXMucmVmcmVzaFVybCwge1xuICAgICAgICByZWZyZXNoOiB0aGlzLl90b2tlbi5yZWZyZXNoIGFzIHN0cmluZyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyLCBjYXVnaHQpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdUb2tlbiByZWZyZXNoIGVycm9yJywgZXJyLCBjYXVnaHQpO1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgICAgdGhpcy5fbXNncy53YXJuaW5nKCdWb3VzIGRldmV6IHZvdXMgcmVjb25uZWN0ZXInKTtcbiAgICAgICAgICB0aGlzLl9yb3V0ZXIubmF2aWdhdGUodGhpcy5fcGFyYW1zLmxvZ2luUm91dGUpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgodG9rKSA9PiB7XG4gICAgICAgICAgaWYgKHRvaykge1xuICAgICAgICAgICAgdGhpcy5fdG9rZW4gPSBuZXcgSnd0KHtcbiAgICAgICAgICAgICAgYWNjZXNzOiB0b2suYWNjZXNzLFxuICAgICAgICAgICAgICByZWZyZXNoOiB0aGlzLl90b2tlbi5yZWZyZXNoISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5zYXZlQXV0aCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -37,6 +37,7 @@ export class DataBackend {
37
37
  * @param body JSON body
38
38
  * @param params query parameters
39
39
  * @param headers query headers
40
+ * @param responseType response type
40
41
  *
41
42
  * @return an observable of response body
42
43
  */
@@ -45,9 +46,36 @@ export class DataBackend {
45
46
  return this._cachedGet(collection, url, { headers, params });
46
47
  }
47
48
  else {
48
- return this._http.request(method, url, { body, params, headers });
49
+ // @ts-ignore
50
+ return this._http.request(method, url, {
51
+ body,
52
+ params,
53
+ headers,
54
+ });
49
55
  }
50
56
  }
57
+ /**
58
+ * Launch an action on collection, receiving a blob.
59
+ *
60
+ * @param collection Collection reference
61
+ * @param method HTTP method
62
+ * @param url full URL for action
63
+ * @param body JSON body
64
+ * @param params query parameters
65
+ * @param headers query headers
66
+ * @param responseType response type
67
+ *
68
+ * @return an observable of response body
69
+ */
70
+ blob(collection, method, url, { body = undefined, params = {}, headers = {} } = {}) {
71
+ // @ts-ignore
72
+ return this._http.request(method, url, {
73
+ body,
74
+ params,
75
+ headers,
76
+ responseType: 'blob',
77
+ });
78
+ }
51
79
  put(collection, url, { body = undefined, params = {}, headers = {} } = {}) {
52
80
  return this._http.put(url, body, { params, headers });
53
81
  }
@@ -84,9 +112,9 @@ export class DataBackend {
84
112
  return this._cachedGet(collection, url, { headers, params });
85
113
  }
86
114
  }
87
- DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, deps: [{ token: i1.HttpClient }, { token: i2.TransferState }, { token: PLATFORM_ID }, { token: DATA_API_URL }, { token: DATA_MAX_TRANSFERSTATE_TIME, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
88
- DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, providedIn: 'root' });
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: DataBackend, decorators: [{
115
+ DataBackend.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DataBackend, deps: [{ token: i1.HttpClient }, { token: i2.TransferState }, { token: PLATFORM_ID }, { token: DATA_API_URL }, { token: DATA_MAX_TRANSFERSTATE_TIME, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ DataBackend.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DataBackend, providedIn: 'root' });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.3", ngImport: i0, type: DataBackend, decorators: [{
90
118
  type: Injectable,
91
119
  args: [{
92
120
  providedIn: 'root',
@@ -103,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImpor
103
131
  type: Inject,
104
132
  args: [DATA_MAX_TRANSFERSTATE_TIME]
105
133
  }] }]; } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFOUU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDVSxLQUFpQixFQUNqQixjQUE2QixFQUNSLFNBQWMsRUFDYixPQUFlLEVBR3JDLHdCQUFnQyxDQUFDO1FBTmpDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDUixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQVk7UUFUbkMsYUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFVM0IsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ksTUFBTSxDQUNYLFVBQXlCLEVBQ3pCLE1BQW1ELEVBQ25ELEdBQVcsRUFDWCxFQUFFLElBQUksR0FBRyxTQUFTLEVBQUUsTUFBTSxH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QUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEVBQzlCO2dCQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFLLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMxQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sR0FBRyxDQUNSLFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQWdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sSUFBSSxDQUNULFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQWdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDOzt3R0EzSFUsV0FBVyx5RUFNWixXQUFXLGFBQ1gsWUFBWSxhQUVaLDJCQUEyQjs0R0FUMUIsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IG1ha2VTdGF0ZUtleSwgVHJhbnNmZXJTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbGxlY3Rpb24sIElBY3Rpb25QYXJhbXMgfSBmcm9tICcuL2RhdGEtY29sbGVjdGlvbic7XG5pbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgREFUQV9BUElfVVJMLCBEQVRBX01BWF9UUkFOU0ZFUlNUQVRFX1RJTUUgfSBmcm9tICcuL2RhdGEtcGFyYW1ldGVycyc7XG5cbi8qKlxuICogRGF0YUJhY2tlbmQgcHJvdmlkZXMgQ1JVRCBvcGVyYXRpb25zIHRvIGEgUkVTVCBhcGkuXG4gKiBUcmFuc2ZlclN0YXRlIGNhbiBiZSB1c2VkIGlmIERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSBpcyBzZXQgYW5kID4gMFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUJhY2tlbmQge1xuICBwcml2YXRlIF9jcmVhdGVkID0gbmV3IERhdGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgX3RyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm06IGFueSxcbiAgICBASW5qZWN0KERBVEFfQVBJX1VSTCkgcHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSlcbiAgICBwcml2YXRlIF9tYXhUcmFuc2ZlcnN0YXRlVGltZTogbnVtYmVyID0gMFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhcGkgdXJsIGZvciB0aGlzIGJhY2tlbmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFwaVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcGlVcmw7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGFuIGFjdGlvbiBvbiBjb2xsZWN0aW9uLlxuICAgKiBJZiBtZXRob2QgaXMgR0VUIGFuZCBjb2xsZWN0aW9uLnVzZVRyYW5zZXJTdGF0ZSAmIHRyYW5zZmVyU3RhdGUgYXJlIGVuYWJsZWQsXG4gICAqIHJlc3VsdCBpcyBzdG9yZWQgLyByZXRyaWV2ZWQgZnJvbSB0cmFuc2ZlclN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbiBDb2xsZWN0aW9uIHJlZmVyZW5jZVxuICAgKiBAcGFyYW0gbWV0aG9kIEhUVFAgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmwgZnVsbCBVUkwgZm9yIGFjdGlvblxuICAgKiBAcGFyYW0gYm9keSBKU09OIGJvZHlcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIHF1ZXJ5IGhlYWRlcnNcbiAgICpcbiAgICogQHJldHVybiBhbiBvYnNlcnZhYmxlIG9mIHJlc3BvbnNlIGJvZHlcbiAgICovXG4gIHB1YmxpYyBhY3Rpb248VCBleHRlbmRzIERhdGFNb2RlbCwgUlQ+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgbWV0aG9kOiAnR0VUJyB8ICdQT1NUJyB8ICdQVVQnIHwgJ1BBVENIJyB8ICdERUxFVEUnLFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIGlmIChtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY2FjaGVkR2V0KGNvbGxlY3Rpb24sIHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLnJlcXVlc3Q8UlQ+KG1ldGhvZCwgdXJsLCB7IGJvZHksIHBhcmFtcywgaGVhZGVycyB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHV0PFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBib2R5ID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQ8VD4odXJsLCBib2R5LCB7IHBhcmFtcywgaGVhZGVycyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBwb3N0PFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBib2R5ID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFBhcnRpYWw8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wb3N0PFBhcnRpYWw8VD4+KHVybCwgYm9keSwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgcGF0Y2g8VCBleHRlbmRzIERhdGFNb2RlbD4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxUPixcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UGFydGlhbDxUPj4ge1xuICAgIHJldHVybiB0aGlzLl9odHRwLnBhdGNoPFBhcnRpYWw8VD4+KHVybCwgYm9keSwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlPFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFI+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFI+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5kZWxldGU8Uj4odXJsLCB7IHBhcmFtcywgaGVhZGVycyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBfY2FjaGVkR2V0PFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFJUPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIGNvbnN0IGtleSA9IG1ha2VTdGF0ZUtleTxSVD4oXG4gICAgICB1cmwgKyAnfCcgKyBKU09OLnN0cmluZ2lmeShwYXJhbXMpICsgJ3wnICsgSlNPTi5zdHJpbmdpZnkoaGVhZGVycylcbiAgICApO1xuICAgIGlmIChcbiAgICAgIGNvbGxlY3Rpb24udXNlVHJhbnNmZXJTdGF0ZSAmJlxuICAgICAgdGhpcy5fbWF4VHJhbnNmZXJzdGF0ZVRpbWUgPiAwICYmXG4gICAgICB0aGlzLl90cmFuc2ZlclN0YXRlLmhhc0tleShrZXkpICYmXG4gICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuX2NyZWF0ZWQuZ2V0VGltZSgpIDxcbiAgICAgICAgdGhpcy5fbWF4VHJhbnNmZXJzdGF0ZVRpbWVcbiAgICApIHtcbiAgICAgIHJldHVybiBvZih0aGlzLl90cmFuc2ZlclN0YXRlLmdldDxSVCB8IG51bGw+KGtleSwgbnVsbCkgYXMgUlQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5faHR0cC5nZXQ8UlQ+KHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSkucGlwZShcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjb2xsZWN0aW9uLnVzZVRyYW5zZmVyU3RhdGUgJiZcbiAgICAgICAgICBpc1BsYXRmb3JtU2VydmVyKHRoaXMuX3BsYXRmb3JtKSAmJlxuICAgICAgICAgIHRoaXMuX21heFRyYW5zZmVyc3RhdGVUaW1lID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl90cmFuc2ZlclN0YXRlLnNldDxSVD4oa2V5LCByZXN1bHQpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0PFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFBhcnRpYWw8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVkR2V0PFQsIFBhcnRpYWw8VD4+KGNvbGxlY3Rpb24sIHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gIH1cblxuICBwdWJsaWMgbGlzdDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY2FjaGVkR2V0PFQsIFBhcnRpYWw8VD4+KGNvbGxlY3Rpb24sIHVybCwgeyBoZWFkZXJzLCBwYXJhbXMgfSk7XG4gIH1cbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1iYWNrZW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1iYWNrZW5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxZQUFZLEVBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDdEUsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkMsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUdqRCxPQUFPLEVBQUMsWUFBWSxFQUFFLDJCQUEyQixFQUFDLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFNUU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDVSxLQUFpQixFQUNqQixjQUE2QixFQUNSLFNBQWMsRUFDYixPQUFlLEVBR3JDLHdCQUFnQyxDQUFDO1FBTmpDLFVBQUssR0FBTCxLQUFLLENBQVk7UUFDakIsbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFDUixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUdyQywwQkFBcUIsR0FBckIscUJBQXFCLENBQVk7UUFUbkMsYUFBUSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFVM0IsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBVyxNQUFNO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNJLE1BQU0sQ0FDWCxVQUF5QixFQUN6QixNQUFtRCxFQUNuRCxHQUFXLEVBQ1gsRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVuRSxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUM5RDthQUFNO1lBQ0wsYUFBYTtZQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUssTUFBTSxFQUFFLEdBQUcsRUFBRTtnQkFDekMsSUFBSTtnQkFDSixNQUFNO2dCQUNOLE9BQU87YUFDUixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxJQUFJLENBQ1QsVUFBeUIsRUFDekIsTUFBbUQsRUFDbkQsR0FBVyxFQUNYLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEtBQW9CLEVBQUU7UUFFbkUsYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNyQyxJQUFJO1lBQ0osTUFBTTtZQUNOLE9BQU87WUFDUCxZQUFZLEVBQUUsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sR0FBRyxDQUNSLFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLElBQUksR0FBRyxTQUFTLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxLQUFvQixFQUFFO1FBRW5FLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUksR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFTSxJQUFJLENBQ1QsVUFBeUIsRUFDekIsR0FBVyxFQUNYLEVBQUUsSUFBSSxHQUFHLFNBQVMsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLEtBQW9CLEVBQUU7UUFFbkUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLEtBQUssQ0FDVixVQUF5QixFQUN6QixHQUFXLEVBQ1gsRUFBRSxJQUFJLEdBQUcsU0FBUyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVuRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFhLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRU0sTUFBTSxDQUNYLFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFJLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSxVQUFVLENBQ2YsVUFBeUIsRUFDekIsR0FBVyxFQUNYLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxPQUFPLEdBQUcsRUFBRSxLQUFvQixFQUFFO1FBRWpELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FDdEIsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUNuRSxDQUFDO1FBQ0YsSUFDRSxVQUFVLENBQUMsZ0JBQWdCO1lBQzNCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztZQUMvQixJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO2dCQUM1QyxJQUFJLENBQUMscUJBQXFCLEVBQzVCO1lBQ0EsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQVksR0FBRyxFQUFFLElBQUksQ0FBTyxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFLLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixJQUNFLFVBQVUsQ0FBQyxnQkFBZ0I7Z0JBQzNCLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEVBQzlCO2dCQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFLLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUMxQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sR0FBRyxDQUNSLFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQWdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sSUFBSSxDQUNULFVBQXlCLEVBQ3pCLEdBQVcsRUFDWCxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLEVBQUUsS0FBb0IsRUFBRTtRQUVqRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQWdCLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RSxDQUFDOzt3R0E3SlUsV0FBVyx5RUFNWixXQUFXLGFBQ1gsWUFBWSxhQUVaLDJCQUEyQjs0R0FUMUIsV0FBVyxjQUZWLE1BQU07MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLE1BQU07MkJBQUMsV0FBVzs7MEJBQ2xCLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMkJBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtIdHRwQ2xpZW50fSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21ha2VTdGF0ZUtleSwgVHJhbnNmZXJTdGF0ZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwsIFBMQVRGT1JNX0lEfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7aXNQbGF0Zm9ybVNlcnZlcn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q29sbGVjdGlvbiwgSUFjdGlvblBhcmFtc30gZnJvbSAnLi9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHtEYXRhTW9kZWx9IGZyb20gJy4vZGF0YS1tb2RlbCc7XG5pbXBvcnQge0RBVEFfQVBJX1VSTCwgREFUQV9NQVhfVFJBTlNGRVJTVEFURV9USU1FfSBmcm9tICcuL2RhdGEtcGFyYW1ldGVycyc7XG5cbi8qKlxuICogRGF0YUJhY2tlbmQgcHJvdmlkZXMgQ1JVRCBvcGVyYXRpb25zIHRvIGEgUkVTVCBhcGkuXG4gKiBUcmFuc2ZlclN0YXRlIGNhbiBiZSB1c2VkIGlmIERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSBpcyBzZXQgYW5kID4gMFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRGF0YUJhY2tlbmQge1xuICBwcml2YXRlIF9jcmVhdGVkID0gbmV3IERhdGUoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgX3RyYW5zZmVyU3RhdGU6IFRyYW5zZmVyU3RhdGUsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBfcGxhdGZvcm06IGFueSxcbiAgICBASW5qZWN0KERBVEFfQVBJX1VSTCkgcHJpdmF0ZSBfYXBpVXJsOiBzdHJpbmcsXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KERBVEFfTUFYX1RSQU5TRkVSU1RBVEVfVElNRSlcbiAgICBwcml2YXRlIF9tYXhUcmFuc2ZlcnN0YXRlVGltZTogbnVtYmVyID0gMFxuICApIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhcGkgdXJsIGZvciB0aGlzIGJhY2tlbmQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFwaVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcGlVcmw7XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGFuIGFjdGlvbiBvbiBjb2xsZWN0aW9uLlxuICAgKiBJZiBtZXRob2QgaXMgR0VUIGFuZCBjb2xsZWN0aW9uLnVzZVRyYW5zZXJTdGF0ZSAmIHRyYW5zZmVyU3RhdGUgYXJlIGVuYWJsZWQsXG4gICAqIHJlc3VsdCBpcyBzdG9yZWQgLyByZXRyaWV2ZWQgZnJvbSB0cmFuc2ZlclN0YXRlLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbiBDb2xsZWN0aW9uIHJlZmVyZW5jZVxuICAgKiBAcGFyYW0gbWV0aG9kIEhUVFAgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmwgZnVsbCBVUkwgZm9yIGFjdGlvblxuICAgKiBAcGFyYW0gYm9keSBKU09OIGJvZHlcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIHF1ZXJ5IGhlYWRlcnNcbiAgICogQHBhcmFtIHJlc3BvbnNlVHlwZSByZXNwb25zZSB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiByZXNwb25zZSBib2R5XG4gICAqL1xuICBwdWJsaWMgYWN0aW9uPFQgZXh0ZW5kcyBEYXRhTW9kZWwsIFJUPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBpZiAobWV0aG9kID09PSAnR0VUJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldChjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gdGhpcy5faHR0cC5yZXF1ZXN0PFJUPihtZXRob2QsIHVybCwge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTGF1bmNoIGFuIGFjdGlvbiBvbiBjb2xsZWN0aW9uLCByZWNlaXZpbmcgYSBibG9iLlxuICAgKlxuICAgKiBAcGFyYW0gY29sbGVjdGlvbiBDb2xsZWN0aW9uIHJlZmVyZW5jZVxuICAgKiBAcGFyYW0gbWV0aG9kIEhUVFAgbWV0aG9kXG4gICAqIEBwYXJhbSB1cmwgZnVsbCBVUkwgZm9yIGFjdGlvblxuICAgKiBAcGFyYW0gYm9keSBKU09OIGJvZHlcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBoZWFkZXJzIHF1ZXJ5IGhlYWRlcnNcbiAgICogQHBhcmFtIHJlc3BvbnNlVHlwZSByZXNwb25zZSB0eXBlXG4gICAqXG4gICAqIEByZXR1cm4gYW4gb2JzZXJ2YWJsZSBvZiByZXNwb25zZSBib2R5XG4gICAqL1xuICBwdWJsaWMgYmxvYjxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIG1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IGJvZHkgPSB1bmRlZmluZWQsIHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICByZXR1cm4gdGhpcy5faHR0cC5yZXF1ZXN0KG1ldGhvZCwgdXJsLCB7XG4gICAgICBib2R5LFxuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHB1dDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0PFQ+KHVybCwgYm9keSwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgcG9zdDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucG9zdDxQYXJ0aWFsPFQ+Pih1cmwsIGJvZHksIHsgcGFyYW1zLCBoZWFkZXJzIH0pO1xuICB9XG5cbiAgcHVibGljIHBhdGNoPFQgZXh0ZW5kcyBEYXRhTW9kZWw+KFxuICAgIGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4sXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgeyBib2R5ID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFBhcnRpYWw8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wYXRjaDxQYXJ0aWFsPFQ+Pih1cmwsIGJvZHksIHsgcGFyYW1zLCBoZWFkZXJzIH0pO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZTxUIGV4dGVuZHMgRGF0YU1vZGVsLCBSPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSPiB7XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZGVsZXRlPFI+KHVybCwgeyBwYXJhbXMsIGhlYWRlcnMgfSk7XG4gIH1cblxuICBwdWJsaWMgX2NhY2hlZEdldDxUIGV4dGVuZHMgRGF0YU1vZGVsLCBSVD4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxUPixcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBjb25zdCBrZXkgPSBtYWtlU3RhdGVLZXk8UlQ+KFxuICAgICAgdXJsICsgJ3wnICsgSlNPTi5zdHJpbmdpZnkocGFyYW1zKSArICd8JyArIEpTT04uc3RyaW5naWZ5KGhlYWRlcnMpXG4gICAgKTtcbiAgICBpZiAoXG4gICAgICBjb2xsZWN0aW9uLnVzZVRyYW5zZmVyU3RhdGUgJiZcbiAgICAgIHRoaXMuX21heFRyYW5zZmVyc3RhdGVUaW1lID4gMCAmJlxuICAgICAgdGhpcy5fdHJhbnNmZXJTdGF0ZS5oYXNLZXkoa2V5KSAmJlxuICAgICAgbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aGlzLl9jcmVhdGVkLmdldFRpbWUoKSA8XG4gICAgICAgIHRoaXMuX21heFRyYW5zZmVyc3RhdGVUaW1lXG4gICAgKSB7XG4gICAgICByZXR1cm4gb2YodGhpcy5fdHJhbnNmZXJTdGF0ZS5nZXQ8UlQgfCBudWxsPihrZXksIG51bGwpIGFzIFJUKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0PFJUPih1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pLnBpcGUoXG4gICAgICB0YXAoKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY29sbGVjdGlvbi51c2VUcmFuc2ZlclN0YXRlICYmXG4gICAgICAgICAgaXNQbGF0Zm9ybVNlcnZlcih0aGlzLl9wbGF0Zm9ybSkgJiZcbiAgICAgICAgICB0aGlzLl9tYXhUcmFuc2ZlcnN0YXRlVGltZSA+IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5fdHJhbnNmZXJTdGF0ZS5zZXQ8UlQ+KGtleSwgcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldDxUIGV4dGVuZHMgRGF0YU1vZGVsPihcbiAgICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uPFQ+LFxuICAgIHVybDogc3RyaW5nLFxuICAgIHsgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxQYXJ0aWFsPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldDxULCBQYXJ0aWFsPFQ+Pihjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICB9XG5cbiAgcHVibGljIGxpc3Q8VCBleHRlbmRzIERhdGFNb2RlbD4oXG4gICAgY29sbGVjdGlvbjogQ29sbGVjdGlvbjxUPixcbiAgICB1cmw6IHN0cmluZyxcbiAgICB7IHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NhY2hlZEdldDxULCBQYXJ0aWFsPFQ+Pihjb2xsZWN0aW9uLCB1cmwsIHsgaGVhZGVycywgcGFyYW1zIH0pO1xuICB9XG59XG4iXX0=
@@ -94,6 +94,22 @@ export class Collection {
94
94
  headers,
95
95
  });
96
96
  }
97
+ /**
98
+ * Calls *method* endpoint for this collection and returns raw results.
99
+ *
100
+ * @param method GET/POST/...
101
+ * @param prefix collection_urlPREFIXSUFFIX
102
+ * @param suffix collection_urlPREFIXSUFFIX
103
+ * @param params query paremeters
104
+ * @param body body as json
105
+ * @param headers headers
106
+ */
107
+ blob({ method = 'GET', prefix = '', suffix = '', params = {}, body = {}, headers = {}, } = {}) {
108
+ return this.backend.blob(this, method, this.getUrl(null, { suffix, prefix }), {
109
+ params,
110
+ headers,
111
+ });
112
+ }
97
113
  getUrl(id, { prefix = '', suffix = '' } = {}) {
98
114
  if (id === undefined || id === null) {
99
115
  if (prefix || suffix) {
@@ -106,4 +122,4 @@ export class Collection {
106
122
  return `${this.backend.apiUrl}${this.path}/${prefix}${id}${suffix}`;
107
123
  }
108
124
  }
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFzQjFDLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1ksT0FBb0IsRUFDcEIsSUFBWSxFQUNmLEtBQXVCO1FBRnBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBTHpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQU01QixDQUFDO0lBRUcsTUFBTSxDQUFDLElBQWlCO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUlELFFBQVEsQ0FBQyxJQUErQjtRQUN0QyxJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7WUFDekIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1lBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNwQixNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNkO1lBQ0QsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJ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RUFBRTtnQkFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO2FBQ2hFO2lCQUFNO2dCQUNMLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0M7U0FDRjtRQUNELE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDdEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YU1vZGVsIH0gZnJvbSAnLi9kYXRhLW1vZGVsJztcbmltcG9ydCB7IERhdGFCYWNrZW5kIH0gZnJvbSAnLi9kYXRhLWJhY2tlbmQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmlsdGVyRGF0YSwgSVF1ZXJ5c2V0T3B0aW9ucywgUXVlcnlzZXQgfSBmcm9tICcuL2RhdGEtcXVlcnknO1xuaW1wb3J0IHsgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCB0eXBlIElIdHRwTWV0aG9kID0gJ1BPU1QnIHwgJ0dFVCcgfCAnREVMRVRFJyB8ICdQVVQnIHwgJ1BBVENIJztcblxuZXhwb3J0IGludGVyZmFjZSBJQWN0aW9uUGFyYW1zIHtcbiAgYm9keT86IGFueTtcbiAgaGVhZGVycz86IHsgW2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcGFyYW1zPzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElDb2xsZWN0aW9uQ2FjaGVQYXJhbXMge1xuICB0cmFuc2ZlclN0YXRlPzoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgbWF4VGltZTogbnVtYmVyO1xuICAgIG1heENvdW50OiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbFR5cGU8VCBleHRlbmRzIERhdGFNb2RlbD4gPSBuZXcgKFxuICBfY29sbD86IENvbGxlY3Rpb248VD5cbikgPT4gVDtcblxuZXhwb3J0IGNsYXNzIENvbGxlY3Rpb248VCBleHRlbmRzIERhdGFNb2RlbD4ge1xuICBwdWJsaWMgdXNlVHJhbnNmZXJTdGF0ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGJhY2tlbmQ6IERhdGFCYWNrZW5kLFxuICAgIHByb3RlY3RlZCBwYXRoOiBzdHJpbmcsXG4gICAgcHVibGljIG1vZGVsOiBEYXRhTW9kZWxUeXBlPFQ+XG4gICkge31cblxuICBwdWJsaWMgY3JlYXRlKGRhdGE/OiBQYXJ0aWFsPFQ+KTogVCB7XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBkYXRhID0ge307XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZyb21Kc29uKGRhdGEpO1xuICB9XG5cbiAgZnJvbUpzb24oZGF0YTogUGFydGlhbDxUPik6IFQ7XG4gIGZyb21Kc29uKGRhdGE6IFBhcnRpYWw8VD5bXSk6IFRbXTtcbiAgZnJvbUpzb24oZGF0YTogUGFydGlhbDxUPiB8IFBhcnRpYWw8VD5bXSk6IFQgfCBUW10ge1xuICAgIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGNvbnN0IG91dDogVFtdID0gW107XG4gICAgICBmb3IgKGNvbnN0IHIgb2YgZGF0YSkge1xuICAgICAgICBjb25zdCByaSA9IG5ldyB0aGlzLm1vZGVsKHRoaXMpO1xuICAgICAgICByaS5mcm9tSnNvbihyKTtcbiAgICAgICAgb3V0LnB1c2gocmkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgY29uc3QgbSA9IG5ldyB0aGlzLm1vZGVsKHRoaXMpO1xuICAgIG0uZnJvbUpzb24oZGF0YSk7XG4gICAgcmV0dXJuIG07XG4gIH1cblxuICBwdWJsaWMgcXVlcnlzZXQob3B0aW9uczogSVF1ZXJ5c2V0T3B0aW9ucyA9IHt9KTogUXVlcnlzZXQ8VD4ge1xuICAgIHJldHVybiBuZXcgUXVlcnlzZXQ8VD4odGhpcywgb3B0aW9ucyk7XG4gIH1cblxuICBwdWJsaWMgZmV0Y2goXG4gICAgaWQ6IG51bWJlcixcbiAgICB7XG4gICAgICBwcmVmaXggPSAnJyxcbiAgICAgIHN1ZmZpeCA9ICcnLFxuICAgICAgcGFyYW1zID0ge30sXG4gICAgICBoZWFkZXJzID0ge30sXG4gICAgfToge1xuICAgICAgcHJlZml4Pzogc3RyaW5nO1xuICAgICAgc3VmZml4Pzogc3RyaW5nO1xuICAgICAgcGFyYW1zPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgIGhlYWRlcnM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAuZ2V0KHRoaXMsIHRoaXMuZ2V0VXJsKGlkLCB7IHByZWZpeCwgc3VmZml4IH0pLCB7IGhlYWRlcnMsIHBhcmFtcyB9KVxuICAgICAgLnBpcGUobWFwKChyZXN1bHQpID0+IHRoaXMuZnJvbUpzb24ocmVzdWx0KSkpO1xuICB9XG5cbiAgcHVibGljIGFjdGlvbjxSVD4oXG4gICAgbW9kZWw6IFQgfCBudWxsLFxuICAgIG1ldGhvZDogSUh0dHBNZXRob2QsXG4gICAgYWN0aW9uOiBzdHJpbmcsXG4gICAgeyBib2R5ID0gdW5kZWZpbmVkLCBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPFJUPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5hY3Rpb248VCwgUlQ+KFxuICAgICAgdGhpcyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIHRoaXMuZ2V0VXJsKG1vZGVsID8gbW9kZWwuaWQgOiBudWxsLCB7XG4gICAgICAgIHN1ZmZpeDogbW9kZWwgPyAnLycgKyBhY3Rpb24gOiBhY3Rpb24sXG4gICAgICB9KSxcbiAgICAgIHsgYm9keSwgcGFyYW1zLCBoZWFkZXJzIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNhdmUoXG4gICAgbW9kZWw6IFQsXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIGxldCBzYXZlTWV0aG9kID1cbiAgICAgIG1vZGVsLmlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLmJhY2tlbmQucGF0Y2guYmluZCh0aGlzLmJhY2tlbmQpXG4gICAgICAgIDogdGhpcy5iYWNrZW5kLnBvc3QuYmluZCh0aGlzLmJhY2tlbmQpO1xuICAgIGxldCB1cmwgPSBtb2RlbC5pZCAhPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRVcmwobW9kZWwuaWQpIDogdGhpcy5nZXRVcmwoKTtcbiAgICByZXR1cm4gc2F2ZU1ldGhvZCh0aGlzLCB1cmwsIHsgYm9keTogbW9kZWwudG9Kc29uKCkgfSkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB0aGlzLmZyb21Kc29uKHJlcykpLFxuICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZU1vZGVsKSB7XG4gICAgICAgICAgbW9kZWwuZnJvbUpzb24ocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShcbiAgICBtb2RlbDogVCxcbiAgICBmaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHt9XG4gICk6IE9ic2VydmFibGU8VD4ge1xuICAgIGxldCBzYXZlTWV0aG9kID1cbiAgICAgIG1vZGVsLmlkICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLmJhY2tlbmQucGF0Y2guYmluZCh0aGlzLmJhY2tlbmQpXG4gICAgICAgIDogdGhpcy5iYWNrZW5kLnBvc3QuYmluZCh0aGlzLmJhY2tlbmQpO1xuICAgIGxldCB1cmwgPSBtb2RlbC5pZCAhPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRVcmwobW9kZWwuaWQpIDogdGhpcy5nZXRVcmwoKTtcbiAgICByZXR1cm4gc2F2ZU1ldGhvZCh0aGlzLCB1cmwsIHsgYm9keTogbW9kZWwudG9Kc29uKGZpZWxkcykgfSkucGlwZShcbiAgICAgIG1hcCgocmVzKSA9PiB0aGlzLmZyb21Kc29uKHJlcykpLFxuICAgICAgdGFwKChyZXMpID0+IHtcbiAgICAgICAgaWYgKHVwZGF0ZU1vZGVsKSB7XG4gICAgICAgICAgbW9kZWwuZnJvbUpzb24ocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZShcbiAgICBtb2RlbDogVCxcbiAgICB7IHBhcmFtcyA9IHt9LCBoZWFkZXJzID0ge30gfTogSUFjdGlvblBhcmFtcyA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5kZWxldGUodGhpcywgdGhpcy5nZXRVcmwobW9kZWwuaWQpLCB7XG4gICAgICBwYXJhbXMsXG4gICAgICBoZWFkZXJzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxpc3QoXG4gICAgcXVlcnk6IEZpbHRlckRhdGEgPSB7fSxcbiAgICB7XG4gICAgICBwcmVmaXggPSAnJyxcbiAgICAgIHN1ZmZpeCA9ICcnLFxuICAgICAgcGFyYW1zID0ge30sXG4gICAgICBoZWFkZXJzID0ge30sXG4gICAgfToge1xuICAgICAgcHJlZml4Pzogc3RyaW5nO1xuICAgICAgc3VmZml4Pzogc3RyaW5nO1xuICAgICAgcGFyYW1zPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICAgIGhlYWRlcnM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPFRbXT4ge1xuICAgIGNvbnN0IHFyeSA9IE9iamVjdC5hc3NpZ24oe30sIHF1ZXJ5LCBwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmRcbiAgICAgIC5saXN0KFxuICAgICAgICB0aGlzLFxuICAgICAgICB0aGlzLmdldFVybChudWxsLCB7IHN1ZmZpeCwgcHJlZml4IH0pLFxuICAgICAgICAvLyBTRUU6IGZvcmNlZCB0eXBlY2FzdCBtYXliZSBiYWRcbiAgICAgICAgeyBwYXJhbXM6IHFyeSwgaGVhZGVycyB9XG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgLy8gRklYTUU6IHBhcmFtZXRyaXplIHBhZ2luYXRlZCByZXN1bHRzIGFjY2Vzc1xuICAgICAgICBtYXAoKHJlc3VsdDogeyByZXN1bHRzOiBQYXJ0aWFsPFQ+W10gfSkgPT5cbiAgICAgICAgICB0aGlzLmZyb21Kc29uKHJlc3VsdC5yZXN1bHRzKVxuICAgICAgICApXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzICptZXRob2QqIGVuZHBvaW50IGZvciB0aGlzIGNvbGxlY3Rpb24gYW5kIHJldHVybnMgcmF3IHJlc3VsdHMuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgR0VUL1BPU1QvLi4uXG4gICAqIEBwYXJhbSBwcmVmaXggY29sbGVjdGlvbl91cmxQUkVGSVhTVUZGSVhcbiAgICogQHBhcmFtIHN1ZmZpeCBjb2xsZWN0aW9uX3VybFBSRUZJWFNVRkZJWFxuICAgKiBAcGFyYW0gcGFyYW1zIHF1ZXJ5IHBhcmVtZXRlcnNcbiAgICogQHBhcmFtIGJvZHkgYm9keSBhcyBqc29uXG4gICAqIEBwYXJhbSBoZWFkZXJzIGhlYWRlcnNcbiAgICovXG4gIHB1YmxpYyByYXc8UlQ+KHtcbiAgICBtZXRob2QgPSAnR0VUJyxcbiAgICBwcmVmaXggPSAnJyxcbiAgICBzdWZmaXggPSAnJyxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBib2R5ID0ge30sXG4gICAgaGVhZGVycyA9IHt9LFxuICB9OiB7XG4gICAgbWV0aG9kPzogSUh0dHBNZXRob2Q7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBib2R5PzogYW55O1xuICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gIH0gPSB7fSk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kLmFjdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICB0aGlzLmdldFVybChudWxsLCB7IHN1ZmZpeCwgcHJlZml4IH0pLFxuICAgICAge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcmwoXG4gICAgaWQ/OiBudW1iZXIgfCBudWxsLFxuICAgIHsgcHJlZml4ID0gJycsIHN1ZmZpeCA9ICcnIH06IHsgcHJlZml4Pzogc3RyaW5nOyBzdWZmaXg/OiBzdHJpbmcgfSA9IHt9XG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgIGlmIChwcmVmaXggfHwgc3VmZml4KSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuYXBpVXJsfSR7dGhpcy5wYXRofS8ke3ByZWZpeH0ke3N1ZmZpeH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYmFja2VuZC5hcGlVcmx9JHt0aGlzLnBhdGh9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuYmFja2VuZC5hcGlVcmx9JHt0aGlzLnBhdGh9LyR7cHJlZml4fSR7aWR9JHtzdWZmaXh9YDtcbiAgfVxufVxuIl19
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1jb2xsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGF0YS9zcmMvbGliL2RhdGEvZGF0YS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUF1QjFDLE1BQU0sT0FBTyxVQUFVO0lBR3JCLFlBQ1ksT0FBb0IsRUFDcEIsSUFBWSxFQUNmLEtBQXVCO1FBRnBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBTHpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztJQU01QixDQUFDO0lBRUcsTUFBTSxDQUFDLElBQWlCO1FBQzdCLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxJQUFJLEdBQUcsRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUlELFFBQVEsQ0FBQyxJQUErQjtRQUN0QyxJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7WUFDekIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1lBQ3BCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUNwQixNQUFNLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNkO1lBQ0QsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE1BQU0sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJ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UVYsRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLElBQUksRUFDSixNQUFNLEVBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFDckM7WUFDRSxNQUFNO1lBQ04sT0FBTztTQUNSLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQ1gsRUFBa0IsRUFDbEIsRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLE1BQU0sR0FBRyxFQUFFLEtBQTJDLEVBQUU7UUFFdkUsSUFBSSxFQUFFLEtBQUssU0FBUyxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDbkMsSUFBSSxNQUFNLElBQUksTUFBTSxFQUFFO2dCQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7YUFDaEU7aUJBQU07Z0JBQ0wsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM3QztTQUNGO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhTW9kZWwgfSBmcm9tICcuL2RhdGEtbW9kZWwnO1xuaW1wb3J0IHsgRGF0YUJhY2tlbmQgfSBmcm9tICcuL2RhdGEtYmFja2VuZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGaWx0ZXJEYXRhLCBJUXVlcnlzZXRPcHRpb25zLCBRdWVyeXNldCB9IGZyb20gJy4vZGF0YS1xdWVyeSc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgSUh0dHBNZXRob2QgPSAnUE9TVCcgfCAnR0VUJyB8ICdERUxFVEUnIHwgJ1BVVCcgfCAnUEFUQ0gnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElBY3Rpb25QYXJhbXMge1xuICBib2R5PzogYW55O1xuICBoZWFkZXJzPzogeyBbaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICBwYXJhbXM/OiB7IFtpbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gIHJlc3BvbnNlVHlwZT86ICdqc29uJyB8ICdibG9iJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29sbGVjdGlvbkNhY2hlUGFyYW1zIHtcbiAgdHJhbnNmZXJTdGF0ZT86IHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIG1heFRpbWU6IG51bWJlcjtcbiAgICBtYXhDb3VudDogbnVtYmVyO1xuICB9O1xufVxuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxUeXBlPFQgZXh0ZW5kcyBEYXRhTW9kZWw+ID0gbmV3IChcbiAgX2NvbGw/OiBDb2xsZWN0aW9uPFQ+XG4pID0+IFQ7XG5cbmV4cG9ydCBjbGFzcyBDb2xsZWN0aW9uPFQgZXh0ZW5kcyBEYXRhTW9kZWw+IHtcbiAgcHVibGljIHVzZVRyYW5zZmVyU3RhdGUgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBiYWNrZW5kOiBEYXRhQmFja2VuZCxcbiAgICBwcm90ZWN0ZWQgcGF0aDogc3RyaW5nLFxuICAgIHB1YmxpYyBtb2RlbDogRGF0YU1vZGVsVHlwZTxUPlxuICApIHt9XG5cbiAgcHVibGljIGNyZWF0ZShkYXRhPzogUGFydGlhbDxUPik6IFQge1xuICAgIGlmICghZGF0YSkge1xuICAgICAgZGF0YSA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5mcm9tSnNvbihkYXRhKTtcbiAgfVxuXG4gIGZyb21Kc29uKGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xuICBmcm9tSnNvbihkYXRhOiBQYXJ0aWFsPFQ+W10pOiBUW107XG4gIGZyb21Kc29uKGRhdGE6IFBhcnRpYWw8VD4gfCBQYXJ0aWFsPFQ+W10pOiBUIHwgVFtdIHtcbiAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICBjb25zdCBvdXQ6IFRbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCByIG9mIGRhdGEpIHtcbiAgICAgICAgY29uc3QgcmkgPSBuZXcgdGhpcy5tb2RlbCh0aGlzKTtcbiAgICAgICAgcmkuZnJvbUpzb24ocik7XG4gICAgICAgIG91dC5wdXNoKHJpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuICAgIGNvbnN0IG0gPSBuZXcgdGhpcy5tb2RlbCh0aGlzKTtcbiAgICBtLmZyb21Kc29uKGRhdGEpO1xuICAgIHJldHVybiBtO1xuICB9XG5cbiAgcHVibGljIHF1ZXJ5c2V0KG9wdGlvbnM6IElRdWVyeXNldE9wdGlvbnMgPSB7fSk6IFF1ZXJ5c2V0PFQ+IHtcbiAgICByZXR1cm4gbmV3IFF1ZXJ5c2V0PFQ+KHRoaXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGZldGNoKFxuICAgIGlkOiBudW1iZXIsXG4gICAge1xuICAgICAgcHJlZml4ID0gJycsXG4gICAgICBzdWZmaXggPSAnJyxcbiAgICAgIHBhcmFtcyA9IHt9LFxuICAgICAgaGVhZGVycyA9IHt9LFxuICAgIH06IHtcbiAgICAgIHByZWZpeD86IHN0cmluZztcbiAgICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgICBoZWFkZXJzPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZFxuICAgICAgLmdldCh0aGlzLCB0aGlzLmdldFVybChpZCwgeyBwcmVmaXgsIHN1ZmZpeCB9KSwgeyBoZWFkZXJzLCBwYXJhbXMgfSlcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0KSA9PiB0aGlzLmZyb21Kc29uKHJlc3VsdCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBhY3Rpb248UlQ+KFxuICAgIG1vZGVsOiBUIHwgbnVsbCxcbiAgICBtZXRob2Q6IElIdHRwTWV0aG9kLFxuICAgIGFjdGlvbjogc3RyaW5nLFxuICAgIHsgYm9keSA9IHVuZGVmaW5lZCwgcGFyYW1zID0ge30sIGhlYWRlcnMgPSB7fSB9OiBJQWN0aW9uUGFyYW1zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuYWN0aW9uPFQsIFJUPihcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICB0aGlzLmdldFVybChtb2RlbCA/IG1vZGVsLmlkIDogbnVsbCwge1xuICAgICAgICBzdWZmaXg6IG1vZGVsID8gJy8nICsgYWN0aW9uIDogYWN0aW9uLFxuICAgICAgfSksXG4gICAgICB7IGJvZHksIHBhcmFtcywgaGVhZGVycyB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKFxuICAgIG1vZGVsOiBULFxuICAgIHsgdXBkYXRlTW9kZWwgPSB0cnVlIH06IHsgdXBkYXRlTW9kZWw/OiBib29sZWFuIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBsZXQgc2F2ZU1ldGhvZCA9XG4gICAgICBtb2RlbC5pZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5iYWNrZW5kLnBhdGNoLmJpbmQodGhpcy5iYWNrZW5kKVxuICAgICAgICA6IHRoaXMuYmFja2VuZC5wb3N0LmJpbmQodGhpcy5iYWNrZW5kKTtcbiAgICBsZXQgdXJsID0gbW9kZWwuaWQgIT09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0VXJsKG1vZGVsLmlkKSA6IHRoaXMuZ2V0VXJsKCk7XG4gICAgcmV0dXJuIHNhdmVNZXRob2QodGhpcywgdXJsLCB7IGJvZHk6IG1vZGVsLnRvSnNvbigpIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4gdGhpcy5mcm9tSnNvbihyZXMpKSxcbiAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgIGlmICh1cGRhdGVNb2RlbCkge1xuICAgICAgICAgIG1vZGVsLmZyb21Kc29uKHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUoXG4gICAgbW9kZWw6IFQsXG4gICAgZmllbGRzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHsgdXBkYXRlTW9kZWwgPSB0cnVlIH06IHsgdXBkYXRlTW9kZWw/OiBib29sZWFuIH0gPSB7fVxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBsZXQgc2F2ZU1ldGhvZCA9XG4gICAgICBtb2RlbC5pZCAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gdGhpcy5iYWNrZW5kLnBhdGNoLmJpbmQodGhpcy5iYWNrZW5kKVxuICAgICAgICA6IHRoaXMuYmFja2VuZC5wb3N0LmJpbmQodGhpcy5iYWNrZW5kKTtcbiAgICBsZXQgdXJsID0gbW9kZWwuaWQgIT09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0VXJsKG1vZGVsLmlkKSA6IHRoaXMuZ2V0VXJsKCk7XG4gICAgcmV0dXJuIHNhdmVNZXRob2QodGhpcywgdXJsLCB7IGJvZHk6IG1vZGVsLnRvSnNvbihmaWVsZHMpIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlcykgPT4gdGhpcy5mcm9tSnNvbihyZXMpKSxcbiAgICAgIHRhcCgocmVzKSA9PiB7XG4gICAgICAgIGlmICh1cGRhdGVNb2RlbCkge1xuICAgICAgICAgIG1vZGVsLmZyb21Kc29uKHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoXG4gICAgbW9kZWw6IFQsXG4gICAgeyBwYXJhbXMgPSB7fSwgaGVhZGVycyA9IHt9IH06IElBY3Rpb25QYXJhbXMgPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuZGVsZXRlKHRoaXMsIHRoaXMuZ2V0VXJsKG1vZGVsLmlkKSwge1xuICAgICAgcGFyYW1zLFxuICAgICAgaGVhZGVycyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsaXN0KFxuICAgIHF1ZXJ5OiBGaWx0ZXJEYXRhID0ge30sXG4gICAge1xuICAgICAgcHJlZml4ID0gJycsXG4gICAgICBzdWZmaXggPSAnJyxcbiAgICAgIHBhcmFtcyA9IHt9LFxuICAgICAgaGVhZGVycyA9IHt9LFxuICAgIH06IHtcbiAgICAgIHByZWZpeD86IHN0cmluZztcbiAgICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgICBoZWFkZXJzPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICBjb25zdCBxcnkgPSBPYmplY3QuYXNzaWduKHt9LCBxdWVyeSwgcGFyYW1zKTtcbiAgICByZXR1cm4gdGhpcy5iYWNrZW5kXG4gICAgICAubGlzdChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgdGhpcy5nZXRVcmwobnVsbCwgeyBzdWZmaXgsIHByZWZpeCB9KSxcbiAgICAgICAgLy8gU0VFOiBmb3JjZWQgdHlwZWNhc3QgbWF5YmUgYmFkXG4gICAgICAgIHsgcGFyYW1zOiBxcnksIGhlYWRlcnMgfVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIEZJWE1FOiBwYXJhbWV0cml6ZSBwYWdpbmF0ZWQgcmVzdWx0cyBhY2Nlc3NcbiAgICAgICAgbWFwKChyZXN1bHQ6IHsgcmVzdWx0czogUGFydGlhbDxUPltdIH0pID0+XG4gICAgICAgICAgdGhpcy5mcm9tSnNvbihyZXN1bHQucmVzdWx0cylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyAqbWV0aG9kKiBlbmRwb2ludCBmb3IgdGhpcyBjb2xsZWN0aW9uIGFuZCByZXR1cm5zIHJhdyByZXN1bHRzLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kIEdFVC9QT1NULy4uLlxuICAgKiBAcGFyYW0gcHJlZml4IGNvbGxlY3Rpb25fdXJsUFJFRklYU1VGRklYXG4gICAqIEBwYXJhbSBzdWZmaXggY29sbGVjdGlvbl91cmxQUkVGSVhTVUZGSVhcbiAgICogQHBhcmFtIHBhcmFtcyBxdWVyeSBwYXJlbWV0ZXJzXG4gICAqIEBwYXJhbSBib2R5IGJvZHkgYXMganNvblxuICAgKiBAcGFyYW0gaGVhZGVycyBoZWFkZXJzXG4gICAqL1xuICBwdWJsaWMgcmF3PFJUPih7XG4gICAgbWV0aG9kID0gJ0dFVCcsXG4gICAgcHJlZml4ID0gJycsXG4gICAgc3VmZml4ID0gJycsXG4gICAgcGFyYW1zID0ge30sXG4gICAgYm9keSA9IHt9LFxuICAgIGhlYWRlcnMgPSB7fSxcbiAgfToge1xuICAgIG1ldGhvZD86IElIdHRwTWV0aG9kO1xuICAgIHByZWZpeD86IHN0cmluZztcbiAgICBzdWZmaXg/OiBzdHJpbmc7XG4gICAgYm9keT86IGFueTtcbiAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIGhlYWRlcnM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICB9ID0ge30pOiBPYnNlcnZhYmxlPFJUPiB7XG4gICAgcmV0dXJuIHRoaXMuYmFja2VuZC5hY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgbWV0aG9kLFxuICAgICAgdGhpcy5nZXRVcmwobnVsbCwgeyBzdWZmaXgsIHByZWZpeCB9KSxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbHMgKm1ldGhvZCogZW5kcG9pbnQgZm9yIHRoaXMgY29sbGVjdGlvbiBhbmQgcmV0dXJucyByYXcgcmVzdWx0cy5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCBHRVQvUE9TVC8uLi5cbiAgICogQHBhcmFtIHByZWZpeCBjb2xsZWN0aW9uX3VybFBSRUZJWFNVRkZJWFxuICAgKiBAcGFyYW0gc3VmZml4IGNvbGxlY3Rpb25fdXJsUFJFRklYU1VGRklYXG4gICAqIEBwYXJhbSBwYXJhbXMgcXVlcnkgcGFyZW1ldGVyc1xuICAgKiBAcGFyYW0gYm9keSBib2R5IGFzIGpzb25cbiAgICogQHBhcmFtIGhlYWRlcnMgaGVhZGVyc1xuICAgKi9cbiAgcHVibGljIGJsb2I8UlQ+KHtcbiAgICBtZXRob2QgPSAnR0VUJyxcbiAgICBwcmVmaXggPSAnJyxcbiAgICBzdWZmaXggPSAnJyxcbiAgICBwYXJhbXMgPSB7fSxcbiAgICBib2R5ID0ge30sXG4gICAgaGVhZGVycyA9IHt9LFxuICB9OiB7XG4gICAgbWV0aG9kPzogSUh0dHBNZXRob2Q7XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHN1ZmZpeD86IHN0cmluZztcbiAgICBib2R5PzogYW55O1xuICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gIH0gPSB7fSk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIHJldHVybiB0aGlzLmJhY2tlbmQuYmxvYihcbiAgICAgIHRoaXMsXG4gICAgICBtZXRob2QsXG4gICAgICB0aGlzLmdldFVybChudWxsLCB7IHN1ZmZpeCwgcHJlZml4IH0pLFxuICAgICAge1xuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRVcmwoXG4gICAgaWQ/OiBudW1iZXIgfCBudWxsLFxuICAgIHsgcHJlZml4ID0gJycsIHN1ZmZpeCA9ICcnIH06IHsgcHJlZml4Pzogc3RyaW5nOyBzdWZmaXg/OiBzdHJpbmcgfSA9IHt9XG4gICk6IHN0cmluZyB7XG4gICAgaWYgKGlkID09PSB1bmRlZmluZWQgfHwgaWQgPT09IG51bGwpIHtcbiAgICAgIGlmIChwcmVmaXggfHwgc3VmZml4KSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmJhY2tlbmQuYXBpVXJsfSR7dGhpcy5wYXRofS8ke3ByZWZpeH0ke3N1ZmZpeH1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuYmFja2VuZC5hcGlVcmx9JHt0aGlzLnBhdGh9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuYmFja2VuZC5hcGlVcmx9JHt0aGlzLnBhdGh9LyR7cHJlZml4fSR7aWR9JHtzdWZmaXh9YDtcbiAgfVxufVxuIl19
@@ -145,6 +145,7 @@ export class DataModel {
145
145
  }
146
146
  /**
147
147
  * Set field value. If check is true, only set value if all validators pass.
148
+ * Skip setting field value if manager computed flag is true.
148
149
  *
149
150
  * The validation result is returned.
150
151
  *
@@ -154,6 +155,9 @@ export class DataModel {
154
155
  * @return null or ValidationError
155
156
  */
156
157
  setFV(field, value, check = false) {
158
+ if (this.FM(field).computed) {
159
+ return null;
160
+ }
157
161
  if (check) {
158
162
  const fc = new FormControl(value);
159
163
  for (const v of this.FM(field).validators) {
@@ -284,4 +288,4 @@ DataModel.__name = '';
284
288
  // return out.join(' : ');
285
289
  // }
286
290
  // }
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBaUJwQjs7Ozs7O09BTUc7SUFDSCxZQUFzQixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUMzQyxNQUFNLEVBQUUsR0FDTixPQUFPLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1Asa0VBQWtFO1lBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7U0FDSDtRQUNELG9EQUFvRDtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUM1RCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLE1BQU0sQ0FBQyxH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WCxvQkFBb0I7QUFDcEIsUUFBUTtBQUNSLG1CQUFtQjtBQUNuQixNQUFNO0FBQ04sRUFBRTtBQUNGLGdEQUFnRDtBQUNoRCxzQkFBc0I7QUFDdEIsaURBQWlEO0FBQ2pELE1BQU07QUFDTixFQUFFO0FBQ0YsZ0NBQWdDO0FBQ2hDLGdDQUFnQztBQUNoQyxrQ0FBa0M7QUFDbEMsZ0RBQWdEO0FBQ2hELGlDQUFpQztBQUNqQyxpRUFBaUU7QUFDakUsbUJBQW1CO0FBQ25CLHVDQUF1QztBQUN2QyxZQUFZO0FBQ1osVUFBVTtBQUNWLFFBQVE7QUFDUixnQ0FBZ0M7QUFDaEMsbUVBQW1FO0FBQ25FLGVBQWU7QUFDZixzQ0FBc0M7QUFDdEMsUUFBUTtBQUNSLEVBQUU7QUFDRiw4QkFBOEI7QUFDOUIsTUFBTTtBQUNOLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlRmllbGRNYW5hZ2VyLFxuICBJRmllbGRTdG9yZWRNZXRhZGF0YSxcbiAgUFJPUEVSVFlfTUVUQURBVEFfS0VZLFxufSBmcm9tICcuL2ZpZWxkcy9iYXNlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi9kYXRhLWNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxGaWVsZHMgPSBSZWFkb25seTxNYXA8c3RyaW5nLCBJRmllbGRTdG9yZWRNZXRhZGF0YTxhbnk+Pj47XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgZGF0YSBtb2RlbC5cbiAqXG4gKiBFYWNoIGNsYXNzIG11c3QgaGF2ZSBhIHN0YXRpYyBfX25hbWVcbiAqIHByaW1hcnkgZmllbGQgaXMgZ2l2ZW4gd2l0aCBpZCBmaWVsZC5cbiAqXG4gKiBTb21lIG1ldGhvZHMgYXJlIHByb3ZpZGVkIHRvIGJlIHVzZWQgd2l0aCBhIGNvbGxlY3Rpb24sIG1vc3RseSBmb3IgQ1JVRCBvcGVyYXRpb25zLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFNb2RlbCB7XG4gIC8qKlxuICAgKiBkYXRhIG1vZGVsIG5hbWVcbiAgICogdGhpcyBuZWVkIHRvIGJlIGdpdmVuIGJlY2F1c2UgY2xhc3MgbmFtZSBpcyBub3QgZnVsbHkgYXZhaWxhYmxlIGJlY2F1c2Ugb2YgbWluaWZpY2F0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyByZWFkb25seSBfX25hbWU6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBQcmltYXJ5IGZpZWxkOyByZWFkb25seTsgbXVzdCBiZSBjcmVhdGVkIGFuZCBhdXRvIGluY3JlbWVudGVkIG9uIGRiIHNpZGUuXG4gICAqL1xuICAvLyBAcHJpbWFyeUZpZWxkKHtcbiAgLy8gICBkZXNjcmlwdGlvbjogJ0lEJyxcbiAgLy8gICBoZWxwOiAnSWRlbnRpZmlhbnQgcHJpbWFpcmUnLFxuICAvLyB9KVxuICBwdWJsaWMgaWQhOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX0Y6IERhdGFNb2RlbEZpZWxkcztcblxuICAvKipcbiAgICogQ29uc3RydWN0b3IgZm9yIGRhdGEgbW9kZWwgaW5zdGFuY2UuXG4gICAqIEEgbWF0Y2hpbmcgY29sbGVjdGlvbiBjYW4gYmUgcHJvdmlkZWQuXG4gICAqIF9fX2ZpZWxkcyByZWFkb25seSBwcm9wZXJ0eSBpcyBhbHNvIHBvcHVsYXRlZCBmcm9tIFJlZmxlY3RlZCBtZXRhZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gX2NvbGwgY29sbGVjdGlvbiB1c2VkIGZvciBDUlVELCBldGMuLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9jb2xsPzogQ29sbGVjdGlvbjxhbnk+KSB7XG4gICAgY29uc3QgbWQ6IE1hcDxzdHJpbmcsIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT4+IHwgdW5kZWZpbmVkID1cbiAgICAgIFJlZmxlY3QuZ2V0TWV0YWRhdGEoUFJPUEVSVFlfTUVUQURBVEFfS0VZLCB0aGlzKTtcbiAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgICBpZiAoIW1kKSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBvY2N1ciBhcyBhbGwgZGF0YW1vZGVsIGhhdmUgYXQgbGVhc3QgaWQgZmllbGRcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ05vIHByb3BlcnR5IG1ldGFkYXRhIGZvdW5kIGZvciB0aGlzIG9iamVjdDsgaXMgdGhlcmUgYSBwcm9wZXJ0eSBpbiBjdXJyZW50IGNvbGxlY3Rpb24gPydcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIEdldCBhbGwgZmllbGRzIGZyb20gY3VycmVudCBjbGFzcyBhbmQgaXRzIHBhcmVudHNcbiAgICBjb25zdCBmaWVsZHMgPSBuZXcgTWFwPHN0cmluZywgSUZpZWxkU3RvcmVkTWV0YWRhdGE8YW55Pj4oKTtcbiAgICBsZXQgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpO1xuICAgIHdoaWxlIChwYXJlbnQuY29uc3RydWN0b3IubmFtZSAhPT0gJ09iamVjdCcpIHtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBtZC5rZXlzKCkpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZi5zcGxpdCgnX18nKVsxXTtcbiAgICAgICAgaWYgKGZpZWxkcy5oYXMoZmllbGROYW1lKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmLmluZGV4T2YocGFyZW50LmNvbnN0cnVjdG9yLl9fbmFtZSArICdfXycpID09PSAwKSB7XG4gICAgICAgICAgZmllbGRzLnNldChmaWVsZE5hbWUsIG1kLmdldChmKSEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwYXJlbnQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocGFyZW50KTtcbiAgICB9XG4gICAgdGhpcy5fRiA9IE9iamVjdC5mcmVlemUoZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgX2NvbGxlY3Rpb24oKTogQ29sbGVjdGlvbjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fY29sbCBhcyBDb2xsZWN0aW9uPGFueT47XG4gIH1cblxuICBwdWJsaWMgc2V0IF9jb2xsZWN0aW9uKGNvbGw6IENvbGxlY3Rpb248YW55Pikge1xuICAgIHRoaXMuX2NvbGwgPSBjb2xsO1xuICB9XG5cbiAgLyoqXG4gICAqICBIYXNoTWFwIG9mIGZpZWxkcyBtZXRhZGF0YSAodHlwZSwgbmFtZSwgbWFuYWdlciwgZXRjLi4uKVxuICAgKi9cbiAgcHVibGljIGdldCBGKCk6IERhdGFNb2RlbEZpZWxkcyB7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gICAgaWYgKCF0aGlzLl9GKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGF0YSBtb2RlbCwgZmllbGRzIG1ldGFkYXRhIGlzIG1pc3NpbmcnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX0Y7XG4gIH1cblxuICAvLyBSZXR1cm4gZmllbGQgbmFtZXMgaXRlcmF0b3JcbiAgcHVibGljIGdldCBGTigpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLkYua2V5cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIG1vZGVsIGRhdGEgZnJvbSBqc29uLlxuICAgKiBJZiBwYXJ0aWFsIGlzIHRydWUsIG9ubHkgZmllbGRzIHdpdGggbWF0Y2hpbmcgZGF0YSBrZXlzIHdpbGwgYmUgbG9hZGVkXG4gICAqIEBwYXJhbSBkYXRhXG4gICAqIEBwYXJhbSBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgZnJvbUpzb24oXG4gICAgZGF0YTogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9LFxuICAgIHsgcGFydGlhbCwgY2hlY2sgfTogeyBwYXJ0aWFsPzogYm9vbGVhbjsgY2hlY2s/OiBib29sZWFuIH0gPSB7XG4gICAgICBwYXJ0aWFsOiBmYWxzZSxcbiAgICAgIGNoZWNrOiBmYWxzZSxcbiAgICB9XG4gICk6IG51bGwgfCBWYWxpZGF0aW9uRXJyb3JzIHtcbiAgICBjb25zdCBlcnJvcnM6IHsgW2luZGV4OiBzdHJpbmddOiBudWxsIHwgVmFsaWRhdGlvbkVycm9ycyB9ID0ge307XG4gICAgbGV0IGhhdmVFcnJvciA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLkZOKSB7XG4gICAgICBpZiAoIXBhcnRpYWwgfHwgKHBhcnRpYWwgJiYgT2JqZWN0LmtleXMoZGF0YSkuaW5kZXhPZihmKSAhPT0gLTEpKSB7XG4gICAgICAgIGNvbnN0IGZlcnIgPSB0aGlzLnNldEZWKGYsIHRoaXMuRk0oZikuZnJvbUpzb24oZGF0YVtmXSksIGNoZWNrKTtcbiAgICAgICAgaWYgKGZlcnIgIT09IG51bGwpIHtcbiAgICAgICAgICBlcnJvcnNbZl0gPSBmZXJyO1xuICAgICAgICAgIGhhdmVFcnJvciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGhhdmVFcnJvciA/IGVycm9ycyA6IG51bGw7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKGZpZWxkcz86IHN0cmluZyB8IHN0cmluZ1tdKTogYW55IHtcbiAgICBpZiAoZmllbGRzICYmICFBcnJheS5pc0FycmF5KGZpZWxkcykpIHtcbiAgICAgIGZpZWxkcyA9IFtmaWVsZHNdO1xuICAgIH1cbiAgICBjb25zdCBvdXQ6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIGNvbnN0IGZsID0gdGhpcy5GO1xuICAgIGZvciAoY29uc3QgZiBvZiB0aGlzLkZOKSB7XG4gICAgICBjb25zdCBtZ3IgPSB0aGlzLkZNKGYpO1xuICAgICAgaWYgKCFmaWVsZHMgfHwgZmllbGRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBpZiAobWdyLnJlYWRvbmx5KSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgb3V0W2ZdID0gZmwuZ2V0KGYpIS5tYW5hZ2VyLnRvSnNvbih0aGlzLkZWKGYpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmaWVsZHMuaW5kZXhPZihmKSAhPT0gLTEpIHtcbiAgICAgICAgICBvdXRbZl0gPSBmbC5nZXQoZikhLm1hbmFnZXIudG9Kc29uKHRoaXMuRlYoZikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cblxuICBwdWJsaWMgYWN0aW9uPFQsIFJUIGV4dGVuZHMgeyBbaW5kZXg6IHN0cmluZ106IGFueSB9PihcbiAgICBtZXRob2Q6ICdQT1NUJyB8ICdQQVRDSCcgfCAnR0VUJyB8ICdERUxFVEUnIHwgJ1BVVCcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHtcbiAgICAgIGJvZHkgPSB1bmRlZmluZWQsXG4gICAgICB1cGRhdGUgPSBmYWxzZSxcbiAgICAgIHVwZGF0ZVBhcnRpYWwgPSB0cnVlLFxuICAgICAgdXBkYXRlQ2hlY2sgPSBmYWxzZSxcbiAgICAgIC8vIHVwZGF0ZVJhaXNlID0gZmFsc2UsXG4gICAgICBwYXJhbXMgPSB7fSxcbiAgICAgIGhlYWRlcnMgPSB7fSxcbiAgICB9OiB7XG4gICAgICBib2R5PzogeyBbX2luZGV4OiBzdHJpbmddOiBhbnkgfTtcbiAgICAgIHVwZGF0ZT86IGJvb2xlYW47XG4gICAgICB1cGRhdGVQYXJ0aWFsPzogYm9vbGVhbjtcbiAgICAgIHVwZGF0ZUNoZWNrPzogYm9vbGVhbjtcbiAgICAgIC8vIHVwZGF0ZVJhaXNlPzogYm9vbGVhbjtcbiAgICAgIHBhcmFtcz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgICBoZWFkZXJzPzogeyBbX2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgICB9ID0ge31cbiAgKTogT2JzZXJ2YWJsZTxSVD4ge1xuICAgIGlmICh0aGlzLl9jb2xsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY29sbFxuICAgICAgLmFjdGlvbjxSVD4odGhpcywgbWV0aG9kLCBuYW1lLCB7XG4gICAgICAgIGJvZHksXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgaGVhZGVycyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgICAgICB0aGlzLmZyb21Kc29uKHJlc3VsdCwge1xuICAgICAgICAgICAgICBwYXJ0aWFsOiB1cGRhdGVQYXJ0aWFsLFxuICAgICAgICAgICAgICBjaGVjazogdXBkYXRlQ2hlY2ssXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIENhbGxlZCBvbiBtb2RlbCwgcmV0dXJucyB0aGUgbWFuYWdlciBmb3IgYSBmaWVsZC5cbiAgcHVibGljIEZNPEZUPihmaWVsZDogc3RyaW5nKTogQmFzZUZpZWxkTWFuYWdlcjxGVD4ge1xuICAgIGlmICh0aGlzLkYuaGFzKGZpZWxkKSkge1xuICAgICAgcmV0dXJuIHRoaXMuRi5nZXQoZmllbGQpIS5tYW5hZ2VyO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgJHtmaWVsZH0gbm90IGZvdW5kIGluICR7T2JqZWN0LmtleXModGhpcy5GKS5qb2luKCcsJyl9IG1vZGVsICR7dGhpc31gXG4gICAgKTtcbiAgfVxuXG4gIC8vIFJldHVybiBmaWVsZCB2YWx1ZSwgd2l0aG91dCB0eXBpbmdcbiAgcHVibGljIEZWPEZUPihmaWVsZDogc3RyaW5nKTogRlQge1xuICAgIHJldHVybiAodGhpcyBhcyBhbnkpW2ZpZWxkXSBhcyBGVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgZmllbGQgdmFsdWUuIElmIGNoZWNrIGlzIHRydWUsIG9ubHkgc2V0IHZhbHVlIGlmIGFsbCB2YWxpZGF0b3JzIHBhc3MuXG4gICAqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlIGZpZWxkIHZhbHVlZFxuICAgKiBAcGFyYW0gY2hlY2sgZGVmYXVsdCBmYWxzZVxuICAgKiBAcmV0dXJuIG51bGwgb3IgVmFsaWRhdGlvbkVycm9yXG4gICAqL1xuICBwdWJsaWMgc2V0RlY8RlQ+KFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IEZULFxuICAgIGNoZWNrOiBib29sZWFuID0gZmFsc2VcbiAgKTogbnVsbCB8IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmIChjaGVjaykge1xuICAgICAgY29uc3QgZmMgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuXG4gICAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5GTShmaWVsZCkudmFsaWRhdG9ycykge1xuICAgICAgICBjb25zdCB2YWwgPSB2KGZjKTtcbiAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IodmFsKTtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICh0aGlzIGFzIGFueSlbZmllbGRdID0gdmFsdWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gbW9kZWwgd2l0aCBhIGxpc3Qgb2YgZmllbGRzLCByZXR1cm5zIGEgRm9ybUdyb3VwIHdpdGhcbiAgLy8gdGhlc2UgZmllbGRzLCBvciBvbmx5IHRoZSBmb3JtIGNvbnRyb2wgZm9yIG9uZSBmaWVsZC5cbiAgcHVibGljIEZDKCk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmcpOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmdbXSk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkPzogc3RyaW5nIHwgc3RyaW5nW10pOiBGb3JtQ29udHJvbCB8IEZvcm1Hcm91cCB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpZWxkID0gQXJyYXkuZnJvbSh0aGlzLkZOKS5maWx0ZXIoKG4pID0+ICF0aGlzLkZNKG4pLnJlYWRvbmx5KTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQpKSB7XG4gICAgICBjb25zdCBmZzogeyBbaW5kZXg6IHN0cmluZ106IEZvcm1Db250cm9sIH0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZCkge1xuICAgICAgICBmZ1tmXSA9IHRoaXMuRkMoZikgYXMgRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChmZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLkZNKGZpZWxkKS5mb3JtQ29udHJvbCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKFxuICAgIHsgdXBkYXRlTW9kZWwgPSB0cnVlIH06IHsgdXBkYXRlTW9kZWw/OiBib29sZWFuIH0gPSB7XG4gICAgICB1cGRhdGVNb2RlbDogdHJ1ZSxcbiAgICB9XG4gICk6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgIGlmICh0aGlzLl9jb2xsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29sbC5zYXZlKHRoaXMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShcbiAgICBmaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHtcbiAgICAgIHVwZGF0ZU1vZGVsOiB0cnVlLFxuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTx0aGlzPiB7XG4gICAgaWYgKHRoaXMuX2NvbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb2xsLnVwZGF0ZSh0aGlzLCBmaWVsZHMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG59XG5cbi8vXG4vLyBleHBvcnQgY2xhc3MgVHJlZURhdGFNb2RlbCBleHRlbmRzIERhdGFNb2RlbCB7XG4vLyAgIHN0YXRpYyBvdmVycmlkZSBfX25hbWUgPSAnVHJlZURhdGFNb2RlbCc7XG4vLyAgIEBkZXRhaWxzRmllbGQoe1xuLy8gICAgIG1vZGVsOiB0aGlzLFxuLy8gICAgIG1hbnk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdQYXJlbnRzJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudHNfZGV0YWlscz86IHRoaXNbXTtcbi8vXG4vLyAgIEBmb3JlaWduS2V5RmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZSBwYXJlbnRlJyxcbi8vICAgICByZWxhdGVkOiAnU3RydWN0dXJlJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudD86IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ0lEIFRyZWUnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgdHJlZV9pZCE6IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ01QVFQgbGVmdCcsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZnQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdNUFRUIHJpZ2h0Jyxcbi8vICAgfSlcbi8vICAgcHVibGljIHJnaHQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdOaXZlYXUgaGnDqXJhcmNoaXF1ZScsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZXZlbCE6IG51bWJlcjtcbi8vXG4vLyAgIHB1YmxpYyBnZXQgcGFyZW50X2RldGFpbHMoKTogdGhpcyB8IG51bGwge1xuLy8gICAgIGlmICh0aGlzLnBhcmVudHNfZGV0YWlscykge1xuLy8gICAgICAgY29uc3Qgb3V0ID0gdGhpcy5wYXJlbnRzX2RldGFpbHNbdGhpcy5wYXJlbnRzX2RldGFpbHMubGVuZ3RoIC0gMV07XG4vLyAgICAgICBvdXQucGFyZW50c19kZXRhaWxzID0gdGhpcy5wYXJlbnRzX2RldGFpbHMuc2xpY2UoXG4vLyAgICAgICAgIDAsXG4vLyAgICAgICAgIHRoaXMucGFyZW50c19kZXRhaWxzLmxlbmd0aCAtIDFcbi8vICAgICAgICk7XG4vLyAgICAgICByZXR1cm4gb3V0O1xuLy8gICAgIH1cbi8vICAgICByZXR1cm4gbnVsbDtcbi8vICAgfVxuLy9cbi8vICAgcHVibGljIHNldCBwYXJlbnRfZGV0YWlscyhkOiB0aGlzIHwgbnVsbCkge1xuLy8gICAgIGNvbnNvbGUubG9nKGQpO1xuLy8gICAgIHRoaXMucGFyZW50c19kZXRhaWxzID0gZD8ucGFyZW50c19kZXRhaWxzO1xuLy8gICB9XG4vL1xuLy8gICBwdWJsaWMgX2Rpc3BsYXkoKTogc3RyaW5nIHtcbi8vICAgICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4vLyAgICAgaWYgKHRoaXMucGFyZW50c19kZXRhaWxzKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5wYXJlbnRzX2RldGFpbHMpIHtcbi8vICAgICAgICAgaWYgKChwIGFzIGFueSkuY29kZSkge1xuLy8gICAgICAgICAgIG91dC5wdXNoKGBbJHsocCBhcyBhbnkpLmNvZGV9XSAkeyhwIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBvdXQucHVzaCgocCBhcyBhbnkpLm5hbWUpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIGlmICgodGhpcyBhcyBhbnkpLmNvZGUpIHtcbi8vICAgICAgIG91dC5wdXNoKGBbJHsodGhpcyBhcyBhbnkpLmNvZGV9XSAkeyh0aGlzIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgb3V0LnB1c2goKHRoaXMgYXMgYW55KS5uYW1lKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiBvdXQuam9pbignIDogJyk7XG4vLyAgIH1cbi8vIH1cbiJdfQ==
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEvc3JjL2xpYi9kYXRhL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHFCQUFxQixHQUN0QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUlyQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBaUJwQjs7Ozs7O09BTUc7SUFDSCxZQUFzQixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUMzQyxNQUFNLEVBQUUsR0FDTixPQUFPLENBQUMsV0FBVyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELHFCQUFxQjtRQUNyQixJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1Asa0VBQWtFO1lBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7U0FDSDtRQUNELG9EQUFvRDtRQUNwRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBcUMsQ0FBQztRQUM1RCxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzNDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7b0JBQ3pCLFNBQVM7aUJBQ1Y7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDckQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDO2lCQUNuQzthQUNGO1lBQ0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxLQUF3QixDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLFdBQVcsQ0FBQyxJQUFxQjtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLENBQUM7UUFDVixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7U0FDbkU7UUFDRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixJQUFXLEVBQUU7UUFDWCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUNiLElBQThCLEVBQzlCLEVBQUUsT0FBTyxFQUFFLEtBQUssS0FBNkM7UUFDM0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLLEVBQUUsS0FBSztLQUNiO1FBRUQsTUFBTSxNQUFNLEdBQWlELEVBQUUsQ0FBQztRQUNoRSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDaEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksSUFBSSxLQUFLLElBQUksRUFBRTtvQkFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDakIsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDbEI7YUFDRjtTQUNGO1FBQ0QsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25DLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBMEI7UUFDdEMsSUFBSSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3BDLE1BQU0sR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ25CO1FBQ0QsTUFBTSxHQUFHLEdBQTZCLEVBQUUsQ0FBQztRQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRTtvQkFDaEIsU0FBUztpQkFDVjtnQkFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDTCxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNoRDthQUNGO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxNQUFNLENBQ1gsTUFBbUQsRUFDbkQsSUFBWSxFQUNaLEVBQ0UsSUFBSSxHQUFHLFNBQVMsRUFDaEIsTUFBTSxHQUFHLEtBQUssRUFDZCxhQUFhLEdBQUcsSUFBSSxFQUNwQixXQUFXLEdBQUcsS0FBSztJQUNuQix1QkFBdUI7SUFDdkIsTUFBTSxHQUFHLEVBQUUsRUFDWCxPQUFPLEdBQUcsRUFBRSxNQVNWLEVBQUU7UUFFTixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzVCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztTQUMxRDtRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxNQUFNLENBQUssSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDOUIsSUFBSTtZQUNKLE1BQU07WUFDTixPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNiLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUNwQixPQUFPLEVBQUUsYUFBYTtvQkFDdEIsS0FBSyxFQUFFLFdBQVc7aUJBQ25CLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7SUFFRCxvREFBb0Q7SUFDN0MsRUFBRSxDQUFLLEtBQWE7UUFDekIsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDLE9BQU8sQ0FBQztTQUNuQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxLQUFLLGlCQUFpQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBRUQscUNBQXFDO0lBQzlCLEVBQUUsQ0FBSyxLQUFhO1FBQ3pCLE9BQVEsSUFBWSxDQUFDLEtBQUssQ0FBTyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksS0FBSyxDQUNWLEtBQWEsRUFDYixLQUFTLEVBQ1QsUUFBaUIsS0FBSztRQUV0QixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQzNCLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWxDLEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLEVBQUU7Z0JBQ3pDLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEIsSUFBSSxHQUFHLEtBQUssSUFBSSxFQUFFO29CQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuQixPQUFPLEdBQUcsQ0FBQztpQkFDWjthQUNGO1NBQ0Y7UUFDQSxJQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQU9NLEVBQUUsQ0FBQyxLQUF5QjtRQUNqQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ2pFO1FBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE1BQU0sRUFBRSxHQUFxQyxFQUFFLENBQUM7WUFDaEQsS0FBSyxNQUFNLENBQUMsSUFBSSxLQUFLLEVBQUU7Z0JBQ3JCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBZ0IsQ0FBQzthQUNuQztZQUNELE9BQU8sSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDMUI7UUFDRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxJQUFJLENBQ1QsRUFBRSxXQUFXLEdBQUcsSUFBSSxLQUFnQztRQUNsRCxXQUFXLEVBQUUsSUFBSTtLQUNsQjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUMvQztRQUNELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRU0sTUFBTSxDQUNYLFNBQW1CLEVBQUUsRUFDckIsRUFBRSxXQUFXLEdBQUcsSUFBSSxLQUFnQztRQUNsRCxXQUFXLEVBQUUsSUFBSTtLQUNsQjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7U0FDekQ7UUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7QUFqUUQ7OztHQUdHO0FBQ3VCLGdCQUFNLEdBQVcsRUFBRSxDQUFDO0FBZ1FoRCxFQUFFO0FBQ0YsaURBQWlEO0FBQ2pELDhDQUE4QztBQUM5QyxvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLGtCQUFrQjtBQUNsQiw4QkFBOEI7QUFDOUIsT0FBTztBQUNQLHFDQUFxQztBQUNyQyxFQUFFO0FBQ0YsdUJBQXVCO0FBQ3ZCLHVCQUF1QjtBQUN2Qix3Q0FBd0M7QUFDeEMsNEJBQTRCO0FBQzVCLE9BQU87QUFDUCw0QkFBNEI7QUFDNUIsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLDhCQUE4QjtBQUM5QixPQUFPO0FBQ1AsNkJBQTZCO0FBQzdCLEVBQUU7QUFDRixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLHNCQUFzQjtBQUN0QixnQ0FBZ0M7QUFDaEMsT0FBTztBQUNQLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0Ysb0JBQW9CO0FBQ3BCLHVCQUF1QjtBQUN2QixzQkFBc0I7QUFDdEIsaUNBQWlDO0FBQ2pDLE9BQU87QUFDUCwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsc0JBQXNCO0FBQ3RCLDBDQUEwQztBQUMxQyxPQUFPO0FBQ1AsMkJBQTJCO0FBQzNCLEVBQUU7QUFDRiwrQ0FBK0M7QUFDL0Msa0NBQWtDO0FBQ2xDLDJFQUEyRTtBQUMzRSwwREFBMEQ7QUFDMUQsYUFBYTtBQUNiLDBDQUEwQztBQUMxQyxXQUFXO0FBQ1gsb0JBQW9CO0FBQ3BCLFFBQVE7QUFDUixtQkFBbUI7QUFDbkIsTUFBTTtBQUNOLEVBQUU7QUFDRixnREFBZ0Q7QUFDaEQsc0JBQXNCO0FBQ3RCLGlEQUFpRDtBQUNqRCxNQUFNO0FBQ04sRUFBRTtBQUNGLGdDQUFnQztBQUNoQyxnQ0FBZ0M7QUFDaEMsa0NBQWtDO0FBQ2xDLGdEQUFnRDtBQUNoRCxpQ0FBaUM7QUFDakMsaUVBQWlFO0FBQ2pFLG1CQUFtQjtBQUNuQix1Q0FBdUM7QUFDdkMsWUFBWTtBQUNaLFVBQVU7QUFDVixRQUFRO0FBQ1IsZ0NBQWdDO0FBQ2hDLG1FQUFtRTtBQUNuRSxlQUFlO0FBQ2Ysc0NBQXNDO0FBQ3RDLFFBQVE7QUFDUixFQUFFO0FBQ0YsOEJBQThCO0FBQzlCLE1BQU07QUFDTixJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUZpZWxkTWFuYWdlcixcbiAgSUZpZWxkU3RvcmVkTWV0YWRhdGEsXG4gIFBST1BFUlRZX01FVEFEQVRBX0tFWSxcbn0gZnJvbSAnLi9maWVsZHMvYmFzZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gJy4vZGF0YS1jb2xsZWN0aW9uJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsRmllbGRzID0gUmVhZG9ubHk8TWFwPHN0cmluZywgSUZpZWxkU3RvcmVkTWV0YWRhdGE8YW55Pj4+O1xuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGRhdGEgbW9kZWwuXG4gKlxuICogRWFjaCBjbGFzcyBtdXN0IGhhdmUgYSBzdGF0aWMgX19uYW1lXG4gKiBwcmltYXJ5IGZpZWxkIGlzIGdpdmVuIHdpdGggaWQgZmllbGQuXG4gKlxuICogU29tZSBtZXRob2RzIGFyZSBwcm92aWRlZCB0byBiZSB1c2VkIHdpdGggYSBjb2xsZWN0aW9uLCBtb3N0bHkgZm9yIENSVUQgb3BlcmF0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhTW9kZWwge1xuICAvKipcbiAgICogZGF0YSBtb2RlbCBuYW1lXG4gICAqIHRoaXMgbmVlZCB0byBiZSBnaXZlbiBiZWNhdXNlIGNsYXNzIG5hbWUgaXMgbm90IGZ1bGx5IGF2YWlsYWJsZSBiZWNhdXNlIG9mIG1pbmlmaWNhdGlvbi5cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgX19uYW1lOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogUHJpbWFyeSBmaWVsZDsgcmVhZG9ubHk7IG11c3QgYmUgY3JlYXRlZCBhbmQgYXV0byBpbmNyZW1lbnRlZCBvbiBkYiBzaWRlLlxuICAgKi9cbiAgLy8gQHByaW1hcnlGaWVsZCh7XG4gIC8vICAgZGVzY3JpcHRpb246ICdJRCcsXG4gIC8vICAgaGVscDogJ0lkZW50aWZpYW50IHByaW1haXJlJyxcbiAgLy8gfSlcbiAgcHVibGljIGlkITogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9GOiBEYXRhTW9kZWxGaWVsZHM7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yIGZvciBkYXRhIG1vZGVsIGluc3RhbmNlLlxuICAgKiBBIG1hdGNoaW5nIGNvbGxlY3Rpb24gY2FuIGJlIHByb3ZpZGVkLlxuICAgKiBfX19maWVsZHMgcmVhZG9ubHkgcHJvcGVydHkgaXMgYWxzbyBwb3B1bGF0ZWQgZnJvbSBSZWZsZWN0ZWQgbWV0YWRhdGFcbiAgICpcbiAgICogQHBhcmFtIF9jb2xsIGNvbGxlY3Rpb24gdXNlZCBmb3IgQ1JVRCwgZXRjLi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBfY29sbD86IENvbGxlY3Rpb248YW55Pikge1xuICAgIGNvbnN0IG1kOiBNYXA8c3RyaW5nLCBJRmllbGRTdG9yZWRNZXRhZGF0YTxhbnk+PiB8IHVuZGVmaW5lZCA9XG4gICAgICBSZWZsZWN0LmdldE1ldGFkYXRhKFBST1BFUlRZX01FVEFEQVRBX0tFWSwgdGhpcyk7XG4gICAgLy8gaXN0YW5idWwgaWdub3JlIGlmXG4gICAgaWYgKCFtZCkge1xuICAgICAgLy8gVGhpcyBzaG91bGQgbmV2ZXIgb2NjdXIgYXMgYWxsIGRhdGFtb2RlbCBoYXZlIGF0IGxlYXN0IGlkIGZpZWxkXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdObyBwcm9wZXJ0eSBtZXRhZGF0YSBmb3VuZCBmb3IgdGhpcyBvYmplY3Q7IGlzIHRoZXJlIGEgcHJvcGVydHkgaW4gY3VycmVudCBjb2xsZWN0aW9uID8nXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBHZXQgYWxsIGZpZWxkcyBmcm9tIGN1cnJlbnQgY2xhc3MgYW5kIGl0cyBwYXJlbnRzXG4gICAgY29uc3QgZmllbGRzID0gbmV3IE1hcDxzdHJpbmcsIElGaWVsZFN0b3JlZE1ldGFkYXRhPGFueT4+KCk7XG4gICAgbGV0IHBhcmVudCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKTtcbiAgICB3aGlsZSAocGFyZW50LmNvbnN0cnVjdG9yLm5hbWUgIT09ICdPYmplY3QnKSB7XG4gICAgICBmb3IgKGNvbnN0IGYgb2YgbWQua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGYuc3BsaXQoJ19fJylbMV07XG4gICAgICAgIGlmIChmaWVsZHMuaGFzKGZpZWxkTmFtZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZi5pbmRleE9mKHBhcmVudC5jb25zdHJ1Y3Rvci5fX25hbWUgKyAnX18nKSA9PT0gMCkge1xuICAgICAgICAgIGZpZWxkcy5zZXQoZmllbGROYW1lLCBtZC5nZXQoZikhKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcGFyZW50ID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudCk7XG4gICAgfVxuICAgIHRoaXMuX0YgPSBPYmplY3QuZnJlZXplKGZpZWxkcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IF9jb2xsZWN0aW9uKCk6IENvbGxlY3Rpb248YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGwgYXMgQ29sbGVjdGlvbjxhbnk+O1xuICB9XG5cbiAgcHVibGljIHNldCBfY29sbGVjdGlvbihjb2xsOiBDb2xsZWN0aW9uPGFueT4pIHtcbiAgICB0aGlzLl9jb2xsID0gY29sbDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgSGFzaE1hcCBvZiBmaWVsZHMgbWV0YWRhdGEgKHR5cGUsIG5hbWUsIG1hbmFnZXIsIGV0Yy4uLilcbiAgICovXG4gIHB1YmxpYyBnZXQgRigpOiBEYXRhTW9kZWxGaWVsZHMge1xuICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICAgIGlmICghdGhpcy5fRikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRhdGEgbW9kZWwsIGZpZWxkcyBtZXRhZGF0YSBpcyBtaXNzaW5nJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9GO1xuICB9XG5cbiAgLy8gUmV0dXJuIGZpZWxkIG5hbWVzIGl0ZXJhdG9yXG4gIHB1YmxpYyBnZXQgRk4oKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5GLmtleXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBtb2RlbCBkYXRhIGZyb20ganNvbi5cbiAgICogSWYgcGFydGlhbCBpcyB0cnVlLCBvbmx5IGZpZWxkcyB3aXRoIG1hdGNoaW5nIGRhdGEga2V5cyB3aWxsIGJlIGxvYWRlZFxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIGZyb21Kc29uKFxuICAgIGRhdGE6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSxcbiAgICB7IHBhcnRpYWwsIGNoZWNrIH06IHsgcGFydGlhbD86IGJvb2xlYW47IGNoZWNrPzogYm9vbGVhbiB9ID0ge1xuICAgICAgcGFydGlhbDogZmFsc2UsXG4gICAgICBjaGVjazogZmFsc2UsXG4gICAgfVxuICApOiBudWxsIHwgVmFsaWRhdGlvbkVycm9ycyB7XG4gICAgY29uc3QgZXJyb3JzOiB7IFtpbmRleDogc3RyaW5nXTogbnVsbCB8IFZhbGlkYXRpb25FcnJvcnMgfSA9IHt9O1xuICAgIGxldCBoYXZlRXJyb3IgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy5GTikge1xuICAgICAgaWYgKCFwYXJ0aWFsIHx8IChwYXJ0aWFsICYmIE9iamVjdC5rZXlzKGRhdGEpLmluZGV4T2YoZikgIT09IC0xKSkge1xuICAgICAgICBjb25zdCBmZXJyID0gdGhpcy5zZXRGVihmLCB0aGlzLkZNKGYpLmZyb21Kc29uKGRhdGFbZl0pLCBjaGVjayk7XG4gICAgICAgIGlmIChmZXJyICE9PSBudWxsKSB7XG4gICAgICAgICAgZXJyb3JzW2ZdID0gZmVycjtcbiAgICAgICAgICBoYXZlRXJyb3IgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBoYXZlRXJyb3IgPyBlcnJvcnMgOiBudWxsO1xuICB9XG5cbiAgcHVibGljIHRvSnNvbihmaWVsZHM/OiBzdHJpbmcgfCBzdHJpbmdbXSk6IGFueSB7XG4gICAgaWYgKGZpZWxkcyAmJiAhQXJyYXkuaXNBcnJheShmaWVsZHMpKSB7XG4gICAgICBmaWVsZHMgPSBbZmllbGRzXTtcbiAgICB9XG4gICAgY29uc3Qgb3V0OiB7IFtpbmRleDogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgICBjb25zdCBmbCA9IHRoaXMuRjtcbiAgICBmb3IgKGNvbnN0IGYgb2YgdGhpcy5GTikge1xuICAgICAgY29uc3QgbWdyID0gdGhpcy5GTShmKTtcbiAgICAgIGlmICghZmllbGRzIHx8IGZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKG1nci5yZWFkb25seSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG91dFtmXSA9IGZsLmdldChmKSEubWFuYWdlci50b0pzb24odGhpcy5GVihmKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZmllbGRzLmluZGV4T2YoZikgIT09IC0xKSB7XG4gICAgICAgICAgb3V0W2ZdID0gZmwuZ2V0KGYpIS5tYW5hZ2VyLnRvSnNvbih0aGlzLkZWKGYpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9XG5cbiAgcHVibGljIGFjdGlvbjxULCBSVCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfT4oXG4gICAgbWV0aG9kOiAnUE9TVCcgfCAnUEFUQ0gnIHwgJ0dFVCcgfCAnREVMRVRFJyB8ICdQVVQnLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB7XG4gICAgICBib2R5ID0gdW5kZWZpbmVkLFxuICAgICAgdXBkYXRlID0gZmFsc2UsXG4gICAgICB1cGRhdGVQYXJ0aWFsID0gdHJ1ZSxcbiAgICAgIHVwZGF0ZUNoZWNrID0gZmFsc2UsXG4gICAgICAvLyB1cGRhdGVSYWlzZSA9IGZhbHNlLFxuICAgICAgcGFyYW1zID0ge30sXG4gICAgICBoZWFkZXJzID0ge30sXG4gICAgfToge1xuICAgICAgYm9keT86IHsgW19pbmRleDogc3RyaW5nXTogYW55IH07XG4gICAgICB1cGRhdGU/OiBib29sZWFuO1xuICAgICAgdXBkYXRlUGFydGlhbD86IGJvb2xlYW47XG4gICAgICB1cGRhdGVDaGVjaz86IGJvb2xlYW47XG4gICAgICAvLyB1cGRhdGVSYWlzZT86IGJvb2xlYW47XG4gICAgICBwYXJhbXM/OiB7IFtfaW5kZXg6IHN0cmluZ106IHN0cmluZyB9O1xuICAgICAgaGVhZGVycz86IHsgW19pbmRleDogc3RyaW5nXTogc3RyaW5nIH07XG4gICAgfSA9IHt9XG4gICk6IE9ic2VydmFibGU8UlQ+IHtcbiAgICBpZiAodGhpcy5fY29sbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ01pc3NpbmcgY29sbGVjdGlvbicpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxcbiAgICAgIC5hY3Rpb248UlQ+KHRoaXMsIG1ldGhvZCwgbmFtZSwge1xuICAgICAgICBib2R5LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIGhlYWRlcnMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgaWYgKHVwZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5mcm9tSnNvbihyZXN1bHQsIHtcbiAgICAgICAgICAgICAgcGFydGlhbDogdXBkYXRlUGFydGlhbCxcbiAgICAgICAgICAgICAgY2hlY2s6IHVwZGF0ZUNoZWNrLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gbW9kZWwsIHJldHVybnMgdGhlIG1hbmFnZXIgZm9yIGEgZmllbGQuXG4gIHB1YmxpYyBGTTxGVD4oZmllbGQ6IHN0cmluZyk6IEJhc2VGaWVsZE1hbmFnZXI8RlQ+IHtcbiAgICBpZiAodGhpcy5GLmhhcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiB0aGlzLkYuZ2V0KGZpZWxkKSEubWFuYWdlcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYCR7ZmllbGR9IG5vdCBmb3VuZCBpbiAke09iamVjdC5rZXlzKHRoaXMuRikuam9pbignLCcpfSBtb2RlbCAke3RoaXN9YFxuICAgICk7XG4gIH1cblxuICAvLyBSZXR1cm4gZmllbGQgdmFsdWUsIHdpdGhvdXQgdHlwaW5nXG4gIHB1YmxpYyBGVjxGVD4oZmllbGQ6IHN0cmluZyk6IEZUIHtcbiAgICByZXR1cm4gKHRoaXMgYXMgYW55KVtmaWVsZF0gYXMgRlQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGZpZWxkIHZhbHVlLiBJZiBjaGVjayBpcyB0cnVlLCBvbmx5IHNldCB2YWx1ZSBpZiBhbGwgdmFsaWRhdG9ycyBwYXNzLlxuICAgKiBTa2lwIHNldHRpbmcgZmllbGQgdmFsdWUgaWYgbWFuYWdlciBjb21wdXRlZCBmbGFnIGlzIHRydWUuXG4gICAqXG4gICAqIFRoZSB2YWxpZGF0aW9uIHJlc3VsdCBpcyByZXR1cm5lZC5cbiAgICpcbiAgICogQHBhcmFtIGZpZWxkIGZpZWxkIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlIGZpZWxkIHZhbHVlZFxuICAgKiBAcGFyYW0gY2hlY2sgZGVmYXVsdCBmYWxzZVxuICAgKiBAcmV0dXJuIG51bGwgb3IgVmFsaWRhdGlvbkVycm9yXG4gICAqL1xuICBwdWJsaWMgc2V0RlY8RlQ+KFxuICAgIGZpZWxkOiBzdHJpbmcsXG4gICAgdmFsdWU6IEZULFxuICAgIGNoZWNrOiBib29sZWFuID0gZmFsc2VcbiAgKTogbnVsbCB8IFZhbGlkYXRpb25FcnJvcnMge1xuICAgIGlmICh0aGlzLkZNKGZpZWxkKS5jb21wdXRlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmIChjaGVjaykge1xuICAgICAgY29uc3QgZmMgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUpO1xuXG4gICAgICBmb3IgKGNvbnN0IHYgb2YgdGhpcy5GTShmaWVsZCkudmFsaWRhdG9ycykge1xuICAgICAgICBjb25zdCB2YWwgPSB2KGZjKTtcbiAgICAgICAgaWYgKHZhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IodmFsKTtcbiAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgICh0aGlzIGFzIGFueSlbZmllbGRdID0gdmFsdWU7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBDYWxsZWQgb24gbW9kZWwgd2l0aCBhIGxpc3Qgb2YgZmllbGRzLCByZXR1cm5zIGEgRm9ybUdyb3VwIHdpdGhcbiAgLy8gdGhlc2UgZmllbGRzLCBvciBvbmx5IHRoZSBmb3JtIGNvbnRyb2wgZm9yIG9uZSBmaWVsZC5cbiAgcHVibGljIEZDKCk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmcpOiBGb3JtQ29udHJvbDtcbiAgcHVibGljIEZDKGZpZWxkOiBzdHJpbmdbXSk6IEZvcm1Hcm91cDtcbiAgcHVibGljIEZDKGZpZWxkPzogc3RyaW5nIHwgc3RyaW5nW10pOiBGb3JtQ29udHJvbCB8IEZvcm1Hcm91cCB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZpZWxkID0gQXJyYXkuZnJvbSh0aGlzLkZOKS5maWx0ZXIoKG4pID0+ICF0aGlzLkZNKG4pLnJlYWRvbmx5KTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGQpKSB7XG4gICAgICBjb25zdCBmZzogeyBbaW5kZXg6IHN0cmluZ106IEZvcm1Db250cm9sIH0gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgZiBvZiBmaWVsZCkge1xuICAgICAgICBmZ1tmXSA9IHRoaXMuRkMoZikgYXMgRm9ybUNvbnRyb2w7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IEZvcm1Hcm91cChmZyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLkZNKGZpZWxkKS5mb3JtQ29udHJvbCh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKFxuICAgIHsgdXBkYXRlTW9kZWwgPSB0cnVlIH06IHsgdXBkYXRlTW9kZWw/OiBib29sZWFuIH0gPSB7XG4gICAgICB1cGRhdGVNb2RlbDogdHJ1ZSxcbiAgICB9XG4gICk6IE9ic2VydmFibGU8dGhpcz4ge1xuICAgIGlmICh0aGlzLl9jb2xsKSB7XG4gICAgICByZXR1cm4gdGhpcy5fY29sbC5zYXZlKHRoaXMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShcbiAgICBmaWVsZHM6IHN0cmluZ1tdID0gW10sXG4gICAgeyB1cGRhdGVNb2RlbCA9IHRydWUgfTogeyB1cGRhdGVNb2RlbD86IGJvb2xlYW4gfSA9IHtcbiAgICAgIHVwZGF0ZU1vZGVsOiB0cnVlLFxuICAgIH1cbiAgKTogT2JzZXJ2YWJsZTx0aGlzPiB7XG4gICAgaWYgKHRoaXMuX2NvbGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb2xsLnVwZGF0ZSh0aGlzLCBmaWVsZHMsIHsgdXBkYXRlTW9kZWwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignTWlzc2luZyBjb2xsZWN0aW9uJykpO1xuICB9XG59XG5cbi8vXG4vLyBleHBvcnQgY2xhc3MgVHJlZURhdGFNb2RlbCBleHRlbmRzIERhdGFNb2RlbCB7XG4vLyAgIHN0YXRpYyBvdmVycmlkZSBfX25hbWUgPSAnVHJlZURhdGFNb2RlbCc7XG4vLyAgIEBkZXRhaWxzRmllbGQoe1xuLy8gICAgIG1vZGVsOiB0aGlzLFxuLy8gICAgIG1hbnk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdQYXJlbnRzJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudHNfZGV0YWlscz86IHRoaXNbXTtcbi8vXG4vLyAgIEBmb3JlaWduS2V5RmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ1N0cnVjdHVyZSBwYXJlbnRlJyxcbi8vICAgICByZWxhdGVkOiAnU3RydWN0dXJlJyxcbi8vICAgfSlcbi8vICAgcHVibGljIHBhcmVudD86IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ0lEIFRyZWUnLFxuLy8gICB9KVxuLy8gICBwdWJsaWMgdHJlZV9pZCE6IG51bWJlcjtcbi8vXG4vLyAgIEBpbnRlZ2VyRmllbGQoe1xuLy8gICAgIHJlcXVpcmVkOiBmYWxzZSxcbi8vICAgICByZWFkb25seTogdHJ1ZSxcbi8vICAgICBkZXNjcmlwdGlvbjogJ01QVFQgbGVmdCcsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZnQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdNUFRUIHJpZ2h0Jyxcbi8vICAgfSlcbi8vICAgcHVibGljIHJnaHQhOiBudW1iZXI7XG4vL1xuLy8gICBAaW50ZWdlckZpZWxkKHtcbi8vICAgICByZXF1aXJlZDogZmFsc2UsXG4vLyAgICAgcmVhZG9ubHk6IHRydWUsXG4vLyAgICAgZGVzY3JpcHRpb246ICdOaXZlYXUgaGnDqXJhcmNoaXF1ZScsXG4vLyAgIH0pXG4vLyAgIHB1YmxpYyBsZXZlbCE6IG51bWJlcjtcbi8vXG4vLyAgIHB1YmxpYyBnZXQgcGFyZW50X2RldGFpbHMoKTogdGhpcyB8IG51bGwge1xuLy8gICAgIGlmICh0aGlzLnBhcmVudHNfZGV0YWlscykge1xuLy8gICAgICAgY29uc3Qgb3V0ID0gdGhpcy5wYXJlbnRzX2RldGFpbHNbdGhpcy5wYXJlbnRzX2RldGFpbHMubGVuZ3RoIC0gMV07XG4vLyAgICAgICBvdXQucGFyZW50c19kZXRhaWxzID0gdGhpcy5wYXJlbnRzX2RldGFpbHMuc2xpY2UoXG4vLyAgICAgICAgIDAsXG4vLyAgICAgICAgIHRoaXMucGFyZW50c19kZXRhaWxzLmxlbmd0aCAtIDFcbi8vICAgICAgICk7XG4vLyAgICAgICByZXR1cm4gb3V0O1xuLy8gICAgIH1cbi8vICAgICByZXR1cm4gbnVsbDtcbi8vICAgfVxuLy9cbi8vICAgcHVibGljIHNldCBwYXJlbnRfZGV0YWlscyhkOiB0aGlzIHwgbnVsbCkge1xuLy8gICAgIGNvbnNvbGUubG9nKGQpO1xuLy8gICAgIHRoaXMucGFyZW50c19kZXRhaWxzID0gZD8ucGFyZW50c19kZXRhaWxzO1xuLy8gICB9XG4vL1xuLy8gICBwdWJsaWMgX2Rpc3BsYXkoKTogc3RyaW5nIHtcbi8vICAgICBjb25zdCBvdXQ6IHN0cmluZ1tdID0gW107XG4vLyAgICAgaWYgKHRoaXMucGFyZW50c19kZXRhaWxzKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IHAgb2YgdGhpcy5wYXJlbnRzX2RldGFpbHMpIHtcbi8vICAgICAgICAgaWYgKChwIGFzIGFueSkuY29kZSkge1xuLy8gICAgICAgICAgIG91dC5wdXNoKGBbJHsocCBhcyBhbnkpLmNvZGV9XSAkeyhwIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgICBvdXQucHVzaCgocCBhcyBhbnkpLm5hbWUpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIGlmICgodGhpcyBhcyBhbnkpLmNvZGUpIHtcbi8vICAgICAgIG91dC5wdXNoKGBbJHsodGhpcyBhcyBhbnkpLmNvZGV9XSAkeyh0aGlzIGFzIGFueSkubmFtZX1gKTtcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgb3V0LnB1c2goKHRoaXMgYXMgYW55KS5uYW1lKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiBvdXQuam9pbignIDogJyk7XG4vLyAgIH1cbi8vIH1cbiJdfQ==