@sunbird-cb/tree-hierarchy 0.0.1-cbrelease-4.8.26 → 0.0.1-cbrelease-4.8.29

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 (38) hide show
  1. package/esm2022/lib/components/approve-view/approve-view.component.mjs +1 -1
  2. package/esm2022/lib/components/category-edit/category-edit-module/category-edit-module.component.mjs +55 -0
  3. package/esm2022/lib/components/create-term-from-framework/create-term-from-framework.component.mjs +4 -3
  4. package/esm2022/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.mjs +120 -46
  5. package/esm2022/lib/components/term-card/term-card.component.mjs +35 -6
  6. package/esm2022/lib/components/tree-column-view/tree-column-view.component.mjs +37 -5
  7. package/esm2022/lib/components/tree-view/tree-view.component.mjs +359 -30
  8. package/esm2022/lib/models/framework.model.mjs +1 -1
  9. package/esm2022/lib/services/connector.service.mjs +51 -5
  10. package/esm2022/lib/services/framework.service.mjs +147 -9
  11. package/esm2022/lib/tree-hierarchy.component.mjs +1 -1
  12. package/esm2022/lib/tree-hierarchy.module.mjs +11 -4
  13. package/esm2022/lib/tree-hierarchy.service.mjs +18 -2
  14. package/esm2022/material.module.mjs +2 -2
  15. package/fesm2022/sunbird-cb-tree-hierarchy.mjs +835 -127
  16. package/fesm2022/sunbird-cb-tree-hierarchy.mjs.map +1 -1
  17. package/lib/components/category-edit/category-edit-module/category-edit-module.component.d.ts +18 -0
  18. package/lib/components/category-edit/category-edit-module/category-edit-module.component.d.ts.map +1 -0
  19. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts +18 -3
  20. package/lib/components/org-hierarchy-add-modal/org-hierarchy-add-modal.component.d.ts.map +1 -1
  21. package/lib/components/term-card/term-card.component.d.ts +12 -2
  22. package/lib/components/term-card/term-card.component.d.ts.map +1 -1
  23. package/lib/components/tree-column-view/tree-column-view.component.d.ts +5 -1
  24. package/lib/components/tree-column-view/tree-column-view.component.d.ts.map +1 -1
  25. package/lib/components/tree-view/tree-view.component.d.ts +15 -4
  26. package/lib/components/tree-view/tree-view.component.d.ts.map +1 -1
  27. package/lib/models/framework.model.d.ts +1 -0
  28. package/lib/models/framework.model.d.ts.map +1 -1
  29. package/lib/services/connector.service.d.ts +1 -0
  30. package/lib/services/connector.service.d.ts.map +1 -1
  31. package/lib/services/framework.service.d.ts +9 -2
  32. package/lib/services/framework.service.d.ts.map +1 -1
  33. package/lib/tree-hierarchy.module.d.ts +6 -4
  34. package/lib/tree-hierarchy.module.d.ts.map +1 -1
  35. package/lib/tree-hierarchy.service.d.ts +4 -0
  36. package/lib/tree-hierarchy.service.d.ts.map +1 -1
  37. package/material.module.d.ts +2 -2
  38. package/package.json +1 -1
@@ -1,12 +1,22 @@
1
1
  import { Injectable } from '@angular/core';
2
2
  import { BehaviorSubject, of } from 'rxjs';
3
- import { catchError, map, tap } from 'rxjs/operators';
3
+ import { catchError, map, switchMap, tap } from 'rxjs/operators';
4
4
  import { FRAMEWORK } from '../constants/data';
5
5
  import { v4 as uuidv4 } from 'uuid';
6
6
  import _ from 'lodash';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "@angular/common/http";
9
9
  import * as i2 from "./local-connection.service";
