igniteui-angular 12.3.30 → 12.3.33

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.
@@ -5,17 +5,6 @@ import { SortingDirection } from '../data-operations/sorting-expression.interfac
5
5
  import { IGX_COMBO_COMPONENT } from './combo.common';
6
6
  import { DefaultSortingStrategy } from '../data-operations/sorting-strategy';
7
7
  /** @hidden */
8
- export class IgxComboCleanPipe {
9
- transform(collection) {
10
- return collection.filter(e => !!e);
11
- }
12
- }
13
- IgxComboCleanPipe.decorators = [
14
- { type: Pipe, args: [{
15
- name: 'comboClean'
16
- },] }
17
- ];
18
- /** @hidden */
19
8
  export class IgxComboFilteringPipe {
20
9
  transform(collection, searchValue, displayKey, filteringOptions, shouldFilter = false) {
21
10
  if (!collection) {
@@ -25,7 +14,7 @@ export class IgxComboFilteringPipe {
25
14
  return collection;
26
15
  }
27
16
  else {
28
- const searchTerm = filteringOptions.caseSensitive ? searchValue.trim() : searchValue.toLowerCase().trim();
17
+ const searchTerm = filteringOptions.caseSensitive ? searchValue : searchValue.toLowerCase();
29
18
  if (displayKey != null) {
30
19
  return collection.filter(e => {
31
20
  var _a, _b;
@@ -41,9 +30,7 @@ export class IgxComboFilteringPipe {
41
30
  }
42
31
  }
43
32
  IgxComboFilteringPipe.decorators = [
44
- { type: Pipe, args: [{
45
- name: 'comboFiltering'
46
- },] }
33
+ { type: Pipe, args: [{ name: 'comboFiltering' },] }
47
34
  ];
48
35
  /** @hidden */
49
36
  export class IgxComboGroupingPipe {
@@ -88,4 +75,4 @@ IgxComboGroupingPipe.decorators = [
88
75
  IgxComboGroupingPipe.ctorParameters = () => [
89
76
  { type: undefined, decorators: [{ type: Inject, args: [IGX_COMBO_COMPONENT,] }] }
90
77
  ];
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8ucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29tYm8vY29tYm8ucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc3RSxjQUFjO0FBSWQsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixTQUFTLENBQUMsVUFBaUI7UUFDOUIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OztZQU5KLElBQUksU0FBQztnQkFDRixJQUFJLEVBQUUsWUFBWTthQUNyQjs7QUFPRCxjQUFjO0FBSWQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixTQUFTLENBQUMsVUFBaUIsRUFBRSxXQUFnQixFQUFFLFVBQWUsRUFDakUsZ0JBQXdDLEVBQUUsWUFBWSxHQUFHLEtBQUs7UUFDOUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQy9CLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFD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QyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lQXJyYXkgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSUdYX0NPTUJPX0NPTVBPTkVOVCwgSWd4Q29tYm9CYXNlIH0gZnJvbSAnLi9jb21iby5jb21tb24nO1xuaW1wb3J0IHsgRGVmYXVsdFNvcnRpbmdTdHJhdGVneSB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElDb21ib0ZpbHRlcmluZ09wdGlvbnMgfSBmcm9tICcuL2NvbWJvLmNvbXBvbmVudCc7XG5cbi8qKiBAaGlkZGVuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2NvbWJvQ2xlYW4nXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvQ2xlYW5QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoZSA9PiAhIWUpO1xuICAgIH1cbn1cblxuLyoqIEBoaWRkZW4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnY29tYm9GaWx0ZXJpbmcnXG59KVxuZXhwb3J0IGNsYXNzIElneENvbWJvRmlsdGVyaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIHNlYXJjaFZhbHVlOiBhbnksIGRpc3BsYXlLZXk6IGFueSxcbiAgICAgICAgZmlsdGVyaW5nT3B0aW9uczogSUNvbWJvRmlsdGVyaW5nT3B0aW9ucywgc2hvdWxkRmlsdGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWFyY2hWYWx1ZSB8fCAhc2hvdWxkRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmUgPyBzZWFyY2hWYWx1ZS50cmltKCkgOiBzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5S2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoZSA9PiBmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmUgPyBlW2Rpc3BsYXlLZXldPy5pbmNsdWRlcyhzZWFyY2hUZXJtKSA6XG4gICAgICAgICAgICAgICAgICAgIGVbZGlzcGxheUtleV0/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uLmZpbHRlcihlID0+IGZpbHRlcmluZ09wdGlvbnMuY2FzZVNlbnNpdGl2ZSA/IGUuaW5jbHVkZXMoc2VhcmNoVGVybSkgOlxuICAgICAgICAgICAgICAgICAgICBlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXJtKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKiBAaGlkZGVuICovXG5AUGlwZSh7IG5hbWU6ICdjb21ib0dyb3VwaW5nJyB9KVxuZXhwb3J0IGNsYXNzIElneENvbWJvR3JvdXBpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KElHWF9DT01CT19DT01QT05FTlQpIHB1YmxpYyBjb21ibzogSWd4Q29tYm9CYXNlKSB7IH1cblxuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIGdyb3VwS2V5OiBhbnksIHZhbHVlS2V5OiBhbnkpIHtcbiAgICAgICAgdGhpcy5jb21iby5maWx0ZXJlZERhdGEgPSBjb2xsZWN0aW9uO1xuICAgICAgICBpZiAoKCFncm91cEtleSAmJiBncm91cEtleSAhPT0gMCkgfHwgIWNvbGxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzb3J0ZWQgPSBEYXRhVXRpbC5zb3J0KGNsb25lQXJyYXkoY29sbGVjdGlvbiksIFt7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IGdyb3VwS2V5LFxuICAgICAgICAgICAgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLkFzYyxcbiAgICAgICAgICAgIGlnbm9yZUNhc2U6IHRydWUsXG4gICAgICAgICAgICBzdHJhdGVneTogRGVmYXVsdFNvcnRpbmdTdHJhdGVneS5pbnN0YW5jZSgpXG4gICAgICAgIH1dKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNsb25lQXJyYXkoc29ydGVkKTtcbiAgICAgICAgbGV0IGluc2VydHMgPSAwO1xuICAgICAgICBsZXQgY3VycmVudEhlYWRlciA9IG51bGw7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgaW5zZXJ0RmxhZyA9IDA7XG4gICAgICAgICAgICBpZiAoY3VycmVudEhlYWRlciAhPT0gc29ydGVkW2ldW2dyb3VwS2V5XSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRIZWFkZXIgPSBzb3J0ZWRbaV1bZ3JvdXBLZXldO1xuICAgICAgICAgICAgICAgIGluc2VydEZsYWcgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluc2VydEZsYWcpIHtcbiAgICAgICAgICAgICAgICBkYXRhLnNwbGljZShpICsgaW5zZXJ0cywgMCwge1xuICAgICAgICAgICAgICAgICAgICBbdmFsdWVLZXldOiBjdXJyZW50SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBbZ3JvdXBLZXldOiBjdXJyZW50SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICBpc0hlYWRlcjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGluc2VydHMrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8ucGlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29tYm8vY29tYm8ucGlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxtQkFBbUIsRUFBZ0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUc3RSxjQUFjO0FBRWQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixTQUFTLENBQUMsVUFBaUIsRUFBRSxXQUFnQixFQUFFLFVBQWUsRUFDakUsZ0JBQXdDLEVBQUUsWUFBWSxHQUFHLEtBQUs7UUFDOUQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNiLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQy9CLE9BQU8sVUFBVSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxNQUFNLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVGLElBQUksVUFBVSxJQUFJLElBQUksRUFBRTtnQkFDcEIsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFOztvQkFBQyxPQUFBLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBQSxDQUFDLENBQUMsVUFBVSxDQUFDLDBDQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO3dCQUNoRyxNQUFBLENBQUMsQ0FBQyxVQUFVLENBQUMsMENBQUUsUUFBUSxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUE7aUJBQUEsQ0FBQyxDQUFDO2FBQ3JFO2lCQUFNO2dCQUNILE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO29CQUNuRixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7YUFDeEQ7U0FDSjtJQUNMLENBQUM7OztZQW5CSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7O0FBc0JoQyxjQUFjO0FBRWQsTUFBTSxPQUFPLG9CQUFvQjtJQUU3QixZQUFnRCxLQUFtQjtRQUFuQixVQUFLLEdBQUwsS0FBSyxDQUFjO0lBQUksQ0FBQztJQUVqRSxTQUFTLENBQUMsVUFBaUIsRUFBRSxRQUFhLEVBQUUsUUFBYTtRQUM1RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7WUFDckQsT0FBTyxVQUFVLENBQUM7U0FDckI7UUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNsRCxTQUFTLEVBQUUsUUFBUTtnQkFDbkIsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7Z0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxFQUFFO2FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0osTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDekIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksYUFBYSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDdkMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDcEMsVUFBVSxHQUFHLENBQUMsQ0FBQzthQUNsQjtZQUNELElBQUksVUFBVSxFQUFFO2dCQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUU7b0JBQ3hCLENBQUMsUUFBUSxDQUFDLEVBQUUsYUFBYTtvQkFDekIsQ0FBQyxRQUFRLENBQUMsRUFBRSxhQUFhO29CQUN6QixRQUFRLEVBQUUsSUFBSTtpQkFDakIsQ0FBQyxDQUFDO2dCQUNILE9BQU8sRUFBRSxDQUFDO2FBQ2I7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7OztZQW5DSixJQUFJLFNBQUMsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFOzs7NENBR2QsTUFBTSxTQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVBcnJheSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRGF0YVV0aWwgfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvZGF0YS11dGlsJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR1hfQ09NQk9fQ09NUE9ORU5ULCBJZ3hDb21ib0Jhc2UgfSBmcm9tICcuL2NvbWJvLmNvbW1vbic7XG5pbXBvcnQgeyBEZWZhdWx0U29ydGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuaW1wb3J0IHsgSUNvbWJvRmlsdGVyaW5nT3B0aW9ucyB9IGZyb20gJy4vY29tYm8uY29tcG9uZW50JztcblxuLyoqIEBoaWRkZW4gKi9cbkBQaXBlKHsgbmFtZTogJ2NvbWJvRmlsdGVyaW5nJyB9KVxuZXhwb3J0IGNsYXNzIElneENvbWJvRmlsdGVyaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHB1YmxpYyB0cmFuc2Zvcm0oY29sbGVjdGlvbjogYW55W10sIHNlYXJjaFZhbHVlOiBhbnksIGRpc3BsYXlLZXk6IGFueSxcbiAgICAgICAgZmlsdGVyaW5nT3B0aW9uczogSUNvbWJvRmlsdGVyaW5nT3B0aW9ucywgc2hvdWxkRmlsdGVyID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzZWFyY2hWYWx1ZSB8fCAhc2hvdWxkRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHNlYXJjaFRlcm0gPSBmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmUgPyBzZWFyY2hWYWx1ZSA6IHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoZGlzcGxheUtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb24uZmlsdGVyKGUgPT4gZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlID8gZVtkaXNwbGF5S2V5XT8uaW5jbHVkZXMoc2VhcmNoVGVybSkgOlxuICAgICAgICAgICAgICAgICAgICBlW2Rpc3BsYXlLZXldPy50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoZSA9PiBmaWx0ZXJpbmdPcHRpb25zLmNhc2VTZW5zaXRpdmUgPyBlLmluY2x1ZGVzKHNlYXJjaFRlcm0pIDpcbiAgICAgICAgICAgICAgICAgICAgZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVGVybSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4vKiogQGhpZGRlbiAqL1xuQFBpcGUoeyBuYW1lOiAnY29tYm9Hcm91cGluZycgfSlcbmV4cG9ydCBjbGFzcyBJZ3hDb21ib0dyb3VwaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IoQEluamVjdChJR1hfQ09NQk9fQ09NUE9ORU5UKSBwdWJsaWMgY29tYm86IElneENvbWJvQmFzZSkgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBncm91cEtleTogYW55LCB2YWx1ZUtleTogYW55KSB7XG4gICAgICAgIHRoaXMuY29tYm8uZmlsdGVyZWREYXRhID0gY29sbGVjdGlvbjtcbiAgICAgICAgaWYgKCghZ3JvdXBLZXkgJiYgZ3JvdXBLZXkgIT09IDApIHx8ICFjb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc29ydGVkID0gRGF0YVV0aWwuc29ydChjbG9uZUFycmF5KGNvbGxlY3Rpb24pLCBbe1xuICAgICAgICAgICAgZmllbGROYW1lOiBncm91cEtleSxcbiAgICAgICAgICAgIGRpcjogU29ydGluZ0RpcmVjdGlvbi5Bc2MsXG4gICAgICAgICAgICBpZ25vcmVDYXNlOiB0cnVlLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IERlZmF1bHRTb3J0aW5nU3RyYXRlZ3kuaW5zdGFuY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjbG9uZUFycmF5KHNvcnRlZCk7XG4gICAgICAgIGxldCBpbnNlcnRzID0gMDtcbiAgICAgICAgbGV0IGN1cnJlbnRIZWFkZXIgPSBudWxsO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IGluc2VydEZsYWcgPSAwO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRIZWFkZXIgIT09IHNvcnRlZFtpXVtncm91cEtleV0pIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50SGVhZGVyID0gc29ydGVkW2ldW2dyb3VwS2V5XTtcbiAgICAgICAgICAgICAgICBpbnNlcnRGbGFnID0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbnNlcnRGbGFnKSB7XG4gICAgICAgICAgICAgICAgZGF0YS5zcGxpY2UoaSArIGluc2VydHMsIDAsIHtcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlS2V5XTogY3VycmVudEhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgW2dyb3VwS2V5XTogY3VycmVudEhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgaXNIZWFkZXI6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpbnNlcnRzKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxufVxuIl19
@@ -65,9 +65,6 @@ export class IgxSelectionAPIService {
65
65
  if (sel === undefined) {
66
66
  sel = this.get_empty();
67
67
  }
68
- if (!itemID && itemID !== 0) {
69
- throw Error('Invalid value for item id!');
70
- }
71
68
  sel.add(itemID);
72
69
  return sel;
73
70
  }
@@ -250,4 +247,4 @@ IgxSelectionAPIService.decorators = [
250
247
  providedIn: 'root',
251
248
  },] }
252
249
  ];
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLGNBQWM7QUFJZCxNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBSUk7OztXQUdHO1FBQ08sY0FBUyxHQUEyQixJQUFJLEdBQUcsRUFBb0IsQ0FBQztLQTRQN0U7SUExUEc7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBQyxXQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFlBQXNCO1FBQ2xELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFdBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxXQUFtQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksUUFB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QUFVLEtBQUssU0FBUyxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbkcsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxTQUFTO1FBQ1osT0FBTyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7Ozs7WUFuUUosVUFBVSxTQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogQGhpZGRlbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSWd4U2VsZWN0aW9uQVBJU2VydmljZSB7XG4gICAgLyoqXG4gICAgICogSWYgcHJpbWFyeUtleSBpcyBkZWZpbmVkLCB0aGVuIG11bHRpcGxlIHNlbGVjdGlvbiBpcyBiYXNlZCBvbiB0aGUgcHJpbWFyeUtleSwgYW5kIGl0IGlzIGFycmF5IG9mIG51bWJlcnMsIHN0cmluZ3MsIGV0Yy5cbiAgICAgKiBJZiB0aGUgcHJpbWFyeUtleSBpcyBvbWl0dGVkLCB0aGVuIHNlbGVjdGlvbiBpcyBiYXNlZCBvbiB0aGUgaXRlbSBkYXRhXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNlbGVjdGlvbjogTWFwPHN0cmluZywgIFNldDxhbnk+PiA9IG5ldyBNYXA8c3RyaW5nLCBTZXQ8YW55Pj4oKTtcblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0KGNvbXBvbmVudElEOiBzdHJpbmcpOiBTZXQ8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbi5nZXQoY29tcG9uZW50SUQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCBuZXcgY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBuZXdTZWxlY3Rpb24gVGhlIG5ldyBjb21wb25lbnQgc2VsZWN0aW9uIHRvIGJlIHNldC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0KGNvbXBvbmVudElEOiBzdHJpbmcsIG5ld1NlbGVjdGlvbjogU2V0PGFueT4pIHtcbiAgICAgICAgaWYgKCFjb21wb25lbnRJRCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIGNvbXBvbmVudCBpZCEnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXQoY29tcG9uZW50SUQsIG5ld1NlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xlYXJzIHNlbGVjdGlvbiBmb3IgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyKGNvbXBvbmVudElEOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KGNvbXBvbmVudElELCB0aGlzLmdldF9lbXB0eSgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uIGxlbmd0aC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBzaXplKGNvbXBvbmVudElEOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBzZWwgPSB0aGlzLmdldChjb21wb25lbnRJRCk7XG4gICAgICAgIHJldHVybiBzZWwgPyBzZWwuc2l6ZSA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBuZXcgc2VsZWN0aW9uIHRoYXQgY29uc2lzdCBvZiB0aGUgbmV3IGl0ZW0gYWRkZWQgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBUaGUgcmV0dXJuZWQgY29sbGVjdGlvbiBpcyBuZXcgU2V0LFxuICAgICAqIHRoZXJlZm9yZSBpZiB5b3Ugd2FudCB0byB1cGRhdGUgY29tcG9uZW50IHNlbGVjdGlvbiB5b3UgbmVlZCB0byBjYWxsIGluIGFkZGl0aW9uIHRoZSBzZXRfc2VsZWN0aW9uKCkgbWV0aG9kXG4gICAgICogb3IgaW5zdGVhZCB1c2UgdGhlIHNlbGVjdF9pdGVtKCkgb25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQsIHdoaWNoIHdlIGFkZCBuZXcgaXRlbSB0by5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtIHRvIGFkZCB0byBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBzZWwgVXNlZCBpbnRlcm5hbGx5IG9ubHkgYnkgdGhlIHNlbGVjdGlvbiAoYWRkX2l0ZW1zIG1ldGhvZCkgdG8gYWNjdW11bGF0ZSBzZWxlY3Rpb24gZm9yIG11bHRpcGxlIGl0ZW1zLlxuICAgICAqXG4gICAgICogQHJldHVybnMgU2VsZWN0aW9uIGFmdGVyIHRoZSBuZXcgaXRlbSBpcyBhZGRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkX2l0ZW0oY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlELCBzZWw/OiBTZXQ8YW55Pik6IFNldDxhbnk+IHtcbiAgICAgICAgaWYgKCFzZWwpIHtcbiAgICAgICAgICAgIHNlbCA9IG5ldyBTZXQodGhpcy5nZXQoY29tcG9uZW50SUQpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHNlbCA9IHRoaXMuZ2V0X2VtcHR5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpdGVtSUQgJiYgaXRlbUlEICE9PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcignSW52YWxpZCB2YWx1ZSBmb3IgaXRlbSBpZCEnKTtcbiAgICAgICAgfVxuICAgICAgICBzZWwuYWRkKGl0ZW1JRCk7XG4gICAgICAgIHJldHVybiBzZWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBuZXcgc2VsZWN0aW9uIHRoYXQgY29uc2lzdCBvZiB0aGUgbmV3IGl0ZW1zIGFkZGVkIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogVGhlIHJldHVybmVkIGNvbGxlY3Rpb24gaXMgbmV3IFNldCxcbiAgICAgKiB0aGVyZWZvcmUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIGNvbXBvbmVudCBzZWxlY3Rpb24geW91IG5lZWQgdG8gY2FsbCBpbiBhZGRpdGlvbiB0aGUgc2V0X3NlbGVjdGlvbigpIG1ldGhvZFxuICAgICAqIG9yIGluc3RlYWQgdXNlIHRoZSBzZWxlY3RfaXRlbXMoKSBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgYWRkIG5ldyBpdGVtcyB0by5cbiAgICAgKiBAcGFyYW0gaXRlbUlEcyBBcnJheSBvZiBJRHMgb2YgdGhlIGl0ZW1zIHRvIGFkZCB0byBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBjbGVhclNlbGVjdGlvbiBJZiB0cnVlIGl0IHdpbGwgY2xlYXIgcHJldmlvdXMgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgU2VsZWN0aW9uIGFmdGVyIHRoZSBuZXcgaXRlbXMgYXJlIGFkZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRfaXRlbXMoY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlEczogYW55W10sIGNsZWFyU2VsZWN0aW9uPzogYm9vbGVhbik6IFNldDxhbnk+IHtcbiAgICAgICAgbGV0IHNlbGVjdGlvbjogU2V0PGFueT47XG4gICAgICAgIGlmIChjbGVhclNlbGVjdGlvbikge1xuICAgICAgICAgICAgc2VsZWN0aW9uID0gdGhpcy5nZXRfZW1wdHkoKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtSURzICYmIGl0ZW1JRHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSBuZXcgU2V0KHRoaXMuZ2V0KGNvbXBvbmVudElEKSk7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbUlEcy5mb3JFYWNoKChpdGVtKSA9PiBzZWxlY3Rpb24gPSB0aGlzLmFkZF9pdGVtKGNvbXBvbmVudElELCBpdGVtLCBzZWxlY3Rpb24pKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgaXRlbSB0byB0aGUgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQsIHdoaWNoIHdlIGFkZCBuZXcgaXRlbSB0by5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtIHRvIGFkZCB0byBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBzZWwgVXNlZCBpbnRlcm5hbGx5IG9ubHkgYnkgdGhlIHNlbGVjdGlvbiAoc2VsZWN0X2l0ZW1zIG1ldGhvZCkgdG8gYWNjdW11bGF0ZSBzZWxlY3Rpb24gZm9yIG11bHRpcGxlIGl0ZW1zLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RfaXRlbShjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSUQsIHNlbD86IFNldDxhbnk+KSB7XG4gICAgICAgIHRoaXMuc2V0KGNvbXBvbmVudElELCB0aGlzLmFkZF9pdGVtKGNvbXBvbmVudElELCBpdGVtSUQsIHNlbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBpdGVtcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQsIHdoaWNoIHdlIGFkZCBuZXcgaXRlbXMgdG8uXG4gICAgICogQHBhcmFtIGl0ZW1JRHMgQXJyYXkgb2YgSURzIG9mIHRoZSBpdGVtcyB0byBhZGQgdG8gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gY2xlYXJTZWxlY3Rpb24gSWYgdHJ1ZSBpdCB3aWxsIGNsZWFyIHByZXZpb3VzIHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2VsZWN0X2l0ZW1zKGNvbXBvbmVudElEOiBzdHJpbmcsIGl0ZW1JRDogYW55W10sIGNsZWFyU2VsZWN0aW9uPzogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnNldChjb21wb25lbnRJRCwgdGhpcy5hZGRfaXRlbXMoY29tcG9uZW50SUQsIGl0ZW1JRCwgY2xlYXJTZWxlY3Rpb24pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBzZWxlY3Rpb24gdGhhdCBjb25zaXN0IG9mIHRoZSBuZXcgaXRlbXMgZXhjbHVkZWQgZnJvbSB0aGUgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIFRoZSByZXR1cm5lZCBjb2xsZWN0aW9uIGlzIG5ldyBTZXQsXG4gICAgICogdGhlcmVmb3JlIGlmIHlvdSB3YW50IHRvIHVwZGF0ZSBjb21wb25lbnQgc2VsZWN0aW9uIHlvdSBuZWVkIHRvIGNhbGwgaW4gYWRkaXRpb24gdGhlIHNldF9zZWxlY3Rpb24oKSBtZXRob2RcbiAgICAgKiBvciBpbnN0ZWFkIHVzZSB0aGUgZGVzZWxlY3RfaXRlbSgpIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LCB3aGljaCB3ZSByZW1vdmUgaXRlbXMgZnJvbS5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIHNlbCBVc2VkIGludGVybmFsbHkgb25seSBieSB0aGUgc2VsZWN0aW9uIChkZWxldGVfaXRlbXMgbWV0aG9kKSB0byBhY2N1bXVsYXRlIGRlc2VsZWN0ZWQgaXRlbXMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBTZWxlY3Rpb24gYWZ0ZXIgdGhlIGl0ZW0gaXMgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlX2l0ZW0oY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlELCBzZWw/OiBTZXQ8YW55Pikge1xuICAgICAgICBpZiAoIXNlbCkge1xuICAgICAgICAgICAgc2VsID0gbmV3IFNldCh0aGlzLmdldChjb21wb25lbnRJRCkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNlbC5kZWxldGUoaXRlbUlEKTtcbiAgICAgICAgcmV0dXJuIHNlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBzZWxlY3Rpb24gdGhhdCBjb25zaXN0IG9mIHRoZSBuZXcgaXRlbXMgcmVtb3ZlZCB0byB0aGUgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIFRoZSByZXR1cm5lZCBjb2xsZWN0aW9uIGlzIG5ldyBTZXQsXG4gICAgICogdGhlcmVmb3JlIGlmIHlvdSB3YW50IHRvIHVwZGF0ZSBjb21wb25lbnQgc2VsZWN0aW9uIHlvdSBuZWVkIHRvIGNhbGwgaW4gYWRkaXRpb24gdGhlIHNldF9zZWxlY3Rpb24oKSBtZXRob2RcbiAgICAgKiBvciBpbnN0ZWFkIHVzZSB0aGUgZGVzZWxlY3RfaXRlbXMoKSBvbmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgcmVtb3ZlIGl0ZW1zIGZyb20uXG4gICAgICogQHBhcmFtIGl0ZW1JRCBJRCBvZiB0aGUgaXRlbXMgdG8gcmVtb3ZlIGZyb20gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFNlbGVjdGlvbiBhZnRlciB0aGUgaXRlbXMgYXJlIHJlbW92ZWQuXG4gICAgICovXG4gICAgcHVibGljIGRlbGV0ZV9pdGVtcyhjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSURzOiBhbnlbXSk6IFNldDxhbnk+IHtcbiAgICAgICAgbGV0IHNlbGVjdGlvbjogU2V0PGFueT47XG4gICAgICAgIGl0ZW1JRHMuZm9yRWFjaCgoZGVzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGlvbiA9IHRoaXMuZGVsZXRlX2l0ZW0oY29tcG9uZW50SUQsIGRlc2VsZWN0ZWRJdGVtLCBzZWxlY3Rpb24pKTtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmUgaXRlbSBmcm9tIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgcmVtb3ZlIGl0ZW0gZnJvbS5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtIHRvIHJlbW92ZSBmcm9tIGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIHNlbCBVc2VkIGludGVybmFsbHkgb25seSBieSB0aGUgc2VsZWN0aW9uIChkZXNlbGVjdF9pdGVtcyBtZXRob2QpIHRvIGFjY3VtdWxhdGUgc2VsZWN0aW9uIGZvciBtdWx0aXBsZSBpdGVtcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3RfaXRlbShjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSUQsIHNlbD86IFNldDxhbnk+KSB7XG4gICAgICAgIHRoaXMuc2V0KGNvbXBvbmVudElELCB0aGlzLmRlbGV0ZV9pdGVtKGNvbXBvbmVudElELCBpdGVtSUQsIHNlbCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBpdGVtcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQsIHdoaWNoIHdlIGFkZCBuZXcgaXRlbXMgdG8uXG4gICAgICogQHBhcmFtIGl0ZW1JRHMgQXJyYXkgb2YgSURzIG9mIHRoZSBpdGVtcyB0byBhZGQgdG8gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzZWxlY3RfaXRlbXMoY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlEOiBhbnlbXSwgY2xlYXJTZWxlY3Rpb24/OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KGNvbXBvbmVudElELCB0aGlzLmRlbGV0ZV9pdGVtcyhjb21wb25lbnRJRCwgaXRlbUlEKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGl0ZW0gaXMgc2VsZWN0ZWQgaW4gdGhlIGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtIHRvIHNlYXJjaC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIElmIGl0ZW0gaXMgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGlzX2l0ZW1fc2VsZWN0ZWQoY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlEKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHNlbCA9IHRoaXMuZ2V0KGNvbXBvbmVudElEKTtcbiAgICAgICAgaWYgKCFzZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VsLmhhcyhpdGVtSUQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBmaXJzdCBlbGVtZW50IGluIHRoZSBzZWxlY3Rpb24uXG4gICAgICogVGhpcyBpcyBjb3JyZWN0IHdoZW4gd2UgaGF2ZSBvbmx5IG9uZSBpdGVtIGluIHRoZSBjb2xsZWN0aW9uIChmb3Igc2luZ2xlIHNlbGVjdGlvbiBwdXJwb3NlcylcbiAgICAgKiBhbmQgdGhlIG1ldGhvZCByZXR1cm5zIHRoYXQgaXRlbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogQHJldHVybnMgRmlyc3QgZWxlbWVudCBpbiB0aGUgc2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBmaXJzdF9pdGVtKGNvbXBvbmVudElEOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5nZXQoY29tcG9uZW50SUQpO1xuICAgICAgICBpZiAoc2VsICYmIHNlbC5zaXplID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlbC52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciBhbGwgaXRlbXMgYXJlIHNlbGVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGRhdGFDb3VudDogbnVtYmVyIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGF0YS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIElmIGFsbCBpdGVtcyBhcmUgc2VsZWN0ZWQuXG4gICAgICovXG4gICAgcHVibGljIGFyZV9hbGxfc2VsZWN0ZWQoY29tcG9uZW50SUQ6IHN0cmluZywgZGF0YUNvdW50OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGRhdGFDb3VudCA+IDAgJiYgZGF0YUNvdW50ID09PSB0aGlzLnNpemUoY29tcG9uZW50SUQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciBhbnkgb2YgdGhlIGl0ZW1zIGlzIHNlbGVjdGVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICogQHBhcmFtIGRhdGEgRW50aXJlIGRhdGEgYXJyYXkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBJZiB0aGVyZSBpcyBhbnkgaXRlbSBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXJlX25vbmVfc2VsZWN0ZWQoY29tcG9uZW50SUQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaXplKGNvbXBvbmVudElEKSA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHByaW1hcnkga2V5IHZhbHVlcyBmcm9tIGEgZGF0YSBhcnJheS4gSWYgdGhlcmUgaXNuJ3QgYSBwcmltYXJ5IGtleSBkZWZpbmVkIHRoYXQgdGhlIGVudGlyZSBkYXRhIGlzIHJldHVybmVkIGluc3RlYWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGF0YSBFbnRpcmUgZGF0YSBhcnJheS5cbiAgICAgKiBAcGFyYW0gcHJpbWFyeUtleSBEYXRhIHByaW1hcnkga2V5LlxuICAgICAqXG4gICAgICogQHJldHVybnMgQXJyYXkgb2YgaWRlbnRpZmllcnMsIGVpdGhlciBwcmltYXJ5IGtleSB2YWx1ZXMgb3IgdGhlIGVudGlyZSBkYXRhIGFycmF5LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRfYWxsX2lkcyhkYXRhLCBwcmltYXJ5S2V5Pykge1xuICAgICAgICAvLyBJZiBwcmltYXJ5S2V5IGlzIDAsIHRoaXMgc2hvdWxkIHN0aWxsIG1hcCB0byB0aGUgcHJvcGVydHlcbiAgICAgICAgcmV0dXJuIHByaW1hcnlLZXkgIT09IHVuZGVmaW5lZCAmJiBwcmltYXJ5S2V5ICE9PSBudWxsID8gZGF0YS5tYXAoKHgpID0+IHhbcHJpbWFyeUtleV0pIDogZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGVtcHR5IHNlbGVjdGlvbiBjb2xsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgZW1wdHkgc2V0LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRfZW1wdHkoKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KCk7XG4gICAgfVxufVxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvcmUvc2VsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLGNBQWM7QUFJZCxNQUFNLE9BQU8sc0JBQXNCO0lBSG5DO1FBSUk7OztXQUdHO1FBQ08sY0FBUyxHQUEyQixJQUFJLEdBQUcsRUFBb0IsQ0FBQztLQXlQN0U7SUF2UEc7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBQyxXQUFtQjtRQUMxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEdBQUcsQ0FBQyxXQUFtQixFQUFFLFlBQXNCO1FBQ2xELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksS0FBSyxDQUFDLFdBQW1CO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLElBQUksQ0FBQyxXQUFtQjtRQUMzQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0ksUUFBUSxDQUFDLFdBQW1CLEVBQUUsTUFBTSxFQUFFLEdBQWM7UUFDdkQsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNOLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7U0FDeEM7UUFDRCxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDbkIsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUMxQjtRQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSSxTQUFTLENBQUMsV0FBbUIsRUFBRSxPQUFjLEVBQUUsY0FBd0I7UUFDMUUsSUFBSSxTQUFtQixDQUFDO1FBQ3hCLElBQUksY0FBYyxFQUFFO1lBQ2hCLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN4QyxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ25GLE9BQU8sU0FBUyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXLENBQUMsV0FBbUIsRUFBRSxNQUFNLEVBQUUsR0FBYztRQUMxRCxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLFdBQW1CLEVBQUUsTUFBYSxFQUFFLGNBQXdCO1FBQzVFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNJLFdBQVcsQ0FBQyxXQUFtQixFQUFFLE1BQU0sRUFBRSxHQUFjO1FBQzFELElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUNELEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkIsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNJLFlBQVksQ0FBQyxXQUFtQixFQUFFLE9BQWM7UUFDbkQsSUFBSSxTQUFtQixDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUMxRyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksYUFBYSxDQUFDLFdBQW1CLEVBQUUsTUFBTSxFQUFFLEdBQWM7UUFDNUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksY0FBYyxDQUFDLFdBQW1CLEVBQUUsTUFBYSxFQUFFLGNBQXdCO1FBQzlFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLE1BQU07UUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ04sT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFDRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksVUFBVSxDQUFDLFdBQW1CO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLEVBQUU7WUFDckIsT0FBTyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO1NBQ3JDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxnQkFBZ0IsQ0FBQyxXQUFtQixFQUFFLFNBQWlCO1FBQzFELE9BQU8sU0FBUyxHQUFHLENBQUMsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLGlCQUFpQixDQUFDLFdBQW1CO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxXQUFXLENBQUMsSUFBSSxFQUFFLFVBQVc7UUFDaEMsNERBQTREO1FBQzVELE9BQU8sVUFBVSxLQUFLLFNBQVMsSUFBSSxVQUFVLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25HLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksU0FBUztRQUNaLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDOzs7O1lBaFFKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEBoaWRkZW4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIElneFNlbGVjdGlvbkFQSVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIElmIHByaW1hcnlLZXkgaXMgZGVmaW5lZCwgdGhlbiBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgYmFzZWQgb24gdGhlIHByaW1hcnlLZXksIGFuZCBpdCBpcyBhcnJheSBvZiBudW1iZXJzLCBzdHJpbmdzLCBldGMuXG4gICAgICogSWYgdGhlIHByaW1hcnlLZXkgaXMgb21pdHRlZCwgdGhlbiBzZWxlY3Rpb24gaXMgYmFzZWQgb24gdGhlIGl0ZW0gZGF0YVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzZWxlY3Rpb246IE1hcDxzdHJpbmcsICBTZXQ8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgU2V0PGFueT4+KCk7XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICovXG4gICAgcHVibGljIGdldChjb21wb25lbnRJRDogc3RyaW5nKTogU2V0PGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb24uZ2V0KGNvbXBvbmVudElEKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgbmV3IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gbmV3U2VsZWN0aW9uIFRoZSBuZXcgY29tcG9uZW50IHNlbGVjdGlvbiB0byBiZSBzZXQuXG4gICAgICovXG4gICAgcHVibGljIHNldChjb21wb25lbnRJRDogc3RyaW5nLCBuZXdTZWxlY3Rpb246IFNldDxhbnk+KSB7XG4gICAgICAgIGlmICghY29tcG9uZW50SUQpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdJbnZhbGlkIHZhbHVlIGZvciBjb21wb25lbnQgaWQhJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0KGNvbXBvbmVudElELCBuZXdTZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyBzZWxlY3Rpb24gZm9yIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGVhcihjb21wb25lbnRJRDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldChjb21wb25lbnRJRCwgdGhpcy5nZXRfZW1wdHkoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgY29tcG9uZW50IHNlbGVjdGlvbiBsZW5ndGguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2l6ZShjb21wb25lbnRJRDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5nZXQoY29tcG9uZW50SUQpO1xuICAgICAgICByZXR1cm4gc2VsID8gc2VsLnNpemUgOiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IHNlbGVjdGlvbiB0aGF0IGNvbnNpc3Qgb2YgdGhlIG5ldyBpdGVtIGFkZGVkIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogVGhlIHJldHVybmVkIGNvbGxlY3Rpb24gaXMgbmV3IFNldCxcbiAgICAgKiB0aGVyZWZvcmUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIGNvbXBvbmVudCBzZWxlY3Rpb24geW91IG5lZWQgdG8gY2FsbCBpbiBhZGRpdGlvbiB0aGUgc2V0X3NlbGVjdGlvbigpIG1ldGhvZFxuICAgICAqIG9yIGluc3RlYWQgdXNlIHRoZSBzZWxlY3RfaXRlbSgpIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LCB3aGljaCB3ZSBhZGQgbmV3IGl0ZW0gdG8uXG4gICAgICogQHBhcmFtIGl0ZW1JRCBJRCBvZiB0aGUgaXRlbSB0byBhZGQgdG8gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gc2VsIFVzZWQgaW50ZXJuYWxseSBvbmx5IGJ5IHRoZSBzZWxlY3Rpb24gKGFkZF9pdGVtcyBtZXRob2QpIHRvIGFjY3VtdWxhdGUgc2VsZWN0aW9uIGZvciBtdWx0aXBsZSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFNlbGVjdGlvbiBhZnRlciB0aGUgbmV3IGl0ZW0gaXMgYWRkZWQuXG4gICAgICovXG4gICAgcHVibGljIGFkZF9pdGVtKGNvbXBvbmVudElEOiBzdHJpbmcsIGl0ZW1JRCwgc2VsPzogU2V0PGFueT4pOiBTZXQ8YW55PiB7XG4gICAgICAgIGlmICghc2VsKSB7XG4gICAgICAgICAgICBzZWwgPSBuZXcgU2V0KHRoaXMuZ2V0KGNvbXBvbmVudElEKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZWwgPSB0aGlzLmdldF9lbXB0eSgpO1xuICAgICAgICB9XG4gICAgICAgIHNlbC5hZGQoaXRlbUlEKTtcbiAgICAgICAgcmV0dXJuIHNlbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIG5ldyBzZWxlY3Rpb24gdGhhdCBjb25zaXN0IG9mIHRoZSBuZXcgaXRlbXMgYWRkZWQgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBUaGUgcmV0dXJuZWQgY29sbGVjdGlvbiBpcyBuZXcgU2V0LFxuICAgICAqIHRoZXJlZm9yZSBpZiB5b3Ugd2FudCB0byB1cGRhdGUgY29tcG9uZW50IHNlbGVjdGlvbiB5b3UgbmVlZCB0byBjYWxsIGluIGFkZGl0aW9uIHRoZSBzZXRfc2VsZWN0aW9uKCkgbWV0aG9kXG4gICAgICogb3IgaW5zdGVhZCB1c2UgdGhlIHNlbGVjdF9pdGVtcygpIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LCB3aGljaCB3ZSBhZGQgbmV3IGl0ZW1zIHRvLlxuICAgICAqIEBwYXJhbSBpdGVtSURzIEFycmF5IG9mIElEcyBvZiB0aGUgaXRlbXMgdG8gYWRkIHRvIGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIGNsZWFyU2VsZWN0aW9uIElmIHRydWUgaXQgd2lsbCBjbGVhciBwcmV2aW91cyBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBTZWxlY3Rpb24gYWZ0ZXIgdGhlIG5ldyBpdGVtcyBhcmUgYWRkZWQuXG4gICAgICovXG4gICAgcHVibGljIGFkZF9pdGVtcyhjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSURzOiBhbnlbXSwgY2xlYXJTZWxlY3Rpb24/OiBib29sZWFuKTogU2V0PGFueT4ge1xuICAgICAgICBsZXQgc2VsZWN0aW9uOiBTZXQ8YW55PjtcbiAgICAgICAgaWYgKGNsZWFyU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB0aGlzLmdldF9lbXB0eSgpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW1JRHMgJiYgaXRlbUlEcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IG5ldyBTZXQodGhpcy5nZXQoY29tcG9uZW50SUQpKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtSURzLmZvckVhY2goKGl0ZW0pID0+IHNlbGVjdGlvbiA9IHRoaXMuYWRkX2l0ZW0oY29tcG9uZW50SUQsIGl0ZW0sIHNlbGVjdGlvbikpO1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZCBpdGVtIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgYWRkIG5ldyBpdGVtIHRvLlxuICAgICAqIEBwYXJhbSBpdGVtSUQgSUQgb2YgdGhlIGl0ZW0gdG8gYWRkIHRvIGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogQHBhcmFtIHNlbCBVc2VkIGludGVybmFsbHkgb25seSBieSB0aGUgc2VsZWN0aW9uIChzZWxlY3RfaXRlbXMgbWV0aG9kKSB0byBhY2N1bXVsYXRlIHNlbGVjdGlvbiBmb3IgbXVsdGlwbGUgaXRlbXMuXG4gICAgICovXG4gICAgcHVibGljIHNlbGVjdF9pdGVtKGNvbXBvbmVudElEOiBzdHJpbmcsIGl0ZW1JRCwgc2VsPzogU2V0PGFueT4pIHtcbiAgICAgICAgdGhpcy5zZXQoY29tcG9uZW50SUQsIHRoaXMuYWRkX2l0ZW0oY29tcG9uZW50SUQsIGl0ZW1JRCwgc2VsKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgYWRkIG5ldyBpdGVtcyB0by5cbiAgICAgKiBAcGFyYW0gaXRlbUlEcyBBcnJheSBvZiBJRHMgb2YgdGhlIGl0ZW1zIHRvIGFkZCB0byBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBjbGVhclNlbGVjdGlvbiBJZiB0cnVlIGl0IHdpbGwgY2xlYXIgcHJldmlvdXMgc2VsZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RfaXRlbXMoY29tcG9uZW50SUQ6IHN0cmluZywgaXRlbUlEOiBhbnlbXSwgY2xlYXJTZWxlY3Rpb24/OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuc2V0KGNvbXBvbmVudElELCB0aGlzLmFkZF9pdGVtcyhjb21wb25lbnRJRCwgaXRlbUlELCBjbGVhclNlbGVjdGlvbikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IHNlbGVjdGlvbiB0aGF0IGNvbnNpc3Qgb2YgdGhlIG5ldyBpdGVtcyBleGNsdWRlZCBmcm9tIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogVGhlIHJldHVybmVkIGNvbGxlY3Rpb24gaXMgbmV3IFNldCxcbiAgICAgKiB0aGVyZWZvcmUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIGNvbXBvbmVudCBzZWxlY3Rpb24geW91IG5lZWQgdG8gY2FsbCBpbiBhZGRpdGlvbiB0aGUgc2V0X3NlbGVjdGlvbigpIG1ldGhvZFxuICAgICAqIG9yIGluc3RlYWQgdXNlIHRoZSBkZXNlbGVjdF9pdGVtKCkgb25lLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQsIHdoaWNoIHdlIHJlbW92ZSBpdGVtcyBmcm9tLlxuICAgICAqIEBwYXJhbSBpdGVtSUQgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gc2VsIFVzZWQgaW50ZXJuYWxseSBvbmx5IGJ5IHRoZSBzZWxlY3Rpb24gKGRlbGV0ZV9pdGVtcyBtZXRob2QpIHRvIGFjY3VtdWxhdGUgZGVzZWxlY3RlZCBpdGVtcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIFNlbGVjdGlvbiBhZnRlciB0aGUgaXRlbSBpcyByZW1vdmVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZWxldGVfaXRlbShjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSUQsIHNlbD86IFNldDxhbnk+KSB7XG4gICAgICAgIGlmICghc2VsKSB7XG4gICAgICAgICAgICBzZWwgPSBuZXcgU2V0KHRoaXMuZ2V0KGNvbXBvbmVudElEKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc2VsLmRlbGV0ZShpdGVtSUQpO1xuICAgICAgICByZXR1cm4gc2VsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgbmV3IHNlbGVjdGlvbiB0aGF0IGNvbnNpc3Qgb2YgdGhlIG5ldyBpdGVtcyByZW1vdmVkIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICogVGhlIHJldHVybmVkIGNvbGxlY3Rpb24gaXMgbmV3IFNldCxcbiAgICAgKiB0aGVyZWZvcmUgaWYgeW91IHdhbnQgdG8gdXBkYXRlIGNvbXBvbmVudCBzZWxlY3Rpb24geW91IG5lZWQgdG8gY2FsbCBpbiBhZGRpdGlvbiB0aGUgc2V0X3NlbGVjdGlvbigpIG1ldGhvZFxuICAgICAqIG9yIGluc3RlYWQgdXNlIHRoZSBkZXNlbGVjdF9pdGVtcygpIG9uZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LCB3aGljaCB3ZSByZW1vdmUgaXRlbXMgZnJvbS5cbiAgICAgKiBAcGFyYW0gaXRlbUlEIElEIG9mIHRoZSBpdGVtcyB0byByZW1vdmUgZnJvbSBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqXG4gICAgICogQHJldHVybnMgU2VsZWN0aW9uIGFmdGVyIHRoZSBpdGVtcyBhcmUgcmVtb3ZlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZGVsZXRlX2l0ZW1zKGNvbXBvbmVudElEOiBzdHJpbmcsIGl0ZW1JRHM6IGFueVtdKTogU2V0PGFueT4ge1xuICAgICAgICBsZXQgc2VsZWN0aW9uOiBTZXQ8YW55PjtcbiAgICAgICAgaXRlbUlEcy5mb3JFYWNoKChkZXNlbGVjdGVkSXRlbSkgPT4gc2VsZWN0aW9uID0gdGhpcy5kZWxldGVfaXRlbShjb21wb25lbnRJRCwgZGVzZWxlY3RlZEl0ZW0sIHNlbGVjdGlvbikpO1xuICAgICAgICByZXR1cm4gc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBpdGVtIGZyb20gdGhlIGN1cnJlbnQgY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LCB3aGljaCB3ZSByZW1vdmUgaXRlbSBmcm9tLlxuICAgICAqIEBwYXJhbSBpdGVtSUQgSUQgb2YgdGhlIGl0ZW0gdG8gcmVtb3ZlIGZyb20gY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKiBAcGFyYW0gc2VsIFVzZWQgaW50ZXJuYWxseSBvbmx5IGJ5IHRoZSBzZWxlY3Rpb24gKGRlc2VsZWN0X2l0ZW1zIG1ldGhvZCkgdG8gYWNjdW11bGF0ZSBzZWxlY3Rpb24gZm9yIG11bHRpcGxlIGl0ZW1zLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdF9pdGVtKGNvbXBvbmVudElEOiBzdHJpbmcsIGl0ZW1JRCwgc2VsPzogU2V0PGFueT4pIHtcbiAgICAgICAgdGhpcy5zZXQoY29tcG9uZW50SUQsIHRoaXMuZGVsZXRlX2l0ZW0oY29tcG9uZW50SUQsIGl0ZW1JRCwgc2VsKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGNvbXBvbmVudCBzZWxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudCwgd2hpY2ggd2UgYWRkIG5ldyBpdGVtcyB0by5cbiAgICAgKiBAcGFyYW0gaXRlbUlEcyBBcnJheSBvZiBJRHMgb2YgdGhlIGl0ZW1zIHRvIGFkZCB0byBjb21wb25lbnQgc2VsZWN0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyBkZXNlbGVjdF9pdGVtcyhjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSUQ6IGFueVtdLCBjbGVhclNlbGVjdGlvbj86IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5zZXQoY29tcG9uZW50SUQsIHRoaXMuZGVsZXRlX2l0ZW1zKGNvbXBvbmVudElELCBpdGVtSUQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgaXRlbSBpcyBzZWxlY3RlZCBpbiB0aGUgY29tcG9uZW50IHNlbGVjdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBvZiB0aGUgY29tcG9uZW50LlxuICAgICAqIEBwYXJhbSBpdGVtSUQgSUQgb2YgdGhlIGl0ZW0gdG8gc2VhcmNoLlxuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgaXRlbSBpcyBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgaXNfaXRlbV9zZWxlY3RlZChjb21wb25lbnRJRDogc3RyaW5nLCBpdGVtSUQpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgc2VsID0gdGhpcy5nZXQoY29tcG9uZW50SUQpO1xuICAgICAgICBpZiAoIXNlbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZWwuaGFzKGl0ZW1JRCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNlbGVjdGlvbi5cbiAgICAgKiBUaGlzIGlzIGNvcnJlY3Qgd2hlbiB3ZSBoYXZlIG9ubHkgb25lIGl0ZW0gaW4gdGhlIGNvbGxlY3Rpb24gKGZvciBzaW5nbGUgc2VsZWN0aW9uIHB1cnBvc2VzKVxuICAgICAqIGFuZCB0aGUgbWV0aG9kIHJldHVybnMgdGhhdCBpdGVtLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBGaXJzdCBlbGVtZW50IGluIHRoZSBzZXQuXG4gICAgICovXG4gICAgcHVibGljIGZpcnN0X2l0ZW0oY29tcG9uZW50SUQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBzZWwgPSB0aGlzLmdldChjb21wb25lbnRJRCk7XG4gICAgICAgIGlmIChzZWwgJiYgc2VsLnNpemUgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc2VsLnZhbHVlcygpLm5leHQoKS52YWx1ZTtcbiAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGFsbCBpdGVtcyBhcmUgc2VsZWN0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gZGF0YUNvdW50OiBudW1iZXIgTnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkYXRhLlxuICAgICAqXG4gICAgICogQHJldHVybnMgSWYgYWxsIGl0ZW1zIGFyZSBzZWxlY3RlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgYXJlX2FsbF9zZWxlY3RlZChjb21wb25lbnRJRDogc3RyaW5nLCBkYXRhQ291bnQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZGF0YUNvdW50ID4gMCAmJiBkYXRhQ291bnQgPT09IHRoaXMuc2l6ZShjb21wb25lbnRJRCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIGFueSBvZiB0aGUgaXRlbXMgaXMgc2VsZWN0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY29tcG9uZW50SUQgSUQgb2YgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAcGFyYW0gZGF0YSBFbnRpcmUgZGF0YSBhcnJheS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIElmIHRoZXJlIGlzIGFueSBpdGVtIHNlbGVjdGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyBhcmVfbm9uZV9zZWxlY3RlZChjb21wb25lbnRJRDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpemUoY29tcG9uZW50SUQpID09PSAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgcHJpbWFyeSBrZXkgdmFsdWVzIGZyb20gYSBkYXRhIGFycmF5LiBJZiB0aGVyZSBpc24ndCBhIHByaW1hcnkga2V5IGRlZmluZWQgdGhhdCB0aGUgZW50aXJlIGRhdGEgaXMgcmV0dXJuZWQgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkYXRhIEVudGlyZSBkYXRhIGFycmF5LlxuICAgICAqIEBwYXJhbSBwcmltYXJ5S2V5IERhdGEgcHJpbWFyeSBrZXkuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBpZGVudGlmaWVycywgZWl0aGVyIHByaW1hcnkga2V5IHZhbHVlcyBvciB0aGUgZW50aXJlIGRhdGEgYXJyYXkuXG4gICAgICovXG4gICAgcHVibGljIGdldF9hbGxfaWRzKGRhdGEsIHByaW1hcnlLZXk/KSB7XG4gICAgICAgIC8vIElmIHByaW1hcnlLZXkgaXMgMCwgdGhpcyBzaG91bGQgc3RpbGwgbWFwIHRvIHRoZSBwcm9wZXJ0eVxuICAgICAgICByZXR1cm4gcHJpbWFyeUtleSAhPT0gdW5kZWZpbmVkICYmIHByaW1hcnlLZXkgIT09IG51bGwgPyBkYXRhLm1hcCgoeCkgPT4geFtwcmltYXJ5S2V5XSkgOiBkYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgZW1wdHkgc2VsZWN0aW9uIGNvbGxlY3Rpb24uXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBlbXB0eSBzZXQuXG4gICAgICovXG4gICAgcHVibGljIGdldF9lbXB0eSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoKTtcbiAgICB9XG59XG4iXX0=
@@ -168,6 +168,14 @@ export const isEqual = (obj1, obj2) => {
168
168
  }
169
169
  return obj1 === obj2;
170
170
  };
171
+ /**
172
+ * Checks if provided variable is the value NaN
173
+ *
174
+ * @param value Value to check
175
+ * @returns true if provided variable is NaN
176
+ * @hidden
177
+ */
178
+ export const isNaNvalue = (value) => isNaN(value) && value !== undefined && typeof value !== 'string';
171
179
  /**
172
180
  * Utility service taking care of various utility functions such as
173
181
  * detecting browser features, general cross browser DOM manipulation, etc.
@@ -679,4 +687,4 @@ const verticalAnimations = [
679
687
  swingInBottomBck,
680
688
  swingOutBottomBck,
681
689
  ];
682
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFB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SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsZUFBZTtJQUNmLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLGVBQWU7Q0FDbEIsQ0FBQztBQUNGLE1BQU0sa0JBQWtCLEdBQWlDO0lBQ3JELE9BQU87SUFDUCxVQUFVO0lBQ1YsVUFBVTtJQUNWLFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFdBQVc7SUFDWCxZQUFZO0lBQ1osY0FBYztJQUNkLGVBQWU7SUFDZixVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsVUFBVTtJQUNWLFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztJQUNYLFVBQVU7SUFDVixXQUFXO0lBQ1gsYUFBYTtJQUNiLGNBQWM7SUFDZCxTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLGFBQWE7SUFDYixjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixVQUFVO0lBQ1YsV0FBVztJQUNYLGFBQWE7SUFDYixjQUFjO0lBQ2QsU0FBUztJQUNULFVBQVU7SUFDVixTQUFTO0lBQ1QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7SUFDVixhQUFhO0lBQ2IsY0FBYztJQUNkLGdCQUFnQjtJQUNoQixpQkFBaUI7SUFDakIsYUFBYTtJQUNiLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsaUJBQWlCO0NBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gubWVyZ2V3aXRoJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyIGFzIFBvbHlmaWxsIH0gZnJvbSAnQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBibGluaywgZmFkZUluLCBmYWRlT3V0LCBmbGlwQm90dG9tLCBmbGlwSG9yQmNrLCBmbGlwSG9yRndkLCBmbGlwTGVmdCwgZmxpcFJpZ2h0LCBmbGlwVG9wLFxuICAgIGZsaXBWZXJCY2ssIGZsaXBWZXJGd2QsIGdyb3dWZXJJbiwgZ3Jvd1Zlck91dCwgaGVhcnRiZWF0LCBwdWxzYXRlQmNrLCBwdWxzYXRlRndkLCByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZUluQm90dG9tLCByb3RhdGVJbkJyLCByb3RhdGVJbkNlbnRlciwgcm90YXRlSW5EaWFnb25hbDEsIHJvdGF0ZUluRGlhZ29uYWwyLCByb3RhdGVJbkhvcixcbiAgICByb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHQsIHJvdGF0ZUluVGwsIHJvdGF0ZUluVG9wLCByb3RhdGVJblRyLCByb3RhdGVJblZlciwgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlT3V0Qm90dG9tLCByb3RhdGVPdXRCciwgcm90YXRlT3V0Q2VudGVyLCByb3RhdGVPdXREaWFnb25hbDEsIHJvdGF0ZU91dERpYWdvbmFsMixcbiAgICByb3RhdGVPdXRIb3IsIHJvdGF0ZU91dExlZnQsIHJvdGF0ZU91dFJpZ2h0LCByb3RhdGVPdXRUbCwgcm90YXRlT3V0VG9wLCByb3RhdGVPdXRUcixcbiAgICByb3RhdGVPdXRWZXIsIHNjYWxlSW5CbCwgc2NhbGVJbkJvdHRvbSwgc2NhbGVJbkJyLCBzY2FsZUluQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LCBzY2FsZUluSG9yUmlnaHQsIHNjYWxlSW5MZWZ0LCBzY2FsZUluUmlnaHQsIHNjYWxlSW5UbCwgc2NhbGVJblRvcCwgc2NhbGVJblRyLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sIHNjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJUb3AsIHNjYWxlT3V0QmwsIHNjYWxlT3V0Qm90dG9tLCBzY2FsZU91dEJyLFxuICAgIHNjYWxlT3V0Q2VudGVyLCBzY2FsZU91dEhvckNlbnRlciwgc2NhbGVPdXRIb3JMZWZ0LCBzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dExlZnQsXG4gICAgc2NhbGVPdXRSaWdodCwgc2NhbGVPdXRUbCwgc2NhbGVPdXRUb3AsIHNjYWxlT3V0VHIsIHNjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlckNlbnRlcixcbiAgICBzY2FsZU91dFZlclRvcCwgc2hha2VCbCwgc2hha2VCb3R0b20sIHNoYWtlQnIsIHNoYWtlQ2VudGVyLCBzaGFrZUhvciwgc2hha2VMZWZ0LCBzaGFrZVJpZ2h0LFxuICAgIHNoYWtlVGwsIHNoYWtlVG9wLCBzaGFrZVRyLCBzaGFrZVZlciwgc2xpZGVJbkJsLCBzbGlkZUluQm90dG9tLCBzbGlkZUluQnIsIHNsaWRlSW5MZWZ0LFxuICAgIHNsaWRlSW5SaWdodCwgc2xpZGVJblRsLCBzbGlkZUluVG9wLCBzbGlkZUluVHIsIHNsaWRlT3V0QmwsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dEJyLFxuICAgIHNsaWRlT3V0TGVmdCwgc2xpZGVPdXRSaWdodCwgc2xpZGVPdXRUbCwgc2xpZGVPdXRUb3AsIHNsaWRlT3V0VHIsIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCwgc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5MZWZ0RndkLCBzd2luZ0luUmlnaHRCY2ssIHN3aW5nSW5SaWdodEZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLCBzd2luZ0luVG9wRndkLCBzd2luZ091dEJvdHRvbUJjaywgc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0TGVmdEJjayxcbiAgICBzd2luZ091dExlZnR0RndkLCBzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dFRvcEJjaywgc3dpbmdPdXRUb3BGd2Rcbn0gZnJvbSAnLi4vYW5pbWF0aW9ucy9tYWluJztcbmltcG9ydCB7IHNldEltbWVkaWF0ZSB9IGZyb20gJy4vc2V0SW1tZWRpYXRlJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZywgaXNNZXNzYWdlU2hvd246IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIWlzTWVzc2FnZVNob3duICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBta2VudW0gPSA8VCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBVIH0sIFUgZXh0ZW5kcyBzdHJpbmc+KHg6IFQpID0+IHg7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgUmVzaXplT2JzZXJ2ZXIgdHlwZSBvciB0aGUgcG9seWZpbGxlZCB2ZXJzaW9uIGlmIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZU9ic2VydmVyID0gKCkgPT4gd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8IFBvbHlmaWxsO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBkZWVwPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgbGV0IGkgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBhcnJbaV0gPSBkZWVwID8gY2xvbmVWYWx1ZShhcnJheVtpXSkgOiBhcnJheVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogRG9lc24ndCBjbG9uZSBsZWFmIGl0ZW1zXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVIaWVyYXJjaGljYWxBcnJheSA9IChhcnJheTogYW55W10sIGNoaWxkRGF0YUtleTogYW55KTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZEl0ZW0gPSBjbG9uZVZhbHVlKGl0ZW0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtW2NoaWxkRGF0YUtleV0pKSB7XG4gICAgICAgICAgICBjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0gPSBjbG9uZUhpZXJhcmNoaWNhbEFycmF5KGNsb25lZEl0ZW1bY2hpbGREYXRhS2V5XSwgY2hpbGREYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChjbG9uZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCBwcm90b3R5cGUgZnJvbSBwcm92aWRlZCBzb3VyY2UgYW5kIGNvcGllc1xuICogYWxsIHByb3BlcnRpZXMgZGVzY3JpcHRvcnMgZnJvbSBwcm92aWRlZCBzb3VyY2VcbiAqXG4gKiBAcGFyYW0gb2JqIFNvdXJjZSB0byBjb3B5IHByb3RvdHlwZSBhbmQgZGVzY3JpcHRvcnMgZnJvbVxuICogQHJldHVybnMgTmV3IG9iamVjdCB3aXRoIGNsb25lZCBwcm90b3R5cGUgYW5kIHByb3BlcnR5IGRlc2NyaXB0b3JzXG4gKi9cbiBleHBvcnQgY29uc3QgY29weURlc2NyaXB0b3JzID0gKG9iaikgPT4ge1xuICAgIGlmIChvYmopIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUoXG4gICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSxcbiAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iailcbiAgICAgICAgICAgICk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBEZWVwIGNsb25lcyBhbGwgZmlyc3QgbGV2ZWwga2V5cyBvZiBPYmoyIGFuZCBtZXJnZXMgdGhlbSB0byBPYmoxXG4gKlxuICogQHBhcmFtIG9iajEgT2JqZWN0IHRvIG1lcmdlIGludG9cbiAqIEBwYXJhbSBvYmoyIE9iamVjdCB0byBtZXJnZSBmcm9tXG4gKiBAcmV0dXJucyBPYmoxIHdpdGggbWVyZ2VkIGNsb25lZCBrZXlzIGZyb20gT2JqMlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VPYmplY3RzID0gKG9iajE6IGFueSwgb2JqMjogYW55KTogYW55ID0+IG1lcmdlV2l0aChvYmoxLCBvYmoyLCAob2JqVmFsdWUsIHNyY1ZhbHVlKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBvYmpWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIH1cbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgZGVlcCBjbG9uZSBvZiBwcm92aWRlZCB2YWx1ZS5cbiAqIFN1cHBvcnRzIHByaW1pdGl2ZSB2YWx1ZXMsIGRhdGVzIGFuZCBvYmplY3RzLlxuICogSWYgcGFzc2VkIHZhbHVlIGlzIGFycmF5IHJldHVybnMgc2hhbGxvdyBjb3B5IG9mIHRoZSBhcnJheS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gY2xvbmVcbiAqIEByZXR1cm5zIERlZXAgY29weSBvZiBwcm92aWRlZCB2YWx1ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVWYWx1ZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBbLi4udmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCB8fCB2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gY2xvbmVWYWx1ZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIFBhcnNlIHByb3ZpZGVkIGlucHV0IHRvIERhdGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIGlucHV0IHRvIHBhcnNlXG4gKiBAcmV0dXJucyBEYXRlIGlmIHBhcnNlIHN1Y2NlZWQgb3IgbnVsbFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgcGFyc2VEYXRlID0gKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCA9PiB7XG4gICAgLy8gaWYgdmFsdWUgaXMgSW52YWxpZCBEYXRlIHJldHVybiBudWxsXG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gdmFsdWUgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHdpdGggdW5pcXVlIGRhdGVzIG9ubHkuXG4gKlxuICogQHBhcmFtIGNvbHVtblZhbHVlcyBjb2xsZWN0aW9uIG9mIGRhdGUgdmFsdWVzIChtaWdodCBiZSBudW1iZXJzIG9yIElTTyA4NjAxIHN0cmluZ3MpXG4gKiBAcmV0dXJucyBjb2xsZWN0aW9uIG9mIHVuaXF1ZSBkYXRlcy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaXF1ZURhdGVzID0gKGNvbHVtblZhbHVlczogYW55W10pID0+IGNvbHVtblZhbHVlcy5yZWR1Y2UoKGEsIGMpID0+IHtcbiAgICBpZiAoIWEuY2FjaGVbYy5sYWJlbF0pIHtcbiAgICAgICAgYS5yZXN1bHQucHVzaChjKTtcbiAgICB9XG4gICAgYS5jYWNoZVtjLmxhYmVsXSA9IHRydWU7XG4gICAgcmV0dXJuIGE7XG59LCB7IHJlc3VsdDogW10sIGNhY2hlOiB7fSB9KS5yZXN1bHQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE9iamVjdFxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBPYmplY3RcbiAqIEBoaWRkZW5cbiAqL1xuIGV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiAhISh2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpID09PSAnW29iamVjdCBPYmplY3RdJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIERhdGVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgRGF0ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNEYXRlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRlID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHR3byBwYXNzZWQgYXJndW1lbnRzIGFyZSBlcXVhbFxuICogQ3VycmVudGx5IHN1cHBvcnRzIGRhdGUgb2JqZWN0c1xuICpcbiAqIEBwYXJhbSBvYmoxXG4gKiBAcGFyYW0gb2JqMlxuICogQHJldHVybnM6IGBib29sZWFuYFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9IChvYmoxLCBvYmoyKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGlzRGF0ZShvYmoxKSAmJiBpc0RhdGUob2JqMikpIHtcbiAgICAgICAgcmV0dXJuIG9iajEuZ2V0VGltZSgpID09PSBvYmoyLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajEgPT09IG9iajI7XG59O1xuXG4vKipcbiAqIFV0aWxpdHkgc2VydmljZSB0YWtpbmcgY2FyZSBvZiB2YXJpb3VzIHV0aWxpdHkgZnVuY3Rpb25zIHN1Y2ggYXNcbiAqIGRldGVjdGluZyBicm93c2VyIGZlYXR1cmVzLCBnZW5lcmFsIGNyb3NzIGJyb3dzZXIgRE9NIG1hbmlwdWxhdGlvbiwgZXRjLlxuICpcbiAqIEBoaWRkZW4gQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUGxhdGZvcm1VdGlsIHtcbiAgICBwdWJsaWMgaXNCcm93c2VyOiBib29sZWFuID0gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICBwdWJsaWMgaXNJT1MgPSB0aGlzLmlzQnJvd3NlciAmJiAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAhKCdNU1N0cmVhbScgaW4gd2luZG93KTtcbiAgICBwdWJsaWMgaXNGaXJlZm94ID0gdGhpcy5pc0Jyb3dzZXIgJiYgL0ZpcmVmb3hbXFwvXFxzXShcXGQrXFwuXFxkKykvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgcHVibGljIGlzRWRnZSA9IHRoaXMuaXNCcm93c2VyICYmIC9FZGdlW1xcL1xcc10oXFxkK1xcLlxcZCspLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIHB1YmxpYyBpc0lFID0gdGhpcy5pc0Jyb3dzZXIgJiYgbmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZignVHJpZGVudC8nKSA+IDA7XG4gICAgcHVibGljIGlzQ2hyb21pdW0gPSB0aGlzLmlzQnJvd3NlciAmJiAoL0Nocm9tfGU/aXVtL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSB8fFxuICAgIC9Hb29nbGUgSW5jL2cudGVzdChuYXZpZ2F0b3IudmVuZG9yKSkgJiYgIS9FZGdlL2cudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICAgIHB1YmxpYyBLRVlNQVAgPSBta2VudW0oe1xuICAgICAgICBFTlRFUjogJ0VudGVyJyxcbiAgICAgICAgU1BBQ0U6IHRoaXMuaXNJRSA/ICdTcGFjZWJhcicgOiAnICcsXG4gICAgICAgIEVTQ0FQRTogdGhpcy5pc0lFID8gJ0VzYycgOiAnRXNjYXBlJyxcbiAgICAgICAgQVJST1dfRE9XTjogdGhpcy5pc0lFID8gJ0Rvd24nIDogJ0Fycm93RG93bicsXG4gICAgICAgIEFSUk9XX1VQOiB0aGlzLmlzSUUgPyAnVXAnIDogJ0Fycm93VXAnLFxuICAgICAgICBBUlJPV19MRUZUOiB0aGlzLmlzSUUgPyAnTGVmdCcgOiAnQXJyb3dMZWZ0JyxcbiAgICAgICAgQVJST1dfUklHSFQ6IHRoaXMuaXNJRSA/ICdSaWdodCcgOiAnQXJyb3dSaWdodCcsXG4gICAgICAgIEVORDogJ0VuZCcsXG4gICAgICAgIEhPTUU6ICdIb21lJyxcbiAgICAgICAgUEFHRV9ET1dOOiAnUGFnZURvd24nLFxuICAgICAgICBQQUdFX1VQOiAnUGFnZVVwJyxcbiAgICAgICAgRjI6ICdGMicsXG4gICAgICAgIFRBQjogJ1RhYicsXG4gICAgICAgIFNFTUlDT0xPTjogJzsnLFxuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudC9rZXkvS2V5X1ZhbHVlcyNlZGl0aW5nX2tleXNcbiAgICAgICAgREVMRVRFOiB0aGlzLmlzSUUgPyAnRGVsJyA6ICdEZWxldGUnLFxuICAgICAgICBCQUNLU1BBQ0U6ICdCYWNrc3BhY2UnLFxuICAgICAgICBDT05UUk9MOiAnQ29udHJvbCcsXG4gICAgICAgIFg6ICd4JyxcbiAgICAgICAgWTogJ3knLFxuICAgICAgICBaOiAneidcbiAgICB9KTtcblxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogYW55KSB7IH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICogUmV0dXJucyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIG5vZGUgY29udGVudCwgdXNpbmcgUmFuZ2VcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgKiBsZXQgY29sdW1uID0gdGhpcy5ncmlkLmNvbHVtbkxpc3QuZmlsdGVyKGMgPT4gYy5maWVsZCA9PT0gJ0lEJylbMF07XG4gICAgICpcbiAgICAgKiBsZXQgc2l6ZSA9IGdldE5vZGVTaXplVmlhUmFuZ2UocmFuZ2UsIGNvbHVtbi5jZWxsc1swXS5uYXRpdmVFbGVtZW50KTtcbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogVGhlIGxhc3QgcGFyYW1ldGVyIGlzIHVzZWZ1bCB3aGVuIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50IHRvIG1lYXN1cmUgaXMgbW9kaWZpZWQgYnkgYVxuICAgICAqIHBhcmVudCBlbGVtZW50IHRoYXQgaGFzIGV4cGxpY2l0IHNpemUuIEluIHN1Y2ggY2FzZXMgdGhlIGNhbGN1bGF0ZWQgc2l6ZSBpcyBuZXZlciBsb3dlclxuICAgICAqIGFuZCB0aGUgZnVuY3Rpb24gbWF5IGluc3RlYWQgcmVtb3ZlIHRoZSBwYXJlbnQgc2l6ZSB3aGlsZSBtZWFzdXJpbmcgdG8gZ2V0IHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgICBwdWJsaWMgZ2V0Tm9kZVNpemVWaWFSYW5nZShyYW5nZTogUmFuZ2UsIG5vZGU6IEhUTUxFbGVtZW50LCBzaXplSG9sZGluZ05vZGU/OiBIVE1MRWxlbWVudCkge1xuICAgICAgICBsZXQgb3ZlcmZsb3cgPSBudWxsO1xuICAgICAgICBsZXQgbm9kZVN0eWxlcztcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICBvdmVyZmxvdyA9IG5vZGUuc3R5bGUub3ZlcmZsb3c7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gJ3Zpc2libGUnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpemVIb2xkaW5nTm9kZSkge1xuICAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBzaXplSG9sZGluZ05vZGUuc3R5bGU7XG4gICAgICAgICAgICBub2RlU3R5bGVzID0gWyBzdHlsZS53aWR0aCwgc3R5bGUubWluV2lkdGgsIHN0eWxlLmZsZXhCYXNpcyBdO1xuICAgICAgICAgICAgc3R5bGUud2lkdGggPSAnJztcbiAgICAgICAgICAgIHN0eWxlLm1pbldpZHRoID0gJyc7XG4gICAgICAgICAgICBzdHlsZS5mbGV4QmFzaXMgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhub2RlKTtcbiAgICAgICAgY29uc3Qgd2lkdGggPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcblxuICAgICAgICBpZiAoIXRoaXMuaXNGaXJlZm94KSB7XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRoYXQgaGFjayAtIG90aGVyd2lzZSBjb250ZW50IHdvbid0IGJlIG1lYXN1cmVkIGNvcnJlY3RseSBpbiBJRS9FZGdlXG4gICAgICAgICAgICBub2RlLnN0eWxlLm92ZXJmbG93ID0gb3ZlcmZsb3c7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2l6ZUhvbGRpbmdOb2RlKSB7XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUud2lkdGggPSBub2RlU3R5bGVzWzBdO1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLm1pbldpZHRoID0gbm9kZVN0eWxlc1sxXTtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS5mbGV4QmFzaXMgPSBub2RlU3R5bGVzWzJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdpZHRoO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBjdXJyZW50IGtleWJvYXJkIGV2ZW50IGlzIGFuIGFjdGl2YXRpb24ga2V5IChFbnRlci9TcGFjZSBiYXIpXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgUGxhdGZvcm1VdGlsXG4gICAgICovXG4gICAgcHVibGljIGlzQWN0aXZhdGlvbktleShldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FTlRFUiB8fCBldmVudC5rZXkgPT09IHRoaXMuS0VZTUFQLlNQQUNFO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBhIGNvbWJpbmF0aW9uIHRoYXQgY2xvc2VzIHRoZSBmaWx0ZXJpbmcgVUkgb2YgdGhlIGdyaWQuIChFc2NhcGUvQ3RybCtTaGlmdCtMKVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBwYXJhbSBldmVudFxuICAgICAqIEBtZW1iZXJvZiBQbGF0Zm9ybVV0aWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNGaWx0ZXJpbmdLZXlDb21ibyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICByZXR1cm4gZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5FU0NBUEUgfHwgKGV2ZW50LmN0cmxLZXkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgZXZlbnQua2V5LnRvTG93ZXJDYXNlKCkgPT09ICdsJyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNMZWZ0Q2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbiA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc05hdmlnYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuS0VZTUFQLkhPTUUsIHRoaXMuS0VZTUFQLkVORCwgdGhpcy5LRVlNQVAuU1BBQ0UsXG4gICAgICAgICAgICB0aGlzLktFWU1BUC5BUlJPV19ET1dOLCB0aGlzLktFWU1BUC5BUlJPV19MRUZULCB0aGlzLktFWU1BUC5BUlJPV19SSUdIVCwgdGhpcy5LRVlNQVAuQVJST1dfVVBcbiAgICAgICAgXS5pbmNsdWRlcyhrZXkpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjb25zdCBmbGF0dGVuID0gKGFycjogYW55W10pID0+IHtcbiAgICBsZXQgcmVzdWx0ID0gW107XG5cbiAgICBhcnIuZm9yRWFjaChlbCA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKGVsKTtcbiAgICAgICAgaWYgKGVsLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IEFycmF5LmlzQXJyYXkoZWwuY2hpbGRyZW4pID8gZWwuY2hpbGRyZW4gOiBlbC5jaGlsZHJlbi50b0FycmF5KCk7XG4gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KGZsYXR0ZW4oY2hpbGRyZW4pKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKlxuICAgICAqIFByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGNhbmNlbCB0aGUgZXZlbnQuXG4gICAgICovXG4gICAgY2FuY2VsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2UgdG8gdGhlIG93bmVyIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBvd25lcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3Mge1xuICAgIC8qKiBCcm93c2VyIGV2ZW50ICovXG4gICAgZXZlbnQ/OiBFdmVudDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzIGV4dGVuZHMgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgaW50ZXJmYWNlIElCYXNlQ2FuY2VsYWJsZUV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzIHsgfVxuXG5leHBvcnQgY29uc3QgSE9SSVpPTlRBTF9OQVZfS0VZUyA9IG5ldyBTZXQoWydhcnJvd2xlZnQnLCAnbGVmdCcsICdhcnJvd3JpZ2h0JywgJ3JpZ2h0JywgJ2hvbWUnLCAnZW5kJ10pO1xuXG5leHBvcnQgY29uc3QgTkFWSUdBVElPTl9LRVlTID0gbmV3IFNldChbXG4gICAgJ2Rvd24nLFxuICAgICd1cCcsXG4gICAgJ2xlZnQnLFxuICAgICdyaWdodCcsXG4gICAgJ2Fycm93ZG93bicsXG4gICAgJ2Fycm93dXAnLFxuICAgICdhcnJvd2xlZnQnLFxuICAgICdhcnJvd3JpZ2h0JyxcbiAgICAnaG9tZScsXG4gICAgJ2VuZCcsXG4gICAgJ3NwYWNlJyxcbiAgICAnc3BhY2ViYXInLFxuICAgICcgJ1xuXSk7XG5leHBvcnQgY29uc3QgQUNDT1JESU9OX05BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQoJ3VwIGRvd24gYXJyb3d1cCBhcnJvd2Rvd24gaG9tZSBlbmQnLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19FWFBBTkRfS0VZUyA9IG5ldyBTZXQoJ3JpZ2h0IGRvd24gYXJyb3dyaWdodCBhcnJvd2Rvd24nLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19DT0xMQVBTRV9LRVlTID0gbmV3IFNldCgnbGVmdCB1cCBhcnJvd2xlZnQgYXJyb3d1cCcuc3BsaXQoJyAnKSk7XG5leHBvcnQgY29uc3QgUk9XX0FERF9LRVlTID0gbmV3IFNldChbJysnLCAnYWRkJywgJ+KJoCcsICfCsScsICc9J10pO1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9LRVlTID0gbmV3IFNldChbLi4uQXJyYXkuZnJvbShOQVZJR0FUSU9OX0tFWVMpLFxuLi4uQXJyYXkuZnJvbShST1dfQUREX0tFWVMpLCAnZW50ZXInLCAnZjInLCAnZXNjYXBlJywgJ2VzYycsICdwYWdlZG93bicsICdwYWdldXAnXSk7XG5leHBvcnQgY29uc3QgSEVBREVSX0tFWVMgPSBuZXcgU2V0KFsuLi5BcnJheS5mcm9tKE5BVklHQVRJT05fS0VZUyksICdlc2NhcGUnLCAnZXNjJywgJ2wnLFxuICAgIC8qKiBUaGlzIHN5bWJvbCBjb3JyZXNwb25kcyB0byB0aGUgQWx0ICsgTCBjb21iaW5hdGlvbiB1bmRlciBNQUMuICovXG4gICAgJ8KsJ10pO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIENyZWF0ZXMgYSBuZXcgUmVzaXplT2JzZXJ2ZXIgb24gYHRhcmdldGAgYW5kIHJldHVybnMgaXQgYXMgYW4gT2JzZXJ2YWJsZS5cbiAqIFJ1biB0aGUgcmVzaXplT2JzZXJ2YWJsZSBvdXRzaWRlIGFuZ3VsYXIgem9uZSwgYmVjYXVzZSBpdCBwYXRjaGVzIHRoZSBNdXRhdGlvbk9ic2VydmVyIHdoaWNoIGNhdXNlcyBhbiBpbmZpbml0ZSBsb29wLlxuICogUmVsYXRlZCBpc3N1ZTogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMzE3MTJcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2l6ZU9ic2VydmFibGUgPSAodGFyZ2V0OiBIVE1MRWxlbWVudCk6IE9ic2VydmFibGU8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPiA9PiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyAoZ2V0UmVzaXplT2JzZXJ2ZXIoKSkoKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSkgPT4ge1xuICAgICAgICBvYnNlcnZlci5uZXh0KGVudHJpZXMpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm9ic2VydmUodGFyZ2V0KTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9ICgpID0+IGluc3RhbmNlLmRpc2Nvbm5lY3QoKTtcbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG59KTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDb21wYXJlcyB0d28gbWFwcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXBhcmVNYXBzID0gKG1hcDE6IE1hcDxhbnksIGFueT4sIG1hcDI6IE1hcDxhbnksIGFueT4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIW1hcDIpIHtcbiAgICAgICAgcmV0dXJuICFtYXAxID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICBpZiAobWFwMS5zaXplICE9PSBtYXAyLnNpemUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgbWF0Y2ggPSB0cnVlO1xuICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKG1hcDIua2V5cygpKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgIGlmIChtYXAxLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hcDEuZ2V0KGtleSkgPT09IG1hcDIuZ2V0KGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXRjaCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRjaDtcbn07XG5cbi8qKlxuICpcbiAqIEdpdmVuIGEgcHJvcGVydHkgYWNjZXNzIHBhdGggaW4gdGhlIGZvcm1hdCBgeC55LnpgIHJlc29sdmVzIGFuZCByZXR1cm5zXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGB6YCBwcm9wZXJ0eSBpbiB0aGUgcGFzc2VkIG9iamVjdC5cbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVOZXN0ZWRQYXRoID0gKG9iajogYW55LCBwYXRoOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBwYXJ0cyA9IHBhdGg/LnNwbGl0KCcuJykgPz8gW107XG4gICAgbGV0IGN1cnJlbnQgPSBvYmpbcGFydHMuc2hpZnQoKV07XG5cbiAgICBwYXJ0cy5mb3JFYWNoKHByb3AgPT4ge1xuICAgICAgICBpZiAoY3VycmVudCkge1xuICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRbcHJvcF07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBjdXJyZW50O1xufTtcblxuLyoqXG4gKlxuICogR2l2ZW4gYSBwcm9wZXJ0eSBhY2Nlc3MgcGF0aCBpbiB0aGUgZm9ybWF0IGB4LnkuemAgYW5kIGEgdmFsdWVcbiAqIHRoaXMgZnVuY3Rpb25zIGJ1aWxkcyBhbmQgcmV0dXJucyBhbiBvYmplY3QgZm9sbG93aW5nIHRoZSBhY2Nlc3MgcGF0aC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc29sZS5sb2coJ3gueS56LicsIDQyKTtcbiAqID4+IHsgeDogeyB5OiB7IHo6IDQyIH0gfSB9XG4gKiBgYGBcbiAqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJldmVyc2VNYXBwZXIgPSAocGF0aDogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgY29uc3Qgb2JqID0ge307XG4gICAgY29uc3QgcGFydHMgPSBwYXRoPy5zcGxpdCgnLicpID8/IFtdO1xuXG4gICAgbGV0IF9wcm9wID0gcGFydHMuc2hpZnQoKTtcbiAgICBsZXQgbWFwcGluZzogYW55O1xuXG4gICAgLy8gSW5pdGlhbCBiaW5kaW5nIGZvciBmaXJzdCBsZXZlbCBiaW5kaW5nc1xuICAgIG9ialtfcHJvcF0gPSB2YWx1ZTtcbiAgICBtYXBwaW5nID0gb2JqO1xuXG4gICAgcGFydHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgLy8gU3RhcnQgYnVpbGRpbmcgdGhlIGhpZXJhcmNoeVxuICAgICAgICBtYXBwaW5nW19wcm9wXSA9IHt9O1xuICAgICAgICAvLyBHbyBkb3duIGEgbGV2ZWxcbiAgICAgICAgbWFwcGluZyA9IG1hcHBpbmdbX3Byb3BdO1xuICAgICAgICAvLyBCaW5kIHRoZSB2YWx1ZSBhbmQgbW92ZSB0aGUga2V5XG4gICAgICAgIG1hcHBpbmdbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgX3Byb3AgPSBwcm9wO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9iajtcbn07XG5cbmV4cG9ydCBjb25zdCB5aWVsZGluZ0xvb3AgPSAoY291bnQ6IG51bWJlciwgY2h1bmtTaXplOiBudW1iZXIsIGNhbGxiYWNrOiAoaW5kZXg6IG51bWJlcikgPT4gdm9pZCwgZG9uZTogKCkgPT4gdm9pZCkgPT4ge1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBjaHVuayA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oaSArIGNodW5rU2l6ZSwgY291bnQpO1xuICAgICAgICBmb3IgKDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA8IGNvdW50KSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUoY2h1bmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBjaHVuaygpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzQ29uc3RydWN0b3IgPSAocmVmOiBhbnkpID0+IHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicgJiYgQm9vbGVhbihyZWYucHJvdG90eXBlKSAmJiBCb29sZWFuKHJlZi5wcm90b3R5cGUuY29uc3RydWN0b3IpO1xuXG5leHBvcnQgY29uc3QgcmV2ZXJzZUFuaW1hdGlvblJlc29sdmVyID0gKGFuaW1hdGlvbjogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEpOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSA9PlxuICAgIG9wcG9zaXRlQW5pbWF0aW9uLmdldChhbmltYXRpb24pID8/IGFuaW1hdGlvbjtcblxuZXhwb3J0IGNvbnN0IGlzSG9yaXpvbnRhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiBob3Jpem9udGFsQW5pbWF0aW9ucy5pbmNsdWRlcyhhbmltYXRpb24pO1xuXG5leHBvcnQgY29uc3QgaXNWZXJ0aWNhbEFuaW1hdGlvbiA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogYm9vbGVhbiA9PiB2ZXJ0aWNhbEFuaW1hdGlvbnMuaW5jbHVkZXMoYW5pbWF0aW9uKTtcblxuY29uc3Qgb3Bwb3NpdGVBbmltYXRpb246IE1hcDxBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSwgQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGE+ID0gbmV3IE1hcChbXG4gICAgW2ZhZGVJbiwgZmFkZUluXSxcbiAgICBbZmFkZU91dCwgZmFkZU91dF0sXG4gICAgW2ZsaXBUb3AsIGZsaXBCb3R0b21dLFxuICAgIFtmbGlwQm90dG9tLCBmbGlwVG9wXSxcbiAgICBbZmxpcFJpZ2h0LCBmbGlwTGVmdF0sXG4gICAgW2ZsaXBMZWZ0LCBmbGlwUmlnaHRdLFxuICAgIFtmbGlwSG9yRndkLCBmbGlwSG9yQmNrXSxcbiAgICBbZmxpcEhvckJjaywgZmxpcEhvckZ3ZF0sXG4gICAgW2ZsaXBWZXJGd2QsIGZsaXBWZXJCY2tdLFxuICAgIFtmbGlwVmVyQmNrLCBmbGlwVmVyRndkXSxcbiAgICBbZ3Jvd1ZlckluLCBncm93VmVySW5dLFxuICAgIFtncm93VmVyT3V0LCBncm93VmVyT3V0XSxcbiAgICBbaGVhcnRiZWF0LCBoZWFydGJlYXRdLFxuICAgIFtwdWxzYXRlRndkLCBwdWxzYXRlQmNrXSxcbiAgICBbcHVsc2F0ZUJjaywgcHVsc2F0ZUZ3ZF0sXG4gICAgW2JsaW5rLCBibGlua10sXG4gICAgW3NoYWtlSG9yLCBzaGFrZUhvcl0sXG4gICAgW3NoYWtlVmVyLCBzaGFrZVZlcl0sXG4gICAgW3NoYWtlVG9wLCBzaGFrZVRvcF0sXG4gICAgW3NoYWtlQm90dG9tLCBzaGFrZUJvdHRvbV0sXG4gICAgW3NoYWtlUmlnaHQsIHNoYWtlUmlnaHRdLFxuICAgIFtzaGFrZUxlZnQsIHNoYWtlTGVmdF0sXG4gICAgW3NoYWtlQ2VudGVyLCBzaGFrZUNlbnRlcl0sXG4gICAgW3NoYWtlVHIsIHNoYWtlVHJdLFxuICAgIFtzaGFrZUJyLCBzaGFrZUJyXSxcbiAgICBbc2hha2VCbCwgc2hha2VCbF0sXG4gICAgW3NoYWtlVGwsIHNoYWtlVGxdLFxuICAgIFtyb3RhdGVJbkNlbnRlciwgcm90YXRlSW5DZW50ZXJdLFxuICAgIFtyb3RhdGVPdXRDZW50ZXIsIHJvdGF0ZU91dENlbnRlcl0sXG4gICAgW3JvdGF0ZUluVG9wLCByb3RhdGVJbkJvdHRvbV0sXG4gICAgW3JvdGF0ZU91dFRvcCwgcm90YXRlT3V0Qm90dG9tXSxcbiAgICBbcm90YXRlSW5SaWdodCwgcm90YXRlSW5MZWZ0XSxcbiAgICBbcm90YXRlT3V0UmlnaHQsIHJvdGF0ZU91dExlZnRdLFxuICAgIFtyb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHRdLFxuICAgIFtyb3RhdGVPdXRMZWZ0LCByb3RhdGVPdXRSaWdodF0sXG4gICAgW3JvdGF0ZUluQm90dG9tLCByb3RhdGVJblRvcF0sXG4gICAgW3JvdGF0ZU91dEJvdHRvbSwgcm90YXRlT3V0VG9wXSxcbiAgICBbcm90YXRlSW5Uciwgcm90YXRlSW5CbF0sXG4gICAgW3JvdGF0ZU91dFRyLCByb3RhdGVPdXRCbF0sXG4gICAgW3JvdGF0ZUluQnIsIHJvdGF0ZUluVGxdLFxuICAgIFtyb3RhdGVPdXRCciwgcm90YXRlT3V0VGxdLFxuICAgIFtyb3RhdGVJbkJsLCByb3RhdGVJblRyXSxcbiAgICBbcm90YXRlT3V0QmwsIHJvdGF0ZU91dFRyXSxcbiAgICBbcm90YXRlSW5UbCwgcm90YXRlSW5Ccl0sXG4gICAgW3JvdGF0ZU91dFRsLCByb3RhdGVPdXRCcl0sXG4gICAgW3JvdGF0ZUluRGlhZ29uYWwxLCByb3RhdGVJbkRpYWdvbmFsMV0sXG4gICAgW3JvdGF0ZU91dERpYWdvbmFsMSwgcm90YXRlT3V0RGlhZ29uYWwxXSxcbiAgICBbcm90YXRlSW5EaWFnb25hbDIsIHJvdGF0ZUluRGlhZ29uYWwyXSxcbiAgICBbcm90YXRlT3V0RGlhZ29uYWwyLCByb3RhdGVPdXREaWFnb25hbDJdLFxuICAgIFtyb3RhdGVJbkhvciwgcm90YXRlSW5Ib3JdLFxuICAgIFtyb3RhdGVPdXRIb3IsIHJvdGF0ZU91dEhvcl0sXG4gICAgW3JvdGF0ZUluVmVyLCByb3RhdGVJblZlcl0sXG4gICAgW3JvdGF0ZU91dFZlciwgcm90YXRlT3V0VmVyXSxcbiAgICBbc2NhbGVJblRvcCwgc2NhbGVJbkJvdHRvbV0sXG4gICAgW3NjYWxlT3V0VG9wLCBzY2FsZU91dEJvdHRvbV0sXG4gICAgW3NjYWxlSW5SaWdodCwgc2NhbGVJbkxlZnRdLFxuICAgIFtzY2FsZU91dFJpZ2h0LCBzY2FsZU91dExlZnRdLFxuICAgIFtzY2FsZUluQm90dG9tLCBzY2FsZUluVG9wXSxcbiAgICBbc2NhbGVPdXRCb3R0b20sIHNjYWxlT3V0VG9wXSxcbiAgICBbc2NhbGVJbkxlZnQsIHNjYWxlSW5SaWdodF0sXG4gICAgW3NjYWxlT3V0TGVmdCwgc2NhbGVPdXRSaWdodF0sXG4gICAgW3NjYWxlSW5DZW50ZXIsIHNjYWxlSW5DZW50ZXJdLFxuICAgIFtzY2FsZU91dENlbnRlciwgc2NhbGVPdXRDZW50ZXJdLFxuICAgIFtzY2FsZUluVHIsIHNjYWxlSW5CbF0sXG4gICAgW3NjYWxlT3V0VHIsIHNjYWxlT3V0QmxdLFxuICAgIFtzY2FsZUluQnIsIHNjYWxlSW5UbF0sXG4gICAgW3NjYWxlT3V0QnIsIHNjYWxlT3V0VGxdLFxuICAgIFtzY2FsZUluQmwsIHNjYWxlSW5Ucl0sXG4gICAgW3NjYWxlT3V0QmwsIHNjYWxlT3V0VHJdLFxuICAgIFtzY2FsZUluVGwsIHNjYWxlSW5Ccl0sXG4gICAgW3NjYWxlT3V0VGwsIHNjYWxlT3V0QnJdLFxuICAgIFtzY2FsZUluVmVyVG9wLCBzY2FsZUluVmVyQm90dG9tXSxcbiAgICBbc2NhbGVPdXRWZXJUb3AsIHNjYWxlT3V0VmVyQm90dG9tXSxcbiAgICBbc2NhbGVJblZlckJvdHRvbSwgc2NhbGVJblZlclRvcF0sXG4gICAgW3NjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlclRvcF0sXG4gICAgW3NjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJDZW50ZXJdLFxuICAgIFtzY2FsZU91dFZlckNlbnRlciwgc2NhbGVPdXRWZXJDZW50ZXJdLFxuICAgIFtzY2FsZUluSG9yQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRIb3JDZW50ZXIsIHNjYWxlT3V0SG9yQ2VudGVyXSxcbiAgICBbc2NhbGVJbkhvckxlZnQsIHNjYWxlSW5Ib3JSaWdodF0sXG4gICAgW3NjYWxlT3V0SG9yTGVmdCwgc2NhbGVPdXRIb3JSaWdodF0sXG4gICAgW3NjYWxlSW5Ib3JSaWdodCwgc2NhbGVJbkhvckxlZnRdLFxuICAgIFtzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dEhvckxlZnRdLFxuICAgIFtzbGlkZUluVG9wLCBzbGlkZUluQm90dG9tXSxcbiAgICBbc2xpZGVPdXRUb3AsIHNsaWRlT3V0Qm90dG9tXSxcbiAgICBbc2xpZGVJblJpZ2h0LCBzbGlkZUluTGVmdF0sXG4gICAgW3NsaWRlT3V0UmlnaHQsIHNsaWRlT3V0TGVmdF0sXG4gICAgW3NsaWRlSW5Cb3R0b20sIHNsaWRlSW5Ub3BdLFxuICAgIFtzbGlkZU91dEJvdHRvbSwgc2xpZGVPdXRUb3BdLFxuICAgIFtzbGlkZUluTGVmdCwgc2xpZGVJblJpZ2h0XSxcbiAgICBbc2xpZGVPdXRMZWZ0LCBzbGlkZU91dFJpZ2h0XSxcbiAgICBbc2xpZGVJblRyLCBzbGlkZUluQmxdLFxuICAgIFtzbGlkZU91dFRyLCBzbGlkZU91dEJsXSxcbiAgICBbc2xpZGVJbkJyLCBzbGlkZUluVGxdLFxuICAgIFtzbGlkZU91dEJyLCBzbGlkZU91dFRsXSxcbiAgICBbc2xpZGVJbkJsLCBzbGlkZUluVHJdLFxuICAgIFtzbGlkZU91dEJsLCBzbGlkZU91dFRyXSxcbiAgICBbc2xpZGVJblRsLCBzbGlkZUluQnJdLFxuICAgIFtzbGlkZU91dFRsLCBzbGlkZU91dEJyXSxcbiAgICBbc3dpbmdJblRvcEZ3ZCwgc3dpbmdJbkJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nT3V0VG9wRndkLCBzd2luZ091dEJvdHRvbUZ3ZF0sXG4gICAgW3N3aW5nSW5SaWdodEZ3ZCwgc3dpbmdJbkxlZnRGd2RdLFxuICAgIFtzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dExlZnR0RndkXSxcbiAgICBbc3dpbmdJbkxlZnRGd2QsIHN3aW5nSW5SaWdodEZ3ZF0sXG4gICAgW3N3aW5nT3V0TGVmdHRGd2QsIHN3aW5nT3V0UmlnaHRGd2RdLFxuICAgIFtzd2luZ0luQm90dG9tRndkLCBzd2luZ0luVG9wRndkXSxcbiAgICBbc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0VG9wRndkXSxcbiAgICBbc3dpbmdJblRvcEJjaywgc3dpbmdJbkJvdHRvbUJja10sXG4gICAgW3N3aW5nT3V0VG9wQmNrLCBzd2luZ091dEJvdHRvbUJja10sXG4gICAgW3N3aW5nSW5SaWdodEJjaywgc3dpbmdJbkxlZnRCY2tdLFxuICAgIFtzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dExlZnRCY2tdLFxuICAgIFtzd2luZ0luQm90dG9tQmNrLCBzd2luZ0luVG9wQmNrXSxcbiAgICBbc3dpbmdPdXRCb3R0b21CY2ssIHN3aW5nT3V0VG9wQmNrXSxcbiAgICBbc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5SaWdodEJja10sXG4gICAgW3N3aW5nT3V0TGVmdEJjaywgc3dpbmdPdXRSaWdodEJja10sXG5dKTtcblxuY29uc3QgaG9yaXpvbnRhbEFuaW1hdGlvbnM6IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhW10gPSBbXG4gICAgZmxpcFJpZ2h0LFxuICAgIGZsaXBMZWZ0LFxuICAgIGZsaXBWZXJGd2QsXG4gICAgZmxpcFZlckJjayxcbiAgICByb3RhdGVJblJpZ2h0LFxuICAgIHJvdGF0ZU91dFJpZ2h0LFxuICAgIHJvdGF0ZUluTGVmdCxcbiAgICByb3RhdGVPdXRMZWZ0LFxuICAgIHJvdGF0ZUluVHIsXG4gICAgcm90YXRlT3V0VHIsXG4gICAgcm90YXRlSW5CcixcbiAgICByb3RhdGVPdXRCcixcbiAgICByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZU91dEJsLFxuICAgIHJvdGF0ZUluVGwsXG4gICAgcm90YXRlT3V0VGwsXG4gICAgc2NhbGVJblJpZ2h0LFxuICAgIHNjYWxlT3V0UmlnaHQsXG4gICAgc2NhbGVJbkxlZnQsXG4gICAgc2NhbGVPdXRMZWZ0LFxuICAgIHNjYWxlSW5UcixcbiAgICBzY2FsZU91dFRyLFxuICAgIHNjYWxlSW5CcixcbiAgICBzY2FsZU91dEJyLFxuICAgIHNjYWxlSW5CbCxcbiAgICBzY2FsZU91dEJsLFxuICAgIHNjYWxlSW5UbCxcbiAgICBzY2FsZU91dFRsLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LFxuICAgIHNjYWxlT3V0SG9yTGVmdCxcbiAgICBzY2FsZUluSG9yUmlnaHQsXG4gICAgc2NhbGVPdXRIb3JSaWdodCxcbiAgICBzbGlkZUluUmlnaHQsXG4gICAgc2xpZGVPdXRSaWdodCxcbiAgICBzbGlkZUluTGVmdCxcbiAgICBzbGlkZU91dExlZnQsXG4gICAgc2xpZGVJblRyLFxuICAgIHNsaWRlT3V0VHIsXG4gICAgc2xpZGVJbkJyLFxuICAgIHNsaWRlT3V0QnIsXG4gICAgc2xpZGVJbkJsLFxuICAgIHNsaWRlT3V0QmwsXG4gICAgc2xpZGVJblRsLFxuICAgIHNsaWRlT3V0VGwsXG4gICAgc3dpbmdJblJpZ2h0RndkLFxuICAgIHN3aW5nT3V0UmlnaHRGd2QsXG4gICAgc3dpbmdJbkxlZnRGd2QsXG4gICAgc3dpbmdPdXRMZWZ0dEZ3ZCxcbiAgICBzd2luZ0luUmlnaHRCY2ssXG4gICAgc3dpbmdPdXRSaWdodEJjayxcbiAgICBzd2luZ0luTGVmdEJjayxcbiAgICBzd2luZ091dExlZnRCY2ssXG5dO1xuY29uc3QgdmVydGljYWxBbmltYXRpb25zOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YVtdID0gW1xuICAgIGZsaXBUb3AsXG4gICAgZmxpcEJvdHRvbSxcbiAgICBmbGlwSG9yRndkLFxuICAgIGZsaXBIb3JCY2ssXG4gICAgZ3Jvd1ZlckluLFxuICAgIGdyb3dWZXJPdXQsXG4gICAgcm90YXRlSW5Ub3AsXG4gICAgcm90YXRlT3V0VG9wLFxuICAgIHJvdGF0ZUluQm90dG9tLFxuICAgIHJvdGF0ZU91dEJvdHRvbSxcbiAgICByb3RhdGVJblRyLFxuICAgIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZUluQnIsXG4gICAgcm90YXRlT3V0QnIsXG4gICAgcm90YXRlSW5CbCxcbiAgICByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVJblRsLFxuICAgIHJvdGF0ZU91dFRsLFxuICAgIHNjYWxlSW5Ub3AsXG4gICAgc2NhbGVPdXRUb3AsXG4gICAgc2NhbGVJbkJvdHRvbSxcbiAgICBzY2FsZU91dEJvdHRvbSxcbiAgICBzY2FsZUluVHIsXG4gICAgc2NhbGVPdXRUcixcbiAgICBzY2FsZUluQnIsXG4gICAgc2NhbGVPdXRCcixcbiAgICBzY2FsZUluQmwsXG4gICAgc2NhbGVPdXRCbCxcbiAgICBzY2FsZUluVGwsXG4gICAgc2NhbGVPdXRUbCxcbiAgICBzY2FsZUluVmVyVG9wLFxuICAgIHNjYWxlT3V0VmVyVG9wLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sXG4gICAgc2NhbGVPdXRWZXJCb3R0b20sXG4gICAgc2xpZGVJblRvcCxcbiAgICBzbGlkZU91dFRvcCxcbiAgICBzbGlkZUluQm90dG9tLFxuICAgIHNsaWRlT3V0Qm90dG9tLFxuICAgIHNsaWRlSW5UcixcbiAgICBzbGlkZU91dFRyLFxuICAgIHNsaWRlSW5CcixcbiAgICBzbGlkZU91dEJyLFxuICAgIHNsaWRlSW5CbCxcbiAgICBzbGlkZU91dEJsLFxuICAgIHNsaWRlSW5UbCxcbiAgICBzbGlkZU91dFRsLFxuICAgIHN3aW5nSW5Ub3BGd2QsXG4gICAgc3dpbmdPdXRUb3BGd2QsXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCxcbiAgICBzd2luZ091dEJvdHRvbUZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLFxuICAgIHN3aW5nT3V0VG9wQmNrLFxuICAgIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdPdXRCb3R0b21CY2ssXG5dO1xuIl19
690
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFDSCxLQUFLLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDeEYsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFDNUYsY0FBYyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUM3RixZQUFZLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQzFGLGVBQWUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUNyRixZQUFZLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFDbkYsWUFBWSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFDbEYsY0FBYyxFQUFFLGVBQWUsRUFB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eyBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IG1lcmdlV2l0aCBmcm9tICdsb2Rhc2gubWVyZ2V3aXRoJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyIGFzIFBvbHlmaWxsIH0gZnJvbSAnQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXInO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgICBibGluaywgZmFkZUluLCBmYWRlT3V0LCBmbGlwQm90dG9tLCBmbGlwSG9yQmNrLCBmbGlwSG9yRndkLCBmbGlwTGVmdCwgZmxpcFJpZ2h0LCBmbGlwVG9wLFxuICAgIGZsaXBWZXJCY2ssIGZsaXBWZXJGd2QsIGdyb3dWZXJJbiwgZ3Jvd1Zlck91dCwgaGVhcnRiZWF0LCBwdWxzYXRlQmNrLCBwdWxzYXRlRndkLCByb3RhdGVJbkJsLFxuICAgIHJvdGF0ZUluQm90dG9tLCByb3RhdGVJbkJyLCByb3RhdGVJbkNlbnRlciwgcm90YXRlSW5EaWFnb25hbDEsIHJvdGF0ZUluRGlhZ29uYWwyLCByb3RhdGVJbkhvcixcbiAgICByb3RhdGVJbkxlZnQsIHJvdGF0ZUluUmlnaHQsIHJvdGF0ZUluVGwsIHJvdGF0ZUluVG9wLCByb3RhdGVJblRyLCByb3RhdGVJblZlciwgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlT3V0Qm90dG9tLCByb3RhdGVPdXRCciwgcm90YXRlT3V0Q2VudGVyLCByb3RhdGVPdXREaWFnb25hbDEsIHJvdGF0ZU91dERpYWdvbmFsMixcbiAgICByb3RhdGVPdXRIb3IsIHJvdGF0ZU91dExlZnQsIHJvdGF0ZU91dFJpZ2h0LCByb3RhdGVPdXRUbCwgcm90YXRlT3V0VG9wLCByb3RhdGVPdXRUcixcbiAgICByb3RhdGVPdXRWZXIsIHNjYWxlSW5CbCwgc2NhbGVJbkJvdHRvbSwgc2NhbGVJbkJyLCBzY2FsZUluQ2VudGVyLCBzY2FsZUluSG9yQ2VudGVyLFxuICAgIHNjYWxlSW5Ib3JMZWZ0LCBzY2FsZUluSG9yUmlnaHQsIHNjYWxlSW5MZWZ0LCBzY2FsZUluUmlnaHQsIHNjYWxlSW5UbCwgc2NhbGVJblRvcCwgc2NhbGVJblRyLFxuICAgIHNjYWxlSW5WZXJCb3R0b20sIHNjYWxlSW5WZXJDZW50ZXIsIHNjYWxlSW5WZXJUb3AsIHNjYWxlT3V0QmwsIHNjYWxlT3V0Qm90dG9tLCBzY2FsZU91dEJyLFxuICAgIHNjYWxlT3V0Q2VudGVyLCBzY2FsZU91dEhvckNlbnRlciwgc2NhbGVPdXRIb3JMZWZ0LCBzY2FsZU91dEhvclJpZ2h0LCBzY2FsZU91dExlZnQsXG4gICAgc2NhbGVPdXRSaWdodCwgc2NhbGVPdXRUbCwgc2NhbGVPdXRUb3AsIHNjYWxlT3V0VHIsIHNjYWxlT3V0VmVyQm90dG9tLCBzY2FsZU91dFZlckNlbnRlcixcbiAgICBzY2FsZU91dFZlclRvcCwgc2hha2VCbCwgc2hha2VCb3R0b20sIHNoYWtlQnIsIHNoYWtlQ2VudGVyLCBzaGFrZUhvciwgc2hha2VMZWZ0LCBzaGFrZVJpZ2h0LFxuICAgIHNoYWtlVGwsIHNoYWtlVG9wLCBzaGFrZVRyLCBzaGFrZVZlciwgc2xpZGVJbkJsLCBzbGlkZUluQm90dG9tLCBzbGlkZUluQnIsIHNsaWRlSW5MZWZ0LFxuICAgIHNsaWRlSW5SaWdodCwgc2xpZGVJblRsLCBzbGlkZUluVG9wLCBzbGlkZUluVHIsIHNsaWRlT3V0QmwsIHNsaWRlT3V0Qm90dG9tLCBzbGlkZU91dEJyLFxuICAgIHNsaWRlT3V0TGVmdCwgc2xpZGVPdXRSaWdodCwgc2xpZGVPdXRUbCwgc2xpZGVPdXRUb3AsIHNsaWRlT3V0VHIsIHN3aW5nSW5Cb3R0b21CY2ssXG4gICAgc3dpbmdJbkJvdHRvbUZ3ZCwgc3dpbmdJbkxlZnRCY2ssIHN3aW5nSW5MZWZ0RndkLCBzd2luZ0luUmlnaHRCY2ssIHN3aW5nSW5SaWdodEZ3ZCxcbiAgICBzd2luZ0luVG9wQmNrLCBzd2luZ0luVG9wRndkLCBzd2luZ091dEJvdHRvbUJjaywgc3dpbmdPdXRCb3R0b21Gd2QsIHN3aW5nT3V0TGVmdEJjayxcbiAgICBzd2luZ091dExlZnR0RndkLCBzd2luZ091dFJpZ2h0QmNrLCBzd2luZ091dFJpZ2h0RndkLCBzd2luZ091dFRvcEJjaywgc3dpbmdPdXRUb3BGd2Rcbn0gZnJvbSAnLi4vYW5pbWF0aW9ucy9tYWluJztcbmltcG9ydCB7IHNldEltbWVkaWF0ZSB9IGZyb20gJy4vc2V0SW1tZWRpYXRlJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHNob3dNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZywgaXNNZXNzYWdlU2hvd246IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoIWlzTWVzc2FnZVNob3duICYmIGlzRGV2TW9kZSgpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBta2VudW0gPSA8VCBleHRlbmRzIHsgW2luZGV4OiBzdHJpbmddOiBVIH0sIFUgZXh0ZW5kcyBzdHJpbmc+KHg6IFQpID0+IHg7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgUmVzaXplT2JzZXJ2ZXIgdHlwZSBvciB0aGUgcG9seWZpbGxlZCB2ZXJzaW9uIGlmIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQGhpZGRlbiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGdldFJlc2l6ZU9ic2VydmVyID0gKCkgPT4gd2luZG93LlJlc2l6ZU9ic2VydmVyIHx8IFBvbHlmaWxsO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb25lQXJyYXkgPSAoYXJyYXk6IGFueVtdLCBkZWVwPzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IGFyciA9IFtdO1xuICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgbGV0IGkgPSBhcnJheS5sZW5ndGg7XG4gICAgd2hpbGUgKGktLSkge1xuICAgICAgICBhcnJbaV0gPSBkZWVwID8gY2xvbmVWYWx1ZShhcnJheVtpXSkgOiBhcnJheVtpXTtcbiAgICB9XG4gICAgcmV0dXJuIGFycjtcbn07XG5cbi8qKlxuICogRG9lc24ndCBjbG9uZSBsZWFmIGl0ZW1zXG4gKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVIaWVyYXJjaGljYWxBcnJheSA9IChhcnJheTogYW55W10sIGNoaWxkRGF0YUtleTogYW55KTogYW55W10gPT4ge1xuICAgIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcbiAgICBpZiAoIWFycmF5KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGFycmF5KSB7XG4gICAgICAgIGNvbnN0IGNsb25lZEl0ZW0gPSBjbG9uZVZhbHVlKGl0ZW0pO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtW2NoaWxkRGF0YUtleV0pKSB7XG4gICAgICAgICAgICBjbG9uZWRJdGVtW2NoaWxkRGF0YUtleV0gPSBjbG9uZUhpZXJhcmNoaWNhbEFycmF5KGNsb25lZEl0ZW1bY2hpbGREYXRhS2V5XSwgY2hpbGREYXRhS2V5KTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQucHVzaChjbG9uZWRJdGVtKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCBwcm90b3R5cGUgZnJvbSBwcm92aWRlZCBzb3VyY2UgYW5kIGNvcGllc1xuICogYWxsIHByb3BlcnRpZXMgZGVzY3JpcHRvcnMgZnJvbSBwcm92aWRlZCBzb3VyY2VcbiAqXG4gKiBAcGFyYW0gb2JqIFNvdXJjZSB0byBjb3B5IHByb3RvdHlwZSBhbmQgZGVzY3JpcHRvcnMgZnJvbVxuICogQHJldHVybnMgTmV3IG9iamVjdCB3aXRoIGNsb25lZCBwcm90b3R5cGUgYW5kIHByb3BlcnR5IGRlc2NyaXB0b3JzXG4gKi9cbiBleHBvcnQgY29uc3QgY29weURlc2NyaXB0b3JzID0gKG9iaikgPT4ge1xuICAgIGlmIChvYmopIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5jcmVhdGUoXG4gICAgICAgICAgICBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob2JqKSxcbiAgICAgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9iailcbiAgICAgICAgICAgICk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBEZWVwIGNsb25lcyBhbGwgZmlyc3QgbGV2ZWwga2V5cyBvZiBPYmoyIGFuZCBtZXJnZXMgdGhlbSB0byBPYmoxXG4gKlxuICogQHBhcmFtIG9iajEgT2JqZWN0IHRvIG1lcmdlIGludG9cbiAqIEBwYXJhbSBvYmoyIE9iamVjdCB0byBtZXJnZSBmcm9tXG4gKiBAcmV0dXJucyBPYmoxIHdpdGggbWVyZ2VkIGNsb25lZCBrZXlzIGZyb20gT2JqMlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgbWVyZ2VPYmplY3RzID0gKG9iajE6IGFueSwgb2JqMjogYW55KTogYW55ID0+IG1lcmdlV2l0aChvYmoxLCBvYmoyLCAob2JqVmFsdWUsIHNyY1ZhbHVlKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoc3JjVmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBvYmpWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIH1cbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgZGVlcCBjbG9uZSBvZiBwcm92aWRlZCB2YWx1ZS5cbiAqIFN1cHBvcnRzIHByaW1pdGl2ZSB2YWx1ZXMsIGRhdGVzIGFuZCBvYmplY3RzLlxuICogSWYgcGFzc2VkIHZhbHVlIGlzIGFycmF5IHJldHVybnMgc2hhbGxvdyBjb3B5IG9mIHRoZSBhcnJheS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdmFsdWUgdG8gY2xvbmVcbiAqIEByZXR1cm5zIERlZXAgY29weSBvZiBwcm92aWRlZCB2YWx1ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgY2xvbmVWYWx1ZSA9ICh2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VGltZSgpKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBbLi4udmFsdWVdO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE1hcCB8fCB2YWx1ZSBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB7fTtcblxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc3VsdFtrZXldID0gY2xvbmVWYWx1ZSh2YWx1ZVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG59O1xuXG4vKipcbiAqIFBhcnNlIHByb3ZpZGVkIGlucHV0IHRvIERhdGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIGlucHV0IHRvIHBhcnNlXG4gKiBAcmV0dXJucyBEYXRlIGlmIHBhcnNlIHN1Y2NlZWQgb3IgbnVsbFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgcGFyc2VEYXRlID0gKHZhbHVlOiBhbnkpOiBEYXRlIHwgbnVsbCA9PiB7XG4gICAgLy8gaWYgdmFsdWUgaXMgSW52YWxpZCBEYXRlIHJldHVybiBudWxsXG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICFpc05hTih2YWx1ZS5nZXRUaW1lKCkpID8gdmFsdWUgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUgPyBuZXcgRGF0ZSh2YWx1ZSkgOiBudWxsO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHdpdGggdW5pcXVlIGRhdGVzIG9ubHkuXG4gKlxuICogQHBhcmFtIGNvbHVtblZhbHVlcyBjb2xsZWN0aW9uIG9mIGRhdGUgdmFsdWVzIChtaWdodCBiZSBudW1iZXJzIG9yIElTTyA4NjAxIHN0cmluZ3MpXG4gKiBAcmV0dXJucyBjb2xsZWN0aW9uIG9mIHVuaXF1ZSBkYXRlcy5cbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IHVuaXF1ZURhdGVzID0gKGNvbHVtblZhbHVlczogYW55W10pID0+IGNvbHVtblZhbHVlcy5yZWR1Y2UoKGEsIGMpID0+IHtcbiAgICBpZiAoIWEuY2FjaGVbYy5sYWJlbF0pIHtcbiAgICAgICAgYS5yZXN1bHQucHVzaChjKTtcbiAgICB9XG4gICAgYS5jYWNoZVtjLmxhYmVsXSA9IHRydWU7XG4gICAgcmV0dXJuIGE7XG59LCB7IHJlc3VsdDogW10sIGNhY2hlOiB7fSB9KS5yZXN1bHQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE9iamVjdFxuICpcbiAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBjaGVja1xuICogQHJldHVybnMgdHJ1ZSBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyBPYmplY3RcbiAqIEBoaWRkZW5cbiAqL1xuIGV4cG9ydCBjb25zdCBpc09iamVjdCA9ICh2YWx1ZTogYW55KTogYm9vbGVhbiA9PiAhISh2YWx1ZSAmJiB2YWx1ZS50b1N0cmluZygpID09PSAnW29iamVjdCBPYmplY3RdJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIERhdGVcbiAqXG4gKiBAcGFyYW0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAqIEByZXR1cm5zIHRydWUgaWYgcHJvdmlkZWQgdmFyaWFibGUgaXMgRGF0ZVxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNEYXRlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEYXRlID0+IHZhbHVlIGluc3RhbmNlb2YgRGF0ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHR3byBwYXNzZWQgYXJndW1lbnRzIGFyZSBlcXVhbFxuICogQ3VycmVudGx5IHN1cHBvcnRzIGRhdGUgb2JqZWN0c1xuICpcbiAqIEBwYXJhbSBvYmoxXG4gKiBAcGFyYW0gb2JqMlxuICogQHJldHVybnM6IGBib29sZWFuYFxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgaXNFcXVhbCA9IChvYmoxLCBvYmoyKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKGlzRGF0ZShvYmoxKSAmJiBpc0RhdGUob2JqMikpIHtcbiAgICAgICAgcmV0dXJuIG9iajEuZ2V0VGltZSgpID09PSBvYmoyLmdldFRpbWUoKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajEgPT09IG9iajI7XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiBwcm92aWRlZCB2YXJpYWJsZSBpcyB0aGUgdmFsdWUgTmFOXG4gKlxuICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyB0cnVlIGlmIHByb3ZpZGVkIHZhcmlhYmxlIGlzIE5hTlxuICogQGhpZGRlblxuICovXG4gZXhwb3J0IGNvbnN0IGlzTmFOdmFsdWUgPSAodmFsdWU6IGFueSk6IGJvb2xlYW4gPT4gaXNOYU4odmFsdWUpICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJztcblxuLyoqXG4gKiBVdGlsaXR5IHNlcnZpY2UgdGFraW5nIGNhcmUgb2YgdmFyaW91cyB1dGlsaXR5IGZ1bmN0aW9ucyBzdWNoIGFzXG4gKiBkZXRlY3RpbmcgYnJvd3NlciBmZWF0dXJlcywgZ2VuZXJhbCBjcm9zcyBicm93c2VyIERPTSBtYW5pcHVsYXRpb24sIGV0Yy5cbiAqXG4gKiBAaGlkZGVuIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBsYXRmb3JtVXRpbCB7XG4gICAgcHVibGljIGlzQnJvd3NlcjogYm9vbGVhbiA9IGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCk7XG4gICAgcHVibGljIGlzSU9TID0gdGhpcy5pc0Jyb3dzZXIgJiYgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgISgnTVNTdHJlYW0nIGluIHdpbmRvdyk7XG4gICAgcHVibGljIGlzRmlyZWZveCA9IHRoaXMuaXNCcm93c2VyICYmIC9GaXJlZm94W1xcL1xcc10oXFxkK1xcLlxcZCspLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgIHB1YmxpYyBpc0VkZ2UgPSB0aGlzLmlzQnJvd3NlciAmJiAvRWRnZVtcXC9cXHNdKFxcZCtcXC5cXGQrKS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICBwdWJsaWMgaXNJRSA9IHRoaXMuaXNCcm93c2VyICYmIG5hdmlnYXRvci5hcHBWZXJzaW9uLmluZGV4T2YoJ1RyaWRlbnQvJykgPiAwO1xuICAgIHB1YmxpYyBpc0Nocm9taXVtID0gdGhpcy5pc0Jyb3dzZXIgJiYgKC9DaHJvbXxlP2l1bS9nLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgfHxcbiAgICAvR29vZ2xlIEluYy9nLnRlc3QobmF2aWdhdG9yLnZlbmRvcikpICYmICEvRWRnZS9nLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbiAgICBwdWJsaWMgS0VZTUFQID0gbWtlbnVtKHtcbiAgICAgICAgRU5URVI6ICdFbnRlcicsXG4gICAgICAgIFNQQUNFOiB0aGlzLmlzSUUgPyAnU3BhY2ViYXInIDogJyAnLFxuICAgICAgICBFU0NBUEU6IHRoaXMuaXNJRSA/ICdFc2MnIDogJ0VzY2FwZScsXG4gICAgICAgIEFSUk9XX0RPV046IHRoaXMuaXNJRSA/ICdEb3duJyA6ICdBcnJvd0Rvd24nLFxuICAgICAgICBBUlJPV19VUDogdGhpcy5pc0lFID8gJ1VwJyA6ICdBcnJvd1VwJyxcbiAgICAgICAgQVJST1dfTEVGVDogdGhpcy5pc0lFID8gJ0xlZnQnIDogJ0Fycm93TGVmdCcsXG4gICAgICAgIEFSUk9XX1JJR0hUOiB0aGlzLmlzSUUgPyAnUmlnaHQnIDogJ0Fycm93UmlnaHQnLFxuICAgICAgICBFTkQ6ICdFbmQnLFxuICAgICAgICBIT01FOiAnSG9tZScsXG4gICAgICAgIFBBR0VfRE9XTjogJ1BhZ2VEb3duJyxcbiAgICAgICAgUEFHRV9VUDogJ1BhZ2VVcCcsXG4gICAgICAgIEYyOiAnRjInLFxuICAgICAgICBUQUI6ICdUYWInLFxuICAgICAgICBTRU1JQ09MT046ICc7JyxcbiAgICAgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJkRXZlbnQva2V5L0tleV9WYWx1ZXMjZWRpdGluZ19rZXlzXG4gICAgICAgIERFTEVURTogdGhpcy5pc0lFID8gJ0RlbCcgOiAnRGVsZXRlJyxcbiAgICAgICAgQkFDS1NQQUNFOiAnQmFja3NwYWNlJyxcbiAgICAgICAgQ09OVFJPTDogJ0NvbnRyb2wnLFxuICAgICAgICBYOiAneCcsXG4gICAgICAgIFk6ICd5JyxcbiAgICAgICAgWjogJ3onXG4gICAgfSk7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFJldHVybnMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBub2RlIGNvbnRlbnQsIHVzaW5nIFJhbmdlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICogbGV0IGNvbHVtbiA9IHRoaXMuZ3JpZC5jb2x1bW5MaXN0LmZpbHRlcihjID0+IGMuZmllbGQgPT09ICdJRCcpWzBdO1xuICAgICAqXG4gICAgICogbGV0IHNpemUgPSBnZXROb2RlU2l6ZVZpYVJhbmdlKHJhbmdlLCBjb2x1bW4uY2VsbHNbMF0ubmF0aXZlRWxlbWVudCk7XG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFRoZSBsYXN0IHBhcmFtZXRlciBpcyB1c2VmdWwgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgZWxlbWVudCB0byBtZWFzdXJlIGlzIG1vZGlmaWVkIGJ5IGFcbiAgICAgKiBwYXJlbnQgZWxlbWVudCB0aGF0IGhhcyBleHBsaWNpdCBzaXplLiBJbiBzdWNoIGNhc2VzIHRoZSBjYWxjdWxhdGVkIHNpemUgaXMgbmV2ZXIgbG93ZXJcbiAgICAgKiBhbmQgdGhlIGZ1bmN0aW9uIG1heSBpbnN0ZWFkIHJlbW92ZSB0aGUgcGFyZW50IHNpemUgd2hpbGUgbWVhc3VyaW5nIHRvIGdldCB0aGUgY29ycmVjdCB2YWx1ZS5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICAgcHVibGljIGdldE5vZGVTaXplVmlhUmFuZ2UocmFuZ2U6IFJhbmdlLCBub2RlOiBIVE1MRWxlbWVudCwgc2l6ZUhvbGRpbmdOb2RlPzogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbGV0IG92ZXJmbG93ID0gbnVsbDtcbiAgICAgICAgbGV0IG5vZGVTdHlsZXM7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRmlyZWZveCkge1xuICAgICAgICAgICAgb3ZlcmZsb3cgPSBub2RlLnN0eWxlLm92ZXJmbG93O1xuICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGF0IGhhY2sgLSBvdGhlcndpc2UgY29udGVudCB3b24ndCBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgaW4gSUUvRWRnZVxuICAgICAgICAgICAgbm9kZS5zdHlsZS5vdmVyZmxvdyA9ICd2aXNpYmxlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzaXplSG9sZGluZ05vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0eWxlID0gc2l6ZUhvbGRpbmdOb2RlLnN0eWxlO1xuICAgICAgICAgICAgbm9kZVN0eWxlcyA9IFsgc3R5bGUud2lkdGgsIHN0eWxlLm1pbldpZHRoLCBzdHlsZS5mbGV4QmFzaXMgXTtcbiAgICAgICAgICAgIHN0eWxlLndpZHRoID0gJyc7XG4gICAgICAgICAgICBzdHlsZS5taW5XaWR0aCA9ICcnO1xuICAgICAgICAgICAgc3R5bGUuZmxleEJhc2lzID0gJyc7XG4gICAgICAgIH1cblxuICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzRmlyZWZveCkge1xuICAgICAgICAgICAgLy8gd2UgbmVlZCB0aGF0IGhhY2sgLSBvdGhlcndpc2UgY29udGVudCB3b24ndCBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgaW4gSUUvRWRnZVxuICAgICAgICAgICAgbm9kZS5zdHlsZS5vdmVyZmxvdyA9IG92ZXJmbG93O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNpemVIb2xkaW5nTm9kZSkge1xuICAgICAgICAgICAgc2l6ZUhvbGRpbmdOb2RlLnN0eWxlLndpZHRoID0gbm9kZVN0eWxlc1swXTtcbiAgICAgICAgICAgIHNpemVIb2xkaW5nTm9kZS5zdHlsZS5taW5XaWR0aCA9IG5vZGVTdHlsZXNbMV07XG4gICAgICAgICAgICBzaXplSG9sZGluZ05vZGUuc3R5bGUuZmxleEJhc2lzID0gbm9kZVN0eWxlc1syXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBrZXlib2FyZCBldmVudCBpcyBhbiBhY3RpdmF0aW9uIGtleSAoRW50ZXIvU3BhY2UgYmFyKVxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIFBsYXRmb3JtVXRpbFxuICAgICAqL1xuICAgIHB1YmxpYyBpc0FjdGl2YXRpb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gdGhpcy5LRVlNQVAuRU5URVIgfHwgZXZlbnQua2V5ID09PSB0aGlzLktFWU1BUC5TUEFDRTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQga2V5Ym9hcmQgZXZlbnQgaXMgYSBjb21iaW5hdGlvbiB0aGF0IGNsb3NlcyB0aGUgZmlsdGVyaW5nIFVJIG9mIHRoZSBncmlkLiAoRXNjYXBlL0N0cmwrU2hpZnQrTClcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAcGFyYW0gZXZlbnRcbiAgICAgKiBAbWVtYmVyb2YgUGxhdGZvcm1VdGlsXG4gICAgICovXG4gICAgcHVibGljIGlzRmlsdGVyaW5nS2V5Q29tYm8oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gdGhpcy5LRVlNQVAuRVNDQVBFIHx8IChldmVudC5jdHJsS2V5ICYmIGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpID09PSAnbCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlzTGVmdENsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHJldHVybiBldmVudC5idXR0b24gPT09IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNOYXZpZ2F0aW9uS2V5KGtleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLktFWU1BUC5IT01FLCB0aGlzLktFWU1BUC5FTkQsIHRoaXMuS0VZTUFQLlNQQUNFLFxuICAgICAgICAgICAgdGhpcy5LRVlNQVAuQVJST1dfRE9XTiwgdGhpcy5LRVlNQVAuQVJST1dfTEVGVCwgdGhpcy5LRVlNQVAuQVJST1dfUklHSFQsIHRoaXMuS0VZTUFQLkFSUk9XX1VQXG4gICAgICAgIF0uaW5jbHVkZXMoa2V5KTtcbiAgICB9XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgZmxhdHRlbiA9IChhcnI6IGFueVtdKSA9PiB7XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuXG4gICAgYXJyLmZvckVhY2goZWwgPT4ge1xuICAgICAgICByZXN1bHQucHVzaChlbCk7XG4gICAgICAgIGlmIChlbC5jaGlsZHJlbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBBcnJheS5pc0FycmF5KGVsLmNoaWxkcmVuKSA/IGVsLmNoaWxkcmVuIDogZWwuY2hpbGRyZW4udG9BcnJheSgpO1xuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChmbGF0dGVuKGNoaWxkcmVuKSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjYW5jZWwgdGhlIGV2ZW50LlxuICAgICAqL1xuICAgIGNhbmNlbDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUV2ZW50QXJncyB7XG4gICAgLyoqXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlIHRvIHRoZSBvd25lciBjb21wb25lbnQuXG4gICAgICovXG4gICAgb3duZXI/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzIHtcbiAgICAvKiogQnJvd3NlciBldmVudCAqL1xuICAgIGV2ZW50PzogRXZlbnQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyBleHRlbmRzIENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7IH1cblxuZXhwb3J0IGludGVyZmFjZSBJQmFzZUNhbmNlbGFibGVFdmVudEFyZ3MgZXh0ZW5kcyBDYW5jZWxhYmxlRXZlbnRBcmdzLCBJQmFzZUV2ZW50QXJncyB7IH1cblxuZXhwb3J0IGNvbnN0IEhPUklaT05UQUxfTkFWX0tFWVMgPSBuZXcgU2V0KFsnYXJyb3dsZWZ0JywgJ2xlZnQnLCAnYXJyb3dyaWdodCcsICdyaWdodCcsICdob21lJywgJ2VuZCddKTtcblxuZXhwb3J0IGNvbnN0IE5BVklHQVRJT05fS0VZUyA9IG5ldyBTZXQoW1xuICAgICdkb3duJyxcbiAgICAndXAnLFxuICAgICdsZWZ0JyxcbiAgICAncmlnaHQnLFxuICAgICdhcnJvd2Rvd24nLFxuICAgICdhcnJvd3VwJyxcbiAgICAnYXJyb3dsZWZ0JyxcbiAgICAnYXJyb3dyaWdodCcsXG4gICAgJ2hvbWUnLFxuICAgICdlbmQnLFxuICAgICdzcGFjZScsXG4gICAgJ3NwYWNlYmFyJyxcbiAgICAnICdcbl0pO1xuZXhwb3J0IGNvbnN0IEFDQ09SRElPTl9OQVZJR0FUSU9OX0tFWVMgPSBuZXcgU2V0KCd1cCBkb3duIGFycm93dXAgYXJyb3dkb3duIGhvbWUgZW5kJy5zcGxpdCgnICcpKTtcbmV4cG9ydCBjb25zdCBST1dfRVhQQU5EX0tFWVMgPSBuZXcgU2V0KCdyaWdodCBkb3duIGFycm93cmlnaHQgYXJyb3dkb3duJy5zcGxpdCgnICcpKTtcbmV4cG9ydCBjb25zdCBST1dfQ09MTEFQU0VfS0VZUyA9IG5ldyBTZXQoJ2xlZnQgdXAgYXJyb3dsZWZ0IGFycm93dXAnLnNwbGl0KCcgJykpO1xuZXhwb3J0IGNvbnN0IFJPV19BRERfS0VZUyA9IG5ldyBTZXQoWycrJywgJ2FkZCcsICfiiaAnLCAnwrEnLCAnPSddKTtcbmV4cG9ydCBjb25zdCBTVVBQT1JURURfS0VZUyA9IG5ldyBTZXQoWy4uLkFycmF5LmZyb20oTkFWSUdBVElPTl9LRVlTKSxcbi4uLkFycmF5LmZyb20oUk9XX0FERF9LRVlTKSwgJ2VudGVyJywgJ2YyJywgJ2VzY2FwZScsICdlc2MnLCAncGFnZWRvd24nLCAncGFnZXVwJ10pO1xuZXhwb3J0IGNvbnN0IEhFQURFUl9LRVlTID0gbmV3IFNldChbLi4uQXJyYXkuZnJvbShOQVZJR0FUSU9OX0tFWVMpLCAnZXNjYXBlJywgJ2VzYycsICdsJyxcbiAgICAvKiogVGhpcyBzeW1ib2wgY29ycmVzcG9uZHMgdG8gdGhlIEFsdCArIEwgY29tYmluYXRpb24gdW5kZXIgTUFDLiAqL1xuICAgICfCrCddKTtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBDcmVhdGVzIGEgbmV3IFJlc2l6ZU9ic2VydmVyIG9uIGB0YXJnZXRgIGFuZCByZXR1cm5zIGl0IGFzIGFuIE9ic2VydmFibGUuXG4gKiBSdW4gdGhlIHJlc2l6ZU9ic2VydmFibGUgb3V0c2lkZSBhbmd1bGFyIHpvbmUsIGJlY2F1c2UgaXQgcGF0Y2hlcyB0aGUgTXV0YXRpb25PYnNlcnZlciB3aGljaCBjYXVzZXMgYW4gaW5maW5pdGUgbG9vcC5cbiAqIFJlbGF0ZWQgaXNzdWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzMxNzEyXG4gKi9cbmV4cG9ydCBjb25zdCByZXNpemVPYnNlcnZhYmxlID0gKHRhcmdldDogSFRNTEVsZW1lbnQpOiBPYnNlcnZhYmxlPFJlc2l6ZU9ic2VydmVyRW50cnlbXT4gPT4gbmV3IE9ic2VydmFibGUoKG9ic2VydmVyKSA9PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgKGdldFJlc2l6ZU9ic2VydmVyKCkpKChlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10pID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChlbnRyaWVzKTtcbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vYnNlcnZlKHRhcmdldCk7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSAoKSA9PiBpbnN0YW5jZS5kaXNjb25uZWN0KCk7XG4gICAgcmV0dXJuIHVuc3Vic2NyaWJlO1xufSk7XG5cbi8qKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKlxuICogQ29tcGFyZXMgdHdvIG1hcHMuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wYXJlTWFwcyA9IChtYXAxOiBNYXA8YW55LCBhbnk+LCBtYXAyOiBNYXA8YW55LCBhbnk+KTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCFtYXAyKSB7XG4gICAgICAgIHJldHVybiAhbWFwMSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKG1hcDEuc2l6ZSAhPT0gbWFwMi5zaXplKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IG1hdGNoID0gdHJ1ZTtcbiAgICBjb25zdCBrZXlzID0gQXJyYXkuZnJvbShtYXAyLmtleXMoKSk7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAobWFwMS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgbWF0Y2ggPSBtYXAxLmdldChrZXkpID09PSBtYXAyLmdldChrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0Y2g7XG59O1xuXG4vKipcbiAqXG4gKiBHaXZlbiBhIHByb3BlcnR5IGFjY2VzcyBwYXRoIGluIHRoZSBmb3JtYXQgYHgueS56YCByZXNvbHZlcyBhbmQgcmV0dXJuc1xuICogdGhlIHZhbHVlIG9mIHRoZSBgemAgcHJvcGVydHkgaW4gdGhlIHBhc3NlZCBvYmplY3QuXG4gKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlTmVzdGVkUGF0aCA9IChvYmo6IGFueSwgcGF0aDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcGFydHMgPSBwYXRoPy5zcGxpdCgnLicpID8/IFtdO1xuICAgIGxldCBjdXJyZW50ID0gb2JqW3BhcnRzLnNoaWZ0KCldO1xuXG4gICAgcGFydHMuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3Byb3BdO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY3VycmVudDtcbn07XG5cbi8qKlxuICpcbiAqIEdpdmVuIGEgcHJvcGVydHkgYWNjZXNzIHBhdGggaW4gdGhlIGZvcm1hdCBgeC55LnpgIGFuZCBhIHZhbHVlXG4gKiB0aGlzIGZ1bmN0aW9ucyBidWlsZHMgYW5kIHJldHVybnMgYW4gb2JqZWN0IGZvbGxvd2luZyB0aGUgYWNjZXNzIHBhdGguXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnNvbGUubG9nKCd4Lnkuei4nLCA0Mik7XG4gKiA+PiB7IHg6IHsgeTogeyB6OiA0MiB9IH0gfVxuICogYGBgXG4gKlxuICogQGhpZGRlblxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZXZlcnNlTWFwcGVyID0gKHBhdGg6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgIGNvbnN0IG9iaiA9IHt9O1xuICAgIGNvbnN0IHBhcnRzID0gcGF0aD8uc3BsaXQoJy4nKSA/PyBbXTtcblxuICAgIGxldCBfcHJvcCA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgbGV0IG1hcHBpbmc6IGFueTtcblxuICAgIC8vIEluaXRpYWwgYmluZGluZyBmb3IgZmlyc3QgbGV2ZWwgYmluZGluZ3NcbiAgICBvYmpbX3Byb3BdID0gdmFsdWU7XG4gICAgbWFwcGluZyA9IG9iajtcblxuICAgIHBhcnRzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgICAgIC8vIFN0YXJ0IGJ1aWxkaW5nIHRoZSBoaWVyYXJjaHlcbiAgICAgICAgbWFwcGluZ1tfcHJvcF0gPSB7fTtcbiAgICAgICAgLy8gR28gZG93biBhIGxldmVsXG4gICAgICAgIG1hcHBpbmcgPSBtYXBwaW5nW19wcm9wXTtcbiAgICAgICAgLy8gQmluZCB0aGUgdmFsdWUgYW5kIG1vdmUgdGhlIGtleVxuICAgICAgICBtYXBwaW5nW3Byb3BdID0gdmFsdWU7XG4gICAgICAgIF9wcm9wID0gcHJvcDtcbiAgICB9KTtcblxuICAgIHJldHVybiBvYmo7XG59O1xuXG5leHBvcnQgY29uc3QgeWllbGRpbmdMb29wID0gKGNvdW50OiBudW1iZXIsIGNodW5rU2l6ZTogbnVtYmVyLCBjYWxsYmFjazogKGluZGV4OiBudW1iZXIpID0+IHZvaWQsIGRvbmU6ICgpID0+IHZvaWQpID0+IHtcbiAgICBsZXQgaSA9IDA7XG4gICAgY29uc3QgY2h1bmsgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWluKGkgKyBjaHVua1NpemUsIGNvdW50KTtcbiAgICAgICAgZm9yICg7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgICAgICAgY2FsbGJhY2soaSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGkgPCBjb3VudCkge1xuICAgICAgICAgICAgc2V0SW1tZWRpYXRlKGNodW5rKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgY2h1bmsoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0NvbnN0cnVjdG9yID0gKHJlZjogYW55KSA9PiB0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nICYmIEJvb2xlYW4ocmVmLnByb3RvdHlwZSkgJiYgQm9vbGVhbihyZWYucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtcblxuZXhwb3J0IGNvbnN0IHJldmVyc2VBbmltYXRpb25SZXNvbHZlciA9IChhbmltYXRpb246IEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhKTogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEgPT5cbiAgICBvcHBvc2l0ZUFuaW1hdGlvbi5nZXQoYW5pbWF0aW9uKSA/PyBhbmltYXRpb247XG5cbmV4cG9ydCBjb25zdCBpc0hvcml6b250YWxBbmltYXRpb24gPSAoYW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSk6IGJvb2xlYW4gPT4gaG9yaXpvbnRhbEFuaW1hdGlvbnMuaW5jbHVkZXMoYW5pbWF0aW9uKTtcblxuZXhwb3J0IGNvbnN0IGlzVmVydGljYWxBbmltYXRpb24gPSAoYW5pbWF0aW9uOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YSk6IGJvb2xlYW4gPT4gdmVydGljYWxBbmltYXRpb25zLmluY2x1ZGVzKGFuaW1hdGlvbik7XG5cbmNvbnN0IG9wcG9zaXRlQW5pbWF0aW9uOiBNYXA8QW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGEsIEFuaW1hdGlvblJlZmVyZW5jZU1ldGFkYXRhPiA9IG5ldyBNYXAoW1xuICAgIFtmYWRlSW4sIGZhZGVJbl0sXG4gICAgW2ZhZGVPdXQsIGZhZGVPdXRdLFxuICAgIFtmbGlwVG9wLCBmbGlwQm90dG9tXSxcbiAgICBbZmxpcEJvdHRvbSwgZmxpcFRvcF0sXG4gICAgW2ZsaXBSaWdodCwgZmxpcExlZnRdLFxuICAgIFtmbGlwTGVmdCwgZmxpcFJpZ2h0XSxcbiAgICBbZmxpcEhvckZ3ZCwgZmxpcEhvckJja10sXG4gICAgW2ZsaXBIb3JCY2ssIGZsaXBIb3JGd2RdLFxuICAgIFtmbGlwVmVyRndkLCBmbGlwVmVyQmNrXSxcbiAgICBbZmxpcFZlckJjaywgZmxpcFZlckZ3ZF0sXG4gICAgW2dyb3dWZXJJbiwgZ3Jvd1ZlckluXSxcbiAgICBbZ3Jvd1Zlck91dCwgZ3Jvd1Zlck91dF0sXG4gICAgW2hlYXJ0YmVhdCwgaGVhcnRiZWF0XSxcbiAgICBbcHVsc2F0ZUZ3ZCwgcHVsc2F0ZUJja10sXG4gICAgW3B1bHNhdGVCY2ssIHB1bHNhdGVGd2RdLFxuICAgIFtibGluaywgYmxpbmtdLFxuICAgIFtzaGFrZUhvciwgc2hha2VIb3JdLFxuICAgIFtzaGFrZVZlciwgc2hha2VWZXJdLFxuICAgIFtzaGFrZVRvcCwgc2hha2VUb3BdLFxuICAgIFtzaGFrZUJvdHRvbSwgc2hha2VCb3R0b21dLFxuICAgIFtzaGFrZVJpZ2h0LCBzaGFrZVJpZ2h0XSxcbiAgICBbc2hha2VMZWZ0LCBzaGFrZUxlZnRdLFxuICAgIFtzaGFrZUNlbnRlciwgc2hha2VDZW50ZXJdLFxuICAgIFtzaGFrZVRyLCBzaGFrZVRyXSxcbiAgICBbc2hha2VCciwgc2hha2VCcl0sXG4gICAgW3NoYWtlQmwsIHNoYWtlQmxdLFxuICAgIFtzaGFrZVRsLCBzaGFrZVRsXSxcbiAgICBbcm90YXRlSW5DZW50ZXIsIHJvdGF0ZUluQ2VudGVyXSxcbiAgICBbcm90YXRlT3V0Q2VudGVyLCByb3RhdGVPdXRDZW50ZXJdLFxuICAgIFtyb3RhdGVJblRvcCwgcm90YXRlSW5Cb3R0b21dLFxuICAgIFtyb3RhdGVPdXRUb3AsIHJvdGF0ZU91dEJvdHRvbV0sXG4gICAgW3JvdGF0ZUluUmlnaHQsIHJvdGF0ZUluTGVmdF0sXG4gICAgW3JvdGF0ZU91dFJpZ2h0LCByb3RhdGVPdXRMZWZ0XSxcbiAgICBbcm90YXRlSW5MZWZ0LCByb3RhdGVJblJpZ2h0XSxcbiAgICBbcm90YXRlT3V0TGVmdCwgcm90YXRlT3V0UmlnaHRdLFxuICAgIFtyb3RhdGVJbkJvdHRvbSwgcm90YXRlSW5Ub3BdLFxuICAgIFtyb3RhdGVPdXRCb3R0b20sIHJvdGF0ZU91dFRvcF0sXG4gICAgW3JvdGF0ZUluVHIsIHJvdGF0ZUluQmxdLFxuICAgIFtyb3RhdGVPdXRUciwgcm90YXRlT3V0QmxdLFxuICAgIFtyb3RhdGVJbkJyLCByb3RhdGVJblRsXSxcbiAgICBbcm90YXRlT3V0QnIsIHJvdGF0ZU91dFRsXSxcbiAgICBbcm90YXRlSW5CbCwgcm90YXRlSW5Ucl0sXG4gICAgW3JvdGF0ZU91dEJsLCByb3RhdGVPdXRUcl0sXG4gICAgW3JvdGF0ZUluVGwsIHJvdGF0ZUluQnJdLFxuICAgIFtyb3RhdGVPdXRUbCwgcm90YXRlT3V0QnJdLFxuICAgIFtyb3RhdGVJbkRpYWdvbmFsMSwgcm90YXRlSW5EaWFnb25hbDFdLFxuICAgIFtyb3RhdGVPdXREaWFnb25hbDEsIHJvdGF0ZU91dERpYWdvbmFsMV0sXG4gICAgW3JvdGF0ZUluRGlhZ29uYWwyLCByb3RhdGVJbkRpYWdvbmFsMl0sXG4gICAgW3JvdGF0ZU91dERpYWdvbmFsMiwgcm90YXRlT3V0RGlhZ29uYWwyXSxcbiAgICBbcm90YXRlSW5Ib3IsIHJvdGF0ZUluSG9yXSxcbiAgICBbcm90YXRlT3V0SG9yLCByb3RhdGVPdXRIb3JdLFxuICAgIFtyb3RhdGVJblZlciwgcm90YXRlSW5WZXJdLFxuICAgIFtyb3RhdGVPdXRWZXIsIHJvdGF0ZU91dFZlcl0sXG4gICAgW3NjYWxlSW5Ub3AsIHNjYWxlSW5Cb3R0b21dLFxuICAgIFtzY2FsZU91dFRvcCwgc2NhbGVPdXRCb3R0b21dLFxuICAgIFtzY2FsZUluUmlnaHQsIHNjYWxlSW5MZWZ0XSxcbiAgICBbc2NhbGVPdXRSaWdodCwgc2NhbGVPdXRMZWZ0XSxcbiAgICBbc2NhbGVJbkJvdHRvbSwgc2NhbGVJblRvcF0sXG4gICAgW3NjYWxlT3V0Qm90dG9tLCBzY2FsZU91dFRvcF0sXG4gICAgW3NjYWxlSW5MZWZ0LCBzY2FsZUluUmlnaHRdLFxuICAgIFtzY2FsZU91dExlZnQsIHNjYWxlT3V0UmlnaHRdLFxuICAgIFtzY2FsZUluQ2VudGVyLCBzY2FsZUluQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRDZW50ZXIsIHNjYWxlT3V0Q2VudGVyXSxcbiAgICBbc2NhbGVJblRyLCBzY2FsZUluQmxdLFxuICAgIFtzY2FsZU91dFRyLCBzY2FsZU91dEJsXSxcbiAgICBbc2NhbGVJbkJyLCBzY2FsZUluVGxdLFxuICAgIFtzY2FsZU91dEJyLCBzY2FsZU91dFRsXSxcbiAgICBbc2NhbGVJbkJsLCBzY2FsZUluVHJdLFxuICAgIFtzY2FsZU91dEJsLCBzY2FsZU91dFRyXSxcbiAgICBbc2NhbGVJblRsLCBzY2FsZUluQnJdLFxuICAgIFtzY2FsZU91dFRsLCBzY2FsZU91dEJyXSxcbiAgICBbc2NhbGVJblZlclRvcCwgc2NhbGVJblZlckJvdHRvbV0sXG4gICAgW3NjYWxlT3V0VmVyVG9wLCBzY2FsZU91dFZlckJvdHRvbV0sXG4gICAgW3NjYWxlSW5WZXJCb3R0b20sIHNjYWxlSW5WZXJUb3BdLFxuICAgIFtzY2FsZU91dFZlckJvdHRvbSwgc2NhbGVPdXRWZXJUb3BdLFxuICAgIFtzY2FsZUluVmVyQ2VudGVyLCBzY2FsZUluVmVyQ2VudGVyXSxcbiAgICBbc2NhbGVPdXRWZXJDZW50ZXIsIHNjYWxlT3V0VmVyQ2VudGVyXSxcbiAgICBbc2NhbGVJbkhvckNlbnRlciwgc2NhbGVJbkhvckNlbnRlcl0sXG4gICAgW3NjYWxlT3V0SG9yQ2VudGVyLCBzY2FsZU91dEhvckNlbnRlcl0sXG4gICAgW3NjYWxlSW5Ib3JMZWZ0LCBzY2FsZUluSG9yUmlnaHRdLFxuICAgIFtzY2FsZU91dEhvckxlZnQsIHNjYWxlT3V0SG9yUmlnaHRdLFxuICAgIFtzY2FsZUluSG9yUmlnaHQsIHNjYWxlSW5Ib3JMZWZ0XSxcbiAgICBbc2NhbGVPdXRIb3JSaWdodCwgc2NhbGVPdXRIb3JMZWZ0XSxcbiAgICBbc2xpZGVJblRvcCwgc2xpZGVJbkJvdHRvbV0sXG4gICAgW3NsaWRlT3V0VG9wLCBzbGlkZU91dEJvdHRvbV0sXG4gICAgW3NsaWRlSW5SaWdodCwgc2xpZGVJbkxlZnRdLFxuICAgIFtzbGlkZU91dFJpZ2h0LCBzbGlkZU91dExlZnRdLFxuICAgIFtzbGlkZUluQm90dG9tLCBzbGlkZUluVG9wXSxcbiAgICBbc2xpZGVPdXRCb3R0b20sIHNsaWRlT3V0VG9wXSxcbiAgICBbc2xpZGVJbkxlZnQsIHNsaWRlSW5SaWdodF0sXG4gICAgW3NsaWRlT3V0TGVmdCwgc2xpZGVPdXRSaWdodF0sXG4gICAgW3NsaWRlSW5Uciwgc2xpZGVJbkJsXSxcbiAgICBbc2xpZGVPdXRUciwgc2xpZGVPdXRCbF0sXG4gICAgW3NsaWRlSW5Cciwgc2xpZGVJblRsXSxcbiAgICBbc2xpZGVPdXRCciwgc2xpZGVPdXRUbF0sXG4gICAgW3NsaWRlSW5CbCwgc2xpZGVJblRyXSxcbiAgICBbc2xpZGVPdXRCbCwgc2xpZGVPdXRUcl0sXG4gICAgW3NsaWRlSW5UbCwgc2xpZGVJbkJyXSxcbiAgICBbc2xpZGVPdXRUbCwgc2xpZGVPdXRCcl0sXG4gICAgW3N3aW5nSW5Ub3BGd2QsIHN3aW5nSW5Cb3R0b21Gd2RdLFxuICAgIFtzd2luZ091dFRvcEZ3ZCwgc3dpbmdPdXRCb3R0b21Gd2RdLFxuICAgIFtzd2luZ0luUmlnaHRGd2QsIHN3aW5nSW5MZWZ0RndkXSxcbiAgICBbc3dpbmdPdXRSaWdodEZ3ZCwgc3dpbmdPdXRMZWZ0dEZ3ZF0sXG4gICAgW3N3aW5nSW5MZWZ0RndkLCBzd2luZ0luUmlnaHRGd2RdLFxuICAgIFtzd2luZ091dExlZnR0RndkLCBzd2luZ091dFJpZ2h0RndkXSxcbiAgICBbc3dpbmdJbkJvdHRvbUZ3ZCwgc3dpbmdJblRvcEZ3ZF0sXG4gICAgW3N3aW5nT3V0Qm90dG9tRndkLCBzd2luZ091dFRvcEZ3ZF0sXG4gICAgW3N3aW5nSW5Ub3BCY2ssIHN3aW5nSW5Cb3R0b21CY2tdLFxuICAgIFtzd2luZ091dFRvcEJjaywgc3dpbmdPdXRCb3R0b21CY2tdLFxuICAgIFtzd2luZ0luUmlnaHRCY2ssIHN3aW5nSW5MZWZ0QmNrXSxcbiAgICBbc3dpbmdPdXRSaWdodEJjaywgc3dpbmdPdXRMZWZ0QmNrXSxcbiAgICBbc3dpbmdJbkJvdHRvbUJjaywgc3dpbmdJblRvcEJja10sXG4gICAgW3N3aW5nT3V0Qm90dG9tQmNrLCBzd2luZ091dFRvcEJja10sXG4gICAgW3N3aW5nSW5MZWZ0QmNrLCBzd2luZ0luUmlnaHRCY2tdLFxuICAgIFtzd2luZ091dExlZnRCY2ssIHN3aW5nT3V0UmlnaHRCY2tdLFxuXSk7XG5cbmNvbnN0IGhvcml6b250YWxBbmltYXRpb25zOiBBbmltYXRpb25SZWZlcmVuY2VNZXRhZGF0YVtdID0gW1xuICAgIGZsaXBSaWdodCxcbiAgICBmbGlwTGVmdCxcbiAgICBmbGlwVmVyRndkLFxuICAgIGZsaXBWZXJCY2ssXG4gICAgcm90YXRlSW5SaWdodCxcbiAgICByb3RhdGVPdXRSaWdodCxcbiAgICByb3RhdGVJbkxlZnQsXG4gICAgcm90YXRlT3V0TGVmdCxcbiAgICByb3RhdGVJblRyLFxuICAgIHJvdGF0ZU91dFRyLFxuICAgIHJvdGF0ZUluQnIsXG4gICAgcm90YXRlT3V0QnIsXG4gICAgcm90YXRlSW5CbCxcbiAgICByb3RhdGVPdXRCbCxcbiAgICByb3RhdGVJblRsLFxuICAgIHJvdGF0ZU91dFRsLFxuICAgIHNjYWxlSW5SaWdodCxcbiAgICBzY2FsZU91dFJpZ2h0LFxuICAgIHNjYWxlSW5MZWZ0LFxuICAgIHNjYWxlT3V0TGVmdCxcbiAgICBzY2FsZUluVHIsXG4gICAgc2NhbGVPdXRUcixcbiAgICBzY2FsZUluQnIsXG4gICAgc2NhbGVPdXRCcixcbiAgICBzY2FsZUluQmwsXG4gICAgc2NhbGVPdXRCbCxcbiAgICBzY2FsZUluVGwsXG4gICAgc2NhbGVPdXRUbCxcbiAgICBzY2FsZUluSG9yTGVmdCxcbiAgICBzY2FsZU91dEhvckxlZnQsXG4gICAgc2NhbGVJbkhvclJpZ2h0LFxuICAgIHNjYWxlT3V0SG9yUmlnaHQsXG4gICAgc2xpZGVJblJpZ2h0LFxuICAgIHNsaWRlT3V0UmlnaHQsXG4gICAgc2xpZGVJbkxlZnQsXG4gICAgc2xpZGVPdXRMZWZ0LFxuICAgIHNsaWRlSW5UcixcbiAgICBzbGlkZU91dFRyLFxuICAgIHNsaWRlSW5CcixcbiAgICBzbGlkZU91dEJyLFxuICAgIHNsaWRlSW5CbCxcbiAgICBzbGlkZU91dEJsLFxuICAgIHNsaWRlSW5UbCxcbiAgICBzbGlkZU91dFRsLFxuICAgIHN3aW5nSW5SaWdodEZ3ZCxcbiAgICBzd2luZ091dFJpZ2h0RndkLFxuICAgIHN3aW5nSW5MZWZ0RndkLFxuICAgIHN3aW5nT3V0TGVmdHRGd2QsXG4gICAgc3dpbmdJblJpZ2h0QmNrLFxuICAgIHN3aW5nT3V0UmlnaHRCY2ssXG4gICAgc3dpbmdJbkxlZnRCY2ssXG4gICAgc3dpbmdPdXRMZWZ0QmNrLFxuXTtcbmNvbnN0IHZlcnRpY2FsQW5pbWF0aW9uczogQW5pbWF0aW9uUmVmZXJlbmNlTWV0YWRhdGFbXSA9IFtcbiAgICBmbGlwVG9wLFxuICAgIGZsaXBCb3R0b20sXG4gICAgZmxpcEhvckZ3ZCxcbiAgICBmbGlwSG9yQmNrLFxuICAgIGdyb3dWZXJJbixcbiAgICBncm93VmVyT3V0LFxuICAgIHJvdGF0ZUluVG9wLFxuICAgIHJvdGF0ZU91dFRvcCxcbiAgICByb3RhdGVJbkJvdHRvbSxcbiAgICByb3RhdGVPdXRCb3R0b20sXG4gICAgcm90YXRlSW5UcixcbiAgICByb3RhdGVPdXRUcixcbiAgICByb3RhdGVJbkJyLFxuICAgIHJvdGF0ZU91dEJyLFxuICAgIHJvdGF0ZUluQmwsXG4gICAgcm90YXRlT3V0QmwsXG4gICAgcm90YXRlSW5UbCxcbiAgICByb3RhdGVPdXRUbCxcbiAgICBzY2FsZUluVG9wLFxuICAgIHNjYWxlT3V0VG9wLFxuICAgIHNjYWxlSW5Cb3R0b20sXG4gICAgc2NhbGVPdXRCb3R0b20sXG4gICAgc2NhbGVJblRyLFxuICAgIHNjYWxlT3V0VHIsXG4gICAgc2NhbGVJbkJyLFxuICAgIHNjYWxlT3V0QnIsXG4gICAgc2NhbGVJbkJsLFxuICAgIHNjYWxlT3V0QmwsXG4gICAgc2NhbGVJblRsLFxuICAgIHNjYWxlT3V0VGwsXG4gICAgc2NhbGVJblZlclRvcCxcbiAgICBzY2FsZU91dFZlclRvcCxcbiAgICBzY2FsZUluVmVyQm90dG9tLFxuICAgIHNjYWxlT3V0VmVyQm90dG9tLFxuICAgIHNsaWRlSW5Ub3AsXG4gICAgc2xpZGVPdXRUb3AsXG4gICAgc2xpZGVJbkJvdHRvbSxcbiAgICBzbGlkZU91dEJvdHRvbSxcbiAgICBzbGlkZUluVHIsXG4gICAgc2xpZGVPdXRUcixcbiAgICBzbGlkZUluQnIsXG4gICAgc2xpZGVPdXRCcixcbiAgICBzbGlkZUluQmwsXG4gICAgc2xpZGVPdXRCbCxcbiAgICBzbGlkZUluVGwsXG4gICAgc2xpZGVPdXRUbCxcbiAgICBzd2luZ0luVG9wRndkLFxuICAgIHN3aW5nT3V0VG9wRndkLFxuICAgIHN3aW5nSW5Cb3R0b21Gd2QsXG4gICAgc3dpbmdPdXRCb3R0b21Gd2QsXG4gICAgc3dpbmdJblRvcEJjayxcbiAgICBzd2luZ091dFRvcEJjayxcbiAgICBzd2luZ0luQm90dG9tQmNrLFxuICAgIHN3aW5nT3V0Qm90dG9tQmNrLFxuXTtcbiJdfQ==