@po-ui/ng-components 14.4.0 → 14.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/esm2020/lib/components/po-button-group/po-button-group-base.component.mjs +2 -2
  2. package/esm2020/lib/components/po-field/po-combo/po-combo.component.mjs +6 -6
  3. package/esm2020/lib/components/po-field/po-datepicker/po-datepicker.component.mjs +5 -5
  4. package/esm2020/lib/components/po-field/po-datepicker-range/po-datepicker-range.component.mjs +7 -3
  5. package/esm2020/lib/components/po-field/po-decimal/po-decimal.component.mjs +5 -5
  6. package/esm2020/lib/components/po-field/po-email/po-email.component.mjs +9 -7
  7. package/esm2020/lib/components/po-field/po-input/po-input.component.mjs +9 -7
  8. package/esm2020/lib/components/po-field/po-login/po-login.component.mjs +12 -11
  9. package/esm2020/lib/components/po-field/po-lookup/po-lookup-modal/po-lookup-modal.component.mjs +3 -3
  10. package/esm2020/lib/components/po-field/po-lookup/po-lookup.component.mjs +6 -5
  11. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-base.component.mjs +31 -20
  12. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.mjs +19 -13
  13. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.mjs +1 -1
  14. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-filter.service.mjs +2 -2
  15. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.mjs +7 -4
  16. package/esm2020/lib/components/po-field/po-multiselect/po-multiselect.component.mjs +24 -17
  17. package/esm2020/lib/components/po-field/po-number/po-number.component.mjs +5 -5
  18. package/esm2020/lib/components/po-field/po-password/po-password.component.mjs +14 -13
  19. package/esm2020/lib/components/po-field/po-radio/po-radio-size.enum.mjs +10 -3
  20. package/esm2020/lib/components/po-field/po-radio/po-radio.component.mjs +98 -34
  21. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group-base.component.mjs +16 -2
  22. package/esm2020/lib/components/po-field/po-radio-group/po-radio-group.component.mjs +18 -25
  23. package/esm2020/lib/components/po-field/po-select/po-select.component.mjs +38 -250
  24. package/esm2020/lib/components/po-field/po-textarea/po-textarea-base.component.mjs +11 -1
  25. package/esm2020/lib/components/po-field/po-textarea/po-textarea.component.mjs +6 -7
  26. package/esm2020/lib/components/po-field/po-url/po-url.component.mjs +9 -7
  27. package/esm2020/lib/components/po-page/po-page-list/po-page-list.component.mjs +3 -3
  28. package/esm2020/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.mjs +26 -73
  29. package/esm2020/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +27 -8
  30. package/esm2020/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.mjs +111 -0
  31. package/esm2020/lib/components/po-table/po-table.module.mjs +4 -1
  32. package/esm2020/lib/components/po-tag/po-tag-base.component.mjs +11 -3
  33. package/esm2020/lib/components/po-tag/po-tag.component.mjs +16 -9
  34. package/esm2020/lib/components/po-tree-view/po-tree-view-base.component.mjs +6 -4
  35. package/fesm2015/po-ui-ng-components.mjs +889 -984
  36. package/fesm2015/po-ui-ng-components.mjs.map +1 -1
  37. package/fesm2020/po-ui-ng-components.mjs +871 -962
  38. package/fesm2020/po-ui-ng-components.mjs.map +1 -1
  39. package/lib/components/po-button-group/po-button-group-base.component.d.ts +1 -1
  40. package/lib/components/po-field/po-multiselect/po-multiselect-base.component.d.ts +26 -15
  41. package/lib/components/po-field/po-multiselect/po-multiselect-dropdown/po-multiselect-dropdown.component.d.ts +5 -3
  42. package/lib/components/po-field/po-multiselect/po-multiselect-filter.interface.d.ts +2 -2
  43. package/lib/components/po-field/po-multiselect/po-multiselect-filter.service.d.ts +2 -2
  44. package/lib/components/po-field/po-multiselect/po-multiselect-search/po-multiselect-search.component.d.ts +2 -1
  45. package/lib/components/po-field/po-multiselect/po-multiselect.component.d.ts +7 -1
  46. package/lib/components/po-field/po-radio/po-radio-size.enum.d.ts +9 -2
  47. package/lib/components/po-field/po-radio/po-radio.component.d.ts +27 -10
  48. package/lib/components/po-field/po-radio-group/po-radio-group-base.component.d.ts +21 -1
  49. package/lib/components/po-field/po-select/po-select.component.d.ts +1 -32
  50. package/lib/components/po-field/po-textarea/po-textarea-base.component.d.ts +10 -0
  51. package/lib/components/po-modal/po-modal.component.d.ts +1 -1
  52. package/lib/components/po-table/po-table-column-manager/po-table-column-manager.component.d.ts +4 -12
  53. package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +1 -0
  54. package/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.d.ts +35 -0
  55. package/lib/components/po-table/po-table.module.d.ts +25 -24
  56. package/lib/components/po-tag/po-tag-base.component.d.ts +8 -2
  57. package/package.json +4 -4
  58. package/po-ui-ng-components-14.5.0.tgz +0 -0
  59. package/schematics/ng-add/index.js +1 -1
  60. package/schematics/ng-update/v14/index.js +1 -1
  61. package/schematics/ng-update/v2/index.js +1 -1
  62. package/schematics/ng-update/v3/index.js +1 -1
  63. package/schematics/ng-update/v4/index.js +1 -1
  64. package/schematics/ng-update/v5/index.js +1 -1
  65. package/schematics/ng-update/v6/index.js +1 -1
  66. package/esm2020/lib/components/po-field/po-radio/po-radio-base.component.mjs +0 -104
  67. package/lib/components/po-field/po-radio/po-radio-base.component.d.ts +0 -58
  68. package/po-ui-ng-components-14.4.0.tgz +0 -0
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
2
2
  import { EventEmitter, Input, Output, Directive } from '@angular/core';
3
3
  import { Subject } from 'rxjs';