10
+ const API_ENDPOINT = {
11
+ ORG_V1_SEARCH: '/apis/proxies/v8/org/v1/search',
12
+ CREATE_TERMS: `/apis/proxies/v8/action/framework/v3/term/create`,
13
+ UPDATE_TERMS: `/apis/proxies/v8/framework/v1/term/update/`,
14
+ UPDATE_ASSOCIATION: `/apis/proxies/v8/framework/v1/term/update/`,
15
+ PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`,
16
+ RETIRE_TREM: `/apis/proxies/v8/framework/v1/term/retire`,
17
+ UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`,
18
+ USERS_SEARCH: `apis/proxies/v8/user/v1/search`
19
+ };
10
20
  export class FrameworkService {
11
21
  constructor(http, localConfig) {
12
22
  this.http = http;
@@ -22,19 +32,28 @@ export class FrameworkService {
22
32
  this.proxiesPath = 'apis/proxies/v8';
23
33
  this.CurrentCardClk = new BehaviorSubject(null);
24
34
  }
25
- getFrameworkInfo(_orgData) {
35
+ getFrameworkInfo(_orgData, _childOrgData) {
26
36
  localStorage.removeItem('terms');
27
37
  if (this.localConfig.connectionType === 'online') {
28
38
  let url = `/${this.proxiesPath}/framework/v1/read/`;
29
39
  if (_orgData) {
30
- url = url + _orgData.identifier + '_org_hierarchy';
40
+ url = url + _orgData.orgHierarchyFrameworkId;
31
41
  }
32
42
  else {
33
43
  url = url + this.environment.frameworkName;
34
44
  }
35
- return this.http.get(`${url}`, { withCredentials: true }).pipe(tap((response) => {
45
+ return this.http.get(`${url}`, { withCredentials: true }).pipe(switchMap((frameworkResponse) => {
46
+ const originalFrameworkResponse = frameworkResponse;
47
+ return this.getSelectedStateOrg(_orgData).pipe(switchMap((orgListData) => {
48
+ this.additionalData = orgListData?.result?.response?.content || [];
49
+ return this.getUserPerOrg().pipe(map(() => {
50
+ return originalFrameworkResponse;
51
+ }));
52
+ }));
53
+ }), tap(async (response) => {
36
54
  this.resetAll();
37
- this.formateData(response);
55
+ this.formateData(response, _childOrgData);
56
+ this.completeResponse = response.result.framework;
38
57
  }), catchError((err) => {
39
58
  this.resetAll();
40
59
  this.list.clear();
@@ -163,13 +182,18 @@ export class FrameworkService {
163
182
  }) || [];
164
183
  return filteredData;
165
184
  }
166
- formateData(response) {
185
+ formateData(response, _childOrgData) {
167
186
  this.frameworkId = response.result.framework.code;
168
- (response.result.framework.categories).forEach((a, _idx) => {
187
+ let categories = response.result.framework.categories;
188
+ if (_childOrgData?.rootOrgId) {
189
+ categories = this.getOrgFromChildOnwards(categories || [], _childOrgData || '');
190
+ }
191
+ response.result.framework.categories = categories;
192
+ (categories).forEach((a, _idx) => {
169
193
  this.list.set(a.code, {
170
194
  code: a.code,
171
195
  identifier: a.identifier,
172
- index: a.index,
196
+ index: (_idx + 1),
173
197
  name: a.name,
174
198
  selected: a.selected,
175
199
  status: a.status,
@@ -180,6 +204,8 @@ export class FrameworkService {
180
204
  config: this.getConfig(a.code),
181
205
  children: (a.terms || []).map((c) => {
182
206
  const associations = c.associations || [];
207
+ const tempCount = this.getUserCount(c);
208
+ Object.assign(c, { userCount: tempCount });
183
209
  if (associations.length > 0) {
184
210
  Object.assign(c, { children: associations });
185
211
  }
@@ -201,6 +227,25 @@ export class FrameworkService {
201
227
  });
202
228
  this.categoriesHash.next(allCategories);
203
229
  }
230
+ getOrgFromChildOnwards(_categories, _childOrgData) {
231
+ const colIndexToBeRemoved = [];
232
+ let termFoundIndex = -1;
233
+ if (_categories?.length > 0) {
234
+ _categories.forEach((ele) => {
235
+ if (ele?.terms?.length > 0) {
236
+ const termFound = ele.terms.find((term) => term.name === _childOrgData.channel);
237
+ if (!termFound && termFoundIndex === -1) {
238
+ colIndexToBeRemoved.push(ele.index);
239
+ }
240
+ else if (termFoundIndex === -1) {
241
+ termFoundIndex = ele.index;
242
+ ele.terms = ele.terms.filter((term) => term.name === _childOrgData.channel);
243
+ }
244
+ }
245
+ });
246
+ }
247
+ return _categories.filter((category) => !colIndexToBeRemoved.includes(category.index));
248
+ }
204
249
  removeOldLine() {
205
250
  const eles = Array.from(document.getElementsByClassName('leader-line') || []);
206
251
  if (eles.length > 0) {
@@ -375,6 +420,99 @@ export class FrameworkService {
375
420
  });
376
421
  }
377
422
  }
423
+ getSelectedStateOrg(_orgData) {
424
+ const requestBody = {
425
+ request: {
426
+ filters: {
427
+ status: 1,
428
+ ministryOrStateType: (_orgData) ?
429
+ _orgData.sbOrgType : '',
430
+ ministryOrStateId: (_orgData) ?
431
+ _orgData.identifier : ''
432
+ },
433
+ sort_by: {
434
+ createdDate: "desc"
435
+ },
436
+ limit: 9999,
437
+ offset: 0,
438
+ fields: [
439
+ 'identifier',
440
+ 'orgName',
441
+ 'description',
442
+ 'parentOrgName',
443
+ 'ministryOrStateId',
444
+ 'ministryOrStateType',
445
+ 'ministryOrStateName',
446
+ 'sbOrgSubType'
447
+ ]
448
+ }
449
+ };
450
+ return this.http.post(`${API_ENDPOINT.ORG_V1_SEARCH}`, requestBody).pipe(catchError(error => {
451
+ console.error('Error fetching Org data:', error);
452
+ return of({});
453
+ }));
454
+ }
455
+ getUserPerOrg(_orgData) {
456
+ const orgIds = this.additionalData.map((org) => org.identifier);
457
+ const requestBody = {
458
+ request: {
459
+ filters: {
460
+ rootOrgId: orgIds
461
+ },
462
+ fields: [
463
+ 'identifier',
464
+ 'rootOrgId'
465
+ ],
466
+ limit: 1,
467
+ facets: [
468
+ "rootOrgId"
469
+ ],
470
+ sort_by: {
471
+ "createdDate": "desc"
472
+ }
473
+ }
474
+ };
475
+ const orgIdCounts = [];
476
+ if (this.additionalData && this.additionalData.length > 0) {
477
+ this.additionalData.forEach((org) => {
478
+ if (org.identifier) {
479
+ orgIdCounts.push({
480
+ id: org.identifier,
481
+ count: 0
482
+ });
483
+ }
484
+ });
485
+ }
486
+ return this.http.post(`${API_ENDPOINT.USERS_SEARCH}`, requestBody).pipe(map((res) => {
487
+ if (res && res.result && res.result.response && res.result.response.count) {
488
+ const facetsValue = res.result.response.facets || [];
489
+ if (facetsValue && facetsValue.length > 0) {
490
+ const orgFacet = facetsValue.find((facet) => facet.name === 'rootOrgId');
491
+ if (orgFacet && orgFacet.values) {
492
+ orgFacet.values.forEach((value) => {
493
+ const orgIndex = orgIdCounts.findIndex(org => org.id === value.name);
494
+ if (orgIndex !== -1) {
495
+ orgIdCounts[orgIndex].count = value.count || 0;
496
+ }
497
+ });
498
+ }
499
+ }
500
+ }
501
+ this.userCountData = orgIdCounts;
502
+ }), catchError(error => {
503
+ console.error('Error fetching user count data:', error);
504
+ return of({});
505
+ }));
506
+ }
507
+ getUserCount(term) {
508
+ if (term && term.additionalProperties && term.additionalProperties.orgId) {
509
+ if (this.userCountData && this.userCountData.length > 0) {
510
+ const userCount = this.userCountData.filter((user) => user.id === term.additionalProperties.orgId)[0]?.count;
511
+ return userCount || 0;
512
+ }
513
+ }
514
+ return 0;
515
+ }
378
516
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, deps: [{ token: i1.HttpClient }, { token: i2.LocalConnectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
379
517
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FrameworkService, providedIn: 'root' }); }
380
518
  }
@@ -384,4 +522,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
384
522
  providedIn: 'root'
385
523
  }]
386
524
  }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.LocalConnectionService }]; } });
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUc5QyxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlwQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7Ozs7QUFZdkIsTUFBTSxPQUFPLGdCQUFnQjtJQWtCM0IsWUFDVSxJQUFnQixFQUNqQixXQUFtQztRQURsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQW5CNUMsbUJBQWMsR0FBa0QsSUFBSSxlQUFlLENBQStCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RILGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzlFLHFCQUFnQixHQUNkLElBQUksZUFBZSxDQUF1RSxJQUFJLENBQUMsQ0FBQztRQUNsRyxnQkFBVyxHQUF5QixJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztRQUNuRSwwQkFBcUIsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDN0UsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO1FBQ2xELGtCQUFhLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztRQUN2QywrQkFBMEIsR0FBeUMsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBS2xILGdCQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFFaEMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUs3QyxDQUFDO0lBRUosZ0JBQWdCLENBQUMsUUFBYTtRQUM1QixZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBR2hELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcscUJBQXFCLENBQUE7WUFDbkQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osR0FBRyxHQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDO2FBQ3JEO2lCQUFNO2dCQUNMLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7YUFDNUM7WUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0IsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzdCLE1BQU0sNEJBQTRCLEdBQUcsR0FBRyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDUDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxXQUFnQjtRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsdUNBQXVDLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3RJLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsV0FBZ0I7UUFDbEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHVDQUF1QyxXQUFXLGFBQWEsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsV0FBZ0I7UUFDbkQsSUFBSSxZQUFvQixDQUFDO1FBQ3pCLElBQUksUUFBUSxLQUFLLE9BQU8sRUFBRTtZQUN4QixZQUFZLEdBQUcsaUJBQWlCLENBQUM7U0FDbEM7YUFBTTtZQUNMLFlBQVksR0FBRyxvQkFBb0IsQ0FBQztTQUNyQztRQUVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLFlBQVksY0FBYyxFQUFFLFdBQVcsQ0FBQzthQUNuRixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLGdCQUF3QjtRQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsNkJBQTZCLGdCQUFnQixjQUFjLFdBQVcsYUFBYSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQy9JLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsV0FBZ0I7UUFDMUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHVDQUF1QyxXQUFXLGFBQWEsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCLEVBQUUsV0FBZ0I7UUFDNUYsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLDZCQUE2QixnQkFBZ0IsY0FBYyxXQUFXLGFBQWEsVUFBVSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0osQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyx5QkFBeUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRyxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sTUFBTSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVE7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFDekIsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGNBQWM7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxlQUF1QjtRQUNyQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUF3QixFQUFFLEVBQUU7WUFDcEYsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQzNELE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxlQUF1QjtRQUN6QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUF3QixFQUFFLEVBQUU7WUFDcEYsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzNGLENBQUM7SUFFRCxhQUFhLENBQUMsZUFBdUI7UUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNqRSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFrQztRQUMzQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUFlO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUF3QixFQUFFLEVBQUU7WUFDcEcsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxLQUFZLEVBQUUsSUFBUztRQUV6QyxJQUFJLEdBQUcsR0FBVSxFQUFFLENBQUM7UUFFcEIsS0FBSyxJQUFJLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDdkIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUV6QixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3hCO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxHQUFRO1FBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1FBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakUsQ0FBQztJQUVELDJCQUEyQixDQUFDLEdBQVE7UUFDbEMsSUFBSSxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLFVBQWtCO1FBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7UUFDdEQsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzFCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxVQUFrQjtRQUN4QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDO1FBQ2xELENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVULE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFnQjtRQUNwQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVULE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBYTtRQUN2QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNsRCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO2dCQUN4QixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFpQztnQkFDM0MsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXO2dCQUMxQixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2dCQUM1QixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUM5QixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO29CQUN2QyxNQUFNLFlBQVksR0FBRyxDQUFDLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztvQkFDMUMsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDM0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztxQkFDOUM7b0JBQ0QsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQyxDQUFDO2FBQ0gsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLGFBQWEsR0FBNEIsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BCLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVU7Z0JBQ3hCLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztnQkFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFpQztnQkFDM0MsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXO2dCQUMxQixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7YUFDSixDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLGNBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQzFDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDekU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO3dCQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksaUJBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzlCLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3hCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBZ0IsRUFBRSxRQUFnQjtRQUNqRCxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztTQUNsQzthQUFNO1lBQ0wsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1NBQ3JDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxTQUFTLEVBQUUsV0FBVyxDQUFDO2FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTLEVBQUUsTUFBVyxFQUFFLGlCQUF3QixFQUFFLFVBQWtCO1FBQ2xGLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTt3QkFDNUMsTUFBTSxlQUFlLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pJLE1BQU0sWUFBWSxHQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUssRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNsSSxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsZUFBZSxDQUFDO3dCQUMxQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDO3FCQUNwQztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDdEU7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTt3QkFDNUMsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO3dCQUMvQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFOzRCQUMxRCxjQUFjLEdBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO3lCQUNyRjs2QkFBTTs0QkFDTCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7eUJBQ3BDO3dCQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO3dCQUMxSCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztxQkFDL0c7b0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQ3RFO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFVBQWUsRUFBRSxpQkFBd0IsRUFBRSxVQUFtQjtRQUNwRyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDM0IsTUFBTSxlQUFlLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUksTUFBTSxZQUFZLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkksUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztZQUMzQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDO1lBRXBDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDM0U7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsY0FBYyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDTCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7YUFDcEM7WUFDRCxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUM5SCxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUVsSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxRQUFRLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBbUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHNCQUFzQixXQUFXLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQzVELENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxzQ0FBc0MsQ0FBQyxJQUFZLEVBQUUsV0FBbUI7UUFDdEUsSUFBSSxjQUFtQixDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3JDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDekU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQW1CO1FBQ3hDLElBQUksY0FBbUIsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUNyQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2lCQUN6QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsMEJBQTBCLENBQUMsV0FBbUIsRUFBRSxVQUFlO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQy9DLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUyxFQUFFLE1BQVc7UUFDeEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDNUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQ2xFO2dCQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDM0M7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQzsrR0F2YVUsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FGZixNQUFNOzs0RkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBGUkFNRVdPUksgfSBmcm9tICcuLi9jb25zdGFudHMvZGF0YSc7XG5pbXBvcnQgeyBOU0ZyYW1ld29yayB9IGZyb20gJy4uL21vZGVscy9mcmFtZXdvcmsubW9kZWwnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgSUNvbm5lY3Rpb24gfSBmcm9tICcuLi9tb2RlbHMvY29ubmVjdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC1jb25uZWN0aW9uLnNlcnZpY2UnO1xuLyogdHNsaW50OmRpc2FibGUgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG4vKiB0c2xpbnQ6ZW5hYmxlICovXG5cbmludGVyZmFjZSBOb3RpZmllclR5cGUge1xuICB0eXBlOiAnc2VsZWN0JyB8ICdpbnNlcnQnIHwgJ3VwZGF0ZScgfCAnZGVsZXRlJztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRnJhbWV3b3JrU2VydmljZSB7XG4gIGNhdGVnb3JpZXNIYXNoOiBCZWhhdmlvclN1YmplY3Q8TlNGcmFtZXdvcmsuSUNhdGVnb3J5W10gfCBbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+KFtdKTtcbiAgaXNEYXRhVXBkYXRlZDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIGN1cnJlbnRTZWxlY3Rpb246IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4gPSBcbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnksIGNhcmRSZWY/OiBhbnksIGlzVXBkYXRlPzpib29sZWFuIH0gfCBudWxsPihudWxsKTtcbiAgdGVybVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBhZnRlckFkZE9yRWRpdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICBsaXN0ID0gbmV3IE1hcDxzdHJpbmcsIE5TRnJhbWV3b3JrLklDb2x1bW5WaWV3PigpO1xuICBzZWxlY3Rpb25MaXN0ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgaW5zZXJ0VXBkYXRlRGVsZXRlTm90aWZpZXI6IEJlaGF2aW9yU3ViamVjdDxOb3RpZmllclR5cGUgfCBudWxsPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4obnVsbCk7XG4gIGVudmlyb25tZW50OiBhbnk7XG4gIGxpYkNvbmZpZyE6IElDb25uZWN0aW9uO1xuICBmcmFtZXdvcmtJZCE6IHN0cmluZztcbiAgcm9vdENvbmZpZzogYW55O1xuICBwcm94aWVzUGF0aCA9ICdhcGlzL3Byb3hpZXMvdjgnO1xuICBjYXJkQ2xrRGF0YTogYW55O1xuICBDdXJyZW50Q2FyZENsayA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwdWJsaWMgbG9jYWxDb25maWc6IExvY2FsQ29ubmVjdGlvblNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZyYW1ld29ya0luZm8oX29yZ0RhdGE/OmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3Rlcm1zJyk7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICAvL2ZyYW1ld29yay92MS9yZWFkLzAxMzU4OTEyMjkzODM5NjY3MjQxX29yZ19oaWVyYXJjaHlcbiAgICAgIC8vZnJhbWV3b3JrL3YxL3JlYWQvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9XG4gICAgICBsZXQgdXJsID0gYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkL2BcbiAgICAgIGlmIChfb3JnRGF0YSkge1xuICAgICAgICB1cmwgID0gdXJsICsgX29yZ0RhdGEuaWRlbnRpZmllciArICdfb3JnX2hpZXJhcmNoeSc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cmwgPSB1cmwgKyB0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt1cmx9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMuZm9ybWF0ZURhdGEocmVzcG9uc2UpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIGluIHNvdXJjZS4gRGV0YWlsczogJyArIGVycjtcbiAgICAgICAgfSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0QWxsKCk7XG4gICAgICB0aGlzLmZvcm1hdGVEYXRhKEZSQU1FV09SSyk7XG4gICAgICByZXR1cm4gb2YoRlJBTUVXT1JLKTtcbiAgICB9XG4gIH1cblxuICByZWFkVGVybXMoZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3NlYXJjaD9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4gcmVzLnJlc3VsdCkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vY3JlYXRlP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG4gXG4gIGNyZWF0ZVRlcm1zV3JhcHBlcihjYXRlZ29yeTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsZXQgY2F0ZWdvcnlJdGVtOiBzdHJpbmc7XG4gICAgaWYgKGNhdGVnb3J5ID09PSAndGhlbWUnKSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVRoZW1lJztcbiAgICB9IGVsc2Uge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lTdWJUaGVtZSc7XG4gICAgfVxuICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS8ke2NhdGVnb3J5SXRlbX0vY3JlYXRlL3Rlcm1gLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0JykpKTtcbiAgfVxuXG4gIHJldGlyZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWApO1xuICB9XG5cbiAgcmV0aXJlTXVsdGlwbGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgY2F0ZWdvcnlUZXJtQ29kZTogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBhdGNoKGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS91cGRhdGUvJHtjYXRlZ29yeVRlcm1Db2RlfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmFtZXdvcmsoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9wdWJsaXNoLyR7dGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lfWAsIHt9KTtcbiAgfVxuXG4gIGdldFV1aWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXVpZHY0KCk7XG4gIH1cblxuICB1cGRhdGVFbnZpcm9ubWVudChlbnY6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBlbnY7XG4gIH1cblxuICBnZXRFbnZpcm9tZW50KCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXRGcmFtZXdvcmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyYW1ld29ya0lkO1xuICB9XG5cbiAgZ2V0TmV4dENhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeTogc3RyaW5nKTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5IHwgbnVsbCB7XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY3VycmVudENhdGVnb3J5O1xuICAgIH0pO1xuICAgIGxldCBjYXRlZ29yeUxlbmd0aCA9IHRoaXMuY2F0ZWdvcmllc0hhc2guZ2V0VmFsdWUoKS5sZW5ndGg7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggKyAxKSA8IGNhdGVnb3J5TGVuZ3RoID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCArIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzQ2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgcmV0dXJuIChjdXJyZW50SW5kZXggLSAxKSA+PSAwID8gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpW2N1cnJlbnRJbmRleCAtIDFdIDogbnVsbDtcbiAgfVxuXG4gIGdldFBhcmVudFRlcm0oY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBhbnkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnkpIHx8IG51bGw7XG4gICAgcmV0dXJuIHBhcmVudCA/IHRoaXMuc2VsZWN0aW9uTGlzdC5nZXQocGFyZW50LmNvZGUpIDogbnVsbDtcbiAgfVxuXG4gIGNoaWxkQ2xpY2soZXZlbnQ6IHsgdHlwZTogc3RyaW5nLCBkYXRhOiBhbnkgfSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFNlbGVjdGlvbi5uZXh0KGV2ZW50KTtcbiAgfVxuXG4gIHJlc2V0QWxsKCk6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQobnVsbCk7XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmNsZWFyKCk7XG4gICAgdGhpcy5saXN0LmNsZWFyKCk7XG4gIH1cblxuICBpc0xhc3RDb2x1bW4oY29sQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUgJiYgKHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGNvbENvZGU7XG4gICAgfSkpID09PSAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW1Gcm9tQXJyYXkoYXJyYXk6IGFueVtdLCBpdGVtOiBhbnkpOiBhbnlbXSB7XG4gICAgLyogYXNzaWduIGEgZW1wdHkgYXJyYXkgKi9cbiAgICB2YXIgdG1wOiBhbnlbXSA9IFtdO1xuICAgIC8qIGxvb3Agb3ZlciBhbGwgYXJyYXkgaXRlbXMgKi9cbiAgICBmb3IgKHZhciBpbmRleCBpbiBhcnJheSkge1xuICAgICAgaWYgKGFycmF5W2luZGV4XSAhPT0gaXRlbSkge1xuICAgICAgICAvKiBwdXNoIHRvIHRlbXBvcmFyeSBhcnJheSBpZiBub3QgbGlrZSBpdGVtICovXG4gICAgICAgIHRtcC5wdXNoKGFycmF5W2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8qIHJldHVybiB0aGUgdGVtcG9yYXJ5IGFycmF5ICovXG4gICAgcmV0dXJuIHRtcDtcbiAgfVxuXG4gIHNldCBzZXRUZXJtKHJlczogYW55KSB7XG4gICAgdGhpcy50ZXJtU3ViamVjdC5uZXh0KHJlcyk7XG4gICAgbGV0IG9sZFRlcm1zID0gdGhpcy5nZXRUZXJtIHx8IFtdO1xuICAgIG9sZFRlcm1zLnB1c2gocmVzKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGVybXMnLCBKU09OLnN0cmluZ2lmeShvbGRUZXJtcykpO1xuICB9XG5cbiAgZ2V0IGdldFRlcm0oKTogYW55W10ge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd0ZXJtcycpIHx8ICdbXScpIHx8IFtdO1xuICB9XG5cbiAgdXBkYXRlQWZ0ZXJBZGRPckVkaXRTdWJqZWN0KHJlczogYW55KTogdm9pZCB7XG4gICAgaWYgKHJlcykge1xuICAgICAgdGhpcy5hZnRlckFkZE9yRWRpdFN1YmplY3QubmV4dChyZXMpO1xuICAgIH0gXG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlQYXJlbnQocGFyZW50Q29kZTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5wYXJlbnQgJiYgeC5wYXJlbnQuY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhLm1hcCh4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm07XG4gICAgfSk7XG4gIH1cblxuICBnZXRMb2NhbFRlcm1zQnlDYXRlZ29yeShwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnRlcm0gJiYgeC50ZXJtLmNhdGVnb3J5ID09PSBwYXJlbnRDb2RlO1xuICAgIH0pIHx8IFtdO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkRGF0YTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogYW55W10ge1xuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHRoaXMuZ2V0VGVybS5maWx0ZXIoeCA9PiB7XG4gICAgICByZXR1cm4geC5jYXRlZ29yeSA9PT0gY2F0ZWdvcnk7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZm9ybWF0ZURhdGEocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZnJhbWV3b3JrSWQgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNvZGU7XG4gICAgKHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY2F0ZWdvcmllcykuZm9yRWFjaCgoYTogYW55LCBfaWR4OiBudW1iZXIpID0+IHtcbiAgICAgIHRoaXMubGlzdC5zZXQoYS5jb2RlLCB7XG4gICAgICAgIGNvZGU6IGEuY29kZSxcbiAgICAgICAgaWRlbnRpZmllcjogYS5pZGVudGlmaWVyLFxuICAgICAgICBpbmRleDogYS5pbmRleCxcbiAgICAgICAgbmFtZTogYS5uYW1lLFxuICAgICAgICBzZWxlY3RlZDogYS5zZWxlY3RlZCxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICAgIGNhdGVnb3J5OiBhLmNhdGVnb3J5LFxuICAgICAgICBhc3NvY2lhdGlvbnM6IGEuYXNzb2NpYXRpb25zLFxuICAgICAgICBjb25maWc6IHRoaXMuZ2V0Q29uZmlnKGEuY29kZSksXG4gICAgICAgIGNoaWxkcmVuOiAoYS50ZXJtcyB8fCBbXSkubWFwKChjOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbnMgPSBjLmFzc29jaWF0aW9ucyB8fCBbXTtcbiAgICAgICAgICBpZiAoYXNzb2NpYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYywgeyBjaGlsZHJlbjogYXNzb2NpYXRpb25zIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIFxuICAgIGNvbnN0IGFsbENhdGVnb3JpZXM6IE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2goYSA9PiB7XG4gICAgICBhbGxDYXRlZ29yaWVzLnB1c2goe1xuICAgICAgICBjb2RlOiBhLmNvZGUsXG4gICAgICAgIGlkZW50aWZpZXI6IGEuaWRlbnRpZmllcixcbiAgICAgICAgaW5kZXg6IGEuaW5kZXgsXG4gICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgc3RhdHVzOiBhLnN0YXR1cyBhcyBOU0ZyYW1ld29yay5UTm9kZVN0YXR1cyxcbiAgICAgICAgZGVzY3JpcHRpb246IGEuZGVzY3JpcHRpb24sXG4gICAgICAgIHRyYW5zbGF0aW9uczogYS50cmFuc2xhdGlvbnMsXG4gICAgICB9IGFzIE5TRnJhbWV3b3JrLklDYXRlZ29yeSk7XG4gICAgfSk7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KGFsbENhdGVnb3JpZXMpO1xuICB9XG5cbiAgcmVtb3ZlT2xkTGluZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVzID0gQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdsZWFkZXItbGluZScpIHx8IFtdKTtcbiAgICBpZiAoZWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBlbGVzLmZvckVhY2goZWxlID0+IGVsZS5yZW1vdmUoKSk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5yb290Q29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnKGNvZGU6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5mcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZy5jb25maWcuZmluZCgob2JqOiBhbnkpID0+IG9iai5jYXRlZ29yeSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICghY2F0ZWdvcnlDb25maWcpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvb3RDb25maWcuY29uZmlnWzBdXG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldEFsbFNlbGVjdGVkVGVybXMoKTogYW55W10ge1xuICAgIGNvbnN0IHNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5saXN0LmZvckVhY2gobCA9PiB7XG4gICAgICBpZiAobC5jaGlsZHJlbiAmJiBsLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBsLmNoaWxkcmVuLmZvckVhY2goYyA9PiB7XG4gICAgICAgICAgaWYgKGMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkVGVybXMucHVzaChjKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzZWxlY3RlZFRlcm1zO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNTZWxlY3RlZFRlcm1zKGNvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBsZXQgcHJldlNlbGVjdGVkVGVybXM6IGFueVtdID0gW107XG4gICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goc2wgPT4ge1xuICAgICAgaWYgKHNsLmNhdGVnb3J5ICE9PSBjb2RlKSB7XG4gICAgICAgIHByZXZTZWxlY3RlZFRlcm1zLnB1c2goc2wpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmV2U2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldEtjbVNlYXJjaExpc3QocmVxdWVzdEJvZHk6IGFueSwgY2F0ZWdvcnk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IGNhdGVnb3J5SXRlbTogc3RyaW5nO1xuICAgIGlmIChjYXRlZ29yeSA9PT0gJ3RoZW1lJykge1xuICAgICAgY2F0ZWdvcnlJdGVtID0gJ2NvbXBldGVuY3lUaGVtZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5U3ViVGhlbWUnO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9zZWFyY2hgLCByZXF1ZXN0Qm9keSlcbiAgICAgIC5waXBlKG1hcChyZXMgPT4gXy5nZXQocmVzLCAncmVzdWx0LnJlc3VsdCcpKSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3QoaXRlbTogYW55LCBwYXJlbnQ6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpZiAodXBkYXRlVHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGl0bURhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmNoaWxkcmVuLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChpdG1EYXRhLmlkZW50aWZpZXIgPT09IHBhcmVudC5pZGVudGlmaWVyKSB7XG4gICAgICAgICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICAgICAgICBpZiAoaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuICYmIGl0bURhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhICA9IF8uZGlmZmVyZW5jZUJ5KHNlbGVjdGVkVGVybUFycmF5LCBpdG1EYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGl0bURhdGFbJ2Fzc29jaWF0aW9ucyddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5pdG1EYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICAgICAgICBpdG1EYXRhWydjaGlsZHJlbiddID0gaXRtRGF0YSAmJiBpdG1EYXRhLmNoaWxkcmVuID8gWy4uLml0bURhdGEuY2hpbGRyZW4sIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QoaXRtRGF0YSwgcGFyZW50LCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB1cGRhdGVGcmFtZXdvcmtMaXN0KGNvbHVtbkNvZGU6IHN0cmluZywgcGFyZW50RGF0YTogYW55LCBzZWxlY3RlZFRlcm1BcnJheTogYW55W10sIHVwZGF0ZVR5cGU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoY29sdW1uQ29kZSk7XG4gICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICBjb25zdCBhc3NvY2lhdGlvbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuYXNzb2NpYXRpb25zLCBzZWxlY3RlZFRlcm1BcnJheSwgKGE6YW55LCBiOiBhbnkpID0+IGEuaWRlbnRpZmllciA9PT0gYi5pZGVudGlmaWVyKTtcbiAgICAgIGNvbnN0IGNoaWxkcmVuTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChsaXN0RGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBsaXN0RGF0YVsnYXNzb2NpYXRpb25zJ10gPSBhc3NvY2lhdGlvbkxpc3Q7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGNoaWxkcmVuTGlzdDtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBkaWZmZXJlbmNlRGF0YTogYW55W10gPSBbXTtcbiAgICAgIGlmIChsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiAmJiBsaXN0RGF0YS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgbGlzdERhdGEuY2hpbGRyZW4sICdpZGVudGlmaWVyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkaWZmZXJlbmNlRGF0YSA9IHNlbGVjdGVkVGVybUFycmF5O1xuICAgICAgfVxuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gbGlzdERhdGEgJiYgbGlzdERhdGEuYXNzb2NpYXRpb25zID8gWy4uLmxpc3REYXRhLmFzc29jaWF0aW9ucywgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG4gICAgICBsaXN0RGF0YVsnY2hpbGRyZW4nXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuID8gWy4uLmxpc3REYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcblxuICAgICAgdGhpcy5zZWxlY3Rpb25MaXN0LmZvckVhY2goKHNlbGVjdGVkRGF0YTogYW55KSA9PiB7XG4gICAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVMb2NhbExpc3QobGlzdERhdGEsIHBhcmVudERhdGEsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlIHx8ICcnKTtcbiAgICAgICAgfVxuICAgICAgfSk7IFxuICAgIH1cbiAgfVxuXG4gIGdldEZyYW1ld29ya1JlYWQoZnJhbWVXb3JrSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKHRoaXMubG9jYWxDb25maWcuY29ubmVjdGlvblR5cGUgPT09ICdvbmxpbmUnKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvJHtmcmFtZVdvcmtJZH1gLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KS5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IF8uZ2V0KHJlc3BvbnNlLCAncmVzdWx0LmZyYW1ld29yaycpKVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDb25maWdPZkNhdGVnb3J5Q29uZmlnQnlGcmFtZVdvcmtJZChjb2RlOiBzdHJpbmcsIGZyYW1ld29ya0lkOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGZyYW1ld29ya0lkID09IGNvbmZpZy5mcmFtZXdvcmtJZCkge1xuICAgICAgICAgIGNhdGVnb3J5Q29uZmlnID0gY29uZmlnLmNvbmZpZy5maW5kKChvYmo6IGFueSkgPT4gb2JqLmNhdGVnb3J5ID09IGNvZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNhdGVnb3J5Q29uZmlnO1xuICB9XG5cbiAgZ2V0Q29uZmlnQnlGcmFtZVdvcmtJZChmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIHVwZGF0ZUZ1bGxUZXJtRGF0YUxvY2FsTWFwKF9jb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KHNlbGVjdGVkRGF0YS5jYXRlZ29yeSk7XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShsaXN0RGF0YSwgcGFyZW50RGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMb2NhbExpc3RUZXJtKGl0ZW06IGFueSwgcGFyZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBpdGVtLmNoaWxkcmVuLmZvckVhY2goKGl0bURhdGE6IGFueSkgPT4ge1xuICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgIGl0bURhdGFbJ2Rlc2NyaXB0aW9uJ10gPSBwYXJlbnRbJ2Rlc2NyaXB0aW9uJ107XG4gICAgICAgICAgaXRtRGF0YVsnYWRkaXRpb25hbFByb3BlcnRpZXMnXSA9IHBhcmVudFsnYWRkaXRpb25hbFByb3BlcnRpZXMnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRtRGF0YS5jaGlsZHJlbikge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0VGVybShpdG1EYXRhLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn0iXX0=
525
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJhbWV3b3JrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJ5L3N1bmJpcmQtY2IvdHJlZS1oaWVyYXJjaHkvc3JjL2xpYi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHOUMsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJcEMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDOzs7O0FBSXZCLE1BQU0sWUFBWSxHQUFHO0lBQ25CLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsWUFBWSxFQUFFLGtEQUFrRDtJQUNoRSxZQUFZLEVBQUUsNENBQTRDO0lBQzFELGtCQUFrQixFQUFFLDRDQUE0QztJQUNoRSxpQkFBaUIsRUFBRSx3Q0FBd0M7SUFDM0QsV0FBVyxFQUFFLDJDQUEyQztJQUN4RCxlQUFlLEVBQUUsZ0RBQWdEO0lBQ2pFLFlBQVksRUFBRSxnQ0FBZ0M7Q0FDL0MsQ0FBQTtBQVdELE1BQU0sT0FBTyxnQkFBZ0I7SUFxQjNCLFlBQ1UsSUFBZ0IsRUFDakIsV0FBbUM7UUFEbEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBd0I7UUF0QjVDLG1CQUFjLEdBQWtELElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUN0SCxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM5RSxxQkFBZ0IsR0FDZCxJQUFJLGVBQWUsQ0FBdUUsSUFBSSxDQUFDLENBQUM7UUFDbEcsZ0JBQVcsR0FBeUIsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFDbkUsMEJBQXFCLEdBQXlCLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO1FBQzdFLFNBQUksR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNsRCxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFlLENBQUM7UUFDdkMsK0JBQTBCLEdBQXlDLElBQUksZUFBZSxDQUFzQixJQUFJLENBQUMsQ0FBQztRQUtsSCxnQkFBVyxHQUFHLGlCQUFpQixDQUFDO1FBRWhDLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7SUFTN0MsQ0FBQztJQUVKLGdCQUFnQixDQUFDLFFBQWEsRUFBRSxhQUFrQjtRQUNoRCxZQUFZLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEtBQUssUUFBUSxFQUFFO1lBQ2hELElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcscUJBQXFCLENBQUE7WUFDbkQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osR0FBRyxHQUFHLEdBQUcsR0FBRyxRQUFRLENBQUMsdUJBQXVCLENBQUM7YUFDOUM7aUJBQU07Z0JBQ0wsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQzthQUM1QztZQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDNUQsU0FBUyxDQUFDLENBQUMsaUJBQXNCLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSx5QkFBeUIsR0FBRyxpQkFBaUIsQ0FBQztnQkFDcEQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsQ0FBQyxXQUFnQixFQUFFLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDbkUsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUM5QixHQUFHLENBQUMsR0FBRyxFQUFFO3dCQUNQLE9BQU8seUJBQXlCLENBQUE7b0JBQ2xDLENBQUMsQ0FBQyxDQUNILENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBYSxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztZQUNwRCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDN0IsTUFBTSw0QkFBNEIsR0FBRyxHQUFHLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM1QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsV0FBbUIsRUFBRSxVQUFrQixFQUFFLFdBQWdCO1FBQ2pFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyx1Q0FBdUMsV0FBVyxhQUFhLFVBQVUsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FDdEksR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxXQUFnQjtRQUNsRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsdUNBQXVDLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBRUQsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxXQUFnQjtRQUNuRCxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztTQUNsQzthQUFNO1lBQ0wsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1NBQ3JDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxjQUFjLEVBQUUsV0FBVyxDQUFDO2FBQ25GLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQixFQUFFLFVBQWtCLEVBQUUsZ0JBQXdCO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyw2QkFBNkIsZ0JBQWdCLGNBQWMsV0FBVyxhQUFhLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVELGtCQUFrQixDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxXQUFnQjtRQUMxRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsdUNBQXVDLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0SSxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQW1CLEVBQUUsVUFBa0IsRUFBRSxnQkFBd0IsRUFBRSxXQUFnQjtRQUM1RixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsNkJBQTZCLGdCQUFnQixjQUFjLFdBQVcsYUFBYSxVQUFVLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzSixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHlCQUF5QixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsR0FBUTtRQUN4QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsZUFBZSxDQUFDLGVBQXVCO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDM0QsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkcsQ0FBQztJQUVELG1CQUFtQixDQUFDLGVBQXVCO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssZUFBZSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxlQUF1QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ2pFLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWtDO1FBQzNDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQXdCLEVBQUUsRUFBRTtZQUNwRyxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVksRUFBRSxJQUFTO1FBRXpDLElBQUksR0FBRyxHQUFVLEVBQUUsQ0FBQztRQUVwQixLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRTtZQUN2QixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBRXpCLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDeEI7U0FDRjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLEdBQVE7UUFDbEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDbEMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMkJBQTJCLENBQUMsR0FBUTtRQUNsQyxJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQscUJBQXFCLENBQUMsVUFBa0I7UUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQztRQUN0RCxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFVCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHVCQUF1QixDQUFDLFVBQWtCO1FBQ3hDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7UUFDbEQsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELHFCQUFxQixDQUFDLFFBQWdCO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7UUFDakMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRVQsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFhLEVBQUUsYUFBbUI7UUFDNUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDbEQsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQ3RELElBQUksYUFBYSxFQUFFLFNBQVMsRUFBRTtZQUM1QixVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1NBQ2hGO1FBQ0QsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUNsRCxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO2dCQUNwQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osVUFBVSxFQUFFLENBQUMsQ0FBQyxVQUFVO2dCQUN4QixLQUFLLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7Z0JBQ1osUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWlDO2dCQUMzQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtnQkFDNUIsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO2dCQUNwQixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7b0JBQ3ZDLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO29CQUMxQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUN0QyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFBO29CQUMxQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUMzQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO3FCQUM5QztvQkFDRCxPQUFPLENBQUMsQ0FBQztnQkFDWCxDQUFDLENBQUM7YUFDSCxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUE0QixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDakIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO2dCQUNaLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtnQkFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2dCQUNkLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSTtnQkFDWixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQWlDO2dCQUMzQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVc7Z0JBQzFCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTthQUNKLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxXQUFnQixFQUFFLGFBQWtCO1FBQ3pELE1BQU0sbUJBQW1CLEdBQWEsRUFBRSxDQUFBO1FBQ3hDLElBQUksY0FBYyxHQUFRLENBQUMsQ0FBQyxDQUFDO1FBQzdCLElBQUksV0FBVyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0IsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQU8sRUFBRSxFQUFFO2dCQUM5QixJQUFJLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDMUIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNyRixJQUFJLENBQUMsU0FBUyxJQUFJLGNBQWMsS0FBSyxDQUFDLENBQUMsRUFBRTt3QkFDdkMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtxQkFDcEM7eUJBQU0sSUFBRyxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQUU7d0JBQy9CLGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO3dCQUMzQixHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDbEY7aUJBQ0Y7WUFDSCxDQUFDLENBQUMsQ0FBQTtTQUNIO1FBQ0QsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5RixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFXO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO0lBQzNCLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLGNBQW1CLENBQUM7UUFDeEIsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFXLEVBQUUsRUFBRTtnQkFDdEMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQzFDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDekU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2pDO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixNQUFNLGFBQWEsR0FBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNuQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDckIsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO3dCQUNkLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7cUJBQ3ZCO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFZO1FBQ25DLElBQUksaUJBQWlCLEdBQVUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzlCLElBQUksRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLEVBQUU7Z0JBQ3hCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxpQkFBaUIsQ0FBQztJQUMzQixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBZ0IsRUFBRSxRQUFnQjtRQUNqRCxJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxRQUFRLEtBQUssT0FBTyxFQUFFO1lBQ3hCLFlBQVksR0FBRyxpQkFBaUIsQ0FBQztTQUNsQzthQUFNO1lBQ0wsWUFBWSxHQUFHLG9CQUFvQixDQUFDO1NBQ3JDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksWUFBWSxTQUFTLEVBQUUsV0FBVyxDQUFDO2FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFTLEVBQUUsTUFBVyxFQUFFLGlCQUF3QixFQUFFLFVBQWtCO1FBQ2xGLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7WUFDakQsSUFBSSxVQUFVLEtBQUssUUFBUSxFQUFFO2dCQUMzQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTt3QkFDNUMsTUFBTSxlQUFlLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBQ3pJLE1BQU0sWUFBWSxHQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUssRUFBRSxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3dCQUNsSSxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsZUFBZSxDQUFDO3dCQUMxQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDO3FCQUNwQztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7d0JBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztxQkFDdEU7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO29CQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTt3QkFDNUMsSUFBSSxjQUFjLEdBQVUsRUFBRSxDQUFDO3dCQUMvQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFOzRCQUMxRCxjQUFjLEdBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO3lCQUNyRjs2QkFBTTs0QkFDTCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7eUJBQ3BDO3dCQUNELE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO3dCQUMxSCxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztxQkFDL0c7b0JBQ0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFO3dCQUNwQixJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLENBQUM7cUJBQ3RFO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFVBQWUsRUFBRSxpQkFBd0IsRUFBRSxVQUFtQjtRQUNwRyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxJQUFJLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDM0IsTUFBTSxlQUFlLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDMUksTUFBTSxZQUFZLEdBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsQ0FBSyxFQUFFLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkksUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLGVBQWUsQ0FBQztZQUMzQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDO1lBRXBDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO2dCQUMvQyxJQUFJLFFBQVEsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pELElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7b0JBQzdELElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLENBQUMsQ0FBQztpQkFDM0U7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxJQUFJLGNBQWMsR0FBVSxFQUFFLENBQUM7WUFDL0IsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDN0QsY0FBYyxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUNyRjtpQkFBTTtnQkFDTCxjQUFjLEdBQUcsaUJBQWlCLENBQUM7YUFDcEM7WUFDRCxRQUFRLENBQUMsY0FBYyxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUM5SCxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztZQUVsSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlCLEVBQUUsRUFBRTtnQkFDL0MsSUFBSSxRQUFRLEdBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO29CQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2lCQUNqRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBbUI7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsS0FBSyxRQUFRLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLHNCQUFzQixXQUFXLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDM0csR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQzVELENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDZjtJQUNILENBQUM7SUFFRCxzQ0FBc0MsQ0FBQyxJQUFZLEVBQUUsV0FBbUI7UUFDdEUsSUFBSSxjQUFtQixDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7b0JBQ3JDLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQztpQkFDekU7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQW1CO1FBQ3hDLElBQUksY0FBbUIsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUN0QyxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO29CQUNyQyxjQUFjLEdBQUcsTUFBTSxDQUFDO2lCQUN6QjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsMEJBQTBCLENBQUMsV0FBbUIsRUFBRSxVQUFlO1FBQzdELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBaUIsRUFBRSxFQUFFO1lBQy9DLElBQUksUUFBUSxHQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6RCxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2FBQ2hEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsSUFBUyxFQUFFLE1BQVc7UUFDeEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUNqRCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtvQkFDNUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0MsT0FBTyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7aUJBQ2xFO2dCQUNELElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztpQkFDM0M7WUFDSCxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFFBQWM7UUFDeEMsTUFBTSxXQUFXLEdBQUc7WUFDaEIsT0FBTyxFQUFFO2dCQUNQLE9BQU8sRUFBRTtvQkFDUCxNQUFNLEVBQUUsQ0FBQztvQkFDVCxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQy9CLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQ3pCLGlCQUFpQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtpQkFDM0I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFdBQVcsRUFBRSxNQUFNO2lCQUNwQjtnQkFDRCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxNQUFNLEVBQUUsQ0FBQztnQkFDVCxNQUFNLEVBQUU7b0JBQ04sWUFBWTtvQkFDWixTQUFTO29CQUNULGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixjQUFjO2lCQUNmO2FBQ0Y7U0FDRixDQUFBO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3RFLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWpELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLFFBQWM7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRztZQUNsQixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFO29CQUNMLFNBQVMsRUFBRSxNQUFNO2lCQUNwQjtnQkFDRCxNQUFNLEVBQUU7b0JBQ0osWUFBWTtvQkFDWixXQUFXO2lCQUNaO2dCQUNILEtBQUssRUFBRSxDQUFDO2dCQUNSLE1BQU0sRUFBRTtvQkFDSixXQUFXO2lCQUNkO2dCQUNELE9BQU8sRUFBRTtvQkFDTCxhQUFhLEVBQUUsTUFBTTtpQkFDeEI7YUFDRjtTQUNGLENBQUE7UUFDRCxNQUFNLFdBQVcsR0FBb0MsRUFBRSxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDdkMsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFO29CQUNsQixXQUFXLENBQUMsSUFBSSxDQUFDO3dCQUNmLEVBQUUsRUFBRSxHQUFHLENBQUMsVUFBVTt3QkFDbEIsS0FBSyxFQUFFLENBQUM7cUJBQ1QsQ0FBQyxDQUFDO2lCQUNKO1lBQ0gsQ0FBQyxDQUFDLENBQUE7U0FDSDtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsWUFBWSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNyRSxHQUFHLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNmLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFDO2dCQUMxRSxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO2dCQUNuRCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDekMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQztvQkFDOUUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTt3QkFDL0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTs0QkFDckMsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNyRSxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtnQ0FDbkIsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQzs2QkFDaEQ7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7cUJBQ0o7aUJBQ0Y7YUFDRjtZQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDO1FBQ25DLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNqQixPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hELE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVM7UUFDcEIsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7WUFDeEUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQztnQkFDakgsT0FBTyxTQUFTLElBQUksQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0Y7UUFDRCxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7K0dBeGpCVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRlJBTUVXT1JLIH0gZnJvbSAnLi4vY29uc3RhbnRzL2RhdGEnO1xuaW1wb3J0IHsgTlNGcmFtZXdvcmsgfSBmcm9tICcuLi9tb2RlbHMvZnJhbWV3b3JrLm1vZGVsJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IElDb25uZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2Nvbm5lY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTG9jYWxDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4vbG9jYWwtY29ubmVjdGlvbi5zZXJ2aWNlJztcbi8qIHRzbGludDpkaXNhYmxlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuLy8gaW1wb3J0IHsgVHJlZUhpZXJhcmNoeVNlcnZpY2UgfSBmcm9tICcuLi90cmVlLWhpZXJhcmNoeS5zZXJ2aWNlJztcbi8qIHRzbGludDplbmFibGUgKi9cblxuY29uc3QgQVBJX0VORFBPSU5UID0ge1xuICBPUkdfVjFfU0VBUkNIOiAnL2FwaXMvcHJveGllcy92OC9vcmcvdjEvc2VhcmNoJyxcbiAgQ1JFQVRFX1RFUk1TOiBgL2FwaXMvcHJveGllcy92OC9hY3Rpb24vZnJhbWV3b3JrL3YzL3Rlcm0vY3JlYXRlYCxcbiAgVVBEQVRFX1RFUk1TOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvdGVybS91cGRhdGUvYCxcbiAgVVBEQVRFX0FTU09DSUFUSU9OOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvdGVybS91cGRhdGUvYCxcbiAgUFVCTElTSF9GUkFNRVdPUks6IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS9wdWJsaXNoL2AsXG4gIFJFVElSRV9UUkVNOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvdGVybS9yZXRpcmVgLFxuICBVUERBVEVfQ0FURUdPUlk6IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS9jYXRlZ29yeS91cGRhdGUvYCxcbiAgVVNFUlNfU0VBUkNIOiBgYXBpcy9wcm94aWVzL3Y4L3VzZXIvdjEvc2VhcmNoYFxufVxuXG5pbnRlcmZhY2UgTm90aWZpZXJUeXBlIHtcbiAgdHlwZTogJ3NlbGVjdCcgfCAnaW5zZXJ0JyB8ICd1cGRhdGUnIHwgJ2RlbGV0ZSc7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBkYXRhOiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZyYW1ld29ya1NlcnZpY2Uge1xuICBjYXRlZ29yaWVzSGFzaDogQmVoYXZpb3JTdWJqZWN0PE5TRnJhbWV3b3JrLklDYXRlZ29yeVtdIHwgW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSB8IFtdPihbXSk7XG4gIGlzRGF0YVVwZGF0ZWQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBjdXJyZW50U2VsZWN0aW9uOiBCZWhhdmlvclN1YmplY3Q8eyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSwgY2FyZFJlZj86IGFueSwgaXNVcGRhdGU/OmJvb2xlYW4gfSB8IG51bGw+ID0gXG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDx7IHR5cGU6IHN0cmluZywgZGF0YTogYW55LCBjYXJkUmVmPzogYW55LCBpc1VwZGF0ZT86Ym9vbGVhbiB9IHwgbnVsbD4obnVsbCk7XG4gIHRlcm1TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgYWZ0ZXJBZGRPckVkaXRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgbGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBOU0ZyYW1ld29yay5JQ29sdW1uVmlldz4oKTtcbiAgc2VsZWN0aW9uTGlzdCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIGluc2VydFVwZGF0ZURlbGV0ZU5vdGlmaWVyOiBCZWhhdmlvclN1YmplY3Q8Tm90aWZpZXJUeXBlIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE5vdGlmaWVyVHlwZSB8IG51bGw+KG51bGwpO1xuICBlbnZpcm9ubWVudDogYW55O1xuICBsaWJDb25maWchOiBJQ29ubmVjdGlvbjtcbiAgZnJhbWV3b3JrSWQhOiBzdHJpbmc7XG4gIHJvb3RDb25maWc6IGFueTtcbiAgcHJveGllc1BhdGggPSAnYXBpcy9wcm94aWVzL3Y4JztcbiAgY2FyZENsa0RhdGE6IGFueTtcbiAgQ3VycmVudENhcmRDbGsgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4obnVsbCk7XG4gIGNvbXBsZXRlUmVzcG9uc2U6IGFueTtcbiAgYWRkaXRpb25hbERhdGE6IGFueTsgLy8gQWRkIGEgcHJvcGVydHkgdG8gc3RvcmUgYWRkaXRpb25hbCBkYXRhXG4gIHVzZXJDb3VudERhdGE6IGFueTsgLy8gQWRkIGEgcHJvcGVydHkgdG8gc3RvcmUgdXNlciBjb3VudCBkYXRhXG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIGxvY2FsQ29uZmlnOiBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgIC8vIHByaXZhdGUgdHJlZUhpZXJhcmNoeVN2YzogVHJlZUhpZXJhcmNoeVNlcnZpY2VcbiAgKSB7fVxuXG4gIGdldEZyYW1ld29ya0luZm8oX29yZ0RhdGE/OmFueSwgX2NoaWxkT3JnRGF0YT86YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndGVybXMnKTtcbiAgICBpZiAodGhpcy5sb2NhbENvbmZpZy5jb25uZWN0aW9uVHlwZSA9PT0gJ29ubGluZScpIHtcbiAgICAgIGxldCB1cmwgPSBgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3JlYWQvYFxuICAgICAgaWYgKF9vcmdEYXRhKSB7XG4gICAgICAgIHVybCA9IHVybCArIF9vcmdEYXRhLm9yZ0hpZXJhcmNoeUZyYW1ld29ya0lkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdXJsID0gdXJsICsgdGhpcy5lbnZpcm9ubWVudC5mcmFtZXdvcmtOYW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dXJsfWAsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoZnJhbWV3b3JrUmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRnJhbWV3b3JrUmVzcG9uc2UgPSBmcmFtZXdvcmtSZXNwb25zZTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZFN0YXRlT3JnKF9vcmdEYXRhKS5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChvcmdMaXN0RGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbERhdGEgPSBvcmdMaXN0RGF0YT8ucmVzdWx0Py5yZXNwb25zZT8uY29udGVudCB8fCBbXTtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VXNlclBlck9yZygpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbEZyYW1ld29ya1Jlc3BvbnNlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcChhc3luYyAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgICAgICB0aGlzLmZvcm1hdGVEYXRhKHJlc3BvbnNlLCBfY2hpbGRPcmdEYXRhKTtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlUmVzcG9uc2UgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZXNldEFsbCgpO1xuICAgICAgICAgIHRoaXMubGlzdC5jbGVhcigpO1xuICAgICAgICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChbXSk7XG4gICAgICAgICAgdGhyb3cgJ0Vycm9yIGluIHNvdXJjZS4gRGV0YWlsczogJyArIGVycjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRBbGwoKTtcbiAgICAgIHRoaXMuZm9ybWF0ZURhdGEoRlJBTUVXT1JLKTtcbiAgICAgIHJldHVybiBvZihGUkFNRVdPUkspO1xuICAgIH1cbiAgfVxuXG4gIHJlYWRUZXJtcyhmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3Rlcm0vc2VhcmNoP2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBtYXAoKHJlczogYW55KSA9PiByZXMucmVzdWx0KSk7XG4gIH1cblxuICBjcmVhdGVUZXJtKGZyYW1ld29ya0lkOiBzdHJpbmcsIGNhdGVnb3J5SWQ6IHN0cmluZywgcmVxdWVzdEJvZHk6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS9mcmFtZXdvcmsvdjEvdGVybS9jcmVhdGU/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrSWR9JmNhdGVnb3J5PSR7Y2F0ZWdvcnlJZH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cbiBcbiAgY3JlYXRlVGVybXNXcmFwcGVyKGNhdGVnb3J5OiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9LyR7Y2F0ZWdvcnlJdGVtfS9jcmVhdGUvdGVybWAsIHJlcXVlc3RCb2R5KVxuICAgICAgLnBpcGUobWFwKHJlcyA9PiBfLmdldChyZXMsICdyZXN1bHQnKSkpO1xuICB9XG5cbiAgcmV0aXJlVGVybShmcmFtZXdvcmtJZDogc3RyaW5nLCBjYXRlZ29yeUlkOiBzdHJpbmcsIGNhdGVnb3J5VGVybUNvZGU6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCk7XG4gIH1cblxuICByZXRpcmVNdWx0aXBsZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCByZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3JldGlyZT9mcmFtZXdvcms9JHtmcmFtZXdvcmtJZH0mY2F0ZWdvcnk9JHtjYXRlZ29yeUlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZVRlcm0oZnJhbWV3b3JrSWQ6IHN0cmluZywgY2F0ZWdvcnlJZDogc3RyaW5nLCBjYXRlZ29yeVRlcm1Db2RlOiBzdHJpbmcsIHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS8ke2NhdGVnb3J5VGVybUNvZGV9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya0lkfSZjYXRlZ29yeT0ke2NhdGVnb3J5SWR9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgcHVibGlzaEZyYW1ld29yaygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgLyR7dGhpcy5wcm94aWVzUGF0aH0vZnJhbWV3b3JrL3YxL3B1Ymxpc2gvJHt0aGlzLmVudmlyb25tZW50LmZyYW1ld29ya05hbWV9YCwge30pO1xuICB9XG5cbiAgZ2V0VXVpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB1dWlkdjQoKTtcbiAgfVxuXG4gIHVwZGF0ZUVudmlyb25tZW50KGVudjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IGVudjtcbiAgfVxuXG4gIGdldEVudmlyb21lbnQoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldEZyYW1ld29ya0lkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWV3b3JrSWQ7XG4gIH1cblxuICBnZXROZXh0Q2F0ZWdvcnkoY3VycmVudENhdGVnb3J5OiBzdHJpbmcpOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkgfCBudWxsIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmZpbmRJbmRleCgoYTogTlNGcmFtZXdvcmsuSUNhdGVnb3J5KSA9PiB7XG4gICAgICByZXR1cm4gYS5jb2RlID09PSBjdXJyZW50Q2F0ZWdvcnk7XG4gICAgfSk7XG4gICAgbGV0IGNhdGVnb3J5TGVuZ3RoID0gdGhpcy5jYXRlZ29yaWVzSGFzaC5nZXRWYWx1ZSgpLmxlbmd0aDtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCArIDEpIDwgY2F0ZWdvcnlMZW5ndGggPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4ICsgMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDYXRlZ29yeShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSB8IG51bGwge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuY2F0ZWdvcmllc0hhc2gudmFsdWUuZmluZEluZGV4KChhOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpID0+IHtcbiAgICAgIHJldHVybiBhLmNvZGUgPT09IGN1cnJlbnRDYXRlZ29yeTtcbiAgICB9KTtcbiAgICByZXR1cm4gKGN1cnJlbnRJbmRleCAtIDEpID49IDAgPyB0aGlzLmNhdGVnb3JpZXNIYXNoLmdldFZhbHVlKClbY3VycmVudEluZGV4IC0gMV0gOiBudWxsO1xuICB9XG5cbiAgZ2V0UGFyZW50VGVybShjdXJyZW50Q2F0ZWdvcnk6IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5nZXRQcmV2aW91c0NhdGVnb3J5KGN1cnJlbnRDYXRlZ29yeSkgfHwgbnVsbDtcbiAgICByZXR1cm4gcGFyZW50ID8gdGhpcy5zZWxlY3Rpb25MaXN0LmdldChwYXJlbnQuY29kZSkgOiBudWxsO1xuICB9XG5cbiAgY2hpbGRDbGljayhldmVudDogeyB0eXBlOiBzdHJpbmcsIGRhdGE6IGFueSB9KTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50U2VsZWN0aW9uLm5leHQoZXZlbnQpO1xuICB9XG5cbiAgcmVzZXRBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5jYXRlZ29yaWVzSGFzaC5uZXh0KFtdKTtcbiAgICB0aGlzLmN1cnJlbnRTZWxlY3Rpb24ubmV4dChudWxsKTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuY2xlYXIoKTtcbiAgICB0aGlzLmxpc3QuY2xlYXIoKTtcbiAgfVxuXG4gIGlzTGFzdENvbHVtbihjb2xDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZSAmJiAodGhpcy5jYXRlZ29yaWVzSGFzaC52YWx1ZS5maW5kSW5kZXgoKGE6IE5TRnJhbWV3b3JrLklDYXRlZ29yeSkgPT4ge1xuICAgICAgcmV0dXJuIGEuY29kZSA9PT0gY29sQ29kZTtcbiAgICB9KSkgPT09ICh0aGlzLmNhdGVnb3JpZXNIYXNoLnZhbHVlLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmVtb3ZlSXRlbUZyb21BcnJheShhcnJheTogYW55W10sIGl0ZW06IGFueSk6IGFueVtdIHtcbiAgICAvKiBhc3NpZ24gYSBlbXB0eSBhcnJheSAqL1xuICAgIHZhciB0bXA6IGFueVtdID0gW107XG4gICAgLyogbG9vcCBvdmVyIGFsbCBhcnJheSBpdGVtcyAqL1xuICAgIGZvciAodmFyIGluZGV4IGluIGFycmF5KSB7XG4gICAgICBpZiAoYXJyYXlbaW5kZXhdICE9PSBpdGVtKSB7XG4gICAgICAgIC8qIHB1c2ggdG8gdGVtcG9yYXJ5IGFycmF5IGlmIG5vdCBsaWtlIGl0ZW0gKi9cbiAgICAgICAgdG1wLnB1c2goYXJyYXlbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogcmV0dXJuIHRoZSB0ZW1wb3JhcnkgYXJyYXkgKi9cbiAgICByZXR1cm4gdG1wO1xuICB9XG5cbiAgc2V0IHNldFRlcm0ocmVzOiBhbnkpIHtcbiAgICB0aGlzLnRlcm1TdWJqZWN0Lm5leHQocmVzKTtcbiAgICBsZXQgb2xkVGVybXMgPSB0aGlzLmdldFRlcm0gfHwgW107XG4gICAgb2xkVGVybXMucHVzaChyZXMpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0ZXJtcycsIEpTT04uc3RyaW5naWZ5KG9sZFRlcm1zKSk7XG4gIH1cblxuICBnZXQgZ2V0VGVybSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Rlcm1zJykgfHwgJ1tdJykgfHwgW107XG4gIH1cblxuICB1cGRhdGVBZnRlckFkZE9yRWRpdFN1YmplY3QocmVzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAocmVzKSB7XG4gICAgICB0aGlzLmFmdGVyQWRkT3JFZGl0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgfSBcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeVBhcmVudChwYXJlbnRDb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LnBhcmVudCAmJiB4LnBhcmVudC5jYXRlZ29yeSA9PT0gcGFyZW50Q29kZTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGEubWFwKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldExvY2FsVGVybXNCeUNhdGVnb3J5KHBhcmVudENvZGU6IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBmaWx0ZXJlZERhdGEgPSB0aGlzLmdldFRlcm0uZmlsdGVyKHggPT4ge1xuICAgICAgcmV0dXJuIHgudGVybSAmJiB4LnRlcm0uY2F0ZWdvcnkgPT09IHBhcmVudENvZGU7XG4gICAgfSkgfHwgW107XG5cbiAgICByZXR1cm4gZmlsdGVyZWREYXRhO1xuICB9XG5cbiAgZ2V0TG9jYWxUZXJtc0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgY29uc3QgZmlsdGVyZWREYXRhID0gdGhpcy5nZXRUZXJtLmZpbHRlcih4ID0+IHtcbiAgICAgIHJldHVybiB4LmNhdGVnb3J5ID09PSBjYXRlZ29yeTtcbiAgICB9KSB8fCBbXTtcblxuICAgIHJldHVybiBmaWx0ZXJlZERhdGE7XG4gIH1cblxuICBmb3JtYXRlRGF0YShyZXNwb25zZTogYW55LCBfY2hpbGRPcmdEYXRhPzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtJZCA9IHJlc3BvbnNlLnJlc3VsdC5mcmFtZXdvcmsuY29kZTsgXG4gICAgbGV0IGNhdGVnb3JpZXMgPSByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNhdGVnb3JpZXM7XG4gICAgaWYgKF9jaGlsZE9yZ0RhdGE/LnJvb3RPcmdJZCkge1xuICAgICAgY2F0ZWdvcmllcyA9IHRoaXMuZ2V0T3JnRnJvbUNoaWxkT253YXJkcyhjYXRlZ29yaWVzIHx8IFtdLCBfY2hpbGRPcmdEYXRhIHx8ICcnKVxuICAgIH1cbiAgICByZXNwb25zZS5yZXN1bHQuZnJhbWV3b3JrLmNhdGVnb3JpZXMgPSBjYXRlZ29yaWVzO1xuICAgIChjYXRlZ29yaWVzKS5mb3JFYWNoKChhOiBhbnksIF9pZHg6IG51bWJlcikgPT4ge1xuICAgICAgdGhpcy5saXN0LnNldChhLmNvZGUsIHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiAoX2lkeCArIDEpLFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHNlbGVjdGVkOiBhLnNlbGVjdGVkLFxuICAgICAgICBzdGF0dXM6IGEuc3RhdHVzIGFzIE5TRnJhbWV3b3JrLlROb2RlU3RhdHVzLFxuICAgICAgICBkZXNjcmlwdGlvbjogYS5kZXNjcmlwdGlvbixcbiAgICAgICAgdHJhbnNsYXRpb25zOiBhLnRyYW5zbGF0aW9ucyxcbiAgICAgICAgY2F0ZWdvcnk6IGEuY2F0ZWdvcnksXG4gICAgICAgIGFzc29jaWF0aW9uczogYS5hc3NvY2lhdGlvbnMsXG4gICAgICAgIGNvbmZpZzogdGhpcy5nZXRDb25maWcoYS5jb2RlKSxcbiAgICAgICAgY2hpbGRyZW46IChhLnRlcm1zIHx8IFtdKS5tYXAoKGM6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGMuYXNzb2NpYXRpb25zIHx8IFtdO1xuICAgICAgICAgIGNvbnN0IHRlbXBDb3VudCA9IHRoaXMuZ2V0VXNlckNvdW50KGMpXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihjLCB7IHVzZXJDb3VudDogdGVtcENvdW50IH0pXG4gICAgICAgICAgaWYgKGFzc29jaWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGMsIHsgY2hpbGRyZW46IGFzc29jaWF0aW9ucyB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGM7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBcbiAgICBjb25zdCBhbGxDYXRlZ29yaWVzOiBOU0ZyYW1ld29yay5JQ2F0ZWdvcnlbXSA9IFtdO1xuICAgIHRoaXMubGlzdC5mb3JFYWNoKGEgPT4ge1xuICAgICAgYWxsQ2F0ZWdvcmllcy5wdXNoKHtcbiAgICAgICAgY29kZTogYS5jb2RlLFxuICAgICAgICBpZGVudGlmaWVyOiBhLmlkZW50aWZpZXIsXG4gICAgICAgIGluZGV4OiBhLmluZGV4LFxuICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgIHN0YXR1czogYS5zdGF0dXMgYXMgTlNGcmFtZXdvcmsuVE5vZGVTdGF0dXMsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBhLmRlc2NyaXB0aW9uLFxuICAgICAgICB0cmFuc2xhdGlvbnM6IGEudHJhbnNsYXRpb25zLFxuICAgICAgfSBhcyBOU0ZyYW1ld29yay5JQ2F0ZWdvcnkpO1xuICAgIH0pO1xuICAgIHRoaXMuY2F0ZWdvcmllc0hhc2gubmV4dChhbGxDYXRlZ29yaWVzKTtcbiAgfVxuXG4gIGdldE9yZ0Zyb21DaGlsZE9ud2FyZHMoX2NhdGVnb3JpZXM6IGFueSwgX2NoaWxkT3JnRGF0YTogYW55KSB7XG4gICAgY29uc3QgY29sSW5kZXhUb0JlUmVtb3ZlZDogbnVtYmVyW10gPSBbXVxuICAgIGxldCB0ZXJtRm91bmRJbmRleDogYW55ID0gLTE7XG4gICAgaWYgKF9jYXRlZ29yaWVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBfY2F0ZWdvcmllcy5mb3JFYWNoKChlbGU6YW55KSA9PiB7XG4gICAgICAgIGlmIChlbGU/LnRlcm1zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgdGVybUZvdW5kID0gZWxlLnRlcm1zLmZpbmQoKHRlcm06IGFueSkgPT4gdGVybS5uYW1lID09PSBfY2hpbGRPcmdEYXRhLmNoYW5uZWwpO1xuICAgICAgICAgIGlmICghdGVybUZvdW5kICYmIHRlcm1Gb3VuZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgY29sSW5kZXhUb0JlUmVtb3ZlZC5wdXNoKGVsZS5pbmRleClcbiAgICAgICAgICB9IGVsc2UgaWYodGVybUZvdW5kSW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICB0ZXJtRm91bmRJbmRleCA9IGVsZS5pbmRleDtcbiAgICAgICAgICAgIGVsZS50ZXJtcyA9IGVsZS50ZXJtcy5maWx0ZXIoKHRlcm06IGFueSkgPT4gdGVybS5uYW1lID09PSBfY2hpbGRPcmdEYXRhLmNoYW5uZWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIF9jYXRlZ29yaWVzLmZpbHRlcigoY2F0ZWdvcnk6IGFueSkgPT4gIWNvbEluZGV4VG9CZVJlbW92ZWQuaW5jbHVkZXMoY2F0ZWdvcnkuaW5kZXgpKTtcbiAgfVxuXG4gIHJlbW92ZU9sZExpbmUoKTogdm9pZCB7XG4gICAgY29uc3QgZWxlcyA9IEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbGVhZGVyLWxpbmUnKSB8fCBbXSk7XG4gICAgaWYgKGVsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZWxlcy5mb3JFYWNoKGVsZSA9PiBlbGUucmVtb3ZlKCkpO1xuICAgIH1cbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWc6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucm9vdENvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGdldENvbmZpZyhjb2RlOiBzdHJpbmcpOiBhbnkge1xuICAgIGxldCBjYXRlZ29yeUNvbmZpZzogYW55O1xuICAgIGlmICh0aGlzLnJvb3RDb25maWcgJiYgdGhpcy5yb290Q29uZmlnWzBdKSB7XG4gICAgICB0aGlzLnJvb3RDb25maWcuZm9yRWFjaCgoY29uZmlnOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWcuY29uZmlnLmZpbmQoKG9iajogYW55KSA9PiBvYmouY2F0ZWdvcnkgPT0gY29kZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAoIWNhdGVnb3J5Q29uZmlnKSB7XG4gICAgICByZXR1cm4gdGhpcy5yb290Q29uZmlnLmNvbmZpZ1swXVxuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICBnZXRBbGxTZWxlY3RlZFRlcm1zKCk6IGFueVtdIHtcbiAgICBjb25zdCBzZWxlY3RlZFRlcm1zOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMubGlzdC5mb3JFYWNoKGwgPT4ge1xuICAgICAgaWYgKGwuY2hpbGRyZW4gJiYgbC5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgbC5jaGlsZHJlbi5mb3JFYWNoKGMgPT4ge1xuICAgICAgICAgIGlmIChjLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBzZWxlY3RlZFRlcm1zLnB1c2goYyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gc2VsZWN0ZWRUZXJtcztcbiAgfVxuXG4gIGdldFByZXZpb3VzU2VsZWN0ZWRUZXJtcyhjb2RlOiBzdHJpbmcpOiBhbnlbXSB7XG4gICAgbGV0IHByZXZTZWxlY3RlZFRlcm1zOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKHNsID0+IHtcbiAgICAgIGlmIChzbC5jYXRlZ29yeSAhPT0gY29kZSkge1xuICAgICAgICBwcmV2U2VsZWN0ZWRUZXJtcy5wdXNoKHNsKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcHJldlNlbGVjdGVkVGVybXM7XG4gIH1cblxuICBnZXRLY21TZWFyY2hMaXN0KHJlcXVlc3RCb2R5OiBhbnksIGNhdGVnb3J5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBjYXRlZ29yeUl0ZW06IHN0cmluZztcbiAgICBpZiAoY2F0ZWdvcnkgPT09ICd0aGVtZScpIHtcbiAgICAgIGNhdGVnb3J5SXRlbSA9ICdjb21wZXRlbmN5VGhlbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYXRlZ29yeUl0ZW0gPSAnY29tcGV0ZW5jeVN1YlRoZW1lJztcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAvJHt0aGlzLnByb3hpZXNQYXRofS8ke2NhdGVnb3J5SXRlbX0vc2VhcmNoYCwgcmVxdWVzdEJvZHkpXG4gICAgICAucGlwZShtYXAocmVzID0+IF8uZ2V0KHJlcywgJ3Jlc3VsdC5yZXN1bHQnKSkpO1xuICB9XG5cbiAgdXBkYXRlTG9jYWxMaXN0KGl0ZW06IGFueSwgcGFyZW50OiBhbnksIHNlbGVjdGVkVGVybUFycmF5OiBhbnlbXSwgdXBkYXRlVHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gJiYgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgaWYgKHVwZGF0ZVR5cGUgPT09ICdkZWxldGUnKSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4uZm9yRWFjaCgoaXRtRGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uTGlzdDogYW55ID0gXy5kaWZmZXJlbmNlV2l0aChpdG1EYXRhLmFzc29jaWF0aW9ucywgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgoaXRtRGF0YS5jaGlsZHJlbiwgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICAgICAgICBpdG1EYXRhWydhc3NvY2lhdGlvbnMnXSA9IGFzc29jaWF0aW9uTGlzdDtcbiAgICAgICAgICAgIGl0bURhdGFbJ2NoaWxkcmVuJ10gPSBjaGlsZHJlbkxpc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpdG1EYXRhLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdChpdG1EYXRhLCBwYXJlbnQsIHNlbGVjdGVkVGVybUFycmF5LCB1cGRhdGVUeXBlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoaXRtRGF0YS5pZGVudGlmaWVyID09PSBwYXJlbnQuaWRlbnRpZmllcikge1xuICAgICAgICAgICAgbGV0IGRpZmZlcmVuY2VEYXRhOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgaWYgKGl0bURhdGEgJiYgaXRtRGF0YS5jaGlsZHJlbiAmJiBpdG1EYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICBkaWZmZXJlbmNlRGF0YSAgPSBfLmRpZmZlcmVuY2VCeShzZWxlY3RlZFRlcm1BcnJheSwgaXRtRGF0YS5jaGlsZHJlbiwgJ2lkZW50aWZpZXInKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGRpZmZlcmVuY2VEYXRhID0gc2VsZWN0ZWRUZXJtQXJyYXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpdG1EYXRhWydhc3NvY2lhdGlvbnMnXSA9IGl0bURhdGEgJiYgaXRtRGF0YS5hc3NvY2lhdGlvbnMgPyBbLi4uaXRtRGF0YS5hc3NvY2lhdGlvbnMsIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgICAgICAgaXRtRGF0YVsnY2hpbGRyZW4nXSA9IGl0bURhdGEgJiYgaXRtRGF0YS5jaGlsZHJlbiA/IFsuLi5pdG1EYXRhLmNoaWxkcmVuLCAuLi5kaWZmZXJlbmNlRGF0YV0gOiBkaWZmZXJlbmNlRGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGl0bURhdGEsIHBhcmVudCwgc2VsZWN0ZWRUZXJtQXJyYXksIHVwZGF0ZVR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRnJhbWV3b3JrTGlzdChjb2x1bW5Db2RlOiBzdHJpbmcsIHBhcmVudERhdGE6IGFueSwgc2VsZWN0ZWRUZXJtQXJyYXk6IGFueVtdLCB1cGRhdGVUeXBlPzogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGxpc3REYXRhOiBhbnkgPSB0aGlzLmxpc3QuZ2V0KGNvbHVtbkNvZGUpO1xuICAgIGlmICh1cGRhdGVUeXBlID09PSAnZGVsZXRlJykge1xuICAgICAgY29uc3QgYXNzb2NpYXRpb25MaXN0OiBhbnkgPSBfLmRpZmZlcmVuY2VXaXRoKGxpc3REYXRhLmFzc29jaWF0aW9ucywgc2VsZWN0ZWRUZXJtQXJyYXksIChhOmFueSwgYjogYW55KSA9PiBhLmlkZW50aWZpZXIgPT09IGIuaWRlbnRpZmllcik7XG4gICAgICBjb25zdCBjaGlsZHJlbkxpc3Q6IGFueSA9IF8uZGlmZmVyZW5jZVdpdGgobGlzdERhdGEuY2hpbGRyZW4sIHNlbGVjdGVkVGVybUFycmF5LCAoYTphbnksIGI6IGFueSkgPT4gYS5pZGVudGlmaWVyID09PSBiLmlkZW50aWZpZXIpO1xuICAgICAgbGlzdERhdGFbJ2Fzc29jaWF0aW9ucyddID0gYXNzb2NpYXRpb25MaXN0O1xuICAgICAgbGlzdERhdGFbJ2NoaWxkcmVuJ10gPSBjaGlsZHJlbkxpc3Q7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGxpc3REYXRhLCBwYXJlbnREYXRhLCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZGlmZmVyZW5jZURhdGE6IGFueVtdID0gW107XG4gICAgICBpZiAobGlzdERhdGEgJiYgbGlzdERhdGEuY2hpbGRyZW4gJiYgbGlzdERhdGEuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGRpZmZlcmVuY2VEYXRhID0gXy5kaWZmZXJlbmNlQnkoc2VsZWN0ZWRUZXJtQXJyYXksIGxpc3REYXRhLmNoaWxkcmVuLCAnaWRlbnRpZmllcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGlmZmVyZW5jZURhdGEgPSBzZWxlY3RlZFRlcm1BcnJheTtcbiAgICAgIH1cbiAgICAgIGxpc3REYXRhWydhc3NvY2lhdGlvbnMnXSA9IGxpc3REYXRhICYmIGxpc3REYXRhLmFzc29jaWF0aW9ucyA/IFsuLi5saXN0RGF0YS5hc3NvY2lhdGlvbnMsIC4uLmRpZmZlcmVuY2VEYXRhXSA6IGRpZmZlcmVuY2VEYXRhO1xuICAgICAgbGlzdERhdGFbJ2NoaWxkcmVuJ10gPSBsaXN0RGF0YSAmJiBsaXN0RGF0YS5jaGlsZHJlbiA/IFsuLi5saXN0RGF0YS5jaGlsZHJlbiwgLi4uZGlmZmVyZW5jZURhdGFdIDogZGlmZmVyZW5jZURhdGE7XG5cbiAgICAgIHRoaXMuc2VsZWN0aW9uTGlzdC5mb3JFYWNoKChzZWxlY3RlZERhdGE6IGFueSkgPT4ge1xuICAgICAgICBsZXQgbGlzdERhdGE6IGFueSA9IHRoaXMubGlzdC5nZXQoc2VsZWN0ZWREYXRhLmNhdGVnb3J5KTtcbiAgICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlTG9jYWxMaXN0KGxpc3REYXRhLCBwYXJlbnREYXRhLCBzZWxlY3RlZFRlcm1BcnJheSwgdXBkYXRlVHlwZSB8fCAnJyk7XG4gICAgICAgIH1cbiAgICAgIH0pOyBcbiAgICB9XG4gIH1cblxuICBnZXRGcmFtZXdvcmtSZWFkKGZyYW1lV29ya0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICh0aGlzLmxvY2FsQ29uZmlnLmNvbm5lY3Rpb25UeXBlID09PSAnb25saW5lJykge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYC8ke3RoaXMucHJveGllc1BhdGh9L2ZyYW1ld29yay92MS9yZWFkLyR7ZnJhbWVXb3JrSWR9YCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSkucGlwZShcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiBfLmdldChyZXNwb25zZSwgJ3Jlc3VsdC5mcmFtZXdvcmsnKSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29uZmlnT2ZDYXRlZ29yeUNvbmZpZ0J5RnJhbWVXb3JrSWQoY29kZTogc3RyaW5nLCBmcmFtZXdvcmtJZDogc3RyaW5nKTogYW55IHtcbiAgICBsZXQgY2F0ZWdvcnlDb25maWc6IGFueTtcbiAgICBpZiAodGhpcy5yb290Q29uZmlnICYmIHRoaXMucm9vdENvbmZpZ1swXSkge1xuICAgICAgdGhpcy5yb290Q29uZmlnLmZvckVhY2goKGNvbmZpZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChmcmFtZXdvcmtJZCA9PSBjb25maWcuZnJhbWV3b3JrSWQpIHtcbiAgICAgICAgICBjYXRlZ29yeUNvbmZpZyA9IGNvbmZpZy5jb25maWcuZmluZCgob2JqOiBhbnkpID0+IG9iai5jYXRlZ29yeSA9PSBjb2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjYXRlZ29yeUNvbmZpZztcbiAgfVxuXG4gIGdldENvbmZpZ0J5RnJhbWVXb3JrSWQoZnJhbWV3b3JrSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgbGV0IGNhdGVnb3J5Q29uZmlnOiBhbnk7XG4gICAgaWYgKHRoaXMucm9vdENvbmZpZyAmJiB0aGlzLnJvb3RDb25maWdbMF0pIHtcbiAgICAgIHRoaXMucm9vdENvbmZpZy5mb3JFYWNoKChjb25maWc6IGFueSkgPT4ge1xuICAgICAgICBpZiAoZnJhbWV3b3JrSWQgPT0gY29uZmlnLmZyYW1ld29ya0lkKSB7XG4gICAgICAgICAgY2F0ZWdvcnlDb25maWcgPSBjb25maWc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlDb25maWc7XG4gIH1cblxuICB1cGRhdGVGdWxsVGVybURhdGFMb2NhbE1hcChfY29sdW1uQ29kZTogc3RyaW5nLCBwYXJlbnREYXRhOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QuZm9yRWFjaCgoc2VsZWN0ZWREYXRhOiBhbnkpID0+IHtcbiAgICAgIGxldCBsaXN0RGF0YTogYW55ID0gdGhpcy5saXN0LmdldChzZWxlY3RlZERhdGEuY2F0ZWdvcnkpO1xuICAgICAgaWYgKGxpc3REYXRhICYmIGxpc3REYXRhLmNoaWxkcmVuICYmIGxpc3REYXRhLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdFRlcm0obGlzdERhdGEsIHBhcmVudERhdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTG9jYWxMaXN0VGVybShpdGVtOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKGl0ZW0gJiYgaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgaXRlbS5jaGlsZHJlbi5mb3JFYWNoKChpdG1EYXRhOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGl0bURhdGEuaWRlbnRpZmllciA9PT0gcGFyZW50LmlkZW50aWZpZXIpIHtcbiAgICAgICAgICBpdG1EYXRhWydkZXNjcmlwdGlvbiddID0gcGFyZW50WydkZXNjcmlwdGlvbiddO1xuICAgICAgICAgIGl0bURhdGFbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJ10gPSBwYXJlbnRbJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJ107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0bURhdGEuY2hpbGRyZW4pIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2FsTGlzdFRlcm0oaXRtRGF0YSwgcGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRTZWxlY3RlZFN0YXRlT3JnKF9vcmdEYXRhPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgcmVxdWVzdDoge1xuICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgIHN0YXR1czogMSxcbiAgICAgICAgICAgIG1pbmlzdHJ5T3JTdGF0ZVR5cGU6IChfb3JnRGF0YSkgP1xuICAgICAgICAgICAgICBfb3JnRGF0YS5zYk9yZ1R5cGUgOiAnJyxcbiAgICAgICAgICAgIG1pbmlzdHJ5T3JTdGF0ZUlkOiAoX29yZ0RhdGEpID8gXG4gICAgICAgICAgICAgIF9vcmdEYXRhLmlkZW50aWZpZXIgOiAnJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc29ydF9ieToge1xuICAgICAgICAgICAgY3JlYXRlZERhdGU6IFwiZGVzY1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsaW1pdDogOTk5OSxcbiAgICAgICAgICBvZmZzZXQ6IDAsXG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAnb3JnTmFtZScsXG4gICAgICAgICAgICAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgJ3BhcmVudE9yZ05hbWUnLFxuICAgICAgICAgICAgJ21pbmlzdHJ5T3JTdGF0ZUlkJyxcbiAgICAgICAgICAgICdtaW5pc3RyeU9yU3RhdGVUeXBlJyxcbiAgICAgICAgICAgICdtaW5pc3RyeU9yU3RhdGVOYW1lJywgXG4gICAgICAgICAgICAnc2JPcmdTdWJUeXBlJ1xuICAgICAgICAgIF1cbiAgICAgICAgfVxuICAgICAgfSAgICBcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULk9SR19WMV9TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgT3JnIGRhdGE6JywgZXJyb3IpO1xuICAgICAgICAvLyBSZXR1cm4gZW1wdHkgZGF0YSB0byBjb250aW51ZSB0aGUgY2hhaW4gZXZlbiBpZiB0aGlzIEFQSSBmYWlsc1xuICAgICAgICByZXR1cm4gb2Yoe30pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRVc2VyUGVyT3JnKF9vcmdEYXRhPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBvcmdJZHMgPSB0aGlzLmFkZGl0aW9uYWxEYXRhLm1hcCgob3JnOiBhbnkpID0+IG9yZy5pZGVudGlmaWVyKTtcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcbiAgICAgIHJlcXVlc3Q6IHtcbiAgICAgICAgZmlsdGVyczoge1xuICAgICAgICAgICAgcm9vdE9yZ0lkOiBvcmdJZHNcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICAnaWRlbnRpZmllcicsXG4gICAgICAgICAgICAncm9vdE9yZ0lkJ1xuICAgICAgICAgIF0sXG4gICAgICAgIGxpbWl0OiAxLFxuICAgICAgICBmYWNldHM6IFtcbiAgICAgICAgICAgIFwicm9vdE9yZ0lkXCJcbiAgICAgICAgXSxcbiAgICAgICAgc29ydF9ieToge1xuICAgICAgICAgICAgXCJjcmVhdGVkRGF0ZVwiOiBcImRlc2NcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG9yZ0lkQ291bnRzOiB7IGlkOiBzdHJpbmcsIGNvdW50OiBudW1iZXIgfVtdID0gW107XG4gICAgaWYgKHRoaXMuYWRkaXRpb25hbERhdGEgJiYgdGhpcy5hZGRpdGlvbmFsRGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxEYXRhLmZvckVhY2goKG9yZzogYW55KSA9PiB7XG4gICAgICAgIGlmIChvcmcuaWRlbnRpZmllcikge1xuICAgICAgICAgIG9yZ0lkQ291bnRzLnB1c2goe1xuICAgICAgICAgICAgaWQ6IG9yZy5pZGVudGlmaWVyLFxuICAgICAgICAgICAgY291bnQ6IDAgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuVVNFUlNfU0VBUkNIfWAsIHJlcXVlc3RCb2R5KS5waXBlKFxuICAgICAgbWFwKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzICYmIHJlcy5yZXN1bHQgJiYgcmVzLnJlc3VsdC5yZXNwb25zZSAmJiByZXMucmVzdWx0LnJlc3BvbnNlLmNvdW50KXtcbiAgICAgICAgY29uc3QgZmFjZXRzVmFsdWUgPSByZXMucmVzdWx0LnJlc3BvbnNlLmZhY2V0cyB8fCBbXTsgIFxuICAgICAgICAgIGlmIChmYWNldHNWYWx1ZSAmJiBmYWNldHNWYWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBvcmdGYWNldCA9IGZhY2V0c1ZhbHVlLmZpbmQoKGZhY2V0OiBhbnkpID0+IGZhY2V0Lm5hbWUgPT09ICdyb290T3JnSWQnKTtcbiAgICAgICAgICAgIGlmIChvcmdGYWNldCAmJiBvcmdGYWNldC52YWx1ZXMpIHtcbiAgICAgICAgICAgICAgb3JnRmFjZXQudmFsdWVzLmZvckVhY2goKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvcmdJbmRleCA9IG9yZ0lkQ291bnRzLmZpbmRJbmRleChvcmcgPT4gb3JnLmlkID09PSB2YWx1ZS5uYW1lKTtcbiAgICAgICAgICAgICAgICBpZiAob3JnSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICBvcmdJZENvdW50c1tvcmdJbmRleF0uY291bnQgPSB2YWx1ZS5jb3VudCB8fCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudXNlckNvdW50RGF0YSA9IG9yZ0lkQ291bnRzO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgdXNlciBjb3VudCBkYXRhOicsIGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG9mKHt9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGdldFVzZXJDb3VudCh0ZXJtOiBhbnkpOiBudW1iZXIge1xuICAgIGlmICh0ZXJtICYmIHRlcm0uYWRkaXRpb25hbFByb3BlcnRpZXMgJiYgdGVybS5hZGRpdGlvbmFsUHJvcGVydGllcy5vcmdJZCkge1xuICAgICAgaWYgKHRoaXMudXNlckNvdW50RGF0YSAmJiB0aGlzLnVzZXJDb3VudERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB1c2VyQ291bnQgPSB0aGlzLnVzZXJDb3VudERhdGEuZmlsdGVyKCh1c2VyOmFueSkgPT4gdXNlci5pZCA9PT0gdGVybS5hZGRpdGlvbmFsUHJvcGVydGllcy5vcmdJZClbMF0/LmNvdW50O1xuICAgICAgICByZXR1cm4gdXNlckNvdW50IHx8IDA7XG4gICAgICB9XG4gICAgfSBcbiAgICByZXR1cm4gMFxuICB9XG59Il19
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
21
21
  }], taxonomyConfig: [{
22
22
  type: Input
23
23
  }] } });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekQsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FWVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxSUNSbkMsaUNBQStCOzs0RkRRbEIsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjt1R0FLdEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtdjItdHJlZS1oaWVyYXJjaHknLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBlbnZpcm9ubWVudDogYW55O1xuICBASW5wdXQoKSB0YXhvbm9teUNvbmZpZzogYW55O1xuICBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmcmFtZXdvcmtTZXJ2aWNlOiBGcmFtZXdvcmtTZXJ2aWNlKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mcmFtZXdvcmtTZXJ2aWNlLnVwZGF0ZUVudmlyb25tZW50KHRoaXMuZW52aXJvbm1lbnQpO1xuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS5zZXRDb25maWcodGhpcy50YXhvbm9teUNvbmZpZyk7XG4gIH1cbn1cbiIsIjxyb3V0ZXItb3V0bGV0Pjwvcm91dGVyLW91dGxldD4iXX0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7Ozs7QUFRekQsTUFBTSxPQUFPLHNCQUFzQjtJQUlqQyxZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN0RCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQzsrR0FWVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixxSUNSbkMsaUNBQStCOzs0RkRRbEIsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLHFCQUFxQjt1R0FLdEIsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2QtdjItdHJlZS1oaWVyYXJjaHknLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1oaWVyYXJjaHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlSGllcmFyY2h5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZW52aXJvbm1lbnQ6IGFueTtcbiAgQElucHV0KCkgdGF4b25vbXlDb25maWc6IGFueTtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZnJhbWV3b3JrU2VydmljZTogRnJhbWV3b3JrU2VydmljZSkgeyBcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZnJhbWV3b3JrU2VydmljZS51cGRhdGVFbnZpcm9ubWVudCh0aGlzLmVudmlyb25tZW50KTtcbiAgICB0aGlzLmZyYW1ld29ya1NlcnZpY2Uuc2V0Q29uZmlnKHRoaXMudGF4b25vbXlDb25maWcpO1xuICB9XG59XG4iLCI8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+Il19
@@ -29,6 +29,8 @@ import { OdcsService } from './services/odcs.service';
29
29
  import { ENVIRONMENT } from './services/connection.service';
30
30
  import { OrgHierarchyAddModalComponent } from './components/org-hierarchy-add-modal/org-hierarchy-add-modal.component';
31
31
  import { TreeHierarchyService } from './tree-hierarchy.service';
32
+ import { CategoryEditModuleComponent } from './components/category-edit/category-edit-module/category-edit-module.component';
33
+ import { MatChipsModule } from '@angular/material/chips';
32
34
  import * as i0 from "@angular/core";
33
35
  export class TreeHierarchyModule {
34
36
  static forRoot(config) {
@@ -62,9 +64,11 @@ export class TreeHierarchyModule {
62
64
  OrderByPipe,
63
65
  ConforamtionPopupComponent,
64
66
  CreateTermFromFrameworkComponent,
65
- OrgHierarchyAddModalComponent], imports: [CommonModule,
67
+ OrgHierarchyAddModalComponent,
68
+ CategoryEditModuleComponent], imports: [CommonModule,
66
69
  MaterialModule,
67
- TreeEditorRoutingModule], exports: [TreeHierarchyComponent,
70
+ TreeEditorRoutingModule,
71
+ MatChipsModule], exports: [TreeHierarchyComponent,
68
72
  CreateCategoriesComponent,
69
73
  ConfigFrameworkComponent,
70
74
  TreeViewComponent,
@@ -82,7 +86,8 @@ export class TreeHierarchyModule {
82
86
  TreeHierarchyService
83
87
  ], imports: [CommonModule,
84
88
  MaterialModule,
85
- TreeEditorRoutingModule] }); }
89
+ TreeEditorRoutingModule,
90
+ MatChipsModule] }); }
86
91
  }
