@sumaris-net/ngx-components 0.28.2 → 1.0.0

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 (42) hide show
  1. package/bundles/sumaris-net.ngx-components.umd.js +369 -337
  2. package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
  3. package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
  4. package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
  5. package/doc/changelog.md +4 -0
  6. package/esm2015/src/app/core/account/account.js +4 -5
  7. package/esm2015/src/app/core/auth/form/form-auth.js +3 -4
  8. package/esm2015/src/app/core/form/form.class.js +24 -12
  9. package/esm2015/src/app/core/form/list.form.js +2 -3
  10. package/esm2015/src/app/core/form/properties.form.js +2 -3
  11. package/esm2015/src/app/core/graphql/graphql.service.js +5 -8
  12. package/esm2015/src/app/core/services/account.service.js +177 -188
  13. package/esm2015/src/app/core/services/base-entity-service.class.js +9 -7
  14. package/esm2015/src/app/core/services/base-graphql-service.class.js +7 -2
  15. package/esm2015/src/app/core/services/config.service.js +9 -54
  16. package/esm2015/src/app/core/services/model/account.model.js +1 -1
  17. package/esm2015/src/app/core/services/model/settings.model.js +29 -2
  18. package/esm2015/src/app/core/services/network.service.js +5 -7
  19. package/esm2015/src/app/core/services/storage/entities-storage.service.js +3 -6
  20. package/esm2015/src/app/core/settings/settings.page.js +3 -4
  21. package/esm2015/src/app/shared/services/startable-service.class.js +13 -2
  22. package/esm2015/src/app/shared/services/translate-context.service.js +38 -13
  23. package/fesm2015/sumaris-net.ngx-components.js +308 -296
  24. package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
  25. package/package.json +1 -1
  26. package/src/app/core/account/account.d.ts +0 -1
  27. package/src/app/core/auth/form/form-auth.d.ts +0 -1
  28. package/src/app/core/form/form.class.d.ts +10 -2
  29. package/src/app/core/form/list.form.d.ts +0 -1
  30. package/src/app/core/form/properties.form.d.ts +0 -1
  31. package/src/app/core/graphql/graphql.service.d.ts +0 -1
  32. package/src/app/core/services/account.service.d.ts +8 -21
  33. package/src/app/core/services/base-entity-service.class.d.ts +1 -0
  34. package/src/app/core/services/base-graphql-service.class.d.ts +3 -2
  35. package/src/app/core/services/config.service.d.ts +2 -9
  36. package/src/app/core/services/model/settings.model.d.ts +2 -0
  37. package/src/app/core/services/network.service.d.ts +2 -2
  38. package/src/app/core/services/storage/entities-storage.service.d.ts +0 -1
  39. package/src/app/core/settings/settings.page.d.ts +0 -1
  40. package/src/app/shared/services/startable-service.class.d.ts +3 -1
  41. package/src/app/shared/services/translate-context.service.d.ts +10 -0
  42. package/sumaris-net.ngx-components.metadata.json +1 -1
@@ -3,7 +3,7 @@ import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
3
3
  import { gql } from '@apollo/client/core';
4
4
  import { Configuration } from './model/config.model';
5
5
  import { Storage } from '@ionic/storage';
6
- import { BehaviorSubject, Subject, Subscription } from 'rxjs';
6
+ import { BehaviorSubject, Subject } from 'rxjs';
7
7
  import { ErrorCodes } from './errors';
8
8
  import { GraphqlService } from '../graphql/graphql.service';
9
9
  import { isNotEmptyArray, isNotNil } from '../../shared/functions';
@@ -94,73 +94,28 @@ export class ConfigService extends BaseGraphqlService {
94
94
  this.toastController = toastController;
95
95
  this.translate = translate;
96
96
  this.environment = environment;
97
- this._started = false;
98
- this._subscription = new Subscription();
99
97
  this.$data = new BehaviorSubject(null);
100
98
  this._debug = !environment.production;
101
99
  if (this._debug)
102
100
  console.debug('[config] Creating service');
103
101
  this._optionDefs = Object.values(Object.assign(Object.assign({}, CORE_CONFIG_OPTIONS), defaultOptionsMap));
104
- // Restart if graphql service restart
105
- this.graphql.onStart.subscribe(() => this.restart());
106
- // Start
107
- if (this.graphql.started) {
108
- this.start();
109
- }
110
- }
111
- get started() {
112
- return this._started;
113
102
  }
114
103
  get config() {
115
104
  // If first call: start loading
116
- if (!this._started)
105
+ if (!this.started)
117
106
  this.start();
118
107
  return this.$data.pipe(filter(isNotNil));
119
108
  }