4
4
  import { debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';
5
- import { convertToBoolean, isTypeof, removeDuplicatedOptions, removeUndefinedAndNullOptions, sortOptionsByProperty } from '../../../utils/util';
5
+ import { convertToBoolean, isTypeof, removeDuplicatedOptionsWithFieldValue, removeUndefinedAndNullOptionsWithFieldValue, sortOptionsByProperty } from '../../../utils/util';
6
6
  import { requiredFailed } from './../validators';
7
7
  import { poLocaleDefault } from '../../../services/po-language/po-language.constant';
8
8
  import { PoMultiselectFilterMode } from './po-multiselect-filter-mode.enum';
@@ -275,7 +275,7 @@ export class PoMultiselectBaseComponent {
275
275
  /**
276
276
  * @description
277
277
  *
278
- * Nesta propriedade deve ser definida uma lista de objetos que implementam a interface PoMultiselectOption.
278
+ * Nesta propriedade deve ser definida uma lista de objetos que será exibida no multiselect.
279
279
  * Esta lista deve conter os valores e os labels que serão apresentados na tela.
280
280
  *
281
281
  * > Essa propriedade é imutável, ou seja, sempre que quiser atualizar a lista de opções disponíveis
@@ -288,10 +288,20 @@ export class PoMultiselectBaseComponent {
288
288
  * // evite, pois não atualiza a referência do objeto podendo gerar atrasos na atualização do template
289
289
  * this.options.push({ value: 'x', label: 'Nova opção' });
290
290
  * ```
291
+ * > A lista pode ser definida utilizando um array com o valor representando `value` e `label` das seguintes formas:
292
+ *
293
+ * ```
294
+ * <po-multiselect name="multiselect" p-label="PO Multiselect" [p-options]="[{value: 1, label: 'One'}, {value: 2, label: 'two'}]"> </po-multiselect>
295
+ * ```
296
+ *
297
+ * ```
298
+ * <po-multiselect name="multiselect" p-label="PO Multiselect" [p-options]="[{name: 'Roger', age: 28}, {name: 'Anne', age: 35}]" p-field-label="name" p-field-value="age"> </po-multiselect>
299
+ * ```
300
+ *
301
+ * - Aconselha-se utilizar valores distintos no `label` e `value` dos itens.
291
302
  */
292
303
  set options(options) {
293
304
  this._options = options;
294
- this.validAndSortOptions();
295
305
  }
296
306
  get options() {
297
307
  return this._options;
@@ -353,7 +363,7 @@ export class PoMultiselectBaseComponent {
353
363
  * @default `label`
354
364
  */
355
365
  set fieldLabel(value) {
356
- this._fieldLabel = value || PO_MULTISELECT_FIELD_LABEL_DEFAULT;
366
+ this._fieldLabel = value ? value : PO_MULTISELECT_FIELD_LABEL_DEFAULT;
357
367
  if (isTypeof(this.filterService, 'string') && this.service) {
358
368
  this.service.fieldLabel = this._fieldLabel;
359
369
  }
@@ -374,7 +384,7 @@ export class PoMultiselectBaseComponent {
374
384
  * @default `value`
375
385
  */
376
386
  set fieldValue(value) {
377
- this._fieldValue = value || PO_MULTISELECT_FIELD_VALUE_DEFAULT;
387
+ this._fieldValue = value ? value : PO_MULTISELECT_FIELD_VALUE_DEFAULT;
378
388
  if (isTypeof(this.filterService, 'string') && this.service) {
379
389
  this.service.fieldValue = this._fieldValue;
380
390
  }
@@ -389,6 +399,7 @@ export class PoMultiselectBaseComponent {
389
399
  this.filterSubject
390
400
  .pipe(debounceTime(this.debounceTime), distinctUntilChanged(), tap(() => (this.isServerSearching = true)), switchMap((search) => this.applyFilter(search)), tap(() => (this.isServerSearching = false)))
391
401
  .subscribe();
402
+ this.validAndSortOptions();
392
403
  this.updateList(this.options);
393
404
  }
394
405
  setService(service) {
@@ -403,18 +414,18 @@ export class PoMultiselectBaseComponent {
403
414
  }
404
415
  validAndSortOptions() {
405
416
  if (this.options && this.options.length) {
406
- removeUndefinedAndNullOptions(this.options);
407
- removeDuplicatedOptions(this.options);
417
+ removeUndefinedAndNullOptionsWithFieldValue(this.options, this.fieldValue);
418
+ removeDuplicatedOptionsWithFieldValue(this.options, this.fieldValue);
408
419
  this.setUndefinedLabels(this.options);
409
420
  if (this.sort) {
410
- sortOptionsByProperty(this.options, 'label');
421
+ sortOptionsByProperty(this.options, this.fieldLabel);
411
422
  }
412
423
  }
413
424
  }
414
425
  setUndefinedLabels(options) {
415
426
  options.forEach(option => {
416
- if (!option['label']) {
417
- option.label = option.value;
427
+ if (!option[this.fieldLabel]) {
428
+ option[this.fieldLabel] = option[this.fieldValue];
418
429
  }
419
430
  });
420
431
  }
@@ -436,17 +447,17 @@ export class PoMultiselectBaseComponent {
436
447
  this.lastLengthModel = selectedOptions ? selectedOptions.length : null;
437
448
  }
438
449
  getValuesFromOptions(selectedOptions) {
439
- return selectedOptions && selectedOptions.length ? selectedOptions.map(option => option.value) : [];
450
+ return selectedOptions && selectedOptions.length ? selectedOptions.map(option => option[this.fieldValue]) : [];
440
451
  }
441
452
  getLabelByValue(value) {
442
- const index = this.options.findIndex(option => option.value === value);
453
+ const index = this.options.findIndex(option => option[this.fieldValue] === value);
443
454
  return this.options[index].label;
444
455
  }
445
456
  searchByLabel(search, options, filterMode) {
446
457
  if (search && options && options.length) {
447
458
  const newOptions = [];
448
459
  options.forEach(option => {
449
- if (option.label && this.compareMethod(search, option, filterMode)) {
460
+ if (option[this.fieldLabel] && this.compareMethod(search, option, filterMode)) {
450
461
  newOptions.push(option);
451
462
  }
452
463
  });
@@ -467,13 +478,13 @@ export class PoMultiselectBaseComponent {
467
478
  }
468
479
  }
469
480
  startsWith(search, option) {
470
- return option.label.toLowerCase().startsWith(search.toLowerCase());
481
+ return option[this.fieldLabel].toLowerCase().startsWith(search.toLowerCase());
471
482
  }
472
483
  contains(search, option) {
473
- return option.label.toLowerCase().indexOf(search.toLowerCase()) > -1;
484
+ return option[this.fieldLabel].toLowerCase().indexOf(search.toLowerCase()) > -1;
474
485
  }
475
486
  endsWith(search, option) {
476
- return option.label.toLowerCase().endsWith(search.toLowerCase());
487
+ return option[this.fieldLabel].toLowerCase().endsWith(search.toLowerCase());
477
488
  }
478
489
  validate(c) {
479
490
  if (requiredFailed(this.required, this.disabled, c.value)) {
@@ -488,7 +499,7 @@ export class PoMultiselectBaseComponent {
488
499
  updateSelectedOptions(newOptions, options = this.options) {
489
500
  this.selectedOptions = [];
490
501
  if (newOptions.length === 0) {
491
- this.lastLengthModel = 0;
502
+ this.lastLengthModel = undefined;
492
503
  }
493
504
  if (this.filterService) {
494
505
  this.selectedOptions = newOptions;
@@ -496,7 +507,7 @@ export class PoMultiselectBaseComponent {
496
507
  else {
497
508
  newOptions.forEach(newOption => {
498
509
  options.forEach(option => {
499
- if (option.value === newOption.value) {
510
+ if (option[this.fieldValue] === newOption[this.fieldValue]) {
500
511
  this.selectedOptions.push(option);
501
512
  }
502
513
  });
@@ -514,7 +525,7 @@ export class PoMultiselectBaseComponent {
514
525
  }
515
526
  else {
516
527
  // Validar se todos os items existem entre os options, senão atualizar o model
517
- this.updateSelectedOptions(values.map(value => ({ value })));
528
+ this.updateSelectedOptions(values.map(value => ({ [this.fieldValue]: value })));
518
529
  if (this.selectedOptions && this.selectedOptions.length < values.length) {
519
530
  this.callOnChange(this.selectedOptions);
520
531
  }
@@ -617,4 +628,4 @@ __decorate([
617
628
  type: Input,
618
629
  args: ['p-field-value']
619
630
  }] }); })();
620
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3QixxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBSW5ELE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFDO0FBQ2pELE1BQU0sa0NBQWtDLEdBQUcsT0FBTyxDQUFDO0FBQ25ELE1BQU0sa0NBQWtDLEdBQUcsT0FBTyxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLEVBQUUsRUFBeUI7UUFDekIsTUFBTSxFQUFFLGVBQWU7UUFDdkIsaUJBQWlCLEVBQUUsUUFBUTtRQUMzQixTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNE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QWVNLFFBQVE7a0JBQTVCLEtBQUs7bUJBQUMsWUFBWTtZQUdLLFdBQVc7a0JBQWxDLEtBQUs7bUJBQUMsZUFBZTtZQVdTLGlCQUFpQjtrQkFBL0MsS0FBSzttQkFBQyxzQkFBc0I7WUFHZCxJQUFJO2tCQUFsQixLQUFLO21CQUFDLE1BQU07WUFXK0IsYUFBYTtrQkFBeEQsS0FBSzttQkFBQyxtQkFBbUI7WUFTTixNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFnRWEsYUFBYTtrQkFBM0MsS0FBSzttQkFBQyxrQkFBa0I7WUF3Qm1CLFVBQVU7a0JBQXJELEtBQUs7bUJBQUMsZUFBZTtZQW1CUSxZQUFZO2tCQUF6QyxLQUFLO21CQUFDLGlCQUFpQjtZQTZDQyxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUF3Qk0sUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBa0JNLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQW9CUyxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUF5QkUsT0FBTztrQkFBOUIsS0FBSzttQkFBQyxXQUFXO1lBb0JHLElBQUk7a0JBQXhCLEtBQUs7bUJBQUMsUUFBUTtZQW9CYSxVQUFVO2tCQUFyQyxLQUFLO21CQUFDLGVBQWU7WUErQk0sVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlO1lBd0JNLFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgY29udmVydFRvQm9vbGVhbixcbiAgaXNUeXBlb2YsXG4gIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zLFxuICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9ucyxcbiAgc29ydE9wdGlvbnNCeVByb3BlcnR5XG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdExpdGVyYWxzIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdE9wdGlvbiB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcblxuY29uc3QgUE9fTVVMVElTRUxFQ1RfREVCT1VOQ0VfVElNRV9ERUZBVUxUID0gNDAwO1xuY29uc3QgUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XG5jb25zdCBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuZXhwb3J0IGNvbnN0IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ1NlYXJjaCcsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWN0IGFsbCdcbiAgfSxcbiAgZXM6IDxQb011bHRpc2VsZWN0TGl0ZXJhbHM+e1xuICAgIG5vRGF0YTogJ0RhdG9zIG5vIGVuY29udHJhZG9zJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ0J1c2NhJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY2Npb25hciB0b2RvJ1xuICB9LFxuICBwdDogPFBvTXVsdGlzZWxlY3RMaXRlcmFscz57XG4gICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdCdXNjYXInLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjaW9uYXIgdG9kb3MnXG4gIH0sXG4gIHJ1OiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICfQlNCw0L3QvdGL0LUg0L3QtSDQvdCw0LnQtNC10L3RiycsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICfQuNGB0LrQsNGC0YwnLFxuICAgIHNlbGVjdEFsbDogJ9CS0YvQsdGA0LDRgtGMINCy0YHQtSdcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIHBvLW11bHRpc2VsZWN0IMOpIHVtIGNvbXBvbmVudGUgZGUgbcO6bHRpcGxhIHNlbGXDp8Ojby5cbiAqIEVzdGUgY29tcG9uZW50ZSDDqSByZWNvbWVuZGFkbyBwYXJhIGRhciBhbyB1c3XDoXJpbyBhIG9ww6fDo28gZGUgc2VsZWNpb25hciB2w6FyaW9zIGl0ZW5zIGVtIHVtYSBsaXN0YS5cbiAqXG4gKiBRdWFuZG8gYSBsaXN0YSBwb3NzdWlyIHBvdWNvcyBpdGVucywgZGV2ZS1zZSBkYXIgcHJlZmVyw6puY2lhIHBhcmEgbyB1c28gZG8gcG8tY2hlY2tib3gtZ3JvdXAsIHBvciBzZXIgbWFpcyBzaW1wbGVzXG4gKiBlIG1haXMgcsOhcGlkbyBwYXJhIGEgc2VsZcOnw6NvIGRvIHVzdcOhcmlvLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSB0YW1iw6ltIG7Do28gZGV2ZSBzZXIgdXRpbGl6YWRvIGVtIGNhc29zIG9uZGUgYSBzZWxlw6fDo28gc2VqYSDDum5pY2EuIE5lc3NlcyBjYXNvcywgZGV2ZS1zZSB1dGlsaXphciBvXG4gKiBwby1zZWxlY3QsIHBvLWNvbWJvIG91IHBvLXJhZGlvLWdyb3VwLlxuICpcbiAqIENvbSBlbGUgdGFtYsOpbSDDqSBwb3Nzw612ZWwgZGVmaW5pciB1bWEgbGlzdGEgw6AgcGFydGlyIGRhIHJlcXVpc2nDp8OjbyBkZSB1bSBzZXJ2acOnbyBkZWZpbmlkbyBlbSBgcC1maWx0ZXItc2VydmljZWAuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIExhYmVsIG5vIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBwYXJhIG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBlbnF1YW50byBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8uICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQbGFjZWhvbGRlciBkbyBjYW1wbyBkZSBwZXNxdWlzYS5cbiAgICpcbiAgICogPiBDYXNvIG8gbWVzbW8gbsOjbyBzZWphIGluZm9ybWFkbywgbyB2YWxvciBwYWRyw6NvIHNlcsOhIHRyYWR1emlkbyBjb20gYmFzZSBubyBpZGlvbWEgZG8gbmF2ZWdhZG9yIChwdCwgZXMgZSBlbikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBCdXNjYXJgXG4gICAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXItc2VhcmNoJykgcGxhY2Vob2xkZXJTZWFyY2g/OiBzdHJpbmcgPSAnJztcblxuICAvKiogTm9tZSBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHNlIG8gY2FtcG8gXCJTZWxlY2lvbmFyIHRvZG9zXCIgc2Vyw6EgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1zZWxlY3QtYWxsJykgQElucHV0Qm9vbGVhbigpIGhpZGVTZWxlY3RBbGw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUG9kZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIG5nTW9kZWwuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZE9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+ID0gW107XG4gIHZpc2libGVPcHRpb25zRHJvcGRvd246IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+ID0gW107XG4gIHZpc2libGVEaXNjbGFpbWVycyA9IFtdO1xuICBpc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgZmlsdGVyU3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG4gIHNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICBkZWZhdWx0U2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgY2xpY2tPdXRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJvdGVjdGVkIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcm90ZWN0ZWQgZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZT86IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZT86IG51bWJlciA9IDQwMDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpbHRlck1vZGU/OiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gIHByaXZhdGUgX2hpZGVTZWFyY2g/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb011bHRpc2VsZWN0TGl0ZXJhbHM7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+O1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZExhYmVsPzogc3RyaW5nID0gUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVDtcbiAgcHJpdmF0ZSBfZmllbGRWYWx1ZT86IHN0cmluZyA9IFBPX01VTFRJU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIGxhc3RMZW5ndGhNb2RlbDtcbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlOiBhbnk7XG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByaXZhdGUgYXV0b0hlaWdodEluaXRpYWxWYWx1ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBwb2RlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZSBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKlxuICAgKlRhbWLDqW0gZXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSBpbmZvcm1hciB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb011bHRpc2VsZWN0RmlsdGVyYC5cbiAgICpcbiAgICpDYXNvIHV0aWxpemFkbyB1bWEgVVJMLCBvIHNlcnZpw6dvIGRldmUgc2VyIHJldG9ybmFkbyBubyBwYWRyw6NvIFtBUEkgUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkgZSB1dGlsaXphciBhcyBwcm9wcmllZGFkZXMgYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBlbnTDo28gc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKmBgYFxuICAgKiAvLyBjYXNvIGZpbHRyYXIgcG9yIFwiUGV0ZXJcIlxuICAgKiAgaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvaGVyb2VzP2ZpbHRlcj1QZXRlclxuICAgKmBgYFxuICAgKlxuICAgKkUgY2FzbyBpbmljaWFyIG8gY2FtcG8gY29tIHZhbG9yLCBvcyBpdGVucyBzZXLDo28gYnVzY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqYGBgXG4gICAqIC8vIGNhc28gbyB2YWxvciBkbyBjYW1wbyBmb3IgWzEyMzQsIDU2NzhdO1xuICAgKiAgaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvaGVyb2VzP3ZhbHVlPTEyMzQsNTY3OFxuICAgKlxuICAgKiAvL08gKnZhbHVlKiDDqSByZWZlcmVudGUgYW8gYGZpZWxkVmFsdWVgLlxuICAgKmBgYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgc2V0IGZpbHRlclNlcnZpY2UodmFsdWU6IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYXV0b0hlaWdodCA9IHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5hdXRvSGVpZ2h0SW5pdGlhbFZhbHVlIDogdHJ1ZTtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqID4gTyB2YWxvciBwYWRyw6NvIHNlcsOhIGB0cnVlYCBxdWFuZG8gaG91dmVyIHNlcnZpw6dvIChgcC1maWx0ZXItc2VydmljZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1oZWlnaHQnKSBASW5wdXRCb29sZWFuKCkgc2V0IGF1dG9IZWlnaHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdXRvSGVpZ2h0ID0gdmFsdWU7XG4gICAgdGhpcy5hdXRvSGVpZ2h0SW5pdGlhbFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYXV0b0hlaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b0hlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGVtIHF1YW50byB0ZW1wbyAoZW0gbWlsaXNzZWd1bmRvcyksIGFndWFyZGEgcGFyYSBhY2lvbmFyIG8gZXZlbnRvIGRlIGZpbHRybyBhcMOzcyBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhLlxuICAgKlxuICAgKiA+IFNlcsOhIHV0aWxpemFkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKSBlIHNvbWVudGUgc2Vyw6EgYWNlaXRvIHZhbG9yIG1haW9yIGRvIHF1ZSAqemVybyouXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0MDBgXG4gICAqL1xuICBASW5wdXQoJ3AtZGVib3VuY2UtdGltZScpIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VJbnQoPGFueT52YWx1ZSwgMTApO1xuXG4gICAgdGhpcy5fZGVib3VuY2VUaW1lID0gIWlzTmFOKHBhcnNlZFZhbHVlKSAmJiBwYXJzZWRWYWx1ZSA+IDAgPyBwYXJzZWRWYWx1ZSA6IFBPX01VTFRJU0VMRUNUX0RFQk9VTkNFX1RJTUVfREVGQVVMVDtcbiAgfVxuXG4gIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLW11bHRpc2VsZWN0YC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9NdWx0aXNlbGVjdExpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJyxcbiAgICogICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdCdXNjYXInXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9NdWx0aXNlbGVjdExpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdTZW0gZGFkb3MnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1tdWx0aXNlbGVjdFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tcG8tbXVsdGlzZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9NdWx0aXNlbGVjdExpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9NdWx0aXNlbGVjdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uIEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gY2FtcG8gZXN0w6EgZGVzYWJpbGl0YWRvIChwLWRpc2FibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSA8YW55PnJlcXVpcmVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IDxhbnk+ZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFc2NvbmRlIG8gY2FtcG8gZGUgcGVzcXVpc2EgZXhpc3RlbnRlIGRlbnRybyBkbyBkcm9wZG93biBkbyBwby1tdWx0aXNlbGVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtc2VhcmNoJykgc2V0IGhpZGVTZWFyY2goaGlkZVNlYXJjaDogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVTZWFyY2ggPSA8YW55PmhpZGVTZWFyY2ggPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oaGlkZVNlYXJjaCk7XG4gIH1cblxuICBnZXQgaGlkZVNlYXJjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVNlYXJjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZGEgdW1hIGxpc3RhIGRlIG9iamV0b3MgcXVlIGltcGxlbWVudGFtIGEgaW50ZXJmYWNlIFBvTXVsdGlzZWxlY3RPcHRpb24uXG4gICAqIEVzdGEgbGlzdGEgZGV2ZSBjb250ZXIgb3MgdmFsb3JlcyBlIG9zIGxhYmVscyBxdWUgc2Vyw6NvIGFwcmVzZW50YWRvcyBuYSB0ZWxhLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaW11dMOhdmVsLCBvdSBzZWphLCBzZW1wcmUgcXVlIHF1aXNlciBhdHVhbGl6YXIgYSBsaXN0YSBkZSBvcMOnw7VlcyBkaXNwb27DrXZlaXNcbiAgICogYXR1YWxpemUgYSByZWZlcsOqbmNpYSBkbyBvYmpldG86XG4gICAqXG4gICAqIGBgYFxuICAgKiAvLyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBnYXJhbnRpbmRvIGEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCB7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9XTtcbiAgICpcbiAgICogLy8gZXZpdGUsIHBvaXMgbsOjbyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBwb2RlbmRvIGdlcmFyIGF0cmFzb3MgbmEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9KTtcbiAgICogYGBgXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9ucycpIHNldCBvcHRpb25zKG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICB0aGlzLnZhbGlkQW5kU29ydE9wdGlvbnMoKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHF1ZSBhIGxpc3RhIGRlZmluaWRhIG5hIHByb3ByaWVkYWRlIHAtb3B0aW9ucyBzZXLDoSBvcmRlbmFkYSBwZWxvIGxhYmVsIGFudGVzIGRlIHNlciBhcHJlc2VudGFkYSBub1xuICAgKiBkcm9wZG93bi5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXNvcnQnKSBzZXQgc29ydChzb3J0OiBib29sZWFuKSB7XG4gICAgdGhpcy5fc29ydCA9IDxhbnk+c29ydCA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbihzb3J0KTtcblxuICAgIHRoaXMudmFsaWRBbmRTb3J0T3B0aW9ucygpO1xuICB9XG5cbiAgZ2V0IHNvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvcnQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgbyBtb2RvIGRlIHBlc3F1aXNhIHV0aWxpemFkbyBubyBjYW1wbyBkZSBidXNjYSwgcXVhbmRvIGhhYmlsaXRhZG8uXG4gICAqIFZhbG9yZXMgZGVmaW5pZG9zIG5vIGVudW06IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlXG4gICAqXG4gICAqIEBkZWZhdWx0IGBzdGFydHNXaXRoYFxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1tb2RlJykgc2V0IGZpbHRlck1vZGUoZmlsdGVyTW9kZTogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUpIHtcbiAgICB0aGlzLl9maWx0ZXJNb2RlID0gZmlsdGVyTW9kZSBpbiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSA/IGZpbHRlck1vZGUgOiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5zdGFydHNXaXRoO1xuICAgIHN3aXRjaCAodGhpcy5fZmlsdGVyTW9kZS50b1N0cmluZygpKSB7XG4gICAgICBjYXNlICdzdGFydHNXaXRoJzpcbiAgICAgICAgdGhpcy5fZmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29udGFpbnMnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuY29udGFpbnM7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZW5kc1dpdGgnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuZW5kc1dpdGg7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJNb2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogRGV2ZSBzZXIgaW5mb3JtYWRvIG8gbm9tZSBkYSBwcm9wcmllZGFkZSBkbyBvYmpldG8gcXVlIHNlcsOhIHV0aWxpemFkbyBwYXJhIGEgY29udmVyc8OjbyBkb3MgaXRlbnMgYXByZXNlbnRhZG9zIG5hIGxpc3RhIGRvIGNvbXBvbmVudGVcbiAgICogKGBwLW9wdGlvbnNgKSwgZXN0YSBwcm9wcmllZGFkZSBzZXLDoSByZXNwb25zw6F2ZWwgcGVsbyB0ZXh0byBkZSBhcHJlc2VudGHDp8OjbyBkZSBjYWRhIGl0ZW0gZGEgbGlzdGEuXG4gICAqXG4gICAqIE5lY2Vzc8OhcmlvIHF1YW5kbyBpbmZvcm1hciBvIHNlcnZpw6dvIGNvbW8gVVJMIGUgbyBtZXNtbyBuw6NvIGVzdGl2ZXIgcmV0b3JuYW5kbyB1bWEgbGlzdGEgZGUgb2JqZXRvcyBubyBwYWRyw6NvIGRhIGludGVyZmFjZVxuICAgKiBgUG9NdWx0aVNlbGVjdE9wdGlvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBsYWJlbGBcbiAgICovXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIHNldCBmaWVsZExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9maWVsZExhYmVsID0gdmFsdWUgfHwgUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXG4gICAqIChgcC1vcHRpb25zYCksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdmFsb3IgZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKlxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcbiAgICogYFBvTXVsdGlTZWxlY3RPcHRpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBzZXQgZmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbHVlIHx8IFBPX01VTFRJU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG5cbiAgICBpZiAoaXNUeXBlb2YodGhpcy5maWx0ZXJTZXJ2aWNlLCAnc3RyaW5nJykgJiYgdGhpcy5zZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlcnZpY2UuZmllbGRWYWx1ZSA9IHRoaXMuX2ZpZWxkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpZWxkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkVmFsdWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihsYW5ndWFnZVNlcnZpY2U6IFBvTGFuZ3VhZ2VTZXJ2aWNlKSB7XG4gICAgdGhpcy5sYW5ndWFnZSA9IGxhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNldFNlcnZpY2UodGhpcy5maWx0ZXJTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlclN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSB0cnVlKSksXG4gICAgICAgIHN3aXRjaE1hcCgoc2VhcmNoOiBzdHJpbmcpID0+IHRoaXMuYXBwbHlGaWx0ZXIoc2VhcmNoKSksXG4gICAgICAgIHRhcCgoKSA9PiAodGhpcy5pc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMudXBkYXRlTGlzdCh0aGlzLm9wdGlvbnMpO1xuICB9XG5cbiAgc2V0U2VydmljZShzZXJ2aWNlOiBQb011bHRpc2VsZWN0RmlsdGVyIHwgc3RyaW5nKSB7XG4gICAgaWYgKGlzVHlwZW9mKHNlcnZpY2UsICdvYmplY3QnKSkge1xuICAgICAgdGhpcy5zZXJ2aWNlID0gPFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlPnNlcnZpY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IHRoaXMuZGVmYXVsdFNlcnZpY2U7XG4gICAgICB0aGlzLnNlcnZpY2UuY29uZmlnUHJvcGVydGllcyg8c3RyaW5nPnNlcnZpY2UsIHRoaXMuZmllbGRMYWJlbCwgdGhpcy5maWVsZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzRmlyc3RGaWx0ZXIgPSB0cnVlO1xuICB9XG5cbiAgdmFsaWRBbmRTb3J0T3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHJlbW92ZVVuZGVmaW5lZEFuZE51bGxPcHRpb25zKHRoaXMub3B0aW9ucyk7XG4gICAgICByZW1vdmVEdXBsaWNhdGVkT3B0aW9ucyh0aGlzLm9wdGlvbnMpO1xuICAgICAgdGhpcy5zZXRVbmRlZmluZWRMYWJlbHModGhpcy5vcHRpb25zKTtcblxuICAgICAgaWYgKHRoaXMuc29ydCkge1xuICAgICAgICBzb3J0T3B0aW9uc0J5UHJvcGVydHkodGhpcy5vcHRpb25zLCAnbGFiZWwnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXRVbmRlZmluZWRMYWJlbHMob3B0aW9ucykge1xuICAgIG9wdGlvbnMuZm9yRWFjaChvcHRpb24gPT4ge1xuICAgICAgaWYgKCFvcHRpb25bJ2xhYmVsJ10pIHtcbiAgICAgICAgb3B0aW9uLmxhYmVsID0gb3B0aW9uLnZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlTGlzdChvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIGlmIChvcHRpb25zKSB7XG4gICAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBvcHRpb25zO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxPbkNoYW5nZShzZWxlY3RlZE9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+KSB7XG4gICAgaWYgKHRoaXMub25Nb2RlbENoYW5nZSkge1xuICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuZ2V0VmFsdWVzRnJvbU9wdGlvbnMoc2VsZWN0ZWRPcHRpb25zKSk7XG4gICAgICB0aGlzLmV2ZW50Q2hhbmdlKHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZXZlbnRDaGFuZ2Uoc2VsZWN0ZWRPcHRpb25zKSB7XG4gICAgaWYgKHNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLmxhc3RMZW5ndGhNb2RlbCAhPT0gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCkge1xuICAgICAgdGhpcy5jaGFuZ2UuZW1pdChzZWxlY3RlZE9wdGlvbnMpO1xuICAgIH1cbiAgICB0aGlzLmxhc3RMZW5ndGhNb2RlbCA9IHNlbGVjdGVkT3B0aW9ucyA/IHNlbGVjdGVkT3B0aW9ucy5sZW5ndGggOiBudWxsO1xuICB9XG5cbiAgZ2V0VmFsdWVzRnJvbU9wdGlvbnMoc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPikge1xuICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnMgJiYgc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA/IHNlbGVjdGVkT3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi52YWx1ZSkgOiBbXTtcbiAgfVxuXG4gIGdldExhYmVsQnlWYWx1ZSh2YWx1ZSkge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF0ubGFiZWw7XG4gIH1cblxuICBzZWFyY2hCeUxhYmVsKHNlYXJjaDogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiwgZmlsdGVyTW9kZTogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUpIHtcbiAgICBpZiAoc2VhcmNoICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld09wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+ID0gW107XG4gICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgaWYgKG9wdGlvbi5sYWJlbCAmJiB0aGlzLmNvbXBhcmVNZXRob2Qoc2VhcmNoLCBvcHRpb24sIGZpbHRlck1vZGUpKSB7XG4gICAgICAgICAgbmV3T3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gbmV3T3B0aW9ucztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52aXNpYmxlT3B0aW9uc0Ryb3Bkb3duID0gWy4uLm9wdGlvbnNdO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBhcmVNZXRob2Qoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbiwgZmlsdGVyTW9kZTogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUpIHtcbiAgICBzd2l0Y2ggKGZpbHRlck1vZGUpIHtcbiAgICAgIGNhc2UgUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuc3RhcnRzV2l0aDpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmNvbnRhaW5zOlxuICAgICAgICByZXR1cm4gdGhpcy5jb250YWlucyhzZWFyY2gsIG9wdGlvbik7XG4gICAgICBjYXNlIFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLmVuZHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5lbmRzV2l0aChzZWFyY2gsIG9wdGlvbik7XG4gICAgfVxuICB9XG5cbiAgc3RhcnRzV2l0aChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb011bHRpc2VsZWN0T3B0aW9uKSB7XG4gICAgcmV0dXJuIG9wdGlvbi5sYWJlbC50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoc2VhcmNoLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgY29udGFpbnMoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICB9XG5cbiAgZW5kc1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb24ubGFiZWwudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChzZWFyY2gudG9Mb3dlckNhc2UoKSk7XG4gIH1cblxuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAocmVxdWlyZWRGYWlsZWQodGhpcy5yZXF1aXJlZCwgdGhpcy5kaXNhYmxlZCwgYy52YWx1ZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlcXVpcmVkOiB7XG4gICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZE9wdGlvbnMobmV3T3B0aW9uczogQXJyYXk8YW55Piwgb3B0aW9ucyA9IHRoaXMub3B0aW9ucykge1xuICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zID0gW107XG5cbiAgICBpZiAobmV3T3B0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMubGFzdExlbmd0aE1vZGVsID0gMDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5maWx0ZXJTZXJ2aWNlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IG5ld09wdGlvbnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld09wdGlvbnMuZm9yRWFjaChuZXdPcHRpb24gPT4ge1xuICAgICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICBpZiAob3B0aW9uLnZhbHVlID09PSBuZXdPcHRpb24udmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWVzOiBhbnkpOiB2b2lkIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMgfHwgW107XG5cbiAgICBpZiAodGhpcy5zZXJ2aWNlICYmIHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uID0gdGhpcy5zZXJ2aWNlLmdldE9iamVjdHNCeVZhbHVlcyh2YWx1ZXMpLnN1YnNjcmliZShvcHRpb25zID0+IHtcbiAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZE9wdGlvbnMob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBWYWxpZGFyIHNlIHRvZG9zIG9zIGl0ZW1zIGV4aXN0ZW0gZW50cmUgb3Mgb3B0aW9ucywgc2Vuw6NvIGF0dWFsaXphciBvIG1vZGVsXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9ucyh2YWx1ZXMubWFwKHZhbHVlID0+ICh7IHZhbHVlIH0pKSk7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1vZGVsKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZT86IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4+O1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTogdm9pZDtcbn1cbiJdfQ==
631
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtYmFzZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IscUNBQXFDLEVBQ3JDLDJDQUEyQyxFQUMzQyxxQkFBcUIsRUFDdEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBSW5ELE1BQU0sb0NBQW9DLEdBQUcsR0FBRyxDQUFDO0FBQ2pELE1BQU0sa0NBQWtDLEdBQUcsT0FBTyxDQUFDO0FBQ25ELE1BQU0sa0NBQWtDLEdBQUcsT0FBTyxDQUFDO0FBRW5ELE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHO0lBQzFDLEVBQUUsRUFBeUI7UUFDekIsTUFBTSxFQUFFLGVBQWU7UUFDdkIsaUJBQWlCLEVBQUUsUUFBUTtRQUMzQixTQUFTLEVBQUUsWUFBWTtLQUN4QjtJQUNE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VUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBjb252ZXJ0VG9Cb29sZWFuLFxuICBpc1R5cGVvZixcbiAgcmVtb3ZlRHVwbGljYXRlZE9wdGlvbnNXaXRoRmllbGRWYWx1ZSxcbiAgcmVtb3ZlVW5kZWZpbmVkQW5kTnVsbE9wdGlvbnNXaXRoRmllbGRWYWx1ZSxcbiAgc29ydE9wdGlvbnNCeVByb3BlcnR5XG59IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHsgcmVxdWlyZWRGYWlsZWQgfSBmcm9tICcuLy4uL3ZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgUG9MYW5ndWFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wby1sYW5ndWFnZS9wby1sYW5ndWFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IHBvTG9jYWxlRGVmYXVsdCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3BvLWxhbmd1YWdlL3BvLWxhbmd1YWdlLmNvbnN0YW50JztcblxuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci1tb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdExpdGVyYWxzIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdE9wdGlvbiB9IGZyb20gJy4vcG8tbXVsdGlzZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LWZpbHRlci5zZXJ2aWNlJztcblxuY29uc3QgUE9fTVVMVElTRUxFQ1RfREVCT1VOQ0VfVElNRV9ERUZBVUxUID0gNDAwO1xuY29uc3QgUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVCA9ICdsYWJlbCc7XG5jb25zdCBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUID0gJ3ZhbHVlJztcblxuZXhwb3J0IGNvbnN0IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICdObyBkYXRhIGZvdW5kJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ1NlYXJjaCcsXG4gICAgc2VsZWN0QWxsOiAnU2VsZWN0IGFsbCdcbiAgfSxcbiAgZXM6IDxQb011bHRpc2VsZWN0TGl0ZXJhbHM+e1xuICAgIG5vRGF0YTogJ0RhdG9zIG5vIGVuY29udHJhZG9zJyxcbiAgICBwbGFjZWhvbGRlclNlYXJjaDogJ0J1c2NhJyxcbiAgICBzZWxlY3RBbGw6ICdTZWxlY2Npb25hciB0b2RvJ1xuICB9LFxuICBwdDogPFBvTXVsdGlzZWxlY3RMaXRlcmFscz57XG4gICAgbm9EYXRhOiAnTmVuaHVtIGRhZG8gZW5jb250cmFkbycsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdCdXNjYXInLFxuICAgIHNlbGVjdEFsbDogJ1NlbGVjaW9uYXIgdG9kb3MnXG4gIH0sXG4gIHJ1OiA8UG9NdWx0aXNlbGVjdExpdGVyYWxzPntcbiAgICBub0RhdGE6ICfQlNCw0L3QvdGL0LUg0L3QtSDQvdCw0LnQtNC10L3RiycsXG4gICAgcGxhY2Vob2xkZXJTZWFyY2g6ICfQuNGB0LrQsNGC0YwnLFxuICAgIHNlbGVjdEFsbDogJ9CS0YvQsdGA0LDRgtGMINCy0YHQtSdcbiAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIHBvLW11bHRpc2VsZWN0IMOpIHVtIGNvbXBvbmVudGUgZGUgbcO6bHRpcGxhIHNlbGXDp8Ojby5cbiAqIEVzdGUgY29tcG9uZW50ZSDDqSByZWNvbWVuZGFkbyBwYXJhIGRhciBhbyB1c3XDoXJpbyBhIG9ww6fDo28gZGUgc2VsZWNpb25hciB2w6FyaW9zIGl0ZW5zIGVtIHVtYSBsaXN0YS5cbiAqXG4gKiBRdWFuZG8gYSBsaXN0YSBwb3NzdWlyIHBvdWNvcyBpdGVucywgZGV2ZS1zZSBkYXIgcHJlZmVyw6puY2lhIHBhcmEgbyB1c28gZG8gcG8tY2hlY2tib3gtZ3JvdXAsIHBvciBzZXIgbWFpcyBzaW1wbGVzXG4gKiBlIG1haXMgcsOhcGlkbyBwYXJhIGEgc2VsZcOnw6NvIGRvIHVzdcOhcmlvLlxuICpcbiAqIEVzdGUgY29tcG9uZW50ZSB0YW1iw6ltIG7Do28gZGV2ZSBzZXIgdXRpbGl6YWRvIGVtIGNhc29zIG9uZGUgYSBzZWxlw6fDo28gc2VqYSDDum5pY2EuIE5lc3NlcyBjYXNvcywgZGV2ZS1zZSB1dGlsaXphciBvXG4gKiBwby1zZWxlY3QsIHBvLWNvbWJvIG91IHBvLXJhZGlvLWdyb3VwLlxuICpcbiAqIENvbSBlbGUgdGFtYsOpbSDDqSBwb3Nzw612ZWwgZGVmaW5pciB1bWEgbGlzdGEgw6AgcGFydGlyIGRhIHJlcXVpc2nDp8OjbyBkZSB1bSBzZXJ2acOnbyBkZWZpbmlkbyBlbSBgcC1maWx0ZXItc2VydmljZWAuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvTXVsdGlzZWxlY3RCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgVmFsaWRhdG9yIHtcbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXBsaWNhIGZvY28gbm8gZWxlbWVudG8gYW8gc2VyIGluaWNpYWRvLlxuICAgKlxuICAgKiA+IENhc28gbWFpcyBkZSB1bSBlbGVtZW50byBzZWphIGNvbmZpZ3VyYWRvIGNvbSBlc3NhIHByb3ByaWVkYWRlLCBhcGVuYXMgbyDDumx0aW1vIGVsZW1lbnRvIGRlY2xhcmFkbyBjb20gZWxhIHRlcsOhIG8gZm9jby5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dG8tZm9jdXMnKSBASW5wdXRCb29sZWFuKCkgYXV0b0ZvY3VzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIExhYmVsIG5vIGNvbXBvbmVudGUuICovXG4gIEBJbnB1dCgncC1sYWJlbCcpIGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKiBUZXh0byBkZSBhcG9pbyBwYXJhIG8gY2FtcG8uICovXG4gIEBJbnB1dCgncC1oZWxwJykgaGVscD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgc2UgYSBpbmRpY2HDp8OjbyBkZSBjYW1wbyBvcGNpb25hbCBzZXLDoSBleGliaWRhLlxuICAgKlxuICAgKiA+IE7Do28gc2Vyw6EgZXhpYmlkYSBhIGluZGljYcOnw6NvIHNlOlxuICAgKiAtIE8gY2FtcG8gY29udGVyIGBwLXJlcXVpcmVkYDtcbiAgICogLSBOw6NvIHBvc3N1aXIgYHAtaGVscGAgZS9vdSBgcC1sYWJlbGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1vcHRpb25hbCcpIG9wdGlvbmFsOiBib29sZWFuO1xuXG4gIC8qKiBNZW5zYWdlbSBhcHJlc2VudGFkYSBlbnF1YW50byBvIGNhbXBvIGVzdGl2ZXIgdmF6aW8uICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyPzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQbGFjZWhvbGRlciBkbyBjYW1wbyBkZSBwZXNxdWlzYS5cbiAgICpcbiAgICogPiBDYXNvIG8gbWVzbW8gbsOjbyBzZWphIGluZm9ybWFkbywgbyB2YWxvciBwYWRyw6NvIHNlcsOhIHRyYWR1emlkbyBjb20gYmFzZSBubyBpZGlvbWEgZG8gbmF2ZWdhZG9yIChwdCwgZXMgZSBlbikuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBCdXNjYXJgXG4gICAqL1xuICBASW5wdXQoJ3AtcGxhY2Vob2xkZXItc2VhcmNoJykgcGxhY2Vob2xkZXJTZWFyY2g/OiBzdHJpbmcgPSAnJztcblxuICAvKiogTm9tZSBkbyBjb21wb25lbnRlLiAqL1xuICBASW5wdXQoJ25hbWUnKSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSW5kaWNhIHNlIG8gY2FtcG8gXCJTZWxlY2lvbmFyIHRvZG9zXCIgc2Vyw6EgZXNjb25kaWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1zZWxlY3QtYWxsJykgQElucHV0Qm9vbGVhbigpIGhpZGVTZWxlY3RBbGw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUG9kZSBzZXIgaW5mb3JtYWRhIHVtYSBmdW7Dp8OjbyBxdWUgc2Vyw6EgZGlzcGFyYWRhIHF1YW5kbyBob3V2ZXIgYWx0ZXJhw6fDtWVzIG5vIG5nTW9kZWwuXG4gICAqL1xuICBAT3V0cHV0KCdwLWNoYW5nZScpIGNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBzZWxlY3RlZE9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+ID0gW107XG4gIHZpc2libGVPcHRpb25zRHJvcGRvd246IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+ID0gW107XG4gIHZpc2libGVEaXNjbGFpbWVycyA9IFtdO1xuICBpc1NlcnZlclNlYXJjaGluZyA9IGZhbHNlO1xuICBpc0ZpcnN0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgZmlsdGVyU3ViamVjdCA9IG5ldyBTdWJqZWN0KCk7XG4gIHNlcnZpY2U6IFBvTXVsdGlzZWxlY3RGaWx0ZXJTZXJ2aWNlO1xuICBkZWZhdWx0U2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2U7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIHByb3RlY3RlZCBvbk1vZGVsVG91Y2hlZDogYW55ID0gbnVsbDtcblxuICBwcm90ZWN0ZWQgY2xpY2tPdXRMaXN0ZW5lcjogKCkgPT4gdm9pZDtcbiAgcHJvdGVjdGVkIHJlc2l6ZUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuICBwcm90ZWN0ZWQgZ2V0T2JqZWN0c0J5VmFsdWVzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSBfZmlsdGVyU2VydmljZT86IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfCBzdHJpbmc7XG4gIHByaXZhdGUgX2RlYm91bmNlVGltZT86IG51bWJlciA9IDQwMDtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2ZpbHRlck1vZGU/OiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSA9IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gIHByaXZhdGUgX2hpZGVTZWFyY2g/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb011bHRpc2VsZWN0TGl0ZXJhbHM7XG4gIHByaXZhdGUgX29wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+O1xuICBwcml2YXRlIF9yZXF1aXJlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc29ydD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYXV0b0hlaWdodDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9maWVsZExhYmVsPzogc3RyaW5nID0gUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVDtcbiAgcHJpdmF0ZSBfZmllbGRWYWx1ZT86IHN0cmluZyA9IFBPX01VTFRJU0VMRUNUX0ZJRUxEX1ZBTFVFX0RFRkFVTFQ7XG4gIHByaXZhdGUgbGFuZ3VhZ2U6IHN0cmluZztcblxuICBwcml2YXRlIGxhc3RMZW5ndGhNb2RlbDtcbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlOiBhbnk7XG4gIHByaXZhdGUgdmFsaWRhdG9yQ2hhbmdlOiBhbnk7XG4gIHByaXZhdGUgYXV0b0hlaWdodEluaXRpYWxWYWx1ZTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBOZXN0YSBwcm9wcmllZGFkZSBwb2RlIHNlciBpbmZvcm1hZGEgYSBVUkwgZG8gc2VydmnDp28gZW0gcXVlIHNlcsOhIHJlYWxpemFkbyBvIGZpbHRybyBwYXJhIGNhcnJlZ2FtZW50byBkYSBsaXN0YSBkZSBpdGVucyBubyBjb21wb25lbnRlLlxuICAgKlxuICAgKlRhbWLDqW0gZXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSBpbmZvcm1hciB1bSBzZXJ2acOnbyBpbXBsZW1lbnRhbmRvIGEgaW50ZXJmYWNlIGBQb011bHRpc2VsZWN0RmlsdGVyYC5cbiAgICpcbiAgICpDYXNvIHV0aWxpemFkbyB1bWEgVVJMLCBvIHNlcnZpw6dvIGRldmUgc2VyIHJldG9ybmFkbyBubyBwYWRyw6NvIFtBUEkgUE8gVUldKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL2FwaSkgZSB1dGlsaXphciBhcyBwcm9wcmllZGFkZXMgYHAtZmllbGQtbGFiZWxgIGUgYHAtZmllbGQtdmFsdWVgIHBhcmEgYSBjb25zdHJ1w6fDo28gZGEgbGlzdGEgZGUgaXRlbnMuXG4gICAqXG4gICAqUXVhbmRvIHV0aWxpemFkYSB1bWEgVVJMIGRlIHNlcnZpw6dvLCBlbnTDo28gc2Vyw6EgY29uY2F0ZW5hZGEgbmVzdGEgVVJMIG8gdmFsb3IgcXVlIGRlc2VqYS1zZSBmaWx0cmFyIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKmBgYFxuICAgKiAvLyBjYXNvIGZpbHRyYXIgcG9yIFwiUGV0ZXJcIlxuICAgKiAgaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvaGVyb2VzP2ZpbHRlcj1QZXRlclxuICAgKmBgYFxuICAgKlxuICAgKkUgY2FzbyBpbmljaWFyIG8gY2FtcG8gY29tIHZhbG9yLCBvcyBpdGVucyBzZXLDo28gYnVzY2Fkb3MgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqYGBgXG4gICAqIC8vIGNhc28gbyB2YWxvciBkbyBjYW1wbyBmb3IgWzEyMzQsIDU2NzhdO1xuICAgKiAgaHR0cHM6Ly9sb2NhbGhvc3Q6ODA4MC9hcGkvaGVyb2VzP3ZhbHVlPTEyMzQsNTY3OFxuICAgKlxuICAgKiAvL08gKnZhbHVlKiDDqSByZWZlcmVudGUgYW8gYGZpZWxkVmFsdWVgLlxuICAgKmBgYFxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWZpbHRlci1zZXJ2aWNlJykgc2V0IGZpbHRlclNlcnZpY2UodmFsdWU6IFBvTXVsdGlzZWxlY3RGaWx0ZXIgfCBzdHJpbmcpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX2ZpbHRlclNlcnZpY2UgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYXV0b0hlaWdodCA9IHRoaXMuYXV0b0hlaWdodEluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy5hdXRvSGVpZ2h0SW5pdGlhbFZhbHVlIDogdHJ1ZTtcbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWx0ZXJTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIHF1ZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIHNlcsOhIGF1dG8gYWp1c3TDoXZlbCwgcG9zc3VpbmRvIHVtYSBhbHR1cmEgbWluaW1hIHBvcsOpbSBhIGFsdHVyYSBtw6F4aW1hIHNlcsOhIGRlIGFjb3Jkb1xuICAgKiBjb20gbyBuw7ptZXJvIGRlIGl0ZW5zIHNlbGVjaW9uYWRvcyBlIGEgZXh0ZW5zw6NvIGRvcyBtZXNtb3MsIG1hbnRlbmRvLW9zIHNlbXByZSB2aXPDrXZlaXMuXG4gICAqXG4gICAqID4gTyB2YWxvciBwYWRyw6NvIHNlcsOhIGB0cnVlYCBxdWFuZG8gaG91dmVyIHNlcnZpw6dvIChgcC1maWx0ZXItc2VydmljZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0by1oZWlnaHQnKSBASW5wdXRCb29sZWFuKCkgc2V0IGF1dG9IZWlnaHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdXRvSGVpZ2h0ID0gdmFsdWU7XG4gICAgdGhpcy5hdXRvSGVpZ2h0SW5pdGlhbFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBnZXQgYXV0b0hlaWdodCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b0hlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEVzdGEgcHJvcHJpZWRhZGUgZGVmaW5lIGVtIHF1YW50byB0ZW1wbyAoZW0gbWlsaXNzZWd1bmRvcyksIGFndWFyZGEgcGFyYSBhY2lvbmFyIG8gZXZlbnRvIGRlIGZpbHRybyBhcMOzcyBjYWRhIHByZXNzaW9uYW1lbnRvIGRlIHRlY2xhLlxuICAgKlxuICAgKiA+IFNlcsOhIHV0aWxpemFkYSBhcGVuYXMgcXVhbmRvIGhvdXZlciBzZXJ2acOnbyAoYHAtZmlsdGVyLXNlcnZpY2VgKSBlIHNvbWVudGUgc2Vyw6EgYWNlaXRvIHZhbG9yIG1haW9yIGRvIHF1ZSAqemVybyouXG4gICAqXG4gICAqIEBkZWZhdWx0IGA0MDBgXG4gICAqL1xuICBASW5wdXQoJ3AtZGVib3VuY2UtdGltZScpIHNldCBkZWJvdW5jZVRpbWUodmFsdWU6IG51bWJlcikge1xuICAgIGNvbnN0IHBhcnNlZFZhbHVlID0gcGFyc2VJbnQoPGFueT52YWx1ZSwgMTApO1xuXG4gICAgdGhpcy5fZGVib3VuY2VUaW1lID0gIWlzTmFOKHBhcnNlZFZhbHVlKSAmJiBwYXJzZWRWYWx1ZSA+IDAgPyBwYXJzZWRWYWx1ZSA6IFBPX01VTFRJU0VMRUNUX0RFQk9VTkNFX1RJTUVfREVGQVVMVDtcbiAgfVxuXG4gIGdldCBkZWJvdW5jZVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2VUaW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLW11bHRpc2VsZWN0YC5cbiAgICpcbiAgICogRXhpc3RlbSBkdWFzIG1hbmVpcmFzIGRlIGN1c3RvbWl6YXIgbyBjb21wb25lbnRlLCBwYXNzYW5kbyB1bSBvYmpldG8gY29tIHRvZGFzIGFzIGxpdGVyYWlzIGRpc3BvbsOtdmVpczpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9NdWx0aXNlbGVjdExpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdOZW5odW0gZGFkbyBlbmNvbnRyYWRvJyxcbiAgICogICAgcGxhY2Vob2xkZXJTZWFyY2g6ICdCdXNjYXInXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9NdWx0aXNlbGVjdExpdGVyYWxzID0ge1xuICAgKiAgICBub0RhdGE6ICdTZW0gZGFkb3MnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZTpcbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1tdWx0aXNlbGVjdFxuICAgKiAgIFtwLWxpdGVyYWxzXT1cImN1c3RvbUxpdGVyYWxzXCI+XG4gICAqIDwvcG8tcG8tbXVsdGlzZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IE8gb2JqZXRvIHBhZHLDo28gZGUgbGl0ZXJhaXMgc2Vyw6EgdHJhZHV6aWRvIGRlIGFjb3JkbyBjb20gbyBpZGlvbWEgZG9cbiAgICogW2BQb0kxOG5TZXJ2aWNlYF0oL2RvY3VtZW50YXRpb24vcG8taTE4bikgb3UgZG8gYnJvd3Nlci5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9NdWx0aXNlbGVjdExpdGVyYWxzKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0ICYmICEodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgIHRoaXMuX2xpdGVyYWxzID0ge1xuICAgICAgICAuLi5wb011bHRpc2VsZWN0TGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAgIC4uLnBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV0sXG4gICAgICAgIC4uLnZhbHVlXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9saXRlcmFscyA9IHBvTXVsdGlzZWxlY3RMaXRlcmFsc0RlZmF1bHRbdGhpcy5sYW5ndWFnZV07XG4gICAgfVxuICB9XG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHMgfHwgcG9NdWx0aXNlbGVjdExpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBxdWUgbyBjYW1wbyBzZXLDoSBvYnJpZ2F0w7NyaW8uIEVzdGEgcHJvcHJpZWRhZGUgw6kgZGVzY29uc2lkZXJhZGEgcXVhbmRvIG8gY2FtcG8gZXN0w6EgZGVzYWJpbGl0YWRvIChwLWRpc2FibGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLXJlcXVpcmVkJykgc2V0IHJlcXVpcmVkKHJlcXVpcmVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSA8YW55PnJlcXVpcmVkID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHJlcXVpcmVkKTtcbiAgICB0aGlzLnZhbGlkYXRlTW9kZWwoKTtcbiAgfVxuXG4gIGdldCByZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIG8gY2FtcG8gc2Vyw6EgZGVzYWJpbGl0YWRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtZGlzYWJsZWQnKSBzZXQgZGlzYWJsZWQoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IDxhbnk+ZGlzYWJsZWQgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oZGlzYWJsZWQpO1xuICAgIHRoaXMudmFsaWRhdGVNb2RlbCgpO1xuXG4gICAgdGhpcy51cGRhdGVWaXNpYmxlSXRlbXMoKTtcbiAgfVxuXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFc2NvbmRlIG8gY2FtcG8gZGUgcGVzcXVpc2EgZXhpc3RlbnRlIGRlbnRybyBkbyBkcm9wZG93biBkbyBwby1tdWx0aXNlbGVjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtc2VhcmNoJykgc2V0IGhpZGVTZWFyY2goaGlkZVNlYXJjaDogYm9vbGVhbikge1xuICAgIHRoaXMuX2hpZGVTZWFyY2ggPSA8YW55PmhpZGVTZWFyY2ggPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4oaGlkZVNlYXJjaCk7XG4gIH1cblxuICBnZXQgaGlkZVNlYXJjaCgpIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVNlYXJjaDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogTmVzdGEgcHJvcHJpZWRhZGUgZGV2ZSBzZXIgZGVmaW5pZGEgdW1hIGxpc3RhIGRlIG9iamV0b3MgcXVlIHNlcsOhIGV4aWJpZGEgbm8gbXVsdGlzZWxlY3QuXG4gICAqIEVzdGEgbGlzdGEgZGV2ZSBjb250ZXIgb3MgdmFsb3JlcyBlIG9zIGxhYmVscyBxdWUgc2Vyw6NvIGFwcmVzZW50YWRvcyBuYSB0ZWxhLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgw6kgaW11dMOhdmVsLCBvdSBzZWphLCBzZW1wcmUgcXVlIHF1aXNlciBhdHVhbGl6YXIgYSBsaXN0YSBkZSBvcMOnw7VlcyBkaXNwb27DrXZlaXNcbiAgICogYXR1YWxpemUgYSByZWZlcsOqbmNpYSBkbyBvYmpldG86XG4gICAqXG4gICAqIGBgYFxuICAgKiAvLyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBnYXJhbnRpbmRvIGEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zLCB7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9XTtcbiAgICpcbiAgICogLy8gZXZpdGUsIHBvaXMgbsOjbyBhdHVhbGl6YSBhIHJlZmVyw6puY2lhIGRvIG9iamV0byBwb2RlbmRvIGdlcmFyIGF0cmFzb3MgbmEgYXR1YWxpemHDp8OjbyBkbyB0ZW1wbGF0ZVxuICAgKiB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiAneCcsIGxhYmVsOiAnTm92YSBvcMOnw6NvJyB9KTtcbiAgICogYGBgXG4gICAqID4gQSBsaXN0YSBwb2RlIHNlciBkZWZpbmlkYSB1dGlsaXphbmRvIHVtIGFycmF5IGNvbSBvIHZhbG9yIHJlcHJlc2VudGFuZG8gYHZhbHVlYCBlIGBsYWJlbGAgZGFzIHNlZ3VpbnRlcyBmb3JtYXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiA8cG8tbXVsdGlzZWxlY3QgbmFtZT1cIm11bHRpc2VsZWN0XCIgcC1sYWJlbD1cIlBPIE11bHRpc2VsZWN0XCIgW3Atb3B0aW9uc109XCJbe3ZhbHVlOiAxLCBsYWJlbDogJ09uZSd9LCB7dmFsdWU6IDIsIGxhYmVsOiAndHdvJ31dXCI+IDwvcG8tbXVsdGlzZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLW11bHRpc2VsZWN0IG5hbWU9XCJtdWx0aXNlbGVjdFwiIHAtbGFiZWw9XCJQTyBNdWx0aXNlbGVjdFwiIFtwLW9wdGlvbnNdPVwiW3tuYW1lOiAnUm9nZXInLCBhZ2U6IDI4fSwge25hbWU6ICdBbm5lJywgYWdlOiAzNX1dXCIgcC1maWVsZC1sYWJlbD1cIm5hbWVcIiBwLWZpZWxkLXZhbHVlPVwiYWdlXCI+IDwvcG8tbXVsdGlzZWxlY3Q+XG4gICAqIGBgYFxuICAgKlxuICAgKiAtIEFjb25zZWxoYS1zZSB1dGlsaXphciB2YWxvcmVzIGRpc3RpbnRvcyBubyBgbGFiZWxgIGUgYHZhbHVlYCBkb3MgaXRlbnMuXG4gICAqL1xuICBASW5wdXQoJ3Atb3B0aW9ucycpIHNldCBvcHRpb25zKG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBnZXQgb3B0aW9ucygpOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2EgcXVlIGEgbGlzdGEgZGVmaW5pZGEgbmEgcHJvcHJpZWRhZGUgcC1vcHRpb25zIHNlcsOhIG9yZGVuYWRhIHBlbG8gbGFiZWwgYW50ZXMgZGUgc2VyIGFwcmVzZW50YWRhIG5vXG4gICAqIGRyb3Bkb3duLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3Atc29ydCcpIHNldCBzb3J0KHNvcnQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zb3J0ID0gPGFueT5zb3J0ID09PSAnJyA/IHRydWUgOiBjb252ZXJ0VG9Cb29sZWFuKHNvcnQpO1xuXG4gICAgdGhpcy52YWxpZEFuZFNvcnRPcHRpb25zKCk7XG4gIH1cblxuICBnZXQgc29ydCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBvIG1vZG8gZGUgcGVzcXVpc2EgdXRpbGl6YWRvIG5vIGNhbXBvIGRlIGJ1c2NhLCBxdWFuZG8gaGFiaWxpdGFkby5cbiAgICogVmFsb3JlcyBkZWZpbmlkb3Mgbm8gZW51bTogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGVcbiAgICpcbiAgICogQGRlZmF1bHQgYHN0YXJ0c1dpdGhgXG4gICAqL1xuICBASW5wdXQoJ3AtZmlsdGVyLW1vZGUnKSBzZXQgZmlsdGVyTW9kZShmaWx0ZXJNb2RlOiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSkge1xuICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBmaWx0ZXJNb2RlIGluIFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlID8gZmlsdGVyTW9kZSA6IFBvTXVsdGlzZWxlY3RGaWx0ZXJNb2RlLnN0YXJ0c1dpdGg7XG4gICAgc3dpdGNoICh0aGlzLl9maWx0ZXJNb2RlLnRvU3RyaW5nKCkpIHtcbiAgICAgIGNhc2UgJ3N0YXJ0c1dpdGgnOlxuICAgICAgICB0aGlzLl9maWx0ZXJNb2RlID0gUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuc3RhcnRzV2l0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb250YWlucyc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5jb250YWlucztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdlbmRzV2l0aCc6XG4gICAgICAgIHRoaXMuX2ZpbHRlck1vZGUgPSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5lbmRzV2l0aDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGZpbHRlck1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlck1vZGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBEZXZlIHNlciBpbmZvcm1hZG8gbyBub21lIGRhIHByb3ByaWVkYWRlIGRvIG9iamV0byBxdWUgc2Vyw6EgdXRpbGl6YWRvIHBhcmEgYSBjb252ZXJzw6NvIGRvcyBpdGVucyBhcHJlc2VudGFkb3MgbmEgbGlzdGEgZG8gY29tcG9uZW50ZVxuICAgKiAoYHAtb3B0aW9uc2ApLCBlc3RhIHByb3ByaWVkYWRlIHNlcsOhIHJlc3BvbnPDoXZlbCBwZWxvIHRleHRvIGRlIGFwcmVzZW50YcOnw6NvIGRlIGNhZGEgaXRlbSBkYSBsaXN0YS5cbiAgICpcbiAgICogTmVjZXNzw6FyaW8gcXVhbmRvIGluZm9ybWFyIG8gc2VydmnDp28gY29tbyBVUkwgZSBvIG1lc21vIG7Do28gZXN0aXZlciByZXRvcm5hbmRvIHVtYSBsaXN0YSBkZSBvYmpldG9zIG5vIHBhZHLDo28gZGEgaW50ZXJmYWNlXG4gICAqIGBQb011bHRpU2VsZWN0T3B0aW9uYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGxhYmVsYFxuICAgKi9cbiAgQElucHV0KCdwLWZpZWxkLWxhYmVsJykgc2V0IGZpZWxkTGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2ZpZWxkTGFiZWwgPSB2YWx1ZSA/IHZhbHVlIDogUE9fTVVMVElTRUxFQ1RfRklFTERfTEFCRUxfREVGQVVMVDtcblxuICAgIGlmIChpc1R5cGVvZih0aGlzLmZpbHRlclNlcnZpY2UsICdzdHJpbmcnKSAmJiB0aGlzLnNlcnZpY2UpIHtcbiAgICAgIHRoaXMuc2VydmljZS5maWVsZExhYmVsID0gdGhpcy5fZmllbGRMYWJlbDtcbiAgICB9XG4gIH1cblxuICBnZXQgZmllbGRMYWJlbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRMYWJlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIERldmUgc2VyIGluZm9ybWFkbyBvIG5vbWUgZGEgcHJvcHJpZWRhZGUgZG8gb2JqZXRvIHF1ZSBzZXLDoSB1dGlsaXphZG8gcGFyYSBhIGNvbnZlcnPDo28gZG9zIGl0ZW5zIGFwcmVzZW50YWRvcyBuYSBsaXN0YSBkbyBjb21wb25lbnRlXG4gICAqIChgcC1vcHRpb25zYCksIGVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgcmVzcG9uc8OhdmVsIHBlbG8gdmFsb3IgZGUgY2FkYSBpdGVtIGRhIGxpc3RhLlxuICAgKlxuICAgKiBOZWNlc3PDoXJpbyBxdWFuZG8gaW5mb3JtYXIgbyBzZXJ2acOnbyBjb21vIFVSTCBlIG8gbWVzbW8gbsOjbyBlc3RpdmVyIHJldG9ybmFuZG8gdW1hIGxpc3RhIGRlIG9iamV0b3Mgbm8gcGFkcsOjbyBkYSBpbnRlcmZhY2VcbiAgICogYFBvTXVsdGlTZWxlY3RPcHRpb25gLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdmFsdWVgXG4gICAqL1xuICBASW5wdXQoJ3AtZmllbGQtdmFsdWUnKSBzZXQgZmllbGRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZmllbGRWYWx1ZSA9IHZhbHVlID8gdmFsdWUgOiBQT19NVUxUSVNFTEVDVF9GSUVMRF9WQUxVRV9ERUZBVUxUO1xuXG4gICAgaWYgKGlzVHlwZW9mKHRoaXMuZmlsdGVyU2VydmljZSwgJ3N0cmluZycpICYmIHRoaXMuc2VydmljZSkge1xuICAgICAgdGhpcy5zZXJ2aWNlLmZpZWxkVmFsdWUgPSB0aGlzLl9maWVsZFZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBmaWVsZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZFZhbHVlO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZSkge1xuICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZVNlcnZpY2UuZ2V0U2hvcnRMYW5ndWFnZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZXRTZXJ2aWNlKHRoaXMuZmlsdGVyU2VydmljZSk7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFwKCgpID0+ICh0aGlzLmlzU2VydmVyU2VhcmNoaW5nID0gdHJ1ZSkpLFxuICAgICAgICBzd2l0Y2hNYXAoKHNlYXJjaDogc3RyaW5nKSA9PiB0aGlzLmFwcGx5RmlsdGVyKHNlYXJjaCkpLFxuICAgICAgICB0YXAoKCkgPT4gKHRoaXMuaXNTZXJ2ZXJTZWFyY2hpbmcgPSBmYWxzZSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnZhbGlkQW5kU29ydE9wdGlvbnMoKTtcbiAgICB0aGlzLnVwZGF0ZUxpc3QodGhpcy5vcHRpb25zKTtcbiAgfVxuXG4gIHNldFNlcnZpY2Uoc2VydmljZTogUG9NdWx0aXNlbGVjdEZpbHRlciB8IHN0cmluZykge1xuICAgIGlmIChpc1R5cGVvZihzZXJ2aWNlLCAnb2JqZWN0JykpIHtcbiAgICAgIHRoaXMuc2VydmljZSA9IDxQb011bHRpc2VsZWN0RmlsdGVyU2VydmljZT5zZXJ2aWNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlcnZpY2UgPSB0aGlzLmRlZmF1bHRTZXJ2aWNlO1xuICAgICAgdGhpcy5zZXJ2aWNlLmNvbmZpZ1Byb3BlcnRpZXMoPHN0cmluZz5zZXJ2aWNlLCB0aGlzLmZpZWxkTGFiZWwsIHRoaXMuZmllbGRWYWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc0ZpcnN0RmlsdGVyID0gdHJ1ZTtcbiAgfVxuXG4gIHZhbGlkQW5kU29ydE9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICByZW1vdmVVbmRlZmluZWRBbmROdWxsT3B0aW9uc1dpdGhGaWVsZFZhbHVlKHRoaXMub3B0aW9ucywgdGhpcy5maWVsZFZhbHVlKTtcbiAgICAgIHJlbW92ZUR1cGxpY2F0ZWRPcHRpb25zV2l0aEZpZWxkVmFsdWUodGhpcy5vcHRpb25zLCB0aGlzLmZpZWxkVmFsdWUpO1xuICAgICAgdGhpcy5zZXRVbmRlZmluZWRMYWJlbHModGhpcy5vcHRpb25zKTtcblxuICAgICAgaWYgKHRoaXMuc29ydCkge1xuICAgICAgICBzb3J0T3B0aW9uc0J5UHJvcGVydHkodGhpcy5vcHRpb25zLCB0aGlzLmZpZWxkTGFiZWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFVuZGVmaW5lZExhYmVscyhvcHRpb25zKSB7XG4gICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICBpZiAoIW9wdGlvblt0aGlzLmZpZWxkTGFiZWxdKSB7XG4gICAgICAgIG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdID0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVMaXN0KG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSB7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgIHRoaXMudmlzaWJsZU9wdGlvbnNEcm9wZG93biA9IG9wdGlvbnM7XG4gICAgfVxuICB9XG5cbiAgY2FsbE9uQ2hhbmdlKHNlbGVjdGVkT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4pIHtcbiAgICBpZiAodGhpcy5vbk1vZGVsQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5nZXRWYWx1ZXNGcm9tT3B0aW9ucyhzZWxlY3RlZE9wdGlvbnMpKTtcbiAgICAgIHRoaXMuZXZlbnRDaGFuZ2Uoc2VsZWN0ZWRPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBldmVudENoYW5nZShzZWxlY3RlZE9wdGlvbnMpIHtcbiAgICBpZiAoc2VsZWN0ZWRPcHRpb25zICYmIHRoaXMubGFzdExlbmd0aE1vZGVsICE9PSBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgfVxuICAgIHRoaXMubGFzdExlbmd0aE1vZGVsID0gc2VsZWN0ZWRPcHRpb25zID8gc2VsZWN0ZWRPcHRpb25zLmxlbmd0aCA6IG51bGw7XG4gIH1cblxuICBnZXRWYWx1ZXNGcm9tT3B0aW9ucyhzZWxlY3RlZE9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+KSB7XG4gICAgcmV0dXJuIHNlbGVjdGVkT3B0aW9ucyAmJiBzZWxlY3RlZE9wdGlvbnMubGVuZ3RoID8gc2VsZWN0ZWRPcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pIDogW107XG4gIH1cblxuICBnZXRMYWJlbEJ5VmFsdWUodmFsdWUpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdID09PSB2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF0ubGFiZWw7XG4gIH1cblxuICBzZWFyY2hCeUxhYmVsKHNlYXJjaDogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PiwgZmlsdGVyTW9kZTogUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUpIHtcbiAgICBpZiAoc2VhcmNoICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5ld09wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+ID0gW107XG4gICAgICBvcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgaWYgKG9wdGlvblt0aGlzLmZpZWxkTGFiZWxdICYmIHRoaXMuY29tcGFyZU1ldGhvZChzZWFyY2gsIG9wdGlvbiwgZmlsdGVyTW9kZSkpIHtcbiAgICAgICAgICBuZXdPcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBuZXdPcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpc2libGVPcHRpb25zRHJvcGRvd24gPSBbLi4ub3B0aW9uc107XG4gICAgfVxuICB9XG5cbiAgY29tcGFyZU1ldGhvZChzZWFyY2g6IHN0cmluZywgb3B0aW9uOiBQb011bHRpc2VsZWN0T3B0aW9uLCBmaWx0ZXJNb2RlOiBQb011bHRpc2VsZWN0RmlsdGVyTW9kZSkge1xuICAgIHN3aXRjaCAoZmlsdGVyTW9kZSkge1xuICAgICAgY2FzZSBQb011bHRpc2VsZWN0RmlsdGVyTW9kZS5zdGFydHNXaXRoOlxuICAgICAgICByZXR1cm4gdGhpcy5zdGFydHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuY29udGFpbnM6XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zKHNlYXJjaCwgb3B0aW9uKTtcbiAgICAgIGNhc2UgUG9NdWx0aXNlbGVjdEZpbHRlck1vZGUuZW5kc1dpdGg6XG4gICAgICAgIHJldHVybiB0aGlzLmVuZHNXaXRoKHNlYXJjaCwgb3B0aW9uKTtcbiAgICB9XG4gIH1cblxuICBzdGFydHNXaXRoKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZmllbGRMYWJlbF0udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIGNvbnRhaW5zKHNlYXJjaDogc3RyaW5nLCBvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uW3RoaXMuZmllbGRMYWJlbF0udG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaC50b0xvd2VyQ2FzZSgpKSA+IC0xO1xuICB9XG5cbiAgZW5kc1dpdGgoc2VhcmNoOiBzdHJpbmcsIG9wdGlvbjogUG9NdWx0aXNlbGVjdE9wdGlvbikge1xuICAgIHJldHVybiBvcHRpb25bdGhpcy5maWVsZExhYmVsXS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHNlYXJjaC50b0xvd2VyQ2FzZSgpKTtcbiAgfVxuXG4gIHZhbGlkYXRlKGM6IEFic3RyYWN0Q29udHJvbCk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChyZXF1aXJlZEZhaWxlZCh0aGlzLnJlcXVpcmVkLCB0aGlzLmRpc2FibGVkLCBjLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcmVxdWlyZWQ6IHtcbiAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHVwZGF0ZVNlbGVjdGVkT3B0aW9ucyhuZXdPcHRpb25zOiBBcnJheTxhbnk+LCBvcHRpb25zID0gdGhpcy5vcHRpb25zKSB7XG4gICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcblxuICAgIGlmIChuZXdPcHRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5sYXN0TGVuZ3RoTW9kZWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsdGVyU2VydmljZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBuZXdPcHRpb25zO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdPcHRpb25zLmZvckVhY2gobmV3T3B0aW9uID0+IHtcbiAgICAgICAgb3B0aW9ucy5mb3JFYWNoKG9wdGlvbiA9PiB7XG4gICAgICAgICAgaWYgKG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdID09PSBuZXdPcHRpb25bdGhpcy5maWVsZFZhbHVlXSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZVZpc2libGVJdGVtcygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZXM6IGFueSk6IHZvaWQge1xuICAgIHZhbHVlcyA9IHZhbHVlcyB8fCBbXTtcblxuICAgIGlmICh0aGlzLnNlcnZpY2UgJiYgdmFsdWVzLmxlbmd0aCkge1xuICAgICAgdGhpcy5nZXRPYmplY3RzQnlWYWx1ZXNTdWJzY3JpcHRpb24gPSB0aGlzLnNlcnZpY2UuZ2V0T2JqZWN0c0J5VmFsdWVzKHZhbHVlcykuc3Vic2NyaWJlKG9wdGlvbnMgPT4ge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkT3B0aW9ucyhvcHRpb25zKTtcbiAgICAgICAgdGhpcy5jYWxsT25DaGFuZ2UodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFZhbGlkYXIgc2UgdG9kb3Mgb3MgaXRlbXMgZXhpc3RlbSBlbnRyZSBvcyBvcHRpb25zLCBzZW7Do28gYXR1YWxpemFyIG8gbW9kZWxcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRPcHRpb25zKHZhbHVlcy5tYXAodmFsdWUgPT4gKHsgW3RoaXMuZmllbGRWYWx1ZV06IHZhbHVlIH0pKSk7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkT3B0aW9ucyAmJiB0aGlzLnNlbGVjdGVkT3B0aW9ucy5sZW5ndGggPCB2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY2FsbE9uQ2hhbmdlKHRoaXMuc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGdW7Dp8OjbyBpbXBsZW1lbnRhZGEgZG8gQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgLy8gVXNhZGEgcGFyYSBpbnRlcmNlcHRhciBvcyBlc3RhZG9zIGRlIGhhYmlsaXRhZG8gdmlhIGZvcm1zIGFwaVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLnZhbGlkYXRvckNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZU1vZGVsKCkge1xuICAgIGlmICh0aGlzLnZhbGlkYXRvckNoYW5nZSkge1xuICAgICAgdGhpcy52YWxpZGF0b3JDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBhYnN0cmFjdCBhcHBseUZpbHRlcih2YWx1ZT86IHN0cmluZyk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4+O1xuICBhYnN0cmFjdCB1cGRhdGVWaXNpYmxlSXRlbXMoKTogdm9pZDtcbn1cbiJdfQ==
@@ -10,7 +10,7 @@ function PoMultiselectDropdownComponent_po_multiselect_search_2_Template(rf, ctx
10
10
  i0.ɵɵelementEnd();
11
11
  } if (rf & 2) {
12
12
  const ctx_r1 = i0.ɵɵnextContext();
13
- i0.ɵɵproperty("p-literals", ctx_r1.literals)("p-placeholder", ctx_r1.placeholderSearch);
13
+ i0.ɵɵproperty("p-literals", ctx_r1.literals)("p-field-value", ctx_r1.fieldValue)("p-placeholder", ctx_r1.placeholderSearch);
14
14
  } }
15
15
  function PoMultiselectDropdownComponent_div_5_Template(rf, ctx) { if (rf & 1) {
16
16
  i0.ɵɵelementStart(0, "div", 10)(1, "span");
@@ -43,7 +43,7 @@ function PoMultiselectDropdownComponent_ng_container_7_po_multiselect_item_2_Tem
43
43
  } if (rf & 2) {
44
44
  const option_r13 = ctx.$implicit;
45
45
  const ctx_r10 = i0.ɵɵnextContext(2);
46
- i0.ɵɵproperty("p-label", option_r13.label)("p-selected", ctx_r10.isSelectedItem(option_r13));
46
+ i0.ɵɵproperty("p-label", option_r13[ctx_r10.fieldLabel])("p-selected", ctx_r10.isSelectedItem(option_r13));
47
47
  } }
48
48
  function PoMultiselectDropdownComponent_ng_container_7_Template(rf, ctx) { if (rf & 1) {
49
49
  i0.ɵɵelementContainerStart(0);
@@ -105,7 +105,7 @@ export class PoMultiselectDropdownComponent {
105
105
  this.cd.markForCheck();
106
106
  }
107
107
  isSelectedItem(option) {
108
- return this.selectedOptions.some(selectedItem => selectedItem.value === option.value);
108
+ return this.selectedOptions.some(selectedItem => selectedItem[this.fieldValue] === option[this.fieldValue]);
109
109
  }
110
110
  clickItem(check, option) {
111
111
  this.updateSelectedValues(check, option);
@@ -114,7 +114,7 @@ export class PoMultiselectDropdownComponent {
114
114
  }
115
115
  }
116
116
  onClickSelectAll() {
117
- const selectedValues = this.selectedOptions.map(({ value }) => value);
117
+ const selectedValues = this.selectedOptions.map(({ [this.fieldValue]: value }) => value);
118
118
  if (this.everyVisibleOptionsSelected(selectedValues)) {
119
119
  this.selectedOptions = [];
120
120
  }
@@ -128,18 +128,18 @@ export class PoMultiselectDropdownComponent {
128
128
  this.selectedOptions.push(option);
129
129
  }
130
130
  else {
131
- this.selectedOptions = this.selectedOptions.filter(selectedOption => selectedOption.value !== option.value);
131
+ this.selectedOptions = this.selectedOptions.filter(selectedOption => selectedOption[this.fieldValue] !== option[this.fieldValue]);
132
132
  }
133
133
  this.change.emit(this.selectedOptions);
134
134
  }
135
135
  everyVisibleOptionsSelected(selectedValues) {
136
- return this.visibleOptions.every(visibleOption => selectedValues.includes(visibleOption.value));
136
+ return this.visibleOptions.every(visibleOption => selectedValues.includes(visibleOption[this.fieldValue]));
137
137
  }
138
138
  someVisibleOptionsSelected(selectedValues) {
139
- return this.visibleOptions.some(visibleOption => selectedValues.includes(visibleOption.value));
139
+ return this.visibleOptions.some(visibleOption => selectedValues.includes(visibleOption[this.fieldValue]));
140
140
  }
141
141
  getStateSelectAll() {
142
- const selectedValues = this.selectedOptions.map(({ value }) => value);
142
+ const selectedValues = this.selectedOptions.map(({ [this.fieldValue]: value }) => value);
143
143
  if (this.everyVisibleOptionsSelected(selectedValues)) {
144
144
  return true;
145
145
  }
@@ -166,7 +166,7 @@ export class PoMultiselectDropdownComponent {
166
166
  uniqueSelectedOptions(selectedValues) {
167
167
  const newSelectedOptions = [...this.selectedOptions];
168
168
  for (const visibleOption of this.visibleOptions) {
169
- if (!selectedValues.includes(visibleOption.value)) {
169
+ if (!selectedValues.includes(visibleOption[this.fieldValue])) {
170
170
  newSelectedOptions.push(visibleOption);
171
171
  }
172
172
  }
@@ -185,9 +185,9 @@ PoMultiselectDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
185
185
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.searchElement = _t.first);
186
186
  } }, hostBindings: function PoMultiselectDropdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
187
187
  i0.ɵɵlistener("keydown", function PoMultiselectDropdownComponent_keydown_HostBindingHandler($event) { return ctx.onKeydown($event); });
188
- } }, inputs: { isServerSearching: ["p-searching", "isServerSearching"], hideSearch: ["p-hide-search", "hideSearch"], literals: ["p-literals", "literals"], placeholderSearch: ["p-placeholder-search", "placeholderSearch"], selectedOptions: ["p-selected-options", "selectedOptions"], options: ["p-options", "options"], visibleOptions: ["p-visible-options", "visibleOptions"], hideSelectAll: ["p-hide-select-all", "hideSelectAll"] }, outputs: { changeSearch: "p-change-search", change: "p-change", closeDropdown: "p-close-dropdown" }, decls: 8, vars: 6, consts: [[1, "po-multiselect-container", 3, "hidden"], ["container", ""], [3, "p-literals", "p-placeholder", "p-change", 4, "ngIf"], [1, "po-multiselect-items-container", 3, "scrollTop"], ["ulElement", ""], ["class", "po-multiselect-container-no-data po-text-center", 4, "ngIf"], ["class", "po-multiselect-container-loading po-text-center", 4, "ngIf"], [4, "ngIf"], [3, "p-literals", "p-placeholder", "p-change"], ["searchElement", ""], [1, "po-multiselect-container-no-data", "po-text-center"], [1, "po-multiselect-container-loading", "po-text-center"], [3, "p-label", "p-selected", "p-change", 4, "ngIf"], [3, "p-label", "p-selected", "p-change", 4, "ngFor", "ngForOf"], [3, "p-label", "p-selected", "p-change"]], template: function PoMultiselectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
188
+ } }, inputs: { isServerSearching: ["p-searching", "isServerSearching"], hideSearch: ["p-hide-search", "hideSearch"], literals: ["p-literals", "literals"], placeholderSearch: ["p-placeholder-search", "placeholderSearch"], selectedOptions: ["p-selected-options", "selectedOptions"], options: ["p-options", "options"], visibleOptions: ["p-visible-options", "visibleOptions"], hideSelectAll: ["p-hide-select-all", "hideSelectAll"], fieldValue: ["p-field-value", "fieldValue"], fieldLabel: ["p-field-label", "fieldLabel"] }, outputs: { changeSearch: "p-change-search", change: "p-change", closeDropdown: "p-close-dropdown" }, decls: 8, vars: 6, consts: [[1, "po-multiselect-container", 3, "hidden"], ["container", ""], [3, "p-literals", "p-field-value", "p-placeholder", "p-change", 4, "ngIf"], [1, "po-multiselect-items-container", 3, "scrollTop"], ["ulElement", ""], ["class", "po-multiselect-container-no-data po-text-center", 4, "ngIf"], ["class", "po-multiselect-container-loading po-text-center", 4, "ngIf"], [4, "ngIf"], [3, "p-literals", "p-field-value", "p-placeholder", "p-change"], ["searchElement", ""], [1, "po-multiselect-container-no-data", "po-text-center"], [1, "po-multiselect-container-loading", "po-text-center"], [3, "p-label", "p-selected", "p-change", 4, "ngIf"], [3, "p-label", "p-selected", "p-change", 4, "ngFor", "ngForOf"], [3, "p-label", "p-selected", "p-change"]], template: function PoMultiselectDropdownComponent_Template(rf, ctx) { if (rf & 1) {
189
189
  i0.ɵɵelementStart(0, "div", 0, 1);
190
- i0.ɵɵtemplate(2, PoMultiselectDropdownComponent_po_multiselect_search_2_Template, 2, 2, "po-multiselect-search", 2);
190
+ i0.ɵɵtemplate(2, PoMultiselectDropdownComponent_po_multiselect_search_2_Template, 2, 3, "po-multiselect-search", 2);
191
191
  i0.ɵɵelementStart(3, "ul", 3, 4);
192
192
  i0.ɵɵtemplate(5, PoMultiselectDropdownComponent_div_5_Template, 3, 1, "div", 5);
193
193
  i0.ɵɵtemplate(6, PoMultiselectDropdownComponent_div_6_Template, 2, 0, "div", 6);
@@ -208,7 +208,7 @@ PoMultiselectDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
208
208
  } }, encapsulation: 2, changeDetection: 0 });
209
209
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectDropdownComponent, [{
210
210
  type: Component,
211
- args: [{ selector: 'po-multiselect-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #container class=\"po-multiselect-container\" [hidden]=\"!show\">\n <po-multiselect-search\n #searchElement\n *ngIf=\"!hideSearch\"\n [p-literals]=\"literals\"\n [p-placeholder]=\"placeholderSearch\"\n (p-change)=\"callChangeSearch($event)\"\n >\n </po-multiselect-search>\n\n <ul class=\"po-multiselect-items-container\" [scrollTop]=\"scrollTop\" #ulElement>\n <div *ngIf=\"!visibleOptions.length && !isServerSearching\" class=\"po-multiselect-container-no-data po-text-center\">\n <span> {{ literals.noData }}</span>\n </div>\n\n <div *ngIf=\"isServerSearching\" class=\"po-multiselect-container-loading po-text-center\">\n <po-loading></po-loading>\n </div>\n\n <ng-container *ngIf=\"!isServerSearching\">\n <po-multiselect-item\n *ngIf=\"!searchElement?.inputValue && visibleOptions.length && !hideSelectAll\"\n [p-label]=\"literals?.selectAll\"\n [p-selected]=\"getStateSelectAll()\"\n (p-change)=\"onClickSelectAll()\"\n >\n </po-multiselect-item>\n\n <po-multiselect-item\n *ngFor=\"let option of visibleOptions\"\n [p-label]=\"option.label\"\n [p-selected]=\"isSelectedItem(option)\"\n (p-change)=\"clickItem($event, option)\"\n >\n </po-multiselect-item>\n </ng-container>\n </ul>\n</div>\n" }]
211
+ args: [{ selector: 'po-multiselect-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #container class=\"po-multiselect-container\" [hidden]=\"!show\">\n <po-multiselect-search\n #searchElement\n *ngIf=\"!hideSearch\"\n [p-literals]=\"literals\"\n [p-field-value]=\"fieldValue\"\n [p-placeholder]=\"placeholderSearch\"\n (p-change)=\"callChangeSearch($event)\"\n >\n </po-multiselect-search>\n\n <ul class=\"po-multiselect-items-container\" [scrollTop]=\"scrollTop\" #ulElement>\n <div *ngIf=\"!visibleOptions.length && !isServerSearching\" class=\"po-multiselect-container-no-data po-text-center\">\n <span> {{ literals.noData }}</span>\n </div>\n\n <div *ngIf=\"isServerSearching\" class=\"po-multiselect-container-loading po-text-center\">\n <po-loading></po-loading>\n </div>\n\n <ng-container *ngIf=\"!isServerSearching\">\n <po-multiselect-item\n *ngIf=\"!searchElement?.inputValue && visibleOptions.length && !hideSelectAll\"\n [p-label]=\"literals?.selectAll\"\n [p-selected]=\"getStateSelectAll()\"\n (p-change)=\"onClickSelectAll()\"\n >\n </po-multiselect-item>\n\n <po-multiselect-item\n *ngFor=\"let option of visibleOptions\"\n [p-label]=\"option[fieldLabel]\"\n [p-selected]=\"isSelectedItem(option)\"\n (p-change)=\"clickItem($event, option)\"\n >\n </po-multiselect-item>\n </ng-container>\n </ul>\n</div>\n" }]
212
212
  }], function () { return [{ type: i0.ChangeDetectorRef }]; }, { isServerSearching: [{
213
213
  type: Input,
214
214
  args: ['p-searching']
@@ -233,6 +233,12 @@ PoMultiselectDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
233
233
  }], hideSelectAll: [{
234
234
  type: Input,
235
235
  args: ['p-hide-select-all']
236
+ }], fieldValue: [{
237
+ type: Input,
238
+ args: ['p-field-value']
239
+ }], fieldLabel: [{
240
+ type: Input,
241
+ args: ['p-field-label']
236
242
  }], changeSearch: [{
237
243
  type: Output,
238
244
  args: ['p-change-search']
@@ -255,4 +261,4 @@ PoMultiselectDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ ty
255
261
  type: HostListener,
256
262
  args: ['keydown', ['$event']]
257
263
  }] }); })();
258
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duL3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1kcm9wZG93bi9wby1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ1RyQixtREFNQztJQURDLHdOQUFZLGVBQUEsK0JBQXdCLENBQUEsSUFBQztJQUV2QyxpQkFBd0I7OztJQUp0Qiw0Q0FBdUIsMkNBQUE7OztJQU92QiwrQkFBa0gsV0FBQTtJQUN6RyxZQUFxQjtJQUFBLGlCQUFPLEVBQUE7OztJQUE1QixlQUFxQjtJQUFyQixzREFBcUI7OztJQUc5QiwrQkFBdUY7SUFDckYsNkJBQXlCO0lBQzNCLGlCQUFNOzs7O0lBR0osK0NBS0M7SUFEQyxnT0FBWSxlQUFBLDBCQUFrQixDQUFBLElBQUM7SUFFakMsaUJBQXNCOzs7SUFKcEIsb0ZBQStCLDBDQUFBOzs7O0lBTWpDLCtDQUtDO0lBREMsb1NBQVksZUFBQSxxQ0FBeUIsQ0FBQSxJQUFDO0lBRXhDLGlCQUFzQjs7OztJQUpwQiwwQ0FBd0Isa0RBQUE7OztJQVg1Qiw2QkFBeUM7SUFDdkMsK0hBTXNC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QUF0QyxLQUFLO21CQUFDLGFBQWE7WUFHSSxVQUFVO2tCQUFqQyxLQUFLO21CQUFDLGVBQWU7WUFHRCxRQUFRO2tCQUE1QixLQUFLO21CQUFDLFlBQVk7WUFHWSxpQkFBaUI7a0JBQS9DLEtBQUs7bUJBQUMsc0JBQXNCO1lBR0EsZUFBZTtrQkFBM0MsS0FBSzttQkFBQyxvQkFBb0I7WUFHUCxPQUFPO2tCQUExQixLQUFLO21CQUFDLFdBQVc7WUFHVSxjQUFjO2tCQUF6QyxLQUFLO21CQUFDLG1CQUFtQjtZQUdFLGFBQWE7a0JBQXhDLEtBQUs7bUJBQUMsbUJBQW1CO1lBR0MsWUFBWTtrQkFBdEMsTUFBTTttQkFBQyxpQkFBaUI7WUFHTCxNQUFNO2tCQUF6QixNQUFNO21CQUFDLFVBQVU7WUFPVSxhQUFhO2tCQUF4QyxNQUFNO21CQUFDLGtCQUFrQjtZQUVrQyxTQUFTO2tCQUFwRSxTQUFTO21CQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNFLFNBQVM7a0JBQXBFLFNBQVM7bUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQzlCLGFBQWE7a0JBQXhDLFNBQVM7bUJBQUMsZUFBZTtZQVkxQixTQUFTO2tCQURSLFlBQVk7bUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RMaXRlcmFscyB9IGZyb20gJy4uLy4uL2luZGV4JztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuLi9wby1tdWx0aXNlbGVjdC1vcHRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RTZWFyY2hDb21wb25lbnQgfSBmcm9tICcuLy4uL3BvLW11bHRpc2VsZWN0LXNlYXJjaC9wby1tdWx0aXNlbGVjdC1zZWFyY2guY29tcG9uZW50JztcblxuLyoqXG4gKiBAZG9jc1ByaXZhdGVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBDb21wb25lbnRlIHF1ZSBjb25zdHJ1w61yYSBvIGRyb3Bkb3duLCBjb250ZW5kbyBvIGNhbXBvIGRlIHBlc3F1aXNhIGUgb3MgaXRlbnMgcGFyYSBzZWxlw6fDo28uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdERyb3Bkb3duQ29tcG9uZW50IHtcbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSBpbmRpY2Egc2UgZGV2ZSBleGliaXIgbyBsb2FkaW5nLiAqL1xuICBASW5wdXQoJ3Atc2VhcmNoaW5nJykgaXNTZXJ2ZXJTZWFyY2hpbmc/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSBpbmRpY2Egc2UgbyBjYW1wbyBkZSBwZXNxdWlzYSBkZXZlcsOhIHNlciBlc2NvbmRpZG8uICovXG4gIEBJbnB1dCgncC1oaWRlLXNlYXJjaCcpIGhpZGVTZWFyY2g/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSBxdWUgcmVjZWJlIGFzIGxpdGVyYWlzIGRlZmluaWRhcyBubyBjb21wb25lbnRlIGBwby1tdWx0aXNlbGVjdGAuICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIGxpdGVyYWxzPzogUG9NdWx0aXNlbGVjdExpdGVyYWxzO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBkbyBjYW1wbyBkZSBwZXNxdWlzYS4gKi9cbiAgQElucHV0KCdwLXBsYWNlaG9sZGVyLXNlYXJjaCcpIHBsYWNlaG9sZGVyU2VhcmNoOiBzdHJpbmc7XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBzZWxlY2lvbmFkYXMuICovXG4gIEBJbnB1dCgncC1zZWxlY3RlZC1vcHRpb25zJykgc2VsZWN0ZWRPcHRpb25zOiBBcnJheTxhbnk+ID0gW107XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYSBsaXN0YSBjb20gdG9kYXMgYXMgb3DDp8O1ZXMuICovXG4gIEBJbnB1dCgncC1vcHRpb25zJykgb3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4gPSBbXTtcblxuICAvKiogUHJvcHJpZWRhZGUgcXVlIHJlY2ViZSBhIGxpc3RhIGRlIG9ww6fDtWVzIHF1ZSBkZXZlcsOjbyBzZXIgY3JpYWRhcyBubyBkcm9wZG93bi4gKi9cbiAgQElucHV0KCdwLXZpc2libGUtb3B0aW9ucycpIHZpc2libGVPcHRpb25zOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiA9IFtdO1xuXG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgaW5kaWNhIHNlIG8gY2FtcG8gXCJTZWxlY2lvbmFyIHRvZG9zXCIgZGV2ZXLDoSBzZXIgZXNjb25kaWRvLiAqL1xuICBASW5wdXQoJ3AtaGlkZS1zZWxlY3QtYWxsJykgaGlkZVNlbGVjdEFsbD86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogRXZlbnRvIGRpc3BhcmFkbyBhIGNhZGEgdGVjbGEgZGlnaXRhZGEgbmEgcGVzcXVpc2EuICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXNlYXJjaCcpIGNoYW5nZVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogRXZlbnRvIGRpc3BhcmFkbyBhIGNhZGEgYWx0ZXJhw6fDo28gbmEgbGlzdGEgZGFzIG9ww6fDtWVzIHNlbGVjaW9uYWRhcy4gKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIGZvciBkZXRlY3RhZGEgdW1hIGHDp8OjbyBxdWUgbmVjZXNzaXRlIGZlY2hhciBvIGRyb3Bkb3duLlxuICAgKiBQb3IgZXhlbXBsbywgbm8gY2FzbyBkZSBzZXIgdGVjbGFkbyBUQUIgZGVudHJvIGRvIGRyb3Bkb3duLCBlbnTDo28gw6kgZGlzcGFyYWRvIGVzdGUgZXZlbnRvXG4gICAqIHBhcmEgbm90aWZpY2FyIG8gY29tcG9uZW50ZSBwcmluY2lwYWwgcXVlIGRldmUgZmVjaGFyIG8gZHJvcGRvd24uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNsb3NlLWRyb3Bkb3duJykgY2xvc2VEcm9wZG93biA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3VsRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHVsRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoRWxlbWVudCcpIHNlYXJjaEVsZW1lbnQ6IFBvTXVsdGlzZWxlY3RTZWFyY2hDb21wb25lbnQ7XG5cbiAgc2Nyb2xsVG9wID0gMDtcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGdldCBoYXNPcHRpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDkpIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bi5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG8oaW5kZXgpIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IGluZGV4IDw9IDIgPyAwIDogaW5kZXggKiA0NCAtIDg4O1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkSXRlbShvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbnMuc29tZShzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtLnZhbHVlID09PSBvcHRpb24udmFsdWUpO1xuICB9XG5cbiAgY2xpY2tJdGVtKGNoZWNrLCBvcHRpb24pIHtcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVmFsdWVzKGNoZWNrLCBvcHRpb24pO1xuXG4gICAgaWYgKCF0aGlzLmhpZGVTZWFyY2gpIHtcbiAgICAgIHRoaXMuc2VhcmNoRWxlbWVudC5zZXRGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2tTZWxlY3RBbGwoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuZXZlcnlWaXNpYmxlT3B0aW9uc1NlbGVjdGVkKHNlbGVjdGVkVmFsdWVzKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLnVuaXF1ZVNlbGVjdGVkT3B0aW9ucyhzZWxlY3RlZFZhbHVlcyk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgdXBkYXRlU2VsZWN0ZWRWYWx1ZXMoY2hlY2tlZCwgb3B0aW9uKSB7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5maWx0ZXIoc2VsZWN0ZWRPcHRpb24gPT4gc2VsZWN0ZWRPcHRpb24udmFsdWUgIT09IG9wdGlvbi52YWx1ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgZXZlcnlWaXNpYmxlT3B0aW9uc1NlbGVjdGVkKHNlbGVjdGVkVmFsdWVzKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMuZXZlcnkodmlzaWJsZU9wdGlvbiA9PiBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyh2aXNpYmxlT3B0aW9uLnZhbHVlKSk7XG4gIH1cblxuICBzb21lVmlzaWJsZU9wdGlvbnNTZWxlY3RlZChzZWxlY3RlZFZhbHVlcykge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVPcHRpb25zLnNvbWUodmlzaWJsZU9wdGlvbiA9PiBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyh2aXNpYmxlT3B0aW9uLnZhbHVlKSk7XG4gIH1cblxuICBnZXRTdGF0ZVNlbGVjdEFsbCgpIHtcbiAgICBjb25zdCBzZWxlY3RlZFZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLm1hcCgoeyB2YWx1ZSB9KSA9PiB2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5ldmVyeVZpc2libGVPcHRpb25zU2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29tZVZpc2libGVPcHRpb25zU2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxDaGFuZ2VTZWFyY2goZXZlbnQpIHtcbiAgICB0aGlzLmNoYW5nZVNlYXJjaC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGNvbnRyb2xWaXNpYmlsaXR5KHRvT3Blbikge1xuICAgIHRoaXMuc2hvdyA9IHRvT3BlbjtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRvT3BlbiAmJiB0aGlzLnNlYXJjaEVsZW1lbnQgJiYgIXRoaXMuaGlkZVNlYXJjaCkge1xuICAgICAgICB0aGlzLnNlYXJjaEVsZW1lbnQuc2V0Rm9jdXMoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hFbGVtZW50LmNsZWFuKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5pcXVlU2VsZWN0ZWRPcHRpb25zKHNlbGVjdGVkVmFsdWVzKSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRPcHRpb25zID0gWy4uLnRoaXMuc2VsZWN0ZWRPcHRpb25zXTtcblxuICAgIGZvciAoY29uc3QgdmlzaWJsZU9wdGlvbiBvZiB0aGlzLnZpc2libGVPcHRpb25zKSB7XG4gICAgICBpZiAoIXNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKHZpc2libGVPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG5ld1NlbGVjdGVkT3B0aW9ucy5wdXNoKHZpc2libGVPcHRpb24pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdTZWxlY3RlZE9wdGlvbnM7XG4gIH1cbn1cbiIsIjxkaXYgI2NvbnRhaW5lciBjbGFzcz1cInBvLW11bHRpc2VsZWN0LWNvbnRhaW5lclwiIFtoaWRkZW5dPVwiIXNob3dcIj5cbiAgPHBvLW11bHRpc2VsZWN0LXNlYXJjaFxuICAgICNzZWFyY2hFbGVtZW50XG4gICAgKm5nSWY9XCIhaGlkZVNlYXJjaFwiXG4gICAgW3AtbGl0ZXJhbHNdPVwibGl0ZXJhbHNcIlxuICAgIFtwLXBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyU2VhcmNoXCJcbiAgICAocC1jaGFuZ2UpPVwiY2FsbENoYW5nZVNlYXJjaCgkZXZlbnQpXCJcbiAgPlxuICA8L3BvLW11bHRpc2VsZWN0LXNlYXJjaD5cblxuICA8dWwgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1pdGVtcy1jb250YWluZXJcIiBbc2Nyb2xsVG9wXT1cInNjcm9sbFRvcFwiICN1bEVsZW1lbnQ+XG4gICAgPGRpdiAqbmdJZj1cIiF2aXNpYmxlT3B0aW9ucy5sZW5ndGggJiYgIWlzU2VydmVyU2VhcmNoaW5nXCIgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1jb250YWluZXItbm8tZGF0YSBwby10ZXh0LWNlbnRlclwiPlxuICAgICAgPHNwYW4+IHt7IGxpdGVyYWxzLm5vRGF0YSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJpc1NlcnZlclNlYXJjaGluZ1wiIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtY29udGFpbmVyLWxvYWRpbmcgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxwby1sb2FkaW5nPjwvcG8tbG9hZGluZz5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZXJ2ZXJTZWFyY2hpbmdcIj5cbiAgICAgIDxwby1tdWx0aXNlbGVjdC1pdGVtXG4gICAgICAgICpuZ0lmPVwiIXNlYXJjaEVsZW1lbnQ/LmlucHV0VmFsdWUgJiYgdmlzaWJsZU9wdGlvbnMubGVuZ3RoICYmICFoaWRlU2VsZWN0QWxsXCJcbiAgICAgICAgW3AtbGFiZWxdPVwibGl0ZXJhbHM/LnNlbGVjdEFsbFwiXG4gICAgICAgIFtwLXNlbGVjdGVkXT1cImdldFN0YXRlU2VsZWN0QWxsKClcIlxuICAgICAgICAocC1jaGFuZ2UpPVwib25DbGlja1NlbGVjdEFsbCgpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tbXVsdGlzZWxlY3QtaXRlbT5cblxuICAgICAgPHBvLW11bHRpc2VsZWN0LWl0ZW1cbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiB2aXNpYmxlT3B0aW9uc1wiXG4gICAgICAgIFtwLWxhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgIFtwLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWRJdGVtKG9wdGlvbilcIlxuICAgICAgICAocC1jaGFuZ2UpPVwiY2xpY2tJdGVtKCRldmVudCwgb3B0aW9uKVwiXG4gICAgICA+XG4gICAgICA8L3BvLW11bHRpc2VsZWN0LWl0ZW0+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2xpYi9jb21wb25lbnRzL3BvLWZpZWxkL3BvLW11bHRpc2VsZWN0L3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duL3BvLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1kcm9wZG93bi9wby1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7OztJQ1RyQixtREFPQztJQURDLHdOQUFZLGVBQUEsK0JBQXdCLENBQUEsSUFBQztJQUV2QyxpQkFBd0I7OztJQUx0Qiw0Q0FBdUIsb0NBQUEsMkNBQUE7OztJQVF2QiwrQkFBa0gsV0FBQTtJQUN6RyxZQUFxQjtJQUFBLGlCQUFPLEVBQUE7OztJQUE1QixlQUFxQjtJQUFyQixzREFBcUI7OztJQUc5QiwrQkFBdUY7SUFDckYsNkJBQXlCO0lBQzNCLGlCQUFNOzs7O0lBR0osK0NBS0M7SUFEQyxnT0FBWSxlQUFBLDBCQUFrQixDQUFBLElBQUM7SUFFakMsaUJBQXNCOzs7SUFKcEIsb0ZBQStCLDBDQUFBOzs7O0lBTWpDLCtDQUtDO0lBREMsb1NBQVksZUFBQSxxQ0FBeUIsQ0FBQSxJQUFDO0lBRXhDLGlCQUFzQjs7OztJQUpwQix3REFBOEIsa0RBQUE7OztJQVhsQyw2QkFBeUM7SUFDdkMs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dGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBQb011bHRpc2VsZWN0TGl0ZXJhbHMgfSBmcm9tICcuLi8uLi9pbmRleCc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0T3B0aW9uIH0gZnJvbSAnLi4vcG8tbXVsdGlzZWxlY3Qtb3B0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0U2VhcmNoQ29tcG9uZW50IH0gZnJvbSAnLi8uLi9wby1tdWx0aXNlbGVjdC1zZWFyY2gvcG8tbXVsdGlzZWxlY3Qtc2VhcmNoLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQGRvY3NQcml2YXRlXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKlxuICogQ29tcG9uZW50ZSBxdWUgY29uc3RydcOtcmEgbyBkcm9wZG93biwgY29udGVuZG8gbyBjYW1wbyBkZSBwZXNxdWlzYSBlIG9zIGl0ZW5zIHBhcmEgc2VsZcOnw6NvLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1tdWx0aXNlbGVjdC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wby1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFBvTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCB7XG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgaW5kaWNhIHNlIGRldmUgZXhpYmlyIG8gbG9hZGluZy4gKi9cbiAgQElucHV0KCdwLXNlYXJjaGluZycpIGlzU2VydmVyU2VhcmNoaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgaW5kaWNhIHNlIG8gY2FtcG8gZGUgcGVzcXVpc2EgZGV2ZXLDoSBzZXIgZXNjb25kaWRvLiAqL1xuICBASW5wdXQoJ3AtaGlkZS1zZWFyY2gnKSBoaWRlU2VhcmNoPzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgcXVlIHJlY2ViZSBhcyBsaXRlcmFpcyBkZWZpbmlkYXMgbm8gY29tcG9uZW50ZSBgcG8tbXVsdGlzZWxlY3RgLiAqL1xuICBASW5wdXQoJ3AtbGl0ZXJhbHMnKSBsaXRlcmFscz86IFBvTXVsdGlzZWxlY3RMaXRlcmFscztcblxuICAvKiogUGxhY2Vob2xkZXIgZG8gY2FtcG8gZGUgcGVzcXVpc2EuICovXG4gIEBJbnB1dCgncC1wbGFjZWhvbGRlci1zZWFyY2gnKSBwbGFjZWhvbGRlclNlYXJjaDogc3RyaW5nO1xuXG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIGEgbGlzdGEgZGUgb3DDp8O1ZXMgc2VsZWNpb25hZGFzLiAqL1xuICBASW5wdXQoJ3Atc2VsZWN0ZWQtb3B0aW9ucycpIHNlbGVjdGVkT3B0aW9uczogQXJyYXk8YW55PiA9IFtdO1xuXG4gIC8qKiBQcm9wcmllZGFkZSBxdWUgcmVjZWJlIGEgbGlzdGEgY29tIHRvZGFzIGFzIG9ww6fDtWVzLiAqL1xuICBASW5wdXQoJ3Atb3B0aW9ucycpIG9wdGlvbnM6IEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+ID0gW107XG5cbiAgLyoqIFByb3ByaWVkYWRlIHF1ZSByZWNlYmUgYSBsaXN0YSBkZSBvcMOnw7VlcyBxdWUgZGV2ZXLDo28gc2VyIGNyaWFkYXMgbm8gZHJvcGRvd24uICovXG4gIEBJbnB1dCgncC12aXNpYmxlLW9wdGlvbnMnKSB2aXNpYmxlT3B0aW9uczogQXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4gPSBbXTtcblxuICAvKiogUHJvcHJpZWRhZGUgcXVlIGluZGljYSBzZSBvIGNhbXBvIFwiU2VsZWNpb25hciB0b2Rvc1wiIGRldmVyw6Egc2VyIGVzY29uZGlkby4gKi9cbiAgQElucHV0KCdwLWhpZGUtc2VsZWN0LWFsbCcpIGhpZGVTZWxlY3RBbGw/OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCdwLWZpZWxkLXZhbHVlJykgZmllbGRWYWx1ZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgncC1maWVsZC1sYWJlbCcpIGZpZWxkTGFiZWw6IHN0cmluZztcblxuICAvKiogRXZlbnRvIGRpc3BhcmFkbyBhIGNhZGEgdGVjbGEgZGlnaXRhZGEgbmEgcGVzcXVpc2EuICovXG4gIEBPdXRwdXQoJ3AtY2hhbmdlLXNlYXJjaCcpIGNoYW5nZVNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKiogRXZlbnRvIGRpc3BhcmFkbyBhIGNhZGEgYWx0ZXJhw6fDo28gbmEgbGlzdGEgZGFzIG9ww6fDtWVzIHNlbGVjaW9uYWRhcy4gKi9cbiAgQE91dHB1dCgncC1jaGFuZ2UnKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIGZvciBkZXRlY3RhZGEgdW1hIGHDp8OjbyBxdWUgbmVjZXNzaXRlIGZlY2hhciBvIGRyb3Bkb3duLlxuICAgKiBQb3IgZXhlbXBsbywgbm8gY2FzbyBkZSBzZXIgdGVjbGFkbyBUQUIgZGVudHJvIGRvIGRyb3Bkb3duLCBlbnTDo28gw6kgZGlzcGFyYWRvIGVzdGUgZXZlbnRvXG4gICAqIHBhcmEgbm90aWZpY2FyIG8gY29tcG9uZW50ZSBwcmluY2lwYWwgcXVlIGRldmUgZmVjaGFyIG8gZHJvcGRvd24uXG4gICAqL1xuICBAT3V0cHV0KCdwLWNsb3NlLWRyb3Bkb3duJykgY2xvc2VEcm9wZG93biA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KSBjb250YWluZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3VsRWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pIHVsRWxlbWVudDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2VhcmNoRWxlbWVudCcpIHNlYXJjaEVsZW1lbnQ6IFBvTXVsdGlzZWxlY3RTZWFyY2hDb21wb25lbnQ7XG5cbiAgc2Nyb2xsVG9wID0gMDtcbiAgc2hvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIGdldCBoYXNPcHRpb25zKCkge1xuICAgIHJldHVybiAhIXRoaXMub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gIG9uS2V5ZG93bihldmVudDogYW55KSB7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDkpIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bi5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgc2Nyb2xsVG8oaW5kZXgpIHtcbiAgICB0aGlzLnNjcm9sbFRvcCA9IGluZGV4IDw9IDIgPyAwIDogaW5kZXggKiA0NCAtIDg4O1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpc1NlbGVjdGVkSXRlbShvcHRpb246IFBvTXVsdGlzZWxlY3RPcHRpb24pIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbnMuc29tZShzZWxlY3RlZEl0ZW0gPT4gc2VsZWN0ZWRJdGVtW3RoaXMuZmllbGRWYWx1ZV0gPT09IG9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKTtcbiAgfVxuXG4gIGNsaWNrSXRlbShjaGVjaywgb3B0aW9uKSB7XG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZFZhbHVlcyhjaGVjaywgb3B0aW9uKTtcblxuICAgIGlmICghdGhpcy5oaWRlU2VhcmNoKSB7XG4gICAgICB0aGlzLnNlYXJjaEVsZW1lbnQuc2V0Rm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrU2VsZWN0QWxsKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMubWFwKCh7IFt0aGlzLmZpZWxkVmFsdWVdOiB2YWx1ZSB9KSA9PiB2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5ldmVyeVZpc2libGVPcHRpb25zU2VsZWN0ZWQoc2VsZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IHRoaXMudW5pcXVlU2VsZWN0ZWRPcHRpb25zKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkT3B0aW9ucyk7XG4gIH1cblxuICB1cGRhdGVTZWxlY3RlZFZhbHVlcyhjaGVja2VkLCBvcHRpb24pIHtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZE9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkT3B0aW9ucyA9IHRoaXMuc2VsZWN0ZWRPcHRpb25zLmZpbHRlcihcbiAgICAgICAgc2VsZWN0ZWRPcHRpb24gPT4gc2VsZWN0ZWRPcHRpb25bdGhpcy5maWVsZFZhbHVlXSAhPT0gb3B0aW9uW3RoaXMuZmllbGRWYWx1ZV1cbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgZXZlcnlWaXNpYmxlT3B0aW9uc1NlbGVjdGVkKHNlbGVjdGVkVmFsdWVzKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMuZXZlcnkodmlzaWJsZU9wdGlvbiA9PiBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyh2aXNpYmxlT3B0aW9uW3RoaXMuZmllbGRWYWx1ZV0pKTtcbiAgfVxuXG4gIHNvbWVWaXNpYmxlT3B0aW9uc1NlbGVjdGVkKHNlbGVjdGVkVmFsdWVzKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZU9wdGlvbnMuc29tZSh2aXNpYmxlT3B0aW9uID0+IHNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKHZpc2libGVPcHRpb25bdGhpcy5maWVsZFZhbHVlXSkpO1xuICB9XG5cbiAgZ2V0U3RhdGVTZWxlY3RBbGwoKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZXMgPSB0aGlzLnNlbGVjdGVkT3B0aW9ucy5tYXAoKHsgW3RoaXMuZmllbGRWYWx1ZV06IHZhbHVlIH0pID0+IHZhbHVlKTtcblxuICAgIGlmICh0aGlzLmV2ZXJ5VmlzaWJsZU9wdGlvbnNTZWxlY3RlZChzZWxlY3RlZFZhbHVlcykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zb21lVmlzaWJsZU9wdGlvbnNTZWxlY3RlZChzZWxlY3RlZFZhbHVlcykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2FsbENoYW5nZVNlYXJjaChldmVudCkge1xuICAgIHRoaXMuY2hhbmdlU2VhcmNoLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgY29udHJvbFZpc2liaWxpdHkodG9PcGVuKSB7XG4gICAgdGhpcy5zaG93ID0gdG9PcGVuO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodG9PcGVuICYmIHRoaXMuc2VhcmNoRWxlbWVudCAmJiAhdGhpcy5oaWRlU2VhcmNoKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoRWxlbWVudC5zZXRGb2N1cygpO1xuICAgICAgICB0aGlzLnNlYXJjaEVsZW1lbnQuY2xlYW4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmlxdWVTZWxlY3RlZE9wdGlvbnMoc2VsZWN0ZWRWYWx1ZXMpIHtcbiAgICBjb25zdCBuZXdTZWxlY3RlZE9wdGlvbnMgPSBbLi4udGhpcy5zZWxlY3RlZE9wdGlvbnNdO1xuXG4gICAgZm9yIChjb25zdCB2aXNpYmxlT3B0aW9uIG9mIHRoaXMudmlzaWJsZU9wdGlvbnMpIHtcbiAgICAgIGlmICghc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXModmlzaWJsZU9wdGlvblt0aGlzLmZpZWxkVmFsdWVdKSkge1xuICAgICAgICBuZXdTZWxlY3RlZE9wdGlvbnMucHVzaCh2aXNpYmxlT3B0aW9uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3U2VsZWN0ZWRPcHRpb25zO1xuICB9XG59XG4iLCI8ZGl2ICNjb250YWluZXIgY2xhc3M9XCJwby1tdWx0aXNlbGVjdC1jb250YWluZXJcIiBbaGlkZGVuXT1cIiFzaG93XCI+XG4gIDxwby1tdWx0aXNlbGVjdC1zZWFyY2hcbiAgICAjc2VhcmNoRWxlbWVudFxuICAgICpuZ0lmPVwiIWhpZGVTZWFyY2hcIlxuICAgIFtwLWxpdGVyYWxzXT1cImxpdGVyYWxzXCJcbiAgICBbcC1maWVsZC12YWx1ZV09XCJmaWVsZFZhbHVlXCJcbiAgICBbcC1wbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclNlYXJjaFwiXG4gICAgKHAtY2hhbmdlKT1cImNhbGxDaGFuZ2VTZWFyY2goJGV2ZW50KVwiXG4gID5cbiAgPC9wby1tdWx0aXNlbGVjdC1zZWFyY2g+XG5cbiAgPHVsIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtaXRlbXMtY29udGFpbmVyXCIgW3Njcm9sbFRvcF09XCJzY3JvbGxUb3BcIiAjdWxFbGVtZW50PlxuICAgIDxkaXYgKm5nSWY9XCIhdmlzaWJsZU9wdGlvbnMubGVuZ3RoICYmICFpc1NlcnZlclNlYXJjaGluZ1wiIGNsYXNzPVwicG8tbXVsdGlzZWxlY3QtY29udGFpbmVyLW5vLWRhdGEgcG8tdGV4dC1jZW50ZXJcIj5cbiAgICAgIDxzcGFuPiB7eyBsaXRlcmFscy5ub0RhdGEgfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTZXJ2ZXJTZWFyY2hpbmdcIiBjbGFzcz1cInBvLW11bHRpc2VsZWN0LWNvbnRhaW5lci1sb2FkaW5nIHBvLXRleHQtY2VudGVyXCI+XG4gICAgICA8cG8tbG9hZGluZz48L3BvLWxvYWRpbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2VydmVyU2VhcmNoaW5nXCI+XG4gICAgICA8cG8tbXVsdGlzZWxlY3QtaXRlbVxuICAgICAgICAqbmdJZj1cIiFzZWFyY2hFbGVtZW50Py5pbnB1dFZhbHVlICYmIHZpc2libGVPcHRpb25zLmxlbmd0aCAmJiAhaGlkZVNlbGVjdEFsbFwiXG4gICAgICAgIFtwLWxhYmVsXT1cImxpdGVyYWxzPy5zZWxlY3RBbGxcIlxuICAgICAgICBbcC1zZWxlY3RlZF09XCJnZXRTdGF0ZVNlbGVjdEFsbCgpXCJcbiAgICAgICAgKHAtY2hhbmdlKT1cIm9uQ2xpY2tTZWxlY3RBbGwoKVwiXG4gICAgICA+XG4gICAgICA8L3BvLW11bHRpc2VsZWN0LWl0ZW0+XG5cbiAgICAgIDxwby1tdWx0aXNlbGVjdC1pdGVtXG4gICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdmlzaWJsZU9wdGlvbnNcIlxuICAgICAgICBbcC1sYWJlbF09XCJvcHRpb25bZmllbGRMYWJlbF1cIlxuICAgICAgICBbcC1zZWxlY3RlZF09XCJpc1NlbGVjdGVkSXRlbShvcHRpb24pXCJcbiAgICAgICAgKHAtY2hhbmdlKT1cImNsaWNrSXRlbSgkZXZlbnQsIG9wdGlvbilcIlxuICAgICAgPlxuICAgICAgPC9wby1tdWx0aXNlbGVjdC1pdGVtPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZmlsdGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEB1c2VkQnkgUG9NdWx0aXNlbGVjdENvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEludGVyZmFjZSBwYXJhIG9zIHNlcnZpw6dvcyBxdWUgc2Vyw6NvIHV0aWxpemFkb3Mgbm8gcG8tbXVsdGlzZWxlY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9NdWx0aXNlbGVjdEZpbHRlciB7XG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBzZXLDoSBjaGFtYWRvIGFvIHJlYWxpemFyIHVtYSBidXNjYSBubyBjb21wb25lbnRlLCBkZXZlIHJldG9ybmFyIHVtIE9ic2VydmFibGUgcXVlIGNvbnTDqW0gdW1hIGNvbGXDp8OjbyBkZSBvYmpldG9zIHF1ZSBzZWd1ZW1cbiAgICogYSBpbnRlcmZhY2UgYFBvTXVsdGlzZWxlY3RPcHRpb25gLCBzZXLDoSBpbmZvcm1hZG8gcG9yIHBhcmFtZXRybyBvIGNhbXBvIGUgbyB2YWxvciBhIHNlciBwZXNxdWlzYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3sgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSBwYXJhbXMgT2JqZXRvIGNvbnRlbmRvIGEgcHJvcHJpZWRhZGUgZSBvIHZhbG9yIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgbyBmaWx0cm8uXG4gICAqL1xuICBnZXRGaWx0ZXJlZERhdGEocGFyYW1zOiB7IHByb3BlcnR5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4+O1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBzZXLDoSBjaGFtYWRvIGFvIGluaWNpYXIgbyBjb21wb25lbnRlIGNvbSB2YWxvciwgZGV2ZSByZXRvcm5hciB1bSBPYnNlcnZhYmxlIHF1ZSBjb250w6ltIGFwZW5hcyBvcyBvYmpldG9zIGZpbHRyYWRvcyBxdWVcbiAgICogc2VndWVtIGEgaW50ZXJmYWNlIGBQb011bHRpc2VsZWN0T3B0aW9uYCwgc2Vyw6EgaW5mb3JtYWRvIHBvciBwYXLDom1ldHJvIHZhbG9yIGEgc2VyIHBlc3F1aXNhZG8uXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPn0gdmFsdWVzIEFycmF5IGNvbSBvcyB2YWxvcmVzIGEgc2VyZW0gYnVzY2Fkb3MuXG4gICAqL1xuICBnZXRPYmplY3RzQnlWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogT2JzZXJ2YWJsZTxBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPj47XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZmlsdGVyLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1tdWx0aXNlbGVjdC9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEB1c2VkQnkgUG9NdWx0aXNlbGVjdENvbXBvbmVudFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIEludGVyZmFjZSBwYXJhIG9zIHNlcnZpw6dvcyBxdWUgc2Vyw6NvIHV0aWxpemFkb3Mgbm8gcG8tbXVsdGlzZWxlY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUG9NdWx0aXNlbGVjdEZpbHRlciB7XG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBzZXLDoSBjaGFtYWRvIGFvIHJlYWxpemFyIHVtYSBidXNjYSBubyBjb21wb25lbnRlLCBkZXZlIHJldG9ybmFyIHVtIE9ic2VydmFibGUgcXVlIGNvbnTDqW0gdW1hIGNvbGXDp8OjbyBkZSBvYmpldG9zIHF1ZSBzZWd1ZW1cbiAgICogYSBpbnRlcmZhY2UgYFBvTXVsdGlzZWxlY3RPcHRpb25gLCBzZXLDoSBpbmZvcm1hZG8gcG9yIHBhcmFtZXRybyBvIGNhbXBvIGUgbyB2YWxvciBhIHNlciBwZXNxdWlzYWRvLlxuICAgKlxuICAgKiBAcGFyYW0ge3sgcHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9fSBwYXJhbXMgT2JqZXRvIGNvbnRlbmRvIGEgcHJvcHJpZWRhZGUgZSBvIHZhbG9yIHJlc3BvbnPDoXZlbCBwb3IgcmVhbGl6YXIgbyBmaWx0cm8uXG4gICAqL1xuICBnZXRGaWx0ZXJlZERhdGEocGFyYW1zOiB7IHByb3BlcnR5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4+O1xuXG4gIC8qKlxuICAgKiBNw6l0b2RvIHF1ZSBzZXLDoSBjaGFtYWRvIGFvIGluaWNpYXIgbyBjb21wb25lbnRlIGNvbSB2YWxvciwgZGV2ZSByZXRvcm5hciB1bSBPYnNlcnZhYmxlIHF1ZSBjb250w6ltIGFwZW5hcyBvcyBvYmpldG9zIGZpbHRyYWRvcyBxdWVcbiAgICogc2VndWVtIGEgaW50ZXJmYWNlIGBQb011bHRpc2VsZWN0T3B0aW9uYCwgc2Vyw6EgaW5mb3JtYWRvIHBvciBwYXLDom1ldHJvIHZhbG9yIGEgc2VyIHBlc3F1aXNhZG8uXG4gICAqXG4gICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nIHwgbnVtYmVyPn0gdmFsdWVzIEFycmF5IGNvbSBvcyB2YWxvcmVzIGEgc2VyZW0gYnVzY2Fkb3MuXG4gICAqL1xuICBnZXRPYmplY3RzQnlWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogT2JzZXJ2YWJsZTxBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55Pj47XG59XG4iXX0=
@@ -39,7 +39,7 @@ export class PoMultiselectFilterService {
39
39
  parseToMultiselectOption(item) {
40
40
  const label = item[this.fieldLabel];
41
41
  const value = item[this.fieldValue];
42
- return { label, value };
42
+ return { [this.fieldLabel]: label, [this.fieldValue]: value };
43
43
  }
44
44
  }
45
45
  PoMultiselectFilterService.ɵfac = function PoMultiselectFilterService_Factory(t) { return new (t || PoMultiselectFilterService)(i0.ɵɵinject(i1.HttpClient)); };
@@ -47,4 +47,4 @@ PoMultiselectFilterService.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ toke
47
47
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoMultiselectFilterService, [{
48
48
  type: Injectable
49
49
  }], function () { return [{ type: i1.HttpClient }]; }, null); })();
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sMEJBQTBCO0lBV3JDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFWcEMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBR3JCLGFBQVEsR0FBRyxFQUFFLENBQUM7SUFNaUIsQ0FBQztJQUp4QyxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlELGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBTztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTTtTQUNQLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBNkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzthQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUUsVUFBa0I7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWlCO1FBQ3RELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sd0JBQXdCLENBQUMsSUFBUztRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQixDQUFDOztvR0EvQ1UsMEJBQTBCO2dGQUExQiwwQkFBMEIsV0FBMUIsMEJBQTBCO3VGQUExQiwwQkFBMEI7Y0FEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgaW1wbGVtZW50cyBQb011bHRpc2VsZWN0RmlsdGVyIHtcbiAgZmllbGRMYWJlbDogc3RyaW5nID0gJ2xhYmVsJztcbiAgZmllbGRWYWx1ZTogc3RyaW5nID0gJ3ZhbHVlJztcblxuICBwcml2YXRlIF91cmw6IHN0cmluZztcbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IFtdO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIGdldEZpbHRlcmVkRGF0YSh7IHZhbHVlIH06IGFueSk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbj4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB2YWx1ZSA/IHsgZmlsdGVyOiB2YWx1ZSB9IDoge307XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLnVybCwge1xuICAgICAgICBwYXJhbXNcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAocmVzcG9uc2UgPT4gdGhpcy5wYXJzZVRvQXJyYXlNdWx0aXNlbGVjdE9wdGlvbnMocmVzcG9uc2VbJ2l0ZW1zJ10pKSk7XG4gIH1cblxuICBnZXRPYmplY3RzQnlWYWx1ZXModmFsdWU6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pOiBPYnNlcnZhYmxlPEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChgJHt0aGlzLnVybH0/JHt0aGlzLmZpZWxkVmFsdWV9PSR7dmFsdWUudG9TdHJpbmcoKX1gKVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHRoaXMucGFyc2VUb0FycmF5TXVsdGlzZWxlY3RPcHRpb25zKHJlc3BvbnNlWydpdGVtcyddKSkpO1xuICB9XG5cbiAgY29uZmlnUHJvcGVydGllcyh1cmw6IHN0cmluZywgZmllbGRMYWJlbDogc3RyaW5nLCBmaWVsZFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgdGhpcy5maWVsZExhYmVsID0gZmllbGRMYWJlbDtcbiAgICB0aGlzLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRvQXJyYXlNdWx0aXNlbGVjdE9wdGlvbnMoaXRlbXM6IEFycmF5PGFueT4pOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uPiB7XG4gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB0aGlzLnBhcnNlVG9NdWx0aXNlbGVjdE9wdGlvbihpdGVtKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRvTXVsdGlzZWxlY3RPcHRpb24oaXRlbTogYW55KTogUG9NdWx0aXNlbGVjdE9wdGlvbiB7XG4gICAgY29uc3QgbGFiZWwgPSBpdGVtW3RoaXMuZmllbGRMYWJlbF07XG4gICAgY29uc3QgdmFsdWUgPSBpdGVtW3RoaXMuZmllbGRWYWx1ZV07XG5cbiAgICByZXR1cm4geyBsYWJlbCwgdmFsdWUgfTtcbiAgfVxufVxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS9zcmMvbGliL2NvbXBvbmVudHMvcG8tZmllbGQvcG8tbXVsdGlzZWxlY3QvcG8tbXVsdGlzZWxlY3QtZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sMEJBQTBCO0lBV3JDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFWcEMsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUM3QixlQUFVLEdBQVcsT0FBTyxDQUFDO1FBR3JCLGFBQVEsR0FBRyxFQUFFLENBQUM7SUFNaUIsQ0FBQztJQUp4QyxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUlELGVBQWUsQ0FBQyxFQUFFLEtBQUssRUFBTztRQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2IsTUFBTTtTQUNQLENBQUM7YUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBNkI7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSTthQUNiLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQzthQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFVBQWtCLEVBQUUsVUFBa0I7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUVPLDhCQUE4QixDQUFDLEtBQWlCO1FBQ3RELElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU8sd0JBQXdCLENBQUMsSUFBUztRQUN4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNoRSxDQUFDOztvR0EvQ1UsMEJBQTBCO2dGQUExQiwwQkFBMEIsV0FBMUIsMEJBQTBCO3VGQUExQiwwQkFBMEI7Y0FEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBQb011bHRpc2VsZWN0RmlsdGVyIH0gZnJvbSAnLi9wby1tdWx0aXNlbGVjdC1maWx0ZXIuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuL3BvLW11bHRpc2VsZWN0LW9wdGlvbi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUG9NdWx0aXNlbGVjdEZpbHRlclNlcnZpY2UgaW1wbGVtZW50cyBQb011bHRpc2VsZWN0RmlsdGVyIHtcbiAgZmllbGRMYWJlbDogc3RyaW5nID0gJ2xhYmVsJztcbiAgZmllbGRWYWx1ZTogc3RyaW5nID0gJ3ZhbHVlJztcblxuICBwcml2YXRlIF91cmw6IHN0cmluZztcbiAgcHJpdmF0ZSBtZXNzYWdlcyA9IFtdO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIGdldEZpbHRlcmVkRGF0YSh7IHZhbHVlIH06IGFueSk6IE9ic2VydmFibGU8QXJyYXk8UG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueT4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSB2YWx1ZSA/IHsgZmlsdGVyOiB2YWx1ZSB9IDoge307XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldCh0aGlzLnVybCwge1xuICAgICAgICBwYXJhbXNcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAocmVzcG9uc2UgPT4gdGhpcy5wYXJzZVRvQXJyYXlNdWx0aXNlbGVjdE9wdGlvbnMocmVzcG9uc2VbJ2l0ZW1zJ10pKSk7XG4gIH1cblxuICBnZXRPYmplY3RzQnlWYWx1ZXModmFsdWU6IEFycmF5PHN0cmluZyB8IG51bWJlcj4pOiBPYnNlcnZhYmxlPEFycmF5PFBvTXVsdGlzZWxlY3RPcHRpb24gfCBhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldChgJHt0aGlzLnVybH0/JHt0aGlzLmZpZWxkVmFsdWV9PSR7dmFsdWUudG9TdHJpbmcoKX1gKVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHRoaXMucGFyc2VUb0FycmF5TXVsdGlzZWxlY3RPcHRpb25zKHJlc3BvbnNlWydpdGVtcyddKSkpO1xuICB9XG5cbiAgY29uZmlnUHJvcGVydGllcyh1cmw6IHN0cmluZywgZmllbGRMYWJlbDogc3RyaW5nLCBmaWVsZFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cmwgPSB1cmw7XG4gICAgdGhpcy5maWVsZExhYmVsID0gZmllbGRMYWJlbDtcbiAgICB0aGlzLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRvQXJyYXlNdWx0aXNlbGVjdE9wdGlvbnMoaXRlbXM6IEFycmF5PGFueT4pOiBBcnJheTxQb011bHRpc2VsZWN0T3B0aW9uIHwgYW55PiB7XG4gICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBpdGVtcy5tYXAoaXRlbSA9PiB0aGlzLnBhcnNlVG9NdWx0aXNlbGVjdE9wdGlvbihpdGVtKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRvTXVsdGlzZWxlY3RPcHRpb24oaXRlbTogYW55KTogUG9NdWx0aXNlbGVjdE9wdGlvbiB8IGFueSB7XG4gICAgY29uc3QgbGFiZWwgPSBpdGVtW3RoaXMuZmllbGRMYWJlbF07XG4gICAgY29uc3QgdmFsdWUgPSBpdGVtW3RoaXMuZmllbGRWYWx1ZV07XG5cbiAgICByZXR1cm4geyBbdGhpcy5maWVsZExhYmVsXTogbGFiZWwsIFt0aGlzLmZpZWxkVmFsdWVdOiB2YWx1ZSB9O1xuICB9XG59XG4iXX0=