87
92
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyModule, decorators: [{
88
93
  type: NgModule,
@@ -108,11 +113,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
108
113
  ConforamtionPopupComponent,
109
114
  CreateTermFromFrameworkComponent,
110
115
  OrgHierarchyAddModalComponent,
116
+ CategoryEditModuleComponent,
111
117
  ],
112
118
  imports: [
113
119
  CommonModule,
114
120
  MaterialModule,
115
121
  TreeEditorRoutingModule,
122
+ MatChipsModule
116
123
  ],
117
124
  providers: [
118
125
  DatePipe,
@@ -135,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
135
142
  ]
136
143
  }]
137
144
  }] });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxD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bUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3FCQUM5QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLHVCQUF1QjtxQkFDeEI7b0JBQ0QsU0FBUyxFQUFFO3dCQUNULFFBQVE7d0JBQ1IsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxFQUFFO3dCQUVoRixFQUFFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUU7d0JBQ3hFLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsRUFBRTt3QkFDcEUsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHNCQUFzQjt3QkFDdEIsV0FBVzt3QkFDWCxvQkFBb0I7cUJBQ3JCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxzQkFBc0I7d0JBQ3RCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsMEJBQTBCO3FCQUMzQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyZWVIaWVyYXJjaHlDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XG5pbXBvcnQgeyBBY3Rpb25CYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWN0aW9uLWJhci9hY3Rpb24tYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hcHByb3ZhbC9hcHByb3ZhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92ZVZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwcm92ZS12aWV3L2FwcHJvdmUtdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2F0ZWdvcmllcy1wcmV2aWV3L2NhdGVnb3JpZXMtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZm9yYW10aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY29uZm9yYW10aW9uLXBvcHVwL2NvbmZvcmFtdGlvbi1wb3B1cC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29ubmVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Nvbm5lY3Rvci9jb25uZWN0b3IuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZUNhdGVnb3JpZXNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY3JlYXRlLWNhdGVnb3JpZXMvY3JlYXRlLWNhdGVnb3JpZXMuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrL2NyZWF0ZS10ZXJtLWZyb20tZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVUZXJtQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS10ZXJtL2NyZWF0ZS10ZXJtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQZW5kaW5nQXBwcm92YWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcGVuZGluZy1hcHByb3ZhbC9wZW5kaW5nLWFwcHJvdmFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlQ29sdW1uVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLWNvbHVtbi12aWV3L3RyZWUtY29sdW1uLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZWVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IFRlcm1DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3Rlcm0tY2FyZC90ZXJtLWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVycy9jb25maWctZnJhbWV3b3JrL2NvbmZpZy1mcmFtZXdvcmsuY29tcG9uZW50JztcbmltcG9ydCB7IERhc2hib2FyZENvbXBvbmVudCB9IGZyb20gJy4vY29udGFpbmVycy9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcmRlckJ5UGlwZSB9IGZyb20gJy4vcGlwZXMvb3JkZXItYnkucGlwZSc7XG5pbXBvcnQgeyBUcmVlRWRpdG9yUm91dGluZ01vZHVsZSB9IGZyb20gJy4vdHJlZS1oaWVyYXJjaHktcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNQVRfU05BQ0tfQkFSX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBNQVRfVEFCU19DT05GSUcgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcbmltcG9ydCB7IEZyYW1ld29ya1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2ZyYW1ld29yay5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3RvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbm5lY3Rvci5zZXJ2aWNlJztcbmltcG9ydCB7IExvY2FsQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2xvY2FsLWNvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPZGNzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvb2Rjcy5zZXJ2aWNlJztcbmltcG9ydCB7IElDb25uZWN0aW9uVHlwZSB9IGZyb20gJy4vbW9kZWxzL2Nvbm5lY3Rpb24tdHlwZS5tb2RlbCc7XG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4vc2VydmljZXMvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ0hpZXJhcmNoeUFkZE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsL29yZy1oaWVyYXJjaHktYWRkLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlSGllcmFyY2h5U2VydmljZSB9IGZyb20gJy4vdHJlZS1oaWVyYXJjaHkuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFRyZWVIaWVyYXJjaHlDb21wb25lbnQsXG4gICAgRGFzaGJvYXJkQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcbiAgICBUZXJtQ2FyZENvbXBvbmVudCxcbiAgICBUcmVlQ29sdW1uVmlld0NvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudCxcbiAgICBDcmVhdGVUZXJtQ29tcG9uZW50LFxuICAgIENvbm5lY3RvckNvbXBvbmVudCxcbiAgICBBY3Rpb25CYXJDb21wb25lbnQsXG4gICAgQXBwcm92YWxDb21wb25lbnQsXG4gICAgUGVuZGluZ0FwcHJvdmFsQ29tcG9uZW50LFxuICAgIEFwcHJvdmVWaWV3Q29tcG9uZW50LFxuICAgIE9yZGVyQnlQaXBlLFxuICAgIENvbmZvcmFtdGlvblBvcHVwQ29tcG9uZW50LFxuICAgIENyZWF0ZVRlcm1Gcm9tRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgIE9yZ0hpZXJhcmNoeUFkZE1vZGFsQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIFRyZWVFZGl0b3JSb3V0aW5nTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBEYXRlUGlwZSxcbiAgICB7IHByb3ZpZGU6IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgYXBwZWFyYW5jZTogJ291dGxpbmUnIH0gfSxcbiAgICAvLyB7IHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogVG9rZW5JbnRlcmNlcHRvclNlcnZpY2UsIG11bHRpOiB0cnVlIH0sXG4gICAgeyBwcm92aWRlOiBNQVRfU05BQ0tfQkFSX0RFRkFVTFRfT1BUSU9OUywgdXNlVmFsdWU6IHsgZHVyYXRpb246IDIwMDAgfSB9LFxuICAgIHsgcHJvdmlkZTogTUFUX1RBQlNfQ09ORklHLCB1c2VWYWx1ZTogeyBhbmltYXRpb25EdXJhdGlvbjogJzBtcycgfSB9LFxuICAgIEZyYW1ld29ya1NlcnZpY2UsXG4gICAgQ29ubmVjdG9yU2VydmljZSxcbiAgICBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgIE9kY3NTZXJ2aWNlLFxuICAgIFRyZWVIaWVyYXJjaHlTZXJ2aWNlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBUcmVlSGllcmFyY2h5Q29tcG9uZW50LFxuICAgIENyZWF0ZUNhdGVnb3JpZXNDb21wb25lbnQsXG4gICAgQ29uZmlnRnJhbWV3b3JrQ29tcG9uZW50LFxuICAgIFRyZWVWaWV3Q29tcG9uZW50LFxuICAgIFRlcm1DYXJkQ29tcG9uZW50LFxuICAgIENhdGVnb3JpZXNQcmV2aWV3Q29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgVHJlZUhpZXJhcmNoeU1vZHVsZSB7IFxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IElDb25uZWN0aW9uVHlwZSk6IE1vZHVsZVdpdGhQcm92aWRlcnM8VHJlZUhpZXJhcmNoeU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogVHJlZUhpZXJhcmNoeU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAvLyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlQsXG4gICAgICAgICAgdXNlVmFsdWU6IGNvbmZpZ1xuICAgICAgICB9XG4gICAgICBdXG4gICAgfTtcbiAgfVxufSJdfQ==
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyeS9zdW5iaXJkLWNiL3RyZWUtaGllcmFyY2h5L3NyYy9saWIvdHJlZS1oaWVyYXJjaHkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ2hJLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRDQUE0QyxD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QWtCO3dCQUNsQix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsd0JBQXdCO3dCQUN4QixpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7d0JBQ3hCLG9CQUFvQjt3QkFDcEIsV0FBVzt3QkFDWCwwQkFBMEI7d0JBQzFCLGdDQUFnQzt3QkFDaEMsNkJBQTZCO3dCQUM3QiwyQkFBMkI7cUJBQzVCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixjQUFjO3FCQUNmO29CQUNELFNBQVMsRUFBRTt3QkFDVCxRQUFRO3dCQUNSLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsRUFBRTt3QkFFaEYsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUN4RSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQ3BFLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7d0JBQ3RCLFdBQVc7d0JBQ1gsb0JBQW9CO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asc0JBQXNCO3dCQUN0Qix5QkFBeUI7d0JBQ3pCLHdCQUF3Qjt3QkFDeEIsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLDBCQUEwQjtxQkFDM0I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmVlSGllcmFyY2h5Q29tcG9uZW50IH0gZnJvbSAnLi90cmVlLWhpZXJhcmNoeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0ZXJpYWxNb2R1bGUgfSBmcm9tICcuLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgQWN0aW9uQmFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FjdGlvbi1iYXIvYWN0aW9uLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwcm92YWxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXBwcm92YWwvYXBwcm92YWwuY29tcG9uZW50JztcbmltcG9ydCB7IEFwcHJvdmVWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FwcHJvdmUtdmlldy9hcHByb3ZlLXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGVnb3JpZXNQcmV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhdGVnb3JpZXMtcHJldmlldy9jYXRlZ29yaWVzLXByZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IENvbmZvcmFtdGlvblBvcHVwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbmZvcmFtdGlvbi1wb3B1cC9jb25mb3JhbXRpb24tcG9wdXAuY29tcG9uZW50JztcbmltcG9ydCB7IENvbm5lY3RvckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jb25uZWN0b3IvY29ubmVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NyZWF0ZS1jYXRlZ29yaWVzL2NyZWF0ZS1jYXRlZ29yaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcmVhdGVUZXJtRnJvbUZyYW1ld29ya0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtdGVybS1mcm9tLWZyYW1ld29yay9jcmVhdGUtdGVybS1mcm9tLWZyYW1ld29yay5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3JlYXRlVGVybUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jcmVhdGUtdGVybS9jcmVhdGUtdGVybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgUGVuZGluZ0FwcHJvdmFsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3BlbmRpbmctYXBwcm92YWwvcGVuZGluZy1hcHByb3ZhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZUNvbHVtblZpZXdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdHJlZS1jb2x1bW4tdmlldy90cmVlLWNvbHVtbi12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUcmVlVmlld0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90cmVlLXZpZXcvdHJlZS12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXJtQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90ZXJtLWNhcmQvdGVybS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maWdGcmFtZXdvcmtDb21wb25lbnQgfSBmcm9tICcuL2NvbnRhaW5lcnMvY29uZmlnLWZyYW1ld29yay9jb25maWctZnJhbWV3b3JrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXNoYm9hcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRhaW5lcnMvZGFzaGJvYXJkL2Rhc2hib2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgT3JkZXJCeVBpcGUgfSBmcm9tICcuL3BpcGVzL29yZGVyLWJ5LnBpcGUnO1xuaW1wb3J0IHsgVHJlZUVkaXRvclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTUFUX1NOQUNLX0JBUl9ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTUFUX1RBQlNfQ09ORklHIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBGcmFtZXdvcmtTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9mcmFtZXdvcmsuc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0b3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBMb2NhbENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9sb2NhbC1jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2Rjc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL29kY3Muc2VydmljZSc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvblR5cGUgfSBmcm9tICcuL21vZGVscy9jb25uZWN0aW9uLXR5cGUubW9kZWwnO1xuaW1wb3J0IHsgRU5WSVJPTk1FTlQgfSBmcm9tICcuL3NlcnZpY2VzL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC9vcmctaGllcmFyY2h5LWFkZC1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJlZUhpZXJhcmNoeVNlcnZpY2UgfSBmcm9tICcuL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2F0ZWdvcnlFZGl0TW9kdWxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhdGVnb3J5LWVkaXQvY2F0ZWdvcnktZWRpdC1tb2R1bGUvY2F0ZWdvcnktZWRpdC1tb2R1bGUuY29tcG9uZW50JztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBUcmVlSGllcmFyY2h5Q29tcG9uZW50LFxuICAgIERhc2hib2FyZENvbXBvbmVudCxcbiAgICBDb25maWdGcmFtZXdvcmtDb21wb25lbnQsXG4gICAgQ3JlYXRlQ2F0ZWdvcmllc0NvbXBvbmVudCxcbiAgICBDb25maWdGcmFtZXdvcmtDb21wb25lbnQsXG4gICAgVHJlZVZpZXdDb21wb25lbnQsXG4gICAgVGVybUNhcmRDb21wb25lbnQsXG4gICAgVHJlZUNvbHVtblZpZXdDb21wb25lbnQsXG4gICAgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQsXG4gICAgQ2F0ZWdvcmllc1ByZXZpZXdDb21wb25lbnQsXG4gICAgQ3JlYXRlVGVybUNvbXBvbmVudCxcbiAgICBDb25uZWN0b3JDb21wb25lbnQsXG4gICAgQWN0aW9uQmFyQ29tcG9uZW50LFxuICAgIEFwcHJvdmFsQ29tcG9uZW50LFxuICAgIFBlbmRpbmdBcHByb3ZhbENvbXBvbmVudCxcbiAgICBBcHByb3ZlVmlld0NvbXBvbmVudCxcbiAgICBPcmRlckJ5UGlwZSxcbiAgICBDb25mb3JhbXRpb25Qb3B1cENvbXBvbmVudCxcbiAgICBDcmVhdGVUZXJtRnJvbUZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBPcmdIaWVyYXJjaHlBZGRNb2RhbENvbXBvbmVudCxcbiAgICBDYXRlZ29yeUVkaXRNb2R1bGVDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgVHJlZUVkaXRvclJvdXRpbmdNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgRGF0ZVBpcGUsXG4gICAgeyBwcm92aWRlOiBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGFwcGVhcmFuY2U6ICdvdXRsaW5lJyB9IH0sXG4gICAgLy8geyBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IFRva2VuSW50ZXJjZXB0b3JTZXJ2aWNlLCBtdWx0aTogdHJ1ZSB9LFxuICAgIHsgcHJvdmlkZTogTUFUX1NOQUNLX0JBUl9ERUZBVUxUX09QVElPTlMsIHVzZVZhbHVlOiB7IGR1cmF0aW9uOiAyMDAwIH0gfSxcbiAgICB7IHByb3ZpZGU6IE1BVF9UQUJTX0NPTkZJRywgdXNlVmFsdWU6IHsgYW5pbWF0aW9uRHVyYXRpb246ICcwbXMnIH0gfSxcbiAgICBGcmFtZXdvcmtTZXJ2aWNlLFxuICAgIENvbm5lY3RvclNlcnZpY2UsXG4gICAgTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICBPZGNzU2VydmljZSxcbiAgICBUcmVlSGllcmFyY2h5U2VydmljZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVHJlZUhpZXJhcmNoeUNvbXBvbmVudCxcbiAgICBDcmVhdGVDYXRlZ29yaWVzQ29tcG9uZW50LFxuICAgIENvbmZpZ0ZyYW1ld29ya0NvbXBvbmVudCxcbiAgICBUcmVlVmlld0NvbXBvbmVudCxcbiAgICBUZXJtQ2FyZENvbXBvbmVudCxcbiAgICBDYXRlZ29yaWVzUHJldmlld0NvbXBvbmVudFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlNb2R1bGUgeyBcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnOiBJQ29ubmVjdGlvblR5cGUpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFRyZWVIaWVyYXJjaHlNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFRyZWVIaWVyYXJjaHlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgLy8gTG9jYWxDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEVOVklST05NRU5ULFxuICAgICAgICAgIHVzZVZhbHVlOiBjb25maWdcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn0iXX0=
@@ -5,8 +5,12 @@ import * as i1 from "@angular/common/http";
5
5
  const API_ENDPOINT = {
6
6
  ORG_V1_SEARCH: '/apis/proxies/v8/org/v1/search',
7
7
  CREATE_TERMS: `/apis/proxies/v8/action/framework/v3/term/create`,
8
+ UPDATE_TERMS: `/apis/proxies/v8/framework/v1/term/update/`,
8
9
  UPDATE_ASSOCIATION: `/apis/proxies/v8/framework/v1/term/update/`,
9
- PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`
10
+ PUBLISH_FRAMEWORK: `/apis/proxies/v8/framework/v1/publish/`,
11
+ RETIRE_TREM: `/apis/proxies/v8/framework/v1/term/retire`,
12
+ UPDATE_CATEGORY: `/apis/proxies/v8/framework/v1/category/update/`,
13
+ USERS_SEARCH: `apis/proxies/v8/user/v1/search`
10
14
  };
11
15
  export class TreeHierarchyService {
12
16
  constructor(http) {
@@ -20,6 +24,9 @@ export class TreeHierarchyService {
20
24
  createTerm(requestBody, frameworkObj) {
21
25
  return this.http.post(`${API_ENDPOINT.CREATE_TERMS}?framework=${frameworkObj.id}&category=${frameworkObj.category}`, requestBody);
22
26
  }
27
+ updateTerm(requestBody, frameworkObj, codeId) {
28
+ return this.http.patch(`${API_ENDPOINT.UPDATE_TERMS}/${codeId}?framework=${frameworkObj.id}&category=${frameworkObj.category}`, requestBody);
29
+ }
23
30
  updateFrameworkAssociation(requestBody, frameworkObj, codeId) {
24
31
  return this.http.patch(`${API_ENDPOINT.UPDATE_ASSOCIATION}${codeId}?framework=${frameworkObj.id}&category=${frameworkObj.category}`, requestBody);
25
32
  }
@@ -29,6 +36,15 @@ export class TreeHierarchyService {
29
36
  setLoaderState(isLoading) {
30
37
  this.loaderSubject.next(isLoading);
31
38
  }
39
+ retireTerm(requestBody, frameworkObj) {
40
+ return this.http.post(`${API_ENDPOINT.RETIRE_TREM}?framework=${frameworkObj.id}&category=${frameworkObj.category}`, requestBody);
41
+ }
42
+ updateCategory(requestBody, frameworkObj) {
43
+ return this.http.patch(`${API_ENDPOINT.UPDATE_CATEGORY}${frameworkObj.category}?framework=${frameworkObj.id}`, requestBody);
44
+ }
45
+ getUsersSearch(requestBody) {
46
+ return this.http.post(`${API_ENDPOINT.USERS_SEARCH}`, requestBody);
47
+ }
32
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
33
49
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeHierarchyService, providedIn: 'root' }); }
34
50
  }
@@ -38,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
38
54
  providedIn: 'root'
39
55
  }]
40
56
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFFbkQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyxZQUFZLEVBQUUsa0RBQWtEO0lBQ2hFLGtCQUFrQixFQUFFLDRDQUE0QztJQUNoRSxpQkFBaUIsRUFBRSx3Q0FBd0M7Q0FDNUQsQ0FBQTtBQUlELE1BQU0sT0FBTyxvQkFBb0I7SUFLL0IsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUg1QixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVELGlCQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVSLENBQUM7SUFFMUMsWUFBWSxDQUFDLFdBQWdCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsYUFBYSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFnQixFQUFFLFlBQWdCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZLENBQUMsWUFBWSxjQUFjLFlBQVksQ0FBQyxFQUFFLGFBQWEsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BJLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxXQUFnQixFQUFFLFlBQWdCLEVBQUUsTUFBVTtRQUN2RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sY0FBYyxZQUFZLENBQUMsRUFBRSxhQUFhLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNwSixDQUFDO0lBRUQsaUJBQWlCLENBQUMsWUFBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFrQjtRQUMvQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNwQyxDQUFDOytHQXpCVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBBUElfRU5EUE9JTlQgPSB7XG4gIE9SR19WMV9TRUFSQ0g6ICcvYXBpcy9wcm94aWVzL3Y4L29yZy92MS9zZWFyY2gnLFxuICBDUkVBVEVfVEVSTVM6IGAvYXBpcy9wcm94aWVzL3Y4L2FjdGlvbi9mcmFtZXdvcmsvdjMvdGVybS9jcmVhdGVgLFxuICBVUERBVEVfQVNTT0NJQVRJT046IGAvYXBpcy9wcm94aWVzL3Y4L2ZyYW1ld29yay92MS90ZXJtL3VwZGF0ZS9gLFxuICBQVUJMSVNIX0ZSQU1FV09SSzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3B1Ymxpc2gvYFxufVxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUhpZXJhcmNoeVNlcnZpY2Uge1xuXG4gIHByaXZhdGUgbG9hZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBsb2FkZXJTdGF0ZSQgPSB0aGlzLmxvYWRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCkgeyB9XG5cbiAgb3JnU2VyYWNoQXBpKHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuT1JHX1YxX1NFQVJDSH1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICBjcmVhdGVUZXJtKHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuQ1JFQVRFX1RFUk1TfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZUZyYW1ld29ya0Fzc29jaWF0aW9uKHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnksIGNvZGVJZDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9BU1NPQ0lBVElPTn0ke2NvZGVJZH0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfSZjYXRlZ29yeT0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICBwdWJsaXNoRnJlYW1ld29yayhmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULlBVQkxJU0hfRlJBTUVXT1JLfSR7ZnJhbWV3b3JrT2JqLmlkfWAsIHt9KTtcbiAgfVxuXG4gIHNldExvYWRlclN0YXRlKGlzTG9hZGluZzogYm9vbGVhbikge1xuICAgIHRoaXMubG9hZGVyU3ViamVjdC5uZXh0KGlzTG9hZGluZylcbiAgfVxuICBcbn1cbiJdfQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oaWVyYXJjaHkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnJhcnkvc3VuYmlyZC1jYi90cmVlLWhpZXJhcmNoeS9zcmMvbGliL3RyZWUtaGllcmFyY2h5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFFbkQsTUFBTSxZQUFZLEdBQUc7SUFDbkIsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyxZQUFZLEVBQUUsa0RBQWtEO0lBQ2hFLFlBQVksRUFBRSw0Q0FBNEM7SUFDMUQsa0JBQWtCLEVBQUUsNENBQTRDO0lBQ2hFLGlCQUFpQixFQUFFLHdDQUF3QztJQUMzRCxXQUFXLEVBQUUsMkNBQTJDO0lBQ3hELGVBQWUsRUFBRSxnREFBZ0Q7SUFDakUsWUFBWSxFQUFFLGdDQUFnQztDQUMvQyxDQUFBO0FBSUQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSDVCLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDNUQsaUJBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRVIsQ0FBQztJQUUxQyxZQUFZLENBQUMsV0FBZ0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsVUFBVSxDQUFDLFdBQWdCLEVBQUUsWUFBZ0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxZQUFZLGNBQWMsWUFBWSxDQUFDLEVBQUUsYUFBYSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEksQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFnQixFQUFFLFlBQWdCLEVBQUUsTUFBVTtRQUN2RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksSUFBSSxNQUFNLGNBQWMsWUFBWSxDQUFDLEVBQUUsYUFBYSxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVELDBCQUEwQixDQUFDLFdBQWdCLEVBQUUsWUFBZ0IsRUFBRSxNQUFVO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxZQUFZLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxjQUFjLFlBQVksQ0FBQyxFQUFFLGFBQWEsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3BKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxZQUFnQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWtCO1FBQy9CLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBZ0IsRUFBRSxZQUFnQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFdBQVcsY0FBYyxZQUFZLENBQUMsRUFBRSxhQUFhLFlBQVksQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNuSSxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQWdCLEVBQUUsWUFBZ0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsY0FBYyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDOUgsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUFnQjtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDLFlBQVksRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBekNVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IEFQSV9FTkRQT0lOVCA9IHtcbiAgT1JHX1YxX1NFQVJDSDogJy9hcGlzL3Byb3hpZXMvdjgvb3JnL3YxL3NlYXJjaCcsXG4gIENSRUFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvYWN0aW9uL2ZyYW1ld29yay92My90ZXJtL2NyZWF0ZWAsXG4gIFVQREFURV9URVJNUzogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFVQREFURV9BU1NPQ0lBVElPTjogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vdXBkYXRlL2AsXG4gIFBVQkxJU0hfRlJBTUVXT1JLOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvcHVibGlzaC9gLFxuICBSRVRJUkVfVFJFTTogYC9hcGlzL3Byb3hpZXMvdjgvZnJhbWV3b3JrL3YxL3Rlcm0vcmV0aXJlYCxcbiAgVVBEQVRFX0NBVEVHT1JZOiBgL2FwaXMvcHJveGllcy92OC9mcmFtZXdvcmsvdjEvY2F0ZWdvcnkvdXBkYXRlL2AsXG4gIFVTRVJTX1NFQVJDSDogYGFwaXMvcHJveGllcy92OC91c2VyL3YxL3NlYXJjaGBcbn1cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVIaWVyYXJjaHlTZXJ2aWNlIHtcblxuICBwcml2YXRlIGxvYWRlclN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgbG9hZGVyU3RhdGUkID0gdGhpcy5sb2FkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwpIHsgfVxuXG4gIG9yZ1NlcmFjaEFwaShyZXF1ZXN0Qm9keTogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULk9SR19WMV9TRUFSQ0h9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgY3JlYXRlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULkNSRUFURV9URVJNU30/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfSZjYXRlZ29yeT0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX1gLCByZXF1ZXN0Qm9keSk7XG4gIH1cblxuICB1cGRhdGVUZXJtKHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnksIGNvZGVJZDphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9URVJNU30vJHtjb2RlSWR9P2ZyYW1ld29yaz0ke2ZyYW1ld29ya09iai5pZH0mY2F0ZWdvcnk9JHtmcmFtZXdvcmtPYmouY2F0ZWdvcnl9YCwgcmVxdWVzdEJvZHkpO1xuICB9XG5cbiAgdXBkYXRlRnJhbWV3b3JrQXNzb2NpYXRpb24ocmVxdWVzdEJvZHk6IGFueSwgZnJhbWV3b3JrT2JqOmFueSwgY29kZUlkOmFueSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wYXRjaChgJHtBUElfRU5EUE9JTlQuVVBEQVRFX0FTU09DSUFUSU9OfSR7Y29kZUlkfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHB1Ymxpc2hGcmVhbWV3b3JrKGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuUFVCTElTSF9GUkFNRVdPUkt9JHtmcmFtZXdvcmtPYmouaWR9YCwge30pO1xuICB9XG5cbiAgc2V0TG9hZGVyU3RhdGUoaXNMb2FkaW5nOiBib29sZWFuKSB7XG4gICAgdGhpcy5sb2FkZXJTdWJqZWN0Lm5leHQoaXNMb2FkaW5nKVxuICB9XG5cbiAgcmV0aXJlVGVybShyZXF1ZXN0Qm9keTogYW55LCBmcmFtZXdvcmtPYmo6YW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7QVBJX0VORFBPSU5ULlJFVElSRV9UUkVNfT9mcmFtZXdvcms9JHtmcmFtZXdvcmtPYmouaWR9JmNhdGVnb3J5PSR7ZnJhbWV3b3JrT2JqLmNhdGVnb3J5fWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIHVwZGF0ZUNhdGVnb3J5KHJlcXVlc3RCb2R5OiBhbnksIGZyYW1ld29ya09iajphbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2goYCR7QVBJX0VORFBPSU5ULlVQREFURV9DQVRFR09SWX0ke2ZyYW1ld29ya09iai5jYXRlZ29yeX0/ZnJhbWV3b3JrPSR7ZnJhbWV3b3JrT2JqLmlkfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuXG4gIGdldFVzZXJzU2VhcmNoKHJlcXVlc3RCb2R5OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHtBUElfRU5EUE9JTlQuVVNFUlNfU0VBUkNIfWAsIHJlcXVlc3RCb2R5KTtcbiAgfVxuICBcbn1cbiJdfQ==