120
- start() {
121
- if (this._startPromise)
122
- return this._startPromise;
123
- if (this._started)
124
- return;
125
- console.info('[config] Starting configuration...');
126
- this._startPromise = this.graphql.ready()
127
- .then(() => this.loadOrRestoreLocally())
128
- .then((data) => {
129
- this._started = true;
130
- this._startPromise = undefined;
109
+ ngOnStart() {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ console.info('[config] Starting configuration...');
112
+ const data = yield this.loadOrRestoreLocally();
131
113
  this.$data.next(data);
114
+ // Restart if graphql service restart
115
+ this.registerSubscription(this.graphql.onStart.subscribe(() => this.restart()));
132
116
  return data;
133
- })
134
- .catch((err) => {
135
- console.error(err && err.message || err, err);
136
- this._started = false;
137
- this._startPromise = undefined;
138
- return null;
139
- });
140
- return this._startPromise;
141
- }
142
- stop() {
143
- return __awaiter(this, void 0, void 0, function* () {
144
- this._subscription.unsubscribe();
145
- this._subscription = new Subscription();
146
- this._started = false;
147
- this._startPromise = undefined;
148
117
  });
149
118
  }
150
- restart() {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- if (this.started)
153
- yield this.stop();
154
- return this.start();
155
- });
156
- }
157
- ready() {
158
- if (this._started)
159
- return Promise.resolve(this.$data.value);
160
- if (this._startPromise)
161
- return this._startPromise;
162
- return this.start();
163
- }
164
119
  loadDefault(opts) {
165
120
  return __awaiter(this, void 0, void 0, function* () {
166
121
  const now = Date.now();
@@ -419,4 +374,4 @@ ConfigService.ctorParameters = () => [
419
374
  { type: undefined, decorators: [{ type: Inject, args: [ENVIRONMENT,] }] },
420
375
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [APP_CONFIG_OPTIONS,] }] }
421
376
  ];
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRTFELE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDakUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUMsUUFBUSxFQUFFLGVBQWUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBbUIsTUFBTSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRXRDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx5Q0FB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QkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Z3FsfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi9tb2RlbC9jb25maWcubW9kZWwnO1xuaW1wb3J0IHtTdG9yYWdlfSBmcm9tICdAaW9uaWMvc3RvcmFnZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RXJyb3JDb2Rlc30gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtHcmFwaHFsU2VydmljZX0gZnJvbSAnLi4vZ3JhcGhxbC9ncmFwaHFsLnNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtRmllbGREZWZpbml0aW9uLCBGb3JtRmllbGREZWZpbml0aW9uTWFwfSBmcm9tICcuLi8uLi9zaGFyZWQvZm9ybS9maWVsZC5tb2RlbCc7XG5pbXBvcnQge2lzTm90RW1wdHlBcnJheSwgaXNOb3ROaWx9IGZyb20gJy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuaW1wb3J0IHtGaWxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL2ZpbGUvZmlsZS5zZXJ2aWNlJztcbmltcG9ydCB7TmV0d29ya1NlcnZpY2V9IGZyb20gJy4vbmV0d29yay5zZXJ2aWNlJztcbmltcG9ydCB7Q09SRV9DT05GSUdfT1BUSU9OU30gZnJvbSAnLi9jb25maWcvY29yZS5jb25maWcnO1xuaW1wb3J0IHtQbGF0Zm9ybSwgVG9hc3RDb250cm9sbGVyfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1Nob3dUb2FzdE9wdGlvbnMsIFRvYXN0c30gZnJvbSAnLi4vLi4vc2hhcmVkL3RvYXN0cyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RW50aXR5U2VydmljZUxvYWRPcHRpb25zLCBJRW50aXR5U2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7RU5WSVJPTk1FTlR9IGZyb20gJy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudC5jbGFzcyc7XG5pbXBvcnQge0Jhc2VHcmFwaHFsU2VydmljZX0gZnJvbSAnLi9iYXNlLWdyYXBocWwtc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0lTdGFydGFibGVTZXJ2aWNlfSBmcm9tICcuLi8uLi9zaGFyZWQvc2VydmljZXMvc3RhcnRhYmxlLXNlcnZpY2UuY2xhc3MnO1xuXG5cbmNvbnN0IENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkgPSAnY29uZmlndXJhdGlvbic7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogR3JhcGhRTCBxdWVyaWVzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuZXhwb3J0IGNvbnN0IEZyYWdtZW50cyA9IHtcbiAgY29uZmlnOiBncWxgXG4gICAgZnJhZ21lbnQgQ29uZmlnRnJhZ21lbnQgb24gQ29uZmlndXJhdGlvblZPIHtcbiAgICAgIGlkXG4gICAgICBsYWJlbFxuICAgICAgbmFtZVxuICAgICAgZGVzY3JpcHRpb25cbiAgICAgIGNvbW1lbnRzXG4gICAgICBwcm9wZXJ0aWVzXG4gICAgICBzbWFsbExvZ29cbiAgICAgIGxhcmdlTG9nb1xuICAgICAgYmFja2dyb3VuZEltYWdlc1xuICAgICAgcGFydG5lcnMge1xuICAgICAgICBpZFxuICAgICAgICBsYWJlbFxuICAgICAgICBuYW1lXG4gICAgICAgIGxvZ29cbiAgICAgICAgc2l0ZVVybFxuICAgICAgICBfX3R5cGVuYW1lXG4gICAgICB9XG4gICAgICB1cGRhdGVEYXRlXG4gICAgICBjcmVhdGlvbkRhdGVcbiAgICAgIHN0YXR1c0lkXG4gICAgICBfX3R5cGVuYW1lXG4gICAgfVxuICBgXG59O1xuXG5jb25zdCBMb2FkUXVlcnk6IGFueSA9IGdxbGBcbnF1ZXJ5IENvbmZpZ3VyYXRpb257XG4gIGRhdGE6IGNvbmZpZ3VyYXRpb257XG4gICAgLi4uQ29uZmlnRnJhZ21lbnRcbiAgfVxufVxuICAke0ZyYWdtZW50cy5jb25maWd9XG5gO1xuXG4vLyBTYXZlIChjcmVhdGUgb3IgdXBkYXRlKSBhY2NvdW50IG11dGF0aW9uXG5jb25zdCBTYXZlTXV0YXRpb246IGFueSA9IGdxbGBcbiAgbXV0YXRpb24gU2F2ZUNvbmZpZ3VyYXRpb24oJGRhdGE6IENvbmZpZ3VyYXRpb25WT0lucHV0KXtcbiAgICBkYXRhOiBzYXZlQ29uZmlndXJhdGlvbihjb25maWc6ICRkYXRhKXtcbiAgICAgICAuLi5Db25maWdGcmFnbWVudFxuICAgIH1cbiAgfVxuICAke0ZyYWdtZW50cy5jb25maWd9XG5gO1xuXG5jb25zdCBDbGVhckNhY2hlOiBhbnkgPSBncWxgXG4gIHF1ZXJ5IENsZWFyQ2FjaGUoJG5hbWU6IFN0cmluZykge1xuICAgIGNsZWFyQ2FjaGUobmFtZTogJG5hbWUpXG4gIH1cbmA7XG5cbmNvbnN0IENhY2hlU3RhdGlzdGljczogYW55ID0gZ3FsYFxuICBxdWVyeSBDYWNoZVN0YXRpc3RpY3Mge1xuICAgIGNhY2hlU3RhdGlzdGljc1xuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQVBQX0NPTkZJR19PUFRJT05TID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZERlZmluaXRpb25NYXA+KCdkZWZhdWx0T3B0aW9ucycpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290JyxcbiAgZGVwczogW0FQUF9DT05GSUdfT1BUSU9OU11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZVxuICBleHRlbmRzIEJhc2VHcmFwaHFsU2VydmljZTxDb25maWd1cmF0aW9uLCBhbnksIG51bWJlcj5cbiAgaW1wbGVtZW50cyBJRW50aXR5U2VydmljZTxDb25maWd1cmF0aW9uPiwgSVN0YXJ0YWJsZVNlcnZpY2U8Q29uZmlndXJhdGlvbj4ge1xuXG4gIHByaXZhdGUgX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc3RhcnRQcm9taXNlOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+O1xuICBwcml2YXRlIF9zdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgX29wdGlvbkRlZnM6IEZvcm1GaWVsZERlZmluaXRpb25bXTtcblxuICBwcml2YXRlICRkYXRhID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmF0aW9uPihudWxsKTtcblxuICBnZXQgc3RhcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRlZDtcbiAgfVxuXG4gIGdldCBjb25maWcoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uPiB7XG4gICAgLy8gSWYgZmlyc3QgY2FsbDogc3RhcnQgbG9hZGluZ1xuICAgIGlmICghdGhpcy5fc3RhcnRlZCkgdGhpcy5zdGFydCgpO1xuICAgIHJldHVybiB0aGlzLiRkYXRhLnBpcGUoZmlsdGVyKGlzTm90TmlsKSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIHByb3RlY3RlZCBncmFwaHFsOiBHcmFwaHFsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZSxcbiAgICBwcm90ZWN0ZWQgbmV0d29yazogTmV0d29ya1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGZpbGU6IEZpbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB0b2FzdENvbnRyb2xsZXI6IFRvYXN0Q29udHJvbGxlcixcbiAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIEBJbmplY3QoRU5WSVJPTk1FTlQpIHByb3RlY3RlZCBlbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9DT05GSUdfT1BUSU9OUykgZGVmYXVsdE9wdGlvbnNNYXA6IEZvcm1GaWVsZERlZmluaXRpb25NYXBcbiAgKSB7XG4gICAgc3VwZXIoZ3JhcGhxbCwgZW52aXJvbm1lbnQpO1xuXG4gICAgdGhpcy5fZGVidWcgPSAhZW52aXJvbm1lbnQucHJvZHVjdGlvbjtcbiAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIENyZWF0aW5nIHNlcnZpY2UnKTtcblxuICAgIHRoaXMuX29wdGlvbkRlZnMgPSBPYmplY3QudmFsdWVzKHsuLi5DT1JFX0NPTkZJR19PUFRJT05TLCAuLi5kZWZhdWx0T3B0aW9uc01hcH0pO1xuXG4gICAgLy8gUmVzdGFydCBpZiBncmFwaHFsIHNlcnZpY2UgcmVzdGFydFxuICAgIHRoaXMuZ3JhcGhxbC5vblN0YXJ0LnN1YnNjcmliZSgoKSA9PiB0aGlzLnJlc3RhcnQoKSk7XG5cbiAgICAvLyBTdGFydFxuICAgIGlmICh0aGlzLmdyYXBocWwuc3RhcnRlZCkge1xuICAgICAgdGhpcy5zdGFydCgpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXJ0KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGlmICh0aGlzLl9zdGFydFByb21pc2UpIHJldHVybiB0aGlzLl9zdGFydFByb21pc2U7XG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIHJldHVybjtcblxuICAgIGNvbnNvbGUuaW5mbygnW2NvbmZpZ10gU3RhcnRpbmcgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgdGhpcy5fc3RhcnRQcm9taXNlID0gdGhpcy5ncmFwaHFsLnJlYWR5KClcbiAgICAgIC50aGVuKCgpID0+IHRoaXMubG9hZE9yUmVzdG9yZUxvY2FsbHkoKSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIHRoaXMuX3N0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9zdGFydFByb21pc2UgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuJGRhdGEubmV4dChkYXRhKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyLCBlcnIpO1xuICAgICAgICB0aGlzLl9zdGFydGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXJ0UHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRQcm9taXNlO1xuXG4gIH1cblxuICBhc3luYyBzdG9wKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLl9zdGFydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fc3RhcnRQcm9taXNlID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXN5bmMgcmVzdGFydCgpOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBpZiAodGhpcy5zdGFydGVkKSBhd2FpdCB0aGlzLnN0b3AoKTtcbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgcmVhZHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgaWYgKHRoaXMuX3N0YXJ0ZWQpIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy4kZGF0YS52YWx1ZSk7XG4gICAgaWYgKHRoaXMuX3N0YXJ0UHJvbWlzZSkgcmV0dXJuIHRoaXMuX3N0YXJ0UHJvbWlzZTtcbiAgICByZXR1cm4gdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZERlZmF1bHQoXG4gICAgb3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gTG9hZGluZyBQb2QgY29uZmlndXJhdGlvbi4uLicpO1xuXG4gICAgY29uc3QgcXVlcnkgPSBvcHRzICYmIG9wdHMucXVlcnkgfHwgTG9hZFF1ZXJ5O1xuICAgIGNvbnN0IHZhcmlhYmxlcyA9IG9wdHMgJiYgb3B0cy52YXJpYWJsZXMgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGRhdGE6IGFueSB9Pih7XG4gICAgICBxdWVyeSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogb3B0cyAmJiBvcHRzLmZldGNoUG9saWN5IHx8IHVuZGVmaW5lZC8qZGVmYXVsdCovXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gcmVzICYmIHJlcy5kYXRhID8gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHJlcy5kYXRhKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zb2xlLmluZm8oYFtjb25maWddIFBvZCBjb25maWd1cmF0aW9uIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXM6YCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBsb2FkKFxuICAgIGlkOiBudW1iZXIsXG4gICAgb3B0cz86IEVudGl0eVNlcnZpY2VMb2FkT3B0aW9ucyAmIHsgcXVlcnk/OiBhbnkgfSk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGNvbnNvbGUud2FybignW2NvbmZpZ10gSW52YWxpZCBjYWxsIG9mIGNvbmZpZ1NlcnZpY2UubG9hZChpZCkuIFBsZWFzZSB1c2UgbG9hZERlZmF1bHQoKSBpbnN0ZWFkJyk7XG5cbiAgICByZXR1cm4gdGhpcy5sb2FkRGVmYXVsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYSBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWdcbiAgICovXG4gIGFzeW5jIHNhdmUoY29uZmlnOiBDb25maWd1cmF0aW9uKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBTYXZpbmcgUG9kIGNvbmZpZ3VyYXRpb24uLi4nLCBjb25maWcpO1xuXG4gICAgY29uc3QganNvbiA9IGNvbmZpZy5hc09iamVjdCgpO1xuXG4gICAgLy8gRXhlY3V0ZSBtdXRhdGlvblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5tdXRhdGU8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgbXV0YXRpb246IFNhdmVNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBkYXRhOiBqc29uXG4gICAgICB9LFxuICAgICAgZXJyb3I6IHtcbiAgICAgICAgY29kZTogRXJyb3JDb2Rlcy5TQVZFX0NPTkZJR19FUlJPUixcbiAgICAgICAgbWVzc2FnZTogJ0VSUk9SLlNBVkVfQ09ORklHX0VSUk9SJ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc2F2ZWRDb25maWcgPSByZXMgJiYgcmVzLmRhdGE7XG5cbiAgICAvLyBDb3B5IHVwZGF0ZSBwcm9wZXJ0aWVzXG4gICAgY29uZmlnLmlkID0gc2F2ZWRDb25maWcgJiYgc2F2ZWRDb25maWcuaWQgfHwgY29uZmlnLmlkO1xuICAgIGNvbmZpZy51cGRhdGVEYXRlID0gc2F2ZWRDb25maWcgJiYgc2F2ZWRDb25maWcudXBkYXRlRGF0ZSB8fCBjb25maWcudXBkYXRlRGF0ZTtcblxuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFBvZCBjb25maWd1cmF0aW9uIHNhdmVkIScpO1xuXG4gICAgY29uc3QgcmVsb2FkZWRDb25maWcgPSBhd2FpdCB0aGlzLmxvYWREZWZhdWx0KHtmZXRjaFBvbGljeTogJ25ldHdvcmstb25seSd9KTtcblxuICAgIC8vIElmIHRoaXMgaXMgdGhlIGRlZmF1bHQgY29uZmlnXG4gICAgY29uc3QgZGVmYXVsdENvbmZpZyA9IHRoaXMuJGRhdGEudmFsdWU7XG4gICAgaWYgKGlzTm90TmlsKGRlZmF1bHRDb25maWcpICYmIHJlbG9hZGVkQ29uZmlnLmxhYmVsID09PSBkZWZhdWx0Q29uZmlnLmxhYmVsKSB7XG5cbiAgICAgIC8vIEVtaXQgdXBkYXRlIGV2ZW50IHdoZW4gaXMgZGVmYXVsdCBjb25maWdcbiAgICAgIHRoaXMuJGRhdGEubmV4dChyZWxvYWRlZENvbmZpZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlbG9hZGVkQ29uZmlnO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FjaGVTdGF0aXN0aWNzKCk6IFByb21pc2U8c3RyaW5nPiB7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIExvYWRpbmcgc2VydmVyIGNhY2hlIHN0YXRpc3RpY3MuLi4nKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuZ3JhcGhxbC5xdWVyeTx7IGNhY2hlU3RhdGlzdGljczogYW55IH0+KHtcbiAgICAgIHF1ZXJ5OiBDYWNoZVN0YXRpc3RpY3MsXG4gICAgICB2YXJpYWJsZXM6IG51bGwsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9DT05GSUdfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5MT0FEX0NPTkZJR19FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknXG4gICAgfSk7XG5cbiAgICBjb25zdCBkYXRhID0gcmVzICYmIHJlcy5jYWNoZVN0YXRpc3RpY3MgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gU2VydmVyIGNhY2hlIHN0YXRpc3RpY3MgbG9hZGVkIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFyQ2FjaGUob3B0cz86IHtjYWNoZU5hbWU/OiBzdHJpbmd9KSB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBDbGVhciBzZXJ2ZXIgY2FjaGUuLi4nKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlcyA9IHtuYW1lOiBvcHRzICYmIG9wdHMuY2FjaGVOYW1lfSB8fCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBjbGVhckNhY2hlOiBib29sZWFuIH0+KHtcbiAgICAgIHF1ZXJ5OiBDbGVhckNhY2hlLFxuICAgICAgdmFyaWFibGVzLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcyAmJiByZXMuY2xlYXJDYWNoZSB8fCB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBDbGVhciBzZXJ2ZXIgY2FjaGUgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZGVsZXRlKGRhdGE6IENvbmZpZ3VyYXRpb24sIG9wdGlvbnM/OiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkIHlldCEnKTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoaWQ6IG51bWJlciwgb3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbiB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiBuZXcgU3ViamVjdCgpOyAvLyBUT0RPXG4gIH1cblxuICBnZXQgb3B0aW9uRGVmcygpOiBGb3JtRmllbGREZWZpbml0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25EZWZzO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIG1ldGhvZCAtLSAqL1xuXG4gIHByaXZhdGUgYXN5bmMgbG9hZE9yUmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE7XG4gICAgbGV0IHdhc0p1c3RMb2FkZWQgPSBmYWxzZTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IHRoaXMubG9hZERlZmF1bHQoeyBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScgfSk7XG4gICAgICB3YXNKdXN0TG9hZGVkID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIExvZywgdGhlbiBjb250aW51ZVxuICAgICAgY29uc29sZS5lcnJvcihlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyLCBlcnIpO1xuICAgIH1cblxuICAgIC8vIFNhdmUgaXQgaW50byBsb2NhbCBzdG9yYWdlLCBmb3IgbmV4dCBzdGFydHVwXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5zdG9yZUxvY2FsbHkoZGF0YSksIDEwMDApO1xuICAgIH1cblxuICAgIC8vIElmIG5vdCBsb2FkZWQgcmVtb3RlbHk6IHRyeSB0byByZXN0b3JlIGl0XG4gICAgZWxzZSB7XG4gICAgICBkYXRhID0gYXdhaXQgdGhpcy5yZXN0b3JlTG9jYWxseSgpO1xuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBsYWJlbCBoYXMgYmVlbiBmaWxsZWRcbiAgICBkYXRhLmxhYmVsID0gZGF0YS5sYWJlbCB8fCB0aGlzLmVudmlyb25tZW50Lm5hbWU7XG5cbiAgICAvLyBSZXNldCBuYW1lIChpZiBzYW1lIGFzIGxhYmVsKVxuICAgIGRhdGEubmFtZSA9IChkYXRhLm5hbWUgIT09IGRhdGEubGFiZWwpID8gZGF0YS5uYW1lIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ2hlY2sgY29tcGF0aWJsZSB2ZXJzaW9uXG4gICAgaWYgKHdhc0p1c3RMb2FkZWQpIHtcbiAgICAgIC8vIFRPRE9cbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzdG9yZUxvY2FsbHkoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgbGV0IGRhdGE6IENvbmZpZ3VyYXRpb247XG5cbiAgICAvLyBUcnkgdG8gbG9hZCBmcm9tIGxvY2FsIHN0b3JhZ2VcbiAgICBjb25zdCB2YWx1ZTogYW55ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIGZyb20gbG9jYWwgc3RvcmFnZS4uLicpO1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KEpTT04ucGFyc2UodmFsdWUpKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIHBhcnNlIGNvbmZpZyBmb3VuZCBpbiBsb2NhbCBzdG9yYWdlOiAke2VyciAmJiBlcnIubWVzc2FnZSB8fCBlcnJ9YCwgZXJyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHZhbHVlKTtcbiAgICAgIH1cblxuICAgICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gUmVzdG9yaW5nIGNvbmZpZ3VyYXRpb24gW09LXScpO1xuICAgIH1cblxuICAgIC8vIE9yIGxvYWQgZGVmYXVsdCB2YWx1ZSwgZnJvbSB0aGUgZW52aXJvbm1lbnRcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIE5vIGNvbmZpZ3VyYXRpb24gZm91bmQuIFVzaW5nIGVudmlyb25tZW50Li4uJyk7XG4gICAgICBkYXRhID0gQ29uZmlndXJhdGlvbi5mcm9tT2JqZWN0KHRoaXMuZW52aXJvbm1lbnQgYXMgYW55KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc3RvcmVMb2NhbGx5KGRhdGE/OiBDb25maWd1cmF0aW9uKSB7XG4gICAgLy8gTm90aGluZyB0byBzdG9yZSA6IHJlc2V0XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBhd2FpdCB0aGlzLnN0b3JhZ2UucmVtb3ZlKENPTkZJR1VSQVRJT05fU1RPUkFHRV9LRVkpO1xuICAgIH1cbiAgICAvLyBDb25maWcgZXhpc3RzOiBzdG9yZSBpdCBpbiB0aGUgbG9jYWwgc3RvcmFnZVxuICAgIGVsc2Uge1xuICAgICAgbGV0IG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG5cbiAgICAgIC8vIENvbnZlcnQgaW1hZ2VzLCBmb3Igb2ZmbGluZSB1c2FnZVxuICAgICAgaWYgKHRoaXMubmV0d29yay5vbmxpbmUgJiYgdGhpcy5wbGF0Zm9ybS5pcygnbW9iaWxlJykpIHtcbiAgICAgICAgY29uc3Qgam9icyA9IFtdO1xuXG4gICAgICAgIC8vIERvd25sb2FkIGxvZ29zXG4gICAgICAgIGlmIChkYXRhLmxhcmdlTG9nbyAmJiBkYXRhLmxhcmdlTG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGRhdGEubGFyZ2VMb2dvKVxuICAgICAgICAgICAgLnRoZW4oaW1nVXJsID0+IGRhdGEubGFyZ2VMb2dvID0gaW1nVXJsKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc21hbGxMb2dvICYmIGRhdGEuc21hbGxMb2dvLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICAgIGpvYnMucHVzaCh0aGlzLmZpbGUuZ2V0SW1hZ2UoZGF0YS5zbWFsbExvZ28pXG4gICAgICAgICAgICAudGhlbihpbWdVcmwgPT4gZGF0YS5zbWFsbExvZ28gPSBpbWdVcmwpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzXG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzKSkge1xuICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBtYXhXaWR0aDogdGhpcy5wbGF0Zm9ybS53aWR0aCgpLFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiB0aGlzLnBsYXRmb3JtLmhlaWdodCgpXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIENvbnZlcnQgdGhlIEZJUlNUIGltYWdlIGZvdW5kXG4gICAgICAgICAgLy8gV0FSTjogaXQncyBOT1QgbmVjZXNzYXJ5IHRvIGNvbnZlcnQgQUwgaW1hZ2UsIGJ1dCBvbmx5IG9uZSwgZm9yIHNtYWxsZXIgbWVtb3J5IGZvb3RwcmludFxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzLmZpbmRJbmRleCgoaW1nKSA9PiBpbWcgJiYgaW1nLnN0YXJ0c1dpdGgoJ2h0dHAnKSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzID0gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzLnNsaWNlKCk7IC8vIENvcHlcbiAgICAgICAgICAgIGpvYnMucHVzaChcbiAgICAgICAgICAgICAgdGhpcy5maWxlLmdldEltYWdlKGRhdGEuYmFja2dyb3VuZEltYWdlc1tpbmRleF0sIG9wdGlvbnMpXG4gICAgICAgICAgICAgICAgLnRoZW4oZGF0YVVybCA9PiBkYXRhLmJhY2tncm91bmRJbWFnZXNbaW5kZXhdID0gZGF0YVVybCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gUGFydG5lcnNcbiAgICAgICAgaWYgKGlzTm90RW1wdHlBcnJheShkYXRhLnBhcnRuZXJzKSkge1xuICAgICAgICAgIGRhdGEucGFydG5lcnMuZm9yRWFjaCgoZGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRlcCAmJiBkZXAubG9nbyAmJiBkZXAubG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShkZXAubG9nbywge1xuICAgICAgICAgICAgICAgIG1heEhlaWdodDogNTAvKnNlZSBob21lIHBhZ2UgQ1NTICovXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC50aGVuKGltZyA9PiBkZXAubG9nbyA9IGltZylcbiAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgZGVwLmxvZ287XG4gICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChqb2JzLmxlbmd0aCkge1xuICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gRmV0Y2hpbmcgJHtqb2JzLmxlbmd0aH0gaW1hZ2VzLi4uYCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGpvYnMpO1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBGZXRjaGluZyAke2pvYnMubGVuZ3RofSBpbWFnZXMgW09LXSBpbiAke0RhdGUubm93KCkgLSBub3d9bXNgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgW2NvbmZpZ10gRmFpbGVkIHRvIGZldGNoIGltYWdlKHMpOiAke2VyciAmJiBlcnIubWVzc2FnZSB8fCBlcnJ9YCwgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2F2aW5nIGNvbmZpZyB0byBzdG9yYWdlXG4gICAgICB7XG4gICAgICAgIG5vdyA9IHRoaXMuX2RlYnVnICYmIERhdGUubm93KCk7XG4gICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gU2F2aW5nIGNvbmZpZyBpbnRvIGxvY2FsIHN0b3JhZ2UuLi4nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZLCBkYXRhLmFzT2JqZWN0KCkpO1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIFNhdmluZyBjb25maWcgaW50byBsb2NhbCBzdG9yYWdlIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIHNob3dUb2FzdChvcHRzOiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCBvcHRzKTtcbiAgfVxufVxuIl19
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvY29uZmlnLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBYyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDMUQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFDLGVBQWUsRUFBRSxRQUFRLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUUsZUFBZSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFtQixNQUFNLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FB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QUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztvQkFDL0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxJQUFJLENBQUMsTUFBTTt3QkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztpQkFDM0c7YUFDRjtRQUNILENBQUM7S0FBQTtJQUVlLFNBQVMsQ0FBQyxJQUFzQjs7WUFDOUMsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxDQUFDO0tBQUE7Ozs7WUE3VEYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2dCQUNsQixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzthQUMzQjs7O1lBL0VPLFFBQVE7WUFOUixjQUFjO1lBSGQsT0FBTztZQU9QLGNBQWM7WUFEZCxXQUFXO1lBR0QsZUFBZTtZQUV6QixnQkFBZ0I7NENBbUduQixNQUFNLFNBQUMsV0FBVzs0Q0FDbEIsUUFBUSxZQUFJLE1BQU0sU0FBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Z3FsfSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi9tb2RlbC9jb25maWcubW9kZWwnO1xuaW1wb3J0IHtTdG9yYWdlfSBmcm9tICdAaW9uaWMvc3RvcmFnZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Vycm9yQ29kZXN9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7R3JhcGhxbFNlcnZpY2V9IGZyb20gJy4uL2dyYXBocWwvZ3JhcGhxbC5zZXJ2aWNlJztcbmltcG9ydCB7Rm9ybUZpZWxkRGVmaW5pdGlvbiwgRm9ybUZpZWxkRGVmaW5pdGlvbk1hcH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0vZmllbGQubW9kZWwnO1xuaW1wb3J0IHtpc05vdEVtcHR5QXJyYXksIGlzTm90TmlsfSBmcm9tICcuLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7RmlsZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9maWxlL2ZpbGUuc2VydmljZSc7XG5pbXBvcnQge05ldHdvcmtTZXJ2aWNlfSBmcm9tICcuL25ldHdvcmsuc2VydmljZSc7XG5pbXBvcnQge0NPUkVfQ09ORklHX09QVElPTlN9IGZyb20gJy4vY29uZmlnL2NvcmUuY29uZmlnJztcbmltcG9ydCB7UGxhdGZvcm0sIFRvYXN0Q29udHJvbGxlcn0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHtTaG93VG9hc3RPcHRpb25zLCBUb2FzdHN9IGZyb20gJy4uLy4uL3NoYXJlZC90b2FzdHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0VudGl0eVNlcnZpY2VMb2FkT3B0aW9ucywgSUVudGl0eVNlcnZpY2V9IGZyb20gJy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9lbnRpdHktc2VydmljZS5jbGFzcyc7XG5pbXBvcnQge0VOVklST05NRU5UfSBmcm9tICcuLi8uLi8uLi9lbnZpcm9ubWVudHMvZW52aXJvbm1lbnQuY2xhc3MnO1xuaW1wb3J0IHtCYXNlR3JhcGhxbFNlcnZpY2V9IGZyb20gJy4vYmFzZS1ncmFwaHFsLXNlcnZpY2UuY2xhc3MnO1xuaW1wb3J0IHtJU3RhcnRhYmxlU2VydmljZX0gZnJvbSAnLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3N0YXJ0YWJsZS1zZXJ2aWNlLmNsYXNzJztcblxuXG5jb25zdCBDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZID0gJ2NvbmZpZ3VyYXRpb24nO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEdyYXBoUUwgcXVlcmllc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbmV4cG9ydCBjb25zdCBGcmFnbWVudHMgPSB7XG4gIGNvbmZpZzogZ3FsYFxuICAgIGZyYWdtZW50IENvbmZpZ0ZyYWdtZW50IG9uIENvbmZpZ3VyYXRpb25WTyB7XG4gICAgICBpZFxuICAgICAgbGFiZWxcbiAgICAgIG5hbWVcbiAgICAgIGRlc2NyaXB0aW9uXG4gICAgICBjb21tZW50c1xuICAgICAgcHJvcGVydGllc1xuICAgICAgc21hbGxMb2dvXG4gICAgICBsYXJnZUxvZ29cbiAgICAgIGJhY2tncm91bmRJbWFnZXNcbiAgICAgIHBhcnRuZXJzIHtcbiAgICAgICAgaWRcbiAgICAgICAgbGFiZWxcbiAgICAgICAgbmFtZVxuICAgICAgICBsb2dvXG4gICAgICAgIHNpdGVVcmxcbiAgICAgICAgX190eXBlbmFtZVxuICAgICAgfVxuICAgICAgdXBkYXRlRGF0ZVxuICAgICAgY3JlYXRpb25EYXRlXG4gICAgICBzdGF0dXNJZFxuICAgICAgX190eXBlbmFtZVxuICAgIH1cbiAgYFxufTtcblxuY29uc3QgTG9hZFF1ZXJ5OiBhbnkgPSBncWxgXG5xdWVyeSBDb25maWd1cmF0aW9ue1xuICBkYXRhOiBjb25maWd1cmF0aW9ue1xuICAgIC4uLkNvbmZpZ0ZyYWdtZW50XG4gIH1cbn1cbiAgJHtGcmFnbWVudHMuY29uZmlnfVxuYDtcblxuLy8gU2F2ZSAoY3JlYXRlIG9yIHVwZGF0ZSkgYWNjb3VudCBtdXRhdGlvblxuY29uc3QgU2F2ZU11dGF0aW9uOiBhbnkgPSBncWxgXG4gIG11dGF0aW9uIFNhdmVDb25maWd1cmF0aW9uKCRkYXRhOiBDb25maWd1cmF0aW9uVk9JbnB1dCl7XG4gICAgZGF0YTogc2F2ZUNvbmZpZ3VyYXRpb24oY29uZmlnOiAkZGF0YSl7XG4gICAgICAgLi4uQ29uZmlnRnJhZ21lbnRcbiAgICB9XG4gIH1cbiAgJHtGcmFnbWVudHMuY29uZmlnfVxuYDtcblxuY29uc3QgQ2xlYXJDYWNoZTogYW55ID0gZ3FsYFxuICBxdWVyeSBDbGVhckNhY2hlKCRuYW1lOiBTdHJpbmcpIHtcbiAgICBjbGVhckNhY2hlKG5hbWU6ICRuYW1lKVxuICB9XG5gO1xuXG5jb25zdCBDYWNoZVN0YXRpc3RpY3M6IGFueSA9IGdxbGBcbiAgcXVlcnkgQ2FjaGVTdGF0aXN0aWNzIHtcbiAgICBjYWNoZVN0YXRpc3RpY3NcbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFQUF9DT05GSUdfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtRmllbGREZWZpbml0aW9uTWFwPignZGVmYXVsdE9wdGlvbnMnKTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGRlcHM6IFtBUFBfQ09ORklHX09QVElPTlNdXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpZ1NlcnZpY2VcbiAgZXh0ZW5kcyBCYXNlR3JhcGhxbFNlcnZpY2U8Q29uZmlndXJhdGlvbiwgYW55LCBudW1iZXIsIENvbmZpZ3VyYXRpb24+XG4gIGltcGxlbWVudHMgSUVudGl0eVNlcnZpY2U8Q29uZmlndXJhdGlvbj4sIElTdGFydGFibGVTZXJ2aWNlPENvbmZpZ3VyYXRpb24+IHtcblxuICBwcml2YXRlIF9vcHRpb25EZWZzOiBGb3JtRmllbGREZWZpbml0aW9uW107XG4gIHByaXZhdGUgJGRhdGEgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb24+KG51bGwpO1xuXG4gIGdldCBjb25maWcoKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uPiB7XG4gICAgLy8gSWYgZmlyc3QgY2FsbDogc3RhcnQgbG9hZGluZ1xuICAgIGlmICghdGhpcy5zdGFydGVkKSB0aGlzLnN0YXJ0KCk7XG4gICAgcmV0dXJuIHRoaXMuJGRhdGEucGlwZShmaWx0ZXIoaXNOb3ROaWwpKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgcHJvdGVjdGVkIGdyYXBocWw6IEdyYXBocWxTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBzdG9yYWdlOiBTdG9yYWdlLFxuICAgIHByb3RlY3RlZCBuZXR3b3JrOiBOZXR3b3JrU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZmlsZTogRmlsZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgQEluamVjdChFTlZJUk9OTUVOVCkgcHJvdGVjdGVkIGVudmlyb25tZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX0NPTkZJR19PUFRJT05TKSBkZWZhdWx0T3B0aW9uc01hcDogRm9ybUZpZWxkRGVmaW5pdGlvbk1hcFxuICApIHtcbiAgICBzdXBlcihncmFwaHFsLCBlbnZpcm9ubWVudCk7XG5cbiAgICB0aGlzLl9kZWJ1ZyA9ICFlbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ3JlYXRpbmcgc2VydmljZScpO1xuXG4gICAgdGhpcy5fb3B0aW9uRGVmcyA9IE9iamVjdC52YWx1ZXMoey4uLkNPUkVfQ09ORklHX09QVElPTlMsIC4uLmRlZmF1bHRPcHRpb25zTWFwfSk7XG5cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBuZ09uU3RhcnQoKTogUHJvbWlzZTxDb25maWd1cmF0aW9uPiB7XG4gICAgY29uc29sZS5pbmZvKCdbY29uZmlnXSBTdGFydGluZyBjb25maWd1cmF0aW9uLi4uJyk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sb2FkT3JSZXN0b3JlTG9jYWxseSgpO1xuICAgIHRoaXMuJGRhdGEubmV4dChkYXRhKTtcblxuICAgIC8vIFJlc3RhcnQgaWYgZ3JhcGhxbCBzZXJ2aWNlIHJlc3RhcnRcbiAgICB0aGlzLnJlZ2lzdGVyU3Vic2NyaXB0aW9uKFxuICAgICAgdGhpcy5ncmFwaHFsLm9uU3RhcnQuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzdGFydCgpKVxuICAgICk7XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGFzeW5jIGxvYWREZWZhdWx0KFxuICAgIG9wdHM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMpOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIExvYWRpbmcgUG9kIGNvbmZpZ3VyYXRpb24uLi4nKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gb3B0cyAmJiBvcHRzLnF1ZXJ5IHx8IExvYWRRdWVyeTtcbiAgICBjb25zdCB2YXJpYWJsZXMgPSBvcHRzICYmIG9wdHMudmFyaWFibGVzIHx8IHVuZGVmaW5lZDtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBkYXRhOiBhbnkgfT4oe1xuICAgICAgcXVlcnksXG4gICAgICB2YXJpYWJsZXMsXG4gICAgICBlcnJvcjoge2NvZGU6IEVycm9yQ29kZXMuTE9BRF9DT05GSUdfRVJST1IsIG1lc3NhZ2U6ICdFUlJPUi5MT0FEX0NPTkZJR19FUlJPUid9LFxuICAgICAgZmV0Y2hQb2xpY3k6IG9wdHMgJiYgb3B0cy5mZXRjaFBvbGljeSB8fCB1bmRlZmluZWQvKmRlZmF1bHQqL1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcyAmJiByZXMuZGF0YSA/IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdChyZXMuZGF0YSkgOiB1bmRlZmluZWQ7XG4gICAgY29uc29sZS5pbmZvKGBbY29uZmlnXSBQb2QgY29uZmlndXJhdGlvbiBsb2FkZWQgaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zOmAsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgYXN5bmMgbG9hZChcbiAgICBpZDogbnVtYmVyLFxuICAgIG9wdHM/OiBFbnRpdHlTZXJ2aWNlTG9hZE9wdGlvbnMgJiB7IHF1ZXJ5PzogYW55IH0pOiBQcm9taXNlPENvbmZpZ3VyYXRpb24+IHtcbiAgICBjb25zb2xlLndhcm4oJ1tjb25maWddIEludmFsaWQgY2FsbCBvZiBjb25maWdTZXJ2aWNlLmxvYWQoaWQpLiBQbGVhc2UgdXNlIGxvYWREZWZhdWx0KCkgaW5zdGVhZCcpO1xuXG4gICAgcmV0dXJuIHRoaXMubG9hZERlZmF1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGEgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnXG4gICAqL1xuICBhc3luYyBzYXZlKGNvbmZpZzogQ29uZmlndXJhdGlvbik6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuXG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gU2F2aW5nIFBvZCBjb25maWd1cmF0aW9uLi4uJywgY29uZmlnKTtcblxuICAgIGNvbnN0IGpzb24gPSBjb25maWcuYXNPYmplY3QoKTtcblxuICAgIC8vIEV4ZWN1dGUgbXV0YXRpb25cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwubXV0YXRlPHsgZGF0YTogYW55IH0+KHtcbiAgICAgIG11dGF0aW9uOiBTYXZlTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgZGF0YToganNvblxuICAgICAgfSxcbiAgICAgIGVycm9yOiB7XG4gICAgICAgIGNvZGU6IEVycm9yQ29kZXMuU0FWRV9DT05GSUdfRVJST1IsXG4gICAgICAgIG1lc3NhZ2U6ICdFUlJPUi5TQVZFX0NPTkZJR19FUlJPUidcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHNhdmVkQ29uZmlnID0gcmVzICYmIHJlcy5kYXRhO1xuXG4gICAgLy8gQ29weSB1cGRhdGUgcHJvcGVydGllc1xuICAgIGNvbmZpZy5pZCA9IHNhdmVkQ29uZmlnICYmIHNhdmVkQ29uZmlnLmlkIHx8IGNvbmZpZy5pZDtcbiAgICBjb25maWcudXBkYXRlRGF0ZSA9IHNhdmVkQ29uZmlnICYmIHNhdmVkQ29uZmlnLnVwZGF0ZURhdGUgfHwgY29uZmlnLnVwZGF0ZURhdGU7XG5cbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBQb2QgY29uZmlndXJhdGlvbiBzYXZlZCEnKTtcblxuICAgIGNvbnN0IHJlbG9hZGVkQ29uZmlnID0gYXdhaXQgdGhpcy5sb2FkRGVmYXVsdCh7ZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknfSk7XG5cbiAgICAvLyBJZiB0aGlzIGlzIHRoZSBkZWZhdWx0IGNvbmZpZ1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWcgPSB0aGlzLiRkYXRhLnZhbHVlO1xuICAgIGlmIChpc05vdE5pbChkZWZhdWx0Q29uZmlnKSAmJiByZWxvYWRlZENvbmZpZy5sYWJlbCA9PT0gZGVmYXVsdENvbmZpZy5sYWJlbCkge1xuXG4gICAgICAvLyBFbWl0IHVwZGF0ZSBldmVudCB3aGVuIGlzIGRlZmF1bHQgY29uZmlnXG4gICAgICB0aGlzLiRkYXRhLm5leHQocmVsb2FkZWRDb25maWcpO1xuICAgIH1cblxuICAgIHJldHVybiByZWxvYWRlZENvbmZpZztcbiAgfVxuXG4gIGFzeW5jIGdldENhY2hlU3RhdGlzdGljcygpOiBQcm9taXNlPHN0cmluZz4ge1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBMb2FkaW5nIHNlcnZlciBjYWNoZSBzdGF0aXN0aWNzLi4uJyk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmdyYXBocWwucXVlcnk8eyBjYWNoZVN0YXRpc3RpY3M6IGFueSB9Pih7XG4gICAgICBxdWVyeTogQ2FjaGVTdGF0aXN0aWNzLFxuICAgICAgdmFyaWFibGVzOiBudWxsLFxuICAgICAgZXJyb3I6IHtjb2RlOiBFcnJvckNvZGVzLkxPQURfQ09ORklHX0VSUk9SLCBtZXNzYWdlOiAnRVJST1IuTE9BRF9DT05GSUdfRVJST1InfSxcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5J1xuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YSA9IHJlcyAmJiByZXMuY2FjaGVTdGF0aXN0aWNzIHx8IHVuZGVmaW5lZDtcbiAgICBjb25zb2xlLmluZm8oYFtjb25maWddIFNlcnZlciBjYWNoZSBzdGF0aXN0aWNzIGxvYWRlZCBpbiAke0RhdGUubm93KCkgLSBub3d9bXM6YCwgZGF0YSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBhc3luYyBjbGVhckNhY2hlKG9wdHM/OiB7Y2FjaGVOYW1lPzogc3RyaW5nfSkge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlLi4uJyk7XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSB7bmFtZTogb3B0cyAmJiBvcHRzLmNhY2hlTmFtZX0gfHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5ncmFwaHFsLnF1ZXJ5PHsgY2xlYXJDYWNoZTogYm9vbGVhbiB9Pih7XG4gICAgICBxdWVyeTogQ2xlYXJDYWNoZSxcbiAgICAgIHZhcmlhYmxlcyxcbiAgICAgIGVycm9yOiB7Y29kZTogRXJyb3JDb2Rlcy5MT0FEX0NPTkZJR19FUlJPUiwgbWVzc2FnZTogJ0VSUk9SLkxPQURfQ09ORklHX0VSUk9SJ30sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seSdcbiAgICB9KTtcblxuICAgIGNvbnN0IGRhdGEgPSByZXMgJiYgcmVzLmNsZWFyQ2FjaGUgfHwgdW5kZWZpbmVkO1xuICAgIGNvbnNvbGUuaW5mbyhgW2NvbmZpZ10gQ2xlYXIgc2VydmVyIGNhY2hlIGluICR7RGF0ZS5ub3coKSAtIG5vd31tczpgLCBkYXRhKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGRlbGV0ZShkYXRhOiBDb25maWd1cmF0aW9uLCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxhbnk+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQhJyk7XG4gIH1cblxuICBsaXN0ZW5DaGFuZ2VzKGlkOiBudW1iZXIsIG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gbmV3IFN1YmplY3QoKTsgLy8gVE9ET1xuICB9XG5cbiAgZ2V0IG9wdGlvbkRlZnMoKTogRm9ybUZpZWxkRGVmaW5pdGlvbltdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9uRGVmcztcbiAgfVxuXG4gIC8qIC0tIHByb3RlY3RlZCBtZXRob2QgLS0gKi9cblxuICBwcml2YXRlIGFzeW5jIGxvYWRPclJlc3RvcmVMb2NhbGx5KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGxldCBkYXRhO1xuICAgIGxldCB3YXNKdXN0TG9hZGVkID0gZmFsc2U7XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLmxvYWREZWZhdWx0KHsgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknIH0pO1xuICAgICAgd2FzSnVzdExvYWRlZCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBMb2csIHRoZW4gY29udGludWVcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVyciwgZXJyKTtcbiAgICB9XG5cbiAgICAvLyBTYXZlIGl0IGludG8gbG9jYWwgc3RvcmFnZSwgZm9yIG5leHQgc3RhcnR1cFxuICAgIGlmIChkYXRhKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc3RvcmVMb2NhbGx5KGRhdGEpLCAxMDAwKTtcbiAgICB9XG5cbiAgICAvLyBJZiBub3QgbG9hZGVkIHJlbW90ZWx5OiB0cnkgdG8gcmVzdG9yZSBpdFxuICAgIGVsc2Uge1xuICAgICAgZGF0YSA9IGF3YWl0IHRoaXMucmVzdG9yZUxvY2FsbHkoKTtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgbGFiZWwgaGFzIGJlZW4gZmlsbGVkXG4gICAgZGF0YS5sYWJlbCA9IGRhdGEubGFiZWwgfHwgdGhpcy5lbnZpcm9ubWVudC5uYW1lO1xuXG4gICAgLy8gUmVzZXQgbmFtZSAoaWYgc2FtZSBhcyBsYWJlbClcbiAgICBkYXRhLm5hbWUgPSAoZGF0YS5uYW1lICE9PSBkYXRhLmxhYmVsKSA/IGRhdGEubmFtZSA6IHVuZGVmaW5lZDtcblxuICAgIC8vIENoZWNrIGNvbXBhdGlibGUgdmVyc2lvblxuICAgIGlmICh3YXNKdXN0TG9hZGVkKSB7XG4gICAgICAvLyBUT0RPXG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlc3RvcmVMb2NhbGx5KCk6IFByb21pc2U8Q29uZmlndXJhdGlvbj4ge1xuICAgIGxldCBkYXRhOiBDb25maWd1cmF0aW9uO1xuXG4gICAgLy8gVHJ5IHRvIGxvYWQgZnJvbSBsb2NhbCBzdG9yYWdlXG4gICAgY29uc3QgdmFsdWU6IGFueSA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoQ09ORklHVVJBVElPTl9TVE9SQUdFX0tFWSk7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBSZXN0b3JpbmcgY29uZmlndXJhdGlvbiBmcm9tIGxvY2FsIHN0b3JhZ2UuLi4nKTtcbiAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdChKU09OLnBhcnNlKHZhbHVlKSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBwYXJzZSBjb25maWcgZm91bmQgaW4gbG9jYWwgc3RvcmFnZTogJHtlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFJlc3RvcmluZyBjb25maWd1cmF0aW9uIFtPS10nKTtcbiAgICB9XG5cbiAgICAvLyBPciBsb2FkIGRlZmF1bHQgdmFsdWUsIGZyb20gdGhlIGVudmlyb25tZW50XG4gICAgaWYgKCFkYXRhKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbY29uZmlnXSBObyBjb25maWd1cmF0aW9uIGZvdW5kLiBVc2luZyBlbnZpcm9ubWVudC4uLicpO1xuICAgICAgZGF0YSA9IENvbmZpZ3VyYXRpb24uZnJvbU9iamVjdCh0aGlzLmVudmlyb25tZW50IGFzIGFueSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHN0b3JlTG9jYWxseShkYXRhPzogQ29uZmlndXJhdGlvbikge1xuICAgIC8vIE5vdGhpbmcgdG8gc3RvcmUgOiByZXNldFxuICAgIGlmICghZGF0YSkge1xuICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlLnJlbW92ZShDT05GSUdVUkFUSU9OX1NUT1JBR0VfS0VZKTtcbiAgICB9XG4gICAgLy8gQ29uZmlnIGV4aXN0czogc3RvcmUgaXQgaW4gdGhlIGxvY2FsIHN0b3JhZ2VcbiAgICBlbHNlIHtcbiAgICAgIGxldCBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuXG4gICAgICAvLyBDb252ZXJ0IGltYWdlcywgZm9yIG9mZmxpbmUgdXNhZ2VcbiAgICAgIGlmICh0aGlzLm5ldHdvcmsub25saW5lICYmIHRoaXMucGxhdGZvcm0uaXMoJ21vYmlsZScpKSB7XG4gICAgICAgIGNvbnN0IGpvYnMgPSBbXTtcblxuICAgICAgICAvLyBEb3dubG9hZCBsb2dvc1xuICAgICAgICBpZiAoZGF0YS5sYXJnZUxvZ28gJiYgZGF0YS5sYXJnZUxvZ28uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgam9icy5wdXNoKHRoaXMuZmlsZS5nZXRJbWFnZShkYXRhLmxhcmdlTG9nbylcbiAgICAgICAgICAgIC50aGVuKGltZ1VybCA9PiBkYXRhLmxhcmdlTG9nbyA9IGltZ1VybCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnNtYWxsTG9nbyAmJiBkYXRhLnNtYWxsTG9nby5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgICBqb2JzLnB1c2godGhpcy5maWxlLmdldEltYWdlKGRhdGEuc21hbGxMb2dvKVxuICAgICAgICAgICAgLnRoZW4oaW1nVXJsID0+IGRhdGEuc21hbGxMb2dvID0gaW1nVXJsKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBCYWNrZ3JvdW5kIGltYWdlc1xuICAgICAgICBpZiAoaXNOb3RFbXB0eUFycmF5KGRhdGEuYmFja2dyb3VuZEltYWdlcykpIHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMucGxhdGZvcm0ud2lkdGgoKSxcbiAgICAgICAgICAgIG1heEhlaWdodDogdGhpcy5wbGF0Zm9ybS5oZWlnaHQoKVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBGSVJTVCBpbWFnZSBmb3VuZFxuICAgICAgICAgIC8vIFdBUk46IGl0J3MgTk9UIG5lY2Vzc2FyeSB0byBjb252ZXJ0IEFMIGltYWdlLCBidXQgb25seSBvbmUsIGZvciBzbWFsbGVyIG1lbW9yeSBmb290cHJpbnRcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGRhdGEuYmFja2dyb3VuZEltYWdlcy5maW5kSW5kZXgoKGltZykgPT4gaW1nICYmIGltZy5zdGFydHNXaXRoKCdodHRwJykpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGRhdGEuYmFja2dyb3VuZEltYWdlcyA9IGRhdGEuYmFja2dyb3VuZEltYWdlcy5zbGljZSgpOyAvLyBDb3B5XG4gICAgICAgICAgICBqb2JzLnB1c2goXG4gICAgICAgICAgICAgIHRoaXMuZmlsZS5nZXRJbWFnZShkYXRhLmJhY2tncm91bmRJbWFnZXNbaW5kZXhdLCBvcHRpb25zKVxuICAgICAgICAgICAgICAgIC50aGVuKGRhdGFVcmwgPT4gZGF0YS5iYWNrZ3JvdW5kSW1hZ2VzW2luZGV4XSA9IGRhdGFVcmwpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFBhcnRuZXJzXG4gICAgICAgIGlmIChpc05vdEVtcHR5QXJyYXkoZGF0YS5wYXJ0bmVycykpIHtcbiAgICAgICAgICBkYXRhLnBhcnRuZXJzLmZvckVhY2goKGRlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGlmIChkZXAgJiYgZGVwLmxvZ28gJiYgZGVwLmxvZ28uc3RhcnRzV2l0aCgnaHR0cCcpKSB7XG4gICAgICAgICAgICAgIGpvYnMucHVzaCh0aGlzLmZpbGUuZ2V0SW1hZ2UoZGVwLmxvZ28sIHtcbiAgICAgICAgICAgICAgICBtYXhIZWlnaHQ6IDUwLypzZWUgaG9tZSBwYWdlIENTUyAqL1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAudGhlbihpbWcgPT4gZGVwLmxvZ28gPSBpbWcpXG4gICAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyICYmIGVyci5tZXNzYWdlIHx8IGVycik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGRlcC5sb2dvO1xuICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoam9icy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoYFtjb25maWddIEZldGNoaW5nICR7am9icy5sZW5ndGh9IGltYWdlcy4uLmApO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChqb2JzKTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1ZykgY29uc29sZS5kZWJ1ZyhgW2NvbmZpZ10gRmV0Y2hpbmcgJHtqb2JzLmxlbmd0aH0gaW1hZ2VzIFtPS10gaW4gJHtEYXRlLm5vdygpIC0gbm93fW1zYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFtjb25maWddIEZhaWxlZCB0byBmZXRjaCBpbWFnZShzKTogJHtlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyfWAsIGVycik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFNhdmluZyBjb25maWcgdG8gc3RvcmFnZVxuICAgICAge1xuICAgICAgICBub3cgPSB0aGlzLl9kZWJ1ZyAmJiBEYXRlLm5vdygpO1xuICAgICAgICBpZiAodGhpcy5fZGVidWcpIGNvbnNvbGUuZGVidWcoJ1tjb25maWddIFNhdmluZyBjb25maWcgaW50byBsb2NhbCBzdG9yYWdlLi4uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5zZXQoQ09ORklHVVJBVElPTl9TVE9SQUdFX0tFWSwgZGF0YS5hc09iamVjdCgpKTtcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnKSBjb25zb2xlLmRlYnVnKGBbY29uZmlnXSBTYXZpbmcgY29uZmlnIGludG8gbG9jYWwgc3RvcmFnZSBbT0tdIGluICR7RGF0ZS5ub3coKSAtIG5vd31tc2ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBzaG93VG9hc3Qob3B0czogU2hvd1RvYXN0T3B0aW9ucykge1xuICAgIGF3YWl0IFRvYXN0cy5zaG93KHRoaXMudG9hc3RDb250cm9sbGVyLCB0aGlzLnRyYW5zbGF0ZSwgb3B0cyk7XG4gIH1cbn1cbiJdfQ==
@@ -47,4 +47,4 @@ export function accountToString(data) {
47
47
  ((data.firstName && (data.firstName + ' ') || '') +
48
48
  (data.lastName || '')) || '';
49
49
  }
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFaEQ7O0dBRUc7QUFDSCxXQUFXO0lBRUUsT0FBTyxxQkFBUCxPQUFRLFNBQVEsTUFBZTtJQU0xQztRQUNFLEtBQUssQ0FBQyxTQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFIMUIsYUFBUSxHQUFpQixJQUFJLENBQUM7SUFJOUIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUE0QjtRQUNuQyxNQUFNLE1BQU0sR0FBUSxLQUFLLENBQUMsUUFBUSxpQ0FBSyxJQUFJLEtBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyw0Q0FBNEMsSUFBRSxDQUFDO1FBQzFHLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDN0UsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsTUFBTSxFQUFFO1lBQ2hCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLHNCQUFzQjtTQUNsRDtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBVztRQUNwQixLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxRQUFRO1FBQ04sTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdDLFlBQVksRUFBRSxJQUFJLENBQUMseUNBQXlDO1NBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsb0NBQW9DO1FBQ3pFLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBRUYsQ0FBQTtBQXZDWSxPQUFPO0lBRG5CLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUMsQ0FBQztHQUN4QixPQUFPLENBdUNuQjtTQXZDWSxPQUFPO0FBMENwQixNQUFNLFVBQVUsZUFBZSxDQUFDLElBQWE7SUFDM0MsT0FBTyxJQUFJO1FBQ1QsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMvQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VXNlclNldHRpbmdzfSBmcm9tICcuL3NldHRpbmdzLm1vZGVsJztcbmltcG9ydCB7UGVyc29ufSBmcm9tICcuL3BlcnNvbi5tb2RlbCc7XG5pbXBvcnQge0VudGl0eUFzT2JqZWN0T3B0aW9uc30gZnJvbSAnLi9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlDbGFzc30gZnJvbSAnLi9lbnRpdHkuZGVjb3JhdG9ycyc7XG5cbi8qKlxuICogQSB1c2VyIGFjY291bnRcbiAqL1xuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdBY2NvdW50Vk8nfSlcbmV4cG9ydCBjbGFzcyBBY2NvdW50IGV4dGVuZHMgUGVyc29uPEFjY291bnQ+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBBY2NvdW50O1xuXG4gIHNldHRpbmdzOiBVc2VyU2V0dGluZ3MgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKEFjY291bnQuVFlQRU5BTUUpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgdGFyZ2V0OiBhbnkgPSBzdXBlci5hc09iamVjdCh7Li4ub3B0cywgbWluaWZ5OiBmYWxzZSAvKmRpc2FibGUgUGVyc29uIG1pbmlmeSAodG9vIHJlc3RyaWN0aXZlKSAqL30pO1xuICAgIHRhcmdldC5zZXR0aW5ncyA9IHRoaXMuc2V0dGluZ3MgJiYgdGhpcy5zZXR0aW5ncy5hc09iamVjdChvcHRzKSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKG9wdHM/Lm1pbmlmeSkge1xuICAgICAgZGVsZXRlIHRhcmdldC5tYWluUHJvZmlsZTsgLy8gTm90IGtub3duIG9uIHNlcnZlclxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZnJvbU9iamVjdChzb3VyY2U6IGFueSkge1xuICAgIHN1cGVyLmZyb21PYmplY3Qoc291cmNlKTtcbiAgICB0aGlzLnNldHRpbmdzID0gc291cmNlLnNldHRpbmdzICYmIFVzZXJTZXR0aW5ncy5mcm9tT2JqZWN0KHNvdXJjZS5zZXR0aW5ncyk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBpbnRvIGEgUGVyc29uLiBUaGlzIHdpbGwgZmlsbCBfX3R5cGVuYW1lIHdpdGggYSByaWdodCB2YWx1ZSwgZm9yIGRhdGEgY2FjaGVcbiAgICovXG4gIGFzUGVyc29uKCk6IFBlcnNvbiB7XG4gICAgY29uc3QgcGVyc29uID0gUGVyc29uLmZyb21PYmplY3QodGhpcy5hc09iamVjdCh7XG4gICAgICBrZWVwVHlwZW5hbWU6IHRydWUgLy8gVGhpcyBpcyBuZWVkIGZvciB0aGUgZGVwYXJ0bWVudCBvYmplY3RcbiAgICB9KSk7XG4gICAgcGVyc29uLl9fdHlwZW5hbWUgPSBQZXJzb24uVFlQRU5BTUU7IC8vIERvIG5vdCBrZWVwIEFjY291bnRWTyBhcyB0eXBlbmFtZVxuICAgIHJldHVybiBwZXJzb247XG4gIH1cblxuICBnZXQgZGlzcGxheU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYWNjb3VudFRvU3RyaW5nKHRoaXMpO1xuICB9XG5cbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYWNjb3VudFRvU3RyaW5nKGRhdGE6IEFjY291bnQpOiBzdHJpbmcge1xuICByZXR1cm4gZGF0YSAmJlxuICAgICgoZGF0YS5maXJzdE5hbWUgJiYgKGRhdGEuZmlyc3ROYW1lICsgJyAnKSB8fCAnJykgK1xuICAgICAgKGRhdGEubGFzdE5hbWUgfHwgJycpKSB8fCAnJztcbn1cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29yZS9zZXJ2aWNlcy9tb2RlbC9hY2NvdW50Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFnQixZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRWhEOztHQUVHO0FBQ0gsV0FBVztJQUVFLE9BQU8scUJBQVAsT0FBUSxTQUFRLE1BQWU7SUFNMUM7UUFDRSxLQUFLLENBQUMsU0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSDFCLGFBQVEsR0FBaUIsSUFBSSxDQUFDO0lBSTlCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBNEI7UUFDbkMsTUFBTSxNQUFNLEdBQVEsS0FBSyxDQUFDLFFBQVEsaUNBQUssSUFBSSxLQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsNENBQTRDLElBQUUsQ0FBQztRQUMxRyxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxDQUFDO1FBQzdFLElBQUksSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLE1BQU0sRUFBRTtZQUNoQixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxzQkFBc0I7U0FDbEQ7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVc7UUFDcEIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsUUFBUTtRQUNOLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3QyxZQUFZLEVBQUUsSUFBSSxDQUFDLHlDQUF5QztTQUM3RCxDQUFDLENBQUMsQ0FBQztRQUNKLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLG9DQUFvQztRQUN6RSxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUVGLENBQUE7QUF2Q1ksT0FBTztJQURuQixXQUFXLENBQUMsRUFBQyxRQUFRLEVBQUUsV0FBVyxFQUFDLENBQUM7R0FDeEIsT0FBTyxDQXVDbkI7U0F2Q1ksT0FBTztBQTBDcEIsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFhO0lBQzNDLE9BQU8sSUFBSTtRQUNULENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xvY2FsU2V0dGluZ3MsIFVzZXJTZXR0aW5nc30gZnJvbSAnLi9zZXR0aW5ncy5tb2RlbCc7XG5pbXBvcnQge1BlcnNvbn0gZnJvbSAnLi9wZXJzb24ubW9kZWwnO1xuaW1wb3J0IHtFbnRpdHlBc09iamVjdE9wdGlvbnN9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4vZW50aXR5LmRlY29yYXRvcnMnO1xuXG4vKipcbiAqIEEgdXNlciBhY2NvdW50XG4gKi9cbi8vIEBkeW5hbWljXG5ARW50aXR5Q2xhc3Moe3R5cGVuYW1lOiAnQWNjb3VudFZPJ30pXG5leHBvcnQgY2xhc3MgQWNjb3VudCBleHRlbmRzIFBlcnNvbjxBY2NvdW50PiB7XG5cbiAgc3RhdGljIGZyb21PYmplY3Q6IChzb3VyY2U6IGFueSwgb3B0cz86IGFueSkgPT4gQWNjb3VudDtcblxuICBzZXR0aW5nczogVXNlclNldHRpbmdzID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihBY2NvdW50LlRZUEVOQU1FKTtcbiAgfVxuXG4gIGFzT2JqZWN0KG9wdHM/OiBFbnRpdHlBc09iamVjdE9wdGlvbnMpOiBhbnkge1xuICAgIGNvbnN0IHRhcmdldDogYW55ID0gc3VwZXIuYXNPYmplY3Qoey4uLm9wdHMsIG1pbmlmeTogZmFsc2UgLypkaXNhYmxlIFBlcnNvbiBtaW5pZnkgKHRvbyByZXN0cmljdGl2ZSkgKi99KTtcbiAgICB0YXJnZXQuc2V0dGluZ3MgPSB0aGlzLnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3MuYXNPYmplY3Qob3B0cykgfHwgdW5kZWZpbmVkO1xuICAgIGlmIChvcHRzPy5taW5pZnkpIHtcbiAgICAgIGRlbGV0ZSB0YXJnZXQubWFpblByb2ZpbGU7IC8vIE5vdCBrbm93biBvbiBzZXJ2ZXJcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGZyb21PYmplY3Qoc291cmNlOiBhbnkpIHtcbiAgICBzdXBlci5mcm9tT2JqZWN0KHNvdXJjZSk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IHNvdXJjZS5zZXR0aW5ncyAmJiBVc2VyU2V0dGluZ3MuZnJvbU9iamVjdChzb3VyY2Uuc2V0dGluZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgaW50byBhIFBlcnNvbi4gVGhpcyB3aWxsIGZpbGwgX190eXBlbmFtZSB3aXRoIGEgcmlnaHQgdmFsdWUsIGZvciBkYXRhIGNhY2hlXG4gICAqL1xuICBhc1BlcnNvbigpOiBQZXJzb24ge1xuICAgIGNvbnN0IHBlcnNvbiA9IFBlcnNvbi5mcm9tT2JqZWN0KHRoaXMuYXNPYmplY3Qoe1xuICAgICAga2VlcFR5cGVuYW1lOiB0cnVlIC8vIFRoaXMgaXMgbmVlZCBmb3IgdGhlIGRlcGFydG1lbnQgb2JqZWN0XG4gICAgfSkpO1xuICAgIHBlcnNvbi5fX3R5cGVuYW1lID0gUGVyc29uLlRZUEVOQU1FOyAvLyBEbyBub3Qga2VlcCBBY2NvdW50Vk8gYXMgdHlwZW5hbWVcbiAgICByZXR1cm4gcGVyc29uO1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFjY291bnRUb1N0cmluZyh0aGlzKTtcbiAgfVxuXG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGFjY291bnRUb1N0cmluZyhkYXRhOiBBY2NvdW50KTogc3RyaW5nIHtcbiAgcmV0dXJuIGRhdGEgJiZcbiAgICAoKGRhdGEuZmlyc3ROYW1lICYmIChkYXRhLmZpcnN0TmFtZSArICcgJykgfHwgJycpICtcbiAgICAgIChkYXRhLmxhc3ROYW1lIHx8ICcnKSkgfHwgJyc7XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
1
  var UserSettings_1;
2
2
  import { __decorate } from "tslib";
3
- import { isNil } from '../../../shared/functions';
3
+ import { equals, isNil } from '../../../shared/functions';
4
4
  import { Entity } from './entity.model';
5
5
  import { InjectionToken } from '@angular/core';
6
6
  import { EntityClass } from './entity.decorators';
@@ -30,9 +30,36 @@ let UserSettings = UserSettings_1 = class UserSettings extends Entity {
30
30
  }
31
31
  this.nonce = source.nonce;
32
32
  }
33
+ merge(source, includesProperties) {
34
+ if (!source)
35
+ return; // Skip
36
+ // Reset content
37
+ this.content = {};
38
+ let hasChanges = false;
39
+ // For each property of source object
40
+ Object.keys(source)
41
+ .forEach(key => {
42
+ // If property exists in UserSettings class: store it directly
43
+ if (UserSettings_1.SETTINGS_PROPERTIES.includes(key)) {
44
+ if (!equals(this[key], source[key])) {
45
+ this[key] = source[key];
46
+ hasChanges = true;
47
+ }
48
+ }
49
+ // Else, store property into the 'content' map
50
+ else if (includesProperties && includesProperties.includes(key)) {
51
+ if (!equals(this.content[key], source[key])) {
52
+ this.content[key] = Object.assign({}, source[key]);
53
+ hasChanges = true;
54
+ }
55
+ }
56
+ });
57
+ return hasChanges;
58
+ }
33
59
  };
60
+ UserSettings.SETTINGS_PROPERTIES = ['locale', 'latLongFormat'];
34
61
  UserSettings = UserSettings_1 = __decorate([
35
62
  EntityClass({ typename: 'UserSettingsVO' })
36
63
  ], UserSettings);
37
64
  export { UserSettings };
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUFDLE1BQU0sRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQVNoRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsSUFBSSxjQUFjLENBQWlCLFNBQVMsQ0FBQyxDQUFDO0FBd0J6RSxXQUFXO0lBRUUsWUFBWSwwQkFBWixZQUFhLFNBQVEsTUFBb0I7SUFTcEQ7UUFDRSxLQUFLLENBQUMsY0FBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBNEI7UUFDbkMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFJLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLEVBQUU7WUFDaEIsb0JBQW9CO1lBQ3BCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxTQUFTLENBQUM7U0FDOUU7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVcsRUFBRSxJQUFVO1FBQ2hDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQStCLENBQUM7UUFDNUQsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sTUFBTSxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUU7WUFDL0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNuRTtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUM1QixDQUFDO0NBQ0YsQ0FBQTtBQWpDWSxZQUFZO0lBRHhCLFdBQVcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxnQkFBZ0IsRUFBQyxDQUFDO0dBQzdCLFlBQVksQ0FpQ3hCO1NBakNZLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2lzTmlsfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcbmltcG9ydCB7RW50aXR5LCBFbnRpdHlBc09iamVjdE9wdGlvbnN9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7TGF0TG9uZ1BhdHRlcm59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9tYXRlcmlhbC9sYXRsb25nL2xhdGxvbmcudXRpbHMnO1xuaW1wb3J0IHtQcm9wZXJ0aWVzTWFwLCBQcm9wZXJ0eX0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3R5cGVzJztcbmltcG9ydCB7SW5qZWN0aW9uVG9rZW59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtFbnRpdHlDbGFzc30gZnJvbSAnLi9lbnRpdHkuZGVjb3JhdG9ycyc7XG5pbXBvcnQge0hpc3RvcnlQYWdlUmVmZXJlbmNlfSBmcm9tICcuL2hpc3RvcnkubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBVc2FnZU1vZGUgPSAnREVTSycgfCAnRklFTEQnO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTG9jYWxlQ29uZmlnIGV4dGVuZHMgUHJvcGVydHkge1xuICBjb3VudHJ5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgQVBQX0xPQ0FMRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TG9jYWxlQ29uZmlnW10+KCdsb2NhbGVzJyk7XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBPZmZsaW5lRmVhdHVyZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFzdFN5bmNEYXRlPzogc3RyaW5nO1xuICBmaWx0ZXI/OiBhbnk7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBMb2NhbFNldHRpbmdzIHtcbiAgcGFnZXM/OiBhbnk7XG4gIHBlZXJVcmw/OiBzdHJpbmc7XG4gIGxhdExvbmdGb3JtYXQ6ICdERE1NU1MnIHwgJ0RETU0nIHwgJ0REJztcbiAgYWNjb3VudEluaGVyaXRhbmNlPzogYm9vbGVhbjtcbiAgbG9jYWxlOiBzdHJpbmc7XG4gIHVzYWdlTW9kZT86IFVzYWdlTW9kZTtcbiAgbW9iaWxlPzogYm9vbGVhbjtcbiAgdG91Y2hVaT86IGJvb2xlYW47XG4gIHByb3BlcnRpZXM/OiBQcm9wZXJ0aWVzTWFwO1xuICBwYWdlSGlzdG9yeT86IEhpc3RvcnlQYWdlUmVmZXJlbmNlW107XG4gIG9mZmxpbmVGZWF0dXJlcz86IChzdHJpbmcgfCBPZmZsaW5lRmVhdHVyZSlbXTtcbiAgcGFnZUhpc3RvcnlNYXhTaXplOiBudW1iZXI7XG59XG5cblxuLy8gQGR5bmFtaWNcbkBFbnRpdHlDbGFzcyh7dHlwZW5hbWU6ICdVc2VyU2V0dGluZ3NWTyd9KVxuZXhwb3J0IGNsYXNzIFVzZXJTZXR0aW5ncyBleHRlbmRzIEVudGl0eTxVc2VyU2V0dGluZ3M+IHtcblxuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBVc2VyU2V0dGluZ3M7XG5cbiAgbG9jYWxlOiBzdHJpbmc7XG4gIGxhdExvbmdGb3JtYXQ6IExhdExvbmdQYXR0ZXJuO1xuICBjb250ZW50OiB7fTtcbiAgbm9uY2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihVc2VyU2V0dGluZ3MuVFlQRU5BTUUpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gICAgaWYgKG9wdHM/Lm1pbmlmeSkge1xuICAgICAgLy8gU3RyaW5naWZ5IGNvbnRlbnRcbiAgICAgIHRhcmdldC5jb250ZW50ID0gdGhpcy5jb250ZW50ICYmIEpTT04uc3RyaW5naWZ5KHRhcmdldC5jb250ZW50KSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMubG9jYWxlID0gc291cmNlLmxvY2FsZTtcbiAgICB0aGlzLmxhdExvbmdGb3JtYXQgPSBzb3VyY2UubGF0TG9uZ0Zvcm1hdCBhcyBMYXRMb25nUGF0dGVybjtcbiAgICBpZiAoaXNOaWwoc291cmNlLmNvbnRlbnQpIHx8IHR5cGVvZiBzb3VyY2UuY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuY29udGVudCA9IHNvdXJjZS5jb250ZW50IHx8IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSBzb3VyY2UuY29udGVudCAmJiBKU09OLnBhcnNlKHNvdXJjZS5jb250ZW50KSB8fCB7fTtcbiAgICB9XG4gICAgdGhpcy5ub25jZSA9IHNvdXJjZS5ub25jZTtcbiAgfVxufVxuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvc2V0dGluZ3MubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxNQUFNLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFHN0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFTaEQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLElBQUksY0FBYyxDQUFpQixTQUFTLENBQUMsQ0FBQztBQXdCekUsV0FBVztJQUVFLFlBQVksMEJBQVosWUFBYSxTQUFRLE1BQW9CO0lBVXBEO1FBQ0UsS0FBSyxDQUFDLGNBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTRCO1FBQ25DLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBSSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsTUFBTSxFQUFFO1lBQ2hCLG9CQUFvQjtZQUNwQixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDO1NBQzlFO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFXLEVBQUUsSUFBVTtRQUNoQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUErQixDQUFDO1FBQzVELElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLE1BQU0sQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQy9ELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7U0FDckM7YUFBTTtZQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkU7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDNUIsQ0FBQztJQUVBLEtBQUssQ0FBb0IsTUFBUyxFQUFFLGtCQUErQjtRQUNsRSxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sQ0FBQyxPQUFPO1FBRTVCLGdCQUFnQjtRQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFdkIscUNBQXFDO1FBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO2FBQ2hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNmLDhEQUE4RDtZQUM5RCxJQUFJLGNBQVksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN4QixVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUNuQjthQUNGO1lBQ0QsOENBQThDO2lCQUN6QyxJQUFJLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFjLENBQUMsRUFBQztnQkFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO29CQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNuRCxVQUFVLEdBQUcsSUFBSSxDQUFDO2lCQUNuQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YsQ0FBQTtBQTVEUSxnQ0FBbUIsR0FBRyxDQUFxQixRQUFRLEVBQXNCLGVBQWUsQ0FBYSxDQUFDO0FBRmxHLFlBQVk7SUFEeEIsV0FBVyxDQUFDLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFDLENBQUM7R0FDN0IsWUFBWSxDQThEeEI7U0E5RFksWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZXF1YWxzLCBpc05pbH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5pbXBvcnQge0VudGl0eSwgRW50aXR5QXNPYmplY3RPcHRpb25zfSBmcm9tICcuL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQge0xhdExvbmdQYXR0ZXJufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbWF0ZXJpYWwvbGF0bG9uZy9sYXRsb25nLnV0aWxzJztcbmltcG9ydCB7UHJvcGVydGllc01hcCwgUHJvcGVydHl9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC90eXBlcyc7XG5pbXBvcnQge0luamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RW50aXR5Q2xhc3N9IGZyb20gJy4vZW50aXR5LmRlY29yYXRvcnMnO1xuaW1wb3J0IHtIaXN0b3J5UGFnZVJlZmVyZW5jZX0gZnJvbSAnLi9oaXN0b3J5Lm1vZGVsJztcblxuZXhwb3J0IHR5cGUgVXNhZ2VNb2RlID0gJ0RFU0snIHwgJ0ZJRUxEJztcblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIExvY2FsZUNvbmZpZyBleHRlbmRzIFByb3BlcnR5IHtcbiAgY291bnRyeT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IEFQUF9MT0NBTEVTID0gbmV3IEluamVjdGlvblRva2VuPExvY2FsZUNvbmZpZ1tdPignbG9jYWxlcycpO1xuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgT2ZmbGluZUZlYXR1cmUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxhc3RTeW5jRGF0ZT86IHN0cmluZztcbiAgZmlsdGVyPzogYW55O1xufVxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgTG9jYWxTZXR0aW5ncyB7XG4gIHBhZ2VzPzogYW55O1xuICBwZWVyVXJsPzogc3RyaW5nO1xuICBsYXRMb25nRm9ybWF0OiAnRERNTVNTJyB8ICdERE1NJyB8ICdERCc7XG4gIGFjY291bnRJbmhlcml0YW5jZT86IGJvb2xlYW47XG4gIGxvY2FsZTogc3RyaW5nO1xuICB1c2FnZU1vZGU/OiBVc2FnZU1vZGU7XG4gIG1vYmlsZT86IGJvb2xlYW47XG4gIHRvdWNoVWk/OiBib29sZWFuO1xuICBwcm9wZXJ0aWVzPzogUHJvcGVydGllc01hcDtcbiAgcGFnZUhpc3Rvcnk/OiBIaXN0b3J5UGFnZVJlZmVyZW5jZVtdO1xuICBvZmZsaW5lRmVhdHVyZXM/OiAoc3RyaW5nIHwgT2ZmbGluZUZlYXR1cmUpW107XG4gIHBhZ2VIaXN0b3J5TWF4U2l6ZTogbnVtYmVyO1xufVxuXG5cbi8vIEBkeW5hbWljXG5ARW50aXR5Q2xhc3Moe3R5cGVuYW1lOiAnVXNlclNldHRpbmdzVk8nfSlcbmV4cG9ydCBjbGFzcyBVc2VyU2V0dGluZ3MgZXh0ZW5kcyBFbnRpdHk8VXNlclNldHRpbmdzPiB7XG5cbiAgc3RhdGljIFNFVFRJTkdTX1BST1BFUlRJRVMgPSBbPGtleW9mIFVzZXJTZXR0aW5ncz4nbG9jYWxlJywgPGtleW9mIFVzZXJTZXR0aW5ncz4nbGF0TG9uZ0Zvcm1hdCddIGFzIHN0cmluZ1tdO1xuICBzdGF0aWMgZnJvbU9iamVjdDogKHNvdXJjZTogYW55LCBvcHRzPzogYW55KSA9PiBVc2VyU2V0dGluZ3M7XG5cbiAgbG9jYWxlOiBzdHJpbmc7XG4gIGxhdExvbmdGb3JtYXQ6IExhdExvbmdQYXR0ZXJuO1xuICBjb250ZW50OiB7fTtcbiAgbm9uY2U6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihVc2VyU2V0dGluZ3MuVFlQRU5BTUUpO1xuICB9XG5cbiAgYXNPYmplY3Qob3B0cz86IEVudGl0eUFzT2JqZWN0T3B0aW9ucyk6IGFueSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gc3VwZXIuYXNPYmplY3Qob3B0cyk7XG4gICAgaWYgKG9wdHM/Lm1pbmlmeSkge1xuICAgICAgLy8gU3RyaW5naWZ5IGNvbnRlbnRcbiAgICAgIHRhcmdldC5jb250ZW50ID0gdGhpcy5jb250ZW50ICYmIEpTT04uc3RyaW5naWZ5KHRhcmdldC5jb250ZW50KSB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH1cblxuICBmcm9tT2JqZWN0KHNvdXJjZTogYW55LCBvcHRzPzogYW55KSB7XG4gICAgc3VwZXIuZnJvbU9iamVjdChzb3VyY2UpO1xuICAgIHRoaXMubG9jYWxlID0gc291cmNlLmxvY2FsZTtcbiAgICB0aGlzLmxhdExvbmdGb3JtYXQgPSBzb3VyY2UubGF0TG9uZ0Zvcm1hdCBhcyBMYXRMb25nUGF0dGVybjtcbiAgICBpZiAoaXNOaWwoc291cmNlLmNvbnRlbnQpIHx8IHR5cGVvZiBzb3VyY2UuY29udGVudCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHRoaXMuY29udGVudCA9IHNvdXJjZS5jb250ZW50IHx8IHt9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbnRlbnQgPSBzb3VyY2UuY29udGVudCAmJiBKU09OLnBhcnNlKHNvdXJjZS5jb250ZW50KSB8fCB7fTtcbiAgICB9XG4gICAgdGhpcy5ub25jZSA9IHNvdXJjZS5ub25jZTtcbiAgfVxuXG4gICBtZXJnZTxTID0gTG9jYWxTZXR0aW5ncz4oc291cmNlOiBTLCBpbmNsdWRlc1Byb3BlcnRpZXM6IChrZXlvZiBTKVtdKTogYm9vbGVhbiB7XG4gICAgaWYgKCFzb3VyY2UpIHJldHVybjsgLy8gU2tpcFxuXG4gICAgLy8gUmVzZXQgY29udGVudFxuICAgIHRoaXMuY29udGVudCA9IHt9O1xuICAgIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgICAvLyBGb3IgZWFjaCBwcm9wZXJ0eSBvZiBzb3VyY2Ugb2JqZWN0XG4gICAgT2JqZWN0LmtleXMoc291cmNlKVxuICAgICAgLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIC8vIElmIHByb3BlcnR5IGV4aXN0cyBpbiBVc2VyU2V0dGluZ3MgY2xhc3M6IHN0b3JlIGl0IGRpcmVjdGx5XG4gICAgICBpZiAoVXNlclNldHRpbmdzLlNFVFRJTkdTX1BST1BFUlRJRVMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICBpZiAoIWVxdWFscyh0aGlzW2tleV0sIHNvdXJjZVtrZXldKSkge1xuICAgICAgICAgIHRoaXNba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBFbHNlLCBzdG9yZSBwcm9wZXJ0eSBpbnRvIHRoZSAnY29udGVudCcgbWFwXG4gICAgICBlbHNlIGlmIChpbmNsdWRlc1Byb3BlcnRpZXMgJiYgaW5jbHVkZXNQcm9wZXJ0aWVzLmluY2x1ZGVzKGtleSBhcyBrZXlvZiBTKSl7XG4gICAgICAgIGlmICghZXF1YWxzKHRoaXMuY29udGVudFtrZXldLCBzb3VyY2Vba2V5XSkpIHtcbiAgICAgICAgICB0aGlzLmNvbnRlbnRba2V5XSA9IE9iamVjdC5hc3NpZ24oe30sIHNvdXJjZVtrZXldKTtcbiAgICAgICAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBoYXNDaGFuZ2VzO1xuICB9XG59XG4iXX